JupyterHub REST API

REST API for managing JupyterHub users, groups, services, and single-user notebook servers. Authentication is performed via API tokens.

OpenAPI Specification

jupyter-hub-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: JupyterHub REST API
  description: >-
    REST API for managing JupyterHub users, groups, services, and single-user
    notebook servers. Authentication is performed via API tokens.
  version: '5.0'
  contact:
    name: Project Jupyter
    url: https://jupyter.org
  license:
    name: BSD-3-Clause
    url: https://github.com/jupyterhub/jupyterhub/blob/main/COPYING.md
servers:
  - url: https://your-jupyterhub-domain.com/hub/api
    description: JupyterHub deployment
security:
  - tokenAuth: []
tags:
  - name: Hub
    description: Hub-level metadata and shutdown.
  - name: Users
    description: User accounts and their servers.
  - name: Groups
    description: Group membership.
  - name: Services
    description: Hub-managed and external services.
  - name: Tokens
    description: API token management.
paths:
  /:
    get:
      tags: [Hub]
      summary: Get JupyterHub version
      operationId: getHubInfo
      responses:
        '200':
          description: Hub version metadata.
  /info:
    get:
      tags: [Hub]
      summary: Get detailed Hub info
      operationId: getHubDetailedInfo
      responses:
        '200':
          description: Detailed Hub configuration info.
  /users:
    get:
      tags: [Users]
      summary: List users
      operationId: listUsers
      parameters:
        - in: query
          name: state
          schema:
            type: string
            enum: [inactive, active, ready]
        - in: query
          name: offset
          schema:
            type: integer
        - in: query
          name: limit
          schema:
            type: integer
      responses:
        '200':
          description: A list of users.
    post:
      tags: [Users]
      summary: Create multiple users
      operationId: createUsers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                usernames:
                  type: array
                  items:
                    type: string
                admin:
                  type: boolean
      responses:
        '201':
          description: Users created.
  /users/{name}:
    parameters:
      - in: path
        name: name
        required: true
        schema:
          type: string
    get:
      tags: [Users]
      summary: Get a user
      operationId: getUser
      responses:
        '200':
          description: User details.
    post:
      tags: [Users]
      summary: Create a single user
      operationId: createUser
      responses:
        '201':
          description: User created.
    delete:
      tags: [Users]
      summary: Delete a user
      operationId: deleteUser
      responses:
        '204':
          description: User deleted.
  /users/{name}/server:
    parameters:
      - in: path
        name: name
        required: true
        schema:
          type: string
    post:
      tags: [Users]
      summary: Start a user's default server
      operationId: startUserServer
      responses:
        '201':
          description: Server started.
        '202':
          description: Server is starting (async).
    delete:
      tags: [Users]
      summary: Stop a user's default server
      operationId: stopUserServer
      responses:
        '204':
          description: Server stopped.
  /users/{name}/servers/{server_name}:
    parameters:
      - in: path
        name: name
        required: true
        schema:
          type: string
      - in: path
        name: server_name
        required: true
        schema:
          type: string
    post:
      tags: [Users]
      summary: Start a named server for a user
      operationId: startNamedServer
      responses:
        '201':
          description: Named server started.
    delete:
      tags: [Users]
      summary: Stop a named server for a user
      operationId: stopNamedServer
      responses:
        '204':
          description: Named server stopped.
  /users/{name}/tokens:
    parameters:
      - in: path
        name: name
        required: true
        schema:
          type: string
    get:
      tags: [Tokens]
      summary: List a user's tokens
      operationId: listUserTokens
      responses:
        '200':
          description: List of API tokens for the user.
    post:
      tags: [Tokens]
      summary: Create a new token for a user
      operationId: createUserToken
      responses:
        '201':
          description: Token created.
  /groups:
    get:
      tags: [Groups]
      summary: List groups
      operationId: listGroups
      responses:
        '200':
          description: List of groups.
  /groups/{name}:
    parameters:
      - in: path
        name: name
        required: true
        schema:
          type: string
    get:
      tags: [Groups]
      summary: Get a group
      operationId: getGroup
      responses:
        '200':
          description: Group details.
    post:
      tags: [Groups]
      summary: Create a group
      operationId: createGroup
      responses:
        '201':
          description: Group created.
    delete:
      tags: [Groups]
      summary: Delete a group
      operationId: deleteGroup
      responses:
        '204':
          description: Group deleted.
  /groups/{name}/users:
    parameters:
      - in: path
        name: name
        required: true
        schema:
          type: string
    post:
      tags: [Groups]
      summary: Add users to a group
      operationId: addUsersToGroup
      responses:
        '200':
          description: Users added to group.
    delete:
      tags: [Groups]
      summary: Remove users from a group
      operationId: removeUsersFromGroup
      responses:
        '200':
          description: Users removed from group.
  /services:
    get:
      tags: [Services]
      summary: List services
      operationId: listServices
      responses:
        '200':
          description: List of registered services.
  /services/{name}:
    parameters:
      - in: path
        name: name
        required: true
        schema:
          type: string
    get:
      tags: [Services]
      summary: Get a service
      operationId: getService
      responses:
        '200':
          description: Service details.
  /proxy:
    get:
      tags: [Hub]
      summary: Get the proxy's routing table
      operationId: getProxyRoutes
      responses:
        '200':
          description: Routing table from the proxy.
  /shutdown:
    post:
      tags: [Hub]
      summary: Shut down the Hub
      operationId: shutdownHub
      responses:
        '202':
          description: Shutdown initiated.
components:
  securitySchemes:
    tokenAuth:
      type: http
      scheme: bearer
      bearerFormat: JupyterHub-Token