Kurrent Users API

User account management

OpenAPI Specification

kurrent-users-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: KurrentDB HTTP Admin Users API
  version: v26.1
  summary: AtomPub-over-HTTP interface to KurrentDB streams, subscriptions, projections, users and node administration.
  description: KurrentDB (formerly EventStoreDB) exposes a native AtomPub-over-HTTP interface alongside its primary gRPC protocol. This OpenAPI description is an API Evangelist transcription of the provider's published HTTP API Reference at https://docs.kurrent.io/server/v26.1/http-api/api.html — Kurrent does not publish an OpenAPI document of its own. Paths, methods, custom headers, media types and status codes are taken from that reference; nothing has been invented. The base URL is the address of your own KurrentDB node or Kurrent Cloud cluster (the same URL you use for the admin UI), which listens on port 2113 by default.
  contact:
    name: Kurrent
    url: https://www.kurrent.io/
  license:
    name: Kurrent License
    url: https://www.kurrent.io/terms-of-use
  x-apievangelist-provenance:
    generated: '2026-07-19'
    method: generated
    source: https://docs.kurrent.io/server/v26.1/http-api/api.html
    note: Faithful transcription of the provider's published HTTP API reference table. Operation summaries mirror the reference; request/response schemas are intentionally left open where the provider does not publish them.
servers:
- url: https://{host}:{port}
  description: Your KurrentDB node or Kurrent Cloud cluster
  variables:
    host:
      default: localhost
      description: Hostname of the KurrentDB node (the same host you use for the admin UI)
    port:
      default: '2113'
      description: KurrentDB HTTP port
security:
- basicAuth: []
tags:
- name: Users
  description: User account management
paths:
  /users/:
    get:
      tags:
      - Users
      operationId: listUsers
      summary: List all users
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      tags:
      - Users
      operationId: createUser
      summary: Create a user
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewUser'
      responses:
        '201':
          $ref: '#/components/responses/Created'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /users/{login}:
    parameters:
    - $ref: '#/components/parameters/Login'
    get:
      tags:
      - Users
      operationId: getUser
      summary: Get the details of a user
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
      - Users
      operationId: updateUser
      summary: Update a user
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserUpdate'
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
    delete:
      tags:
      - Users
      operationId: deleteUser
      summary: Delete a user
      responses:
        '204':
          description: No Content — the user was deleted
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /users/{login}/command/enable:
    parameters:
    - $ref: '#/components/parameters/Login'
    put:
      tags:
      - Users
      operationId: enableUser
      summary: Enable a user account
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /users/{login}/command/disable:
    parameters:
    - $ref: '#/components/parameters/Login'
    put:
      tags:
      - Users
      operationId: disableUser
      summary: Disable a user account
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /users/{login}/command/reset-password:
    parameters:
    - $ref: '#/components/parameters/Login'
    post:
      tags:
      - Users
      operationId: resetUserPassword
      summary: Reset the password of a user
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                newPassword:
                  type: string
              required:
              - newPassword
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /users/{login}/command/change-password:
    parameters:
    - $ref: '#/components/parameters/Login'
    post:
      tags:
      - Users
      operationId: changeUserPassword
      summary: Change the password of a user
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                currentPassword:
                  type: string
                newPassword:
                  type: string
              required:
              - currentPassword
              - newPassword
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  responses:
    Created:
      description: Created
      headers:
        Location:
          description: URI of the created resource
          schema:
            type: string
    NotFound:
      description: Not Found — the stream, event, projection, subscription or user does not exist
      content:
        text/plain:
          schema:
            type: string
    BadRequest:
      description: Bad Request — the request was malformed or violated an expected version
      content:
        text/plain:
          schema:
            type: string
    Unauthorized:
      description: Unauthorized — credentials were missing, invalid, or lacked ACL permission
      content:
        text/plain:
          schema:
            type: string
    JsonOk:
      description: OK
      content:
        application/json:
          schema:
            type: object
  schemas:
    UserUpdate:
      type: object
      description: Updated details of a user account
      properties:
        fullName:
          type: string
        groups:
          type: array
          items:
            type: string
    NewUser:
      type: object
      description: A user account to create
      properties:
        loginName:
          type: string
        fullName:
          type: string
        password:
          type: string
        groups:
          type: array
          items:
            type: string
      required:
      - loginName
      - fullName
      - password
  parameters:
    Login:
      name: login
      in: path
      required: true
      description: Login name of the user
      schema:
        type: string
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: KurrentDB supports HTTP Basic authentication for the HTTP API, with access control lists (ACLs) applied per stream. See https://docs.kurrent.io/server/v26.1/http-api/security.html
externalDocs:
  description: KurrentDB HTTP API documentation
  url: https://docs.kurrent.io/server/v26.1/http-api/introduction.html