Verdaccio profile API

User profile management

OpenAPI Specification

verdaccio-profile-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Verdaccio npm Registry dist-tags profile API
  description: 'The Verdaccio npm Registry REST API implements the CommonJS Compliant Package Registry specification, providing endpoints to publish, retrieve, search, and delete npm packages. It supports JWT tokens and Basic Auth for authentication and mirrors the standard npm registry protocol so any npm, yarn, or pnpm client can interact with it without modification.

    '
  version: 6.0.0
  contact:
    name: Verdaccio Community
    url: https://discord.gg/7qWJxBf
  license:
    name: MIT
    url: https://github.com/verdaccio/verdaccio/blob/master/LICENSE
  x-api-id: verdaccio:verdaccio-npm-registry-api
servers:
- url: http://localhost:4873
  description: Default local Verdaccio instance
security:
- bearerAuth: []
- basicAuth: []
tags:
- name: profile
  description: User profile management
paths:
  /-/npm/v1/user:
    get:
      operationId: getProfile
      summary: Get user profile
      description: Returns the profile of the currently authenticated user.
      tags:
      - profile
      responses:
        '200':
          description: User profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Profile'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: updateProfile
      summary: Update user profile (change password)
      description: 'Updates the authenticated user''s profile. Currently supports password changes. Two-factor authentication is not supported.

        '
      tags:
      - profile
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProfileUpdateRequest'
      responses:
        '200':
          description: Updated profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Profile'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
components:
  responses:
    Forbidden:
      description: Authenticated user lacks permission for this operation
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Authentication required or credentials are invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BadRequest:
      description: Bad request — missing or invalid parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  schemas:
    ProfileUpdateRequest:
      type: object
      properties:
        password:
          type: object
          description: Password change payload
          properties:
            old:
              type: string
              format: password
              description: Current password
            new:
              type: string
              format: password
              description: Desired new password
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Human-readable error message
          example: package not found
      required:
      - error
    Profile:
      type: object
      properties:
        tfa:
          type: boolean
          description: Two-factor authentication enabled (always false — not supported)
          example: false
        name:
          type: string
          description: Username
          example: alice
        email:
          type: string
          description: Email address (not stored; always empty)
          example: ''
        email_verified:
          type: boolean
          description: Whether the email has been verified (always false)
          example: false
        created:
          type: string
          description: Account creation timestamp (not stored; always empty)
          example: ''
        updated:
          type: string
          description: Account update timestamp (not stored; always empty)
          example: ''
        cidr_whitelist:
          type: array
          nullable: true
          items:
            type: string
          description: CIDR whitelist (not enforced at profile level; always null)
          example: null
        fullname:
          type: string
          description: Full name (not stored; always empty)
          example: ''
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT token issued by Verdaccio on login
    basicAuth:
      type: http
      scheme: basic
      description: HTTP Basic Auth with registry username and password