npm

npm Packages API

Package metadata retrieval, including full packuments and version-specific documents.

OpenAPI Specification

npm-packages-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: npm Hooks Downloads Packages API
  description: The npm Hooks API allows developers to subscribe to notifications about changes in the npm registry. Hooks send HTTP POST payloads to a configured URI whenever a package is changed, enabling developers to build integrations that respond to registry events in real time. Users can add hooks to follow specific packages, track all activity of given npm users, or monitor all packages within an organization or user scope. The API provides endpoints for creating, listing, updating, and deleting hook subscriptions. Note that npm hooks services have been deprecated as of July 2024.
  version: 1.0.0
  contact:
    name: npm Support
    url: https://www.npmjs.com/support
  termsOfService: https://docs.npmjs.com/policies/terms
servers:
- url: https://registry.npmjs.org
  description: npm Public Registry
security:
- bearerAuth: []
tags:
- name: Packages
  description: Package metadata retrieval, including full packuments and version-specific documents.
paths:
  /{package}:
    get:
      operationId: getPackageDocument
      summary: Get a package document (packument)
      description: Retrieves the full package document (packument) for a given package name. The packument includes all published versions, dist-tags, maintainers, repository information, and README content. For scoped packages, the package name should be URL-encoded (e.g., @scope%2Fpackage).
      tags:
      - Packages
      parameters:
      - $ref: '#/components/parameters/packageName'
      responses:
        '200':
          description: Package document retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PackageDocument'
        '404':
          description: Package not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /{package}/{version}:
    get:
      operationId: getPackageVersion
      summary: Get a specific package version
      description: Retrieves metadata for a specific version of a package. The version can be a valid semver string or the literal string "latest" to retrieve the version pointed to by the latest dist-tag. Returns the version-specific manifest including dependencies, scripts, and distribution information.
      tags:
      - Packages
      parameters:
      - $ref: '#/components/parameters/packageName'
      - $ref: '#/components/parameters/packageVersion'
      responses:
        '200':
          description: Package version metadata retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PackageVersion'
        '404':
          description: Package or version not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    PackageVersion:
      type: object
      description: Metadata for a specific version of a package, including dependencies, scripts, and distribution information.
      properties:
        name:
          type: string
          description: The name of the package.
        version:
          type: string
          description: The semver version string.
        description:
          type: string
          description: A short description of the package.
        main:
          type: string
          description: The entry point module for the package.
        scripts:
          type: object
          description: A mapping of script names to shell commands.
          additionalProperties:
            type: string
        dependencies:
          type: object
          description: A mapping of package names to semver ranges for runtime dependencies.
          additionalProperties:
            type: string
        devDependencies:
          type: object
          description: A mapping of package names to semver ranges for development dependencies.
          additionalProperties:
            type: string
        peerDependencies:
          type: object
          description: A mapping of package names to semver ranges for peer dependencies.
          additionalProperties:
            type: string
        optionalDependencies:
          type: object
          description: A mapping of package names to semver ranges for optional dependencies.
          additionalProperties:
            type: string
        engines:
          type: object
          description: A mapping of runtime names to semver ranges specifying compatible environments.
          additionalProperties:
            type: string
        author:
          $ref: '#/components/schemas/Person'
        maintainers:
          type: array
          description: List of maintainers for this version.
          items:
            $ref: '#/components/schemas/Person'
        repository:
          $ref: '#/components/schemas/Repository'
        license:
          type: string
          description: The SPDX license identifier.
        keywords:
          type: array
          description: Keywords associated with this version.
          items:
            type: string
        dist:
          $ref: '#/components/schemas/Distribution'
        _npmVersion:
          type: string
          description: The version of npm used to publish this package version.
        _nodeVersion:
          type: string
          description: The version of Node.js used to publish this package version.
        _npmUser:
          $ref: '#/components/schemas/Person'
    Distribution:
      type: object
      description: Distribution metadata for a specific published version, including integrity hashes and tarball location.
      properties:
        shasum:
          type: string
          description: The SHA-1 checksum of the tarball.
        tarball:
          type: string
          format: uri
          description: The URL where the tarball can be downloaded.
        integrity:
          type: string
          description: The Subresource Integrity (SRI) hash of the tarball, typically using SHA-512.
        fileCount:
          type: integer
          description: The number of files in the tarball.
        unpackedSize:
          type: integer
          description: The total unpacked size of the tarball in bytes.
        signatures:
          type: array
          description: Cryptographic signatures for the package version.
          items:
            type: object
            properties:
              keyid:
                type: string
                description: The identifier of the signing key.
              sig:
                type: string
                description: The signature value.
    Error:
      type: object
      description: An error response from the registry.
      properties:
        error:
          type: string
          description: The error type or code.
        reason:
          type: string
          description: A human-readable explanation of the error.
    PackageDocument:
      type: object
      description: A full package document (packument) containing all metadata for a package, including every published version.
      properties:
        _id:
          type: string
          description: The package name, used as the document identifier.
        _rev:
          type: string
          description: The CouchDB document revision identifier.
        name:
          type: string
          description: The name of the package.
        description:
          type: string
          description: A short description of the package.
        dist-tags:
          type: object
          description: A mapping of distribution tags to version strings. The "latest" tag is always present.
          additionalProperties:
            type: string
        versions:
          type: object
          description: A mapping of version strings to version metadata objects.
          additionalProperties:
            $ref: '#/components/schemas/PackageVersion'
        time:
          type: object
          description: A mapping of version strings to ISO 8601 timestamps indicating when each version was published. Includes special keys "created" and "modified".
          additionalProperties:
            type: string
            format: date-time
        maintainers:
          type: array
          description: List of current package maintainers.
          items:
            $ref: '#/components/schemas/Person'
        author:
          $ref: '#/components/schemas/Person'
        repository:
          $ref: '#/components/schemas/Repository'
        readme:
          type: string
          description: The README content for the package, typically from the latest version.
        readmeFilename:
          type: string
          description: The filename of the README file.
        homepage:
          type: string
          format: uri
          description: The URL of the package homepage.
        keywords:
          type: array
          description: Keywords associated with the package for search discovery.
          items:
            type: string
        bugs:
          type: object
          description: Issue tracker information.
          properties:
            url:
              type: string
              format: uri
              description: URL of the issue tracker.
        license:
          type: string
          description: The SPDX license identifier for the package.
    Repository:
      type: object
      description: Source code repository information.
      properties:
        type:
          type: string
          description: The version control system type, typically "git".
        url:
          type: string
          description: The URL of the source code repository.
    Person:
      type: object
      description: A person object representing a user, author, or maintainer.
      properties:
        name:
          type: string
          description: The display name of the person.
        email:
          type: string
          format: email
          description: The email address of the person.
        url:
          type: string
          format: uri
          description: The personal URL or website of the person.
  parameters:
    packageName:
      name: package
      in: path
      description: The name of the package. For scoped packages, use URL encoding (e.g., @scope%2Fpackage).
      required: true
      schema:
        type: string
    packageVersion:
      name: version
      in: path
      description: A valid semver version string, or the literal string "latest" to resolve the current latest dist-tag.
      required: true
      schema:
        type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: npm access token provided as a Bearer token.
externalDocs:
  description: npm Hooks Documentation
  url: https://blog.npmjs.org/post/145260155635/introducing-hooks-get-notifications-of-npm