Jupyter Notebook · Capability

Jupyter Notebook JupyterHub REST API — Users

Jupyter Notebook JupyterHub REST API — Users. 15 operations. Lead operation: Jupyter Notebook List users. Self-contained Naftiko capability covering one Jupyter Notebook business surface.

Run with Naftiko Jupyter NotebookUsers

What You Can Do

GET
Listusers — Jupyter Notebook List users
/v1/users
POST
Createusers — Jupyter Notebook Create multiple users
/v1/users
GET
Getuser — Jupyter Notebook Get user details
/v1/users/{name}
POST
Createuser — Jupyter Notebook Create a single user
/v1/users/{name}
PATCH
Updateuser — Jupyter Notebook Update user properties
/v1/users/{name}
DELETE
Deleteuser — Jupyter Notebook Delete a user
/v1/users/{name}
POST
Notifyuseractivity — Jupyter Notebook Notify user activity
/v1/users/{name}/activity
POST
Startuserserver — Jupyter Notebook Start user's default server
/v1/users/{name}/server
DELETE
Stopuserserver — Jupyter Notebook Stop user's default server
/v1/users/{name}/server
POST
Startnamedserver — Jupyter Notebook Start a named server
/v1/users/{name}/servers/{server-name}
DELETE
Stopnamedserver — Jupyter Notebook Stop a named server
/v1/users/{name}/servers/{server-name}
GET
Listusertokens — Jupyter Notebook List user's API tokens
/v1/users/{name}/tokens
POST
Createusertoken — Jupyter Notebook Create an API token
/v1/users/{name}/tokens
GET
Getusertoken — Jupyter Notebook Get token details
/v1/users/{name}/tokens/{token-id}
DELETE
Deleteusertoken — Jupyter Notebook Revoke an API token
/v1/users/{name}/tokens/{token-id}

MCP Tools

jupyter-notebook-list-users

Jupyter Notebook List users

read-only idempotent
jupyter-notebook-create-multiple-users

Jupyter Notebook Create multiple users

jupyter-notebook-get-user-details

Jupyter Notebook Get user details

read-only idempotent
jupyter-notebook-create-single-user

Jupyter Notebook Create a single user

jupyter-notebook-update-user-properties

Jupyter Notebook Update user properties

idempotent
jupyter-notebook-delete-user

Jupyter Notebook Delete a user

idempotent
jupyter-notebook-notify-user-activity

Jupyter Notebook Notify user activity

jupyter-notebook-start-user-s-default

Jupyter Notebook Start user's default server

jupyter-notebook-stop-user-s-default

Jupyter Notebook Stop user's default server

idempotent
jupyter-notebook-start-named-server

Jupyter Notebook Start a named server

jupyter-notebook-stop-named-server

Jupyter Notebook Stop a named server

idempotent
jupyter-notebook-list-user-s-api

Jupyter Notebook List user's API tokens

read-only idempotent
jupyter-notebook-create-api-token

Jupyter Notebook Create an API token

jupyter-notebook-get-token-details

Jupyter Notebook Get token details

read-only idempotent
jupyter-notebook-revoke-api-token

Jupyter Notebook Revoke an API token

idempotent

Capability Spec

jupyterhub-rest-users.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Jupyter Notebook JupyterHub REST API — Users
  description: 'Jupyter Notebook JupyterHub REST API — Users. 15 operations. Lead operation: Jupyter Notebook List users.
    Self-contained Naftiko capability covering one Jupyter Notebook business surface.'
  tags:
  - Jupyter Notebook
  - Users
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    JUPYTER_NOTEBOOK_API_KEY: JUPYTER_NOTEBOOK_API_KEY
capability:
  consumes:
  - type: http
    namespace: jupyterhub-rest-users
    baseUri: http://localhost:8000/hub/api
    description: Jupyter Notebook JupyterHub REST API — Users business capability. Self-contained, no shared references.
    resources:
    - name: users
      path: /users
      operations:
      - name: listusers
        method: GET
        description: Jupyter Notebook List users
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: state
          in: query
          type: string
          description: Filter users by server state. Can be 'active', 'inactive', or 'ready'.
        - name: offset
          in: query
          type: integer
          description: Offset for pagination.
        - name: limit
          in: query
          type: integer
          description: Maximum number of users to return.
        - name: include_stopped_servers
          in: query
          type: boolean
          description: Include stopped server information in results.
      - name: createusers
        method: POST
        description: Jupyter Notebook Create multiple users
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: users-name
      path: /users/{name}
      operations:
      - name: getuser
        method: GET
        description: Jupyter Notebook Get user details
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Username.
          required: true
        - name: include_stopped_servers
          in: query
          type: boolean
          description: Include stopped server information.
      - name: createuser
        method: POST
        description: Jupyter Notebook Create a single user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Username for the new user.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: updateuser
        method: PATCH
        description: Jupyter Notebook Update user properties
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Current username.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
      - name: deleteuser
        method: DELETE
        description: Jupyter Notebook Delete a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Username to delete.
          required: true
    - name: users-name-activity
      path: /users/{name}/activity
      operations:
      - name: notifyuseractivity
        method: POST
        description: Jupyter Notebook Notify user activity
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Username.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: users-name-server
      path: /users/{name}/server
      operations:
      - name: startuserserver
        method: POST
        description: Jupyter Notebook Start user's default server
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Username.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: stopuserserver
        method: DELETE
        description: Jupyter Notebook Stop user's default server
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Username.
          required: true
        - name: remove
          in: query
          type: boolean
          description: Whether to fully remove the server record.
    - name: users-name-servers-server_name
      path: /users/{name}/servers/{server_name}
      operations:
      - name: startnamedserver
        method: POST
        description: Jupyter Notebook Start a named server
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Username.
          required: true
        - name: server_name
          in: path
          type: string
          description: Name for the server.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: stopnamedserver
        method: DELETE
        description: Jupyter Notebook Stop a named server
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Username.
          required: true
        - name: server_name
          in: path
          type: string
          description: Name of the server.
          required: true
        - name: remove
          in: query
          type: boolean
          description: Whether to fully remove the server record.
    - name: users-name-tokens
      path: /users/{name}/tokens
      operations:
      - name: listusertokens
        method: GET
        description: Jupyter Notebook List user's API tokens
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Username.
          required: true
      - name: createusertoken
        method: POST
        description: Jupyter Notebook Create an API token
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Username.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: users-name-tokens-token_id
      path: /users/{name}/tokens/{token_id}
      operations:
      - name: getusertoken
        method: GET
        description: Jupyter Notebook Get token details
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Username.
          required: true
        - name: token_id
          in: path
          type: string
          description: Token identifier.
          required: true
      - name: deleteusertoken
        method: DELETE
        description: Jupyter Notebook Revoke an API token
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Username.
          required: true
        - name: token_id
          in: path
          type: string
          description: Token identifier.
          required: true
    authentication:
      type: bearer
      token: '{{env.JUPYTER_NOTEBOOK_API_KEY}}'
  exposes:
  - type: rest
    namespace: jupyterhub-rest-users-rest
    port: 8080
    description: REST adapter for Jupyter Notebook JupyterHub REST API — Users. One Spectral-compliant resource per consumed
      operation, prefixed with /v1.
    resources:
    - path: /v1/users
      name: users
      description: REST surface for users.
      operations:
      - method: GET
        name: listusers
        description: Jupyter Notebook List users
        call: jupyterhub-rest-users.listusers
        with:
          state: rest.state
          offset: rest.offset
          limit: rest.limit
          include_stopped_servers: rest.include_stopped_servers
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createusers
        description: Jupyter Notebook Create multiple users
        call: jupyterhub-rest-users.createusers
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/users/{name}
      name: users-name
      description: REST surface for users-name.
      operations:
      - method: GET
        name: getuser
        description: Jupyter Notebook Get user details
        call: jupyterhub-rest-users.getuser
        with:
          name: rest.name
          include_stopped_servers: rest.include_stopped_servers
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createuser
        description: Jupyter Notebook Create a single user
        call: jupyterhub-rest-users.createuser
        with:
          name: rest.name
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: PATCH
        name: updateuser
        description: Jupyter Notebook Update user properties
        call: jupyterhub-rest-users.updateuser
        with:
          name: rest.name
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: deleteuser
        description: Jupyter Notebook Delete a user
        call: jupyterhub-rest-users.deleteuser
        with:
          name: rest.name
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/users/{name}/activity
      name: users-name-activity
      description: REST surface for users-name-activity.
      operations:
      - method: POST
        name: notifyuseractivity
        description: Jupyter Notebook Notify user activity
        call: jupyterhub-rest-users.notifyuseractivity
        with:
          name: rest.name
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/users/{name}/server
      name: users-name-server
      description: REST surface for users-name-server.
      operations:
      - method: POST
        name: startuserserver
        description: Jupyter Notebook Start user's default server
        call: jupyterhub-rest-users.startuserserver
        with:
          name: rest.name
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: stopuserserver
        description: Jupyter Notebook Stop user's default server
        call: jupyterhub-rest-users.stopuserserver
        with:
          name: rest.name
          remove: rest.remove
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/users/{name}/servers/{server-name}
      name: users-name-servers-server-name
      description: REST surface for users-name-servers-server_name.
      operations:
      - method: POST
        name: startnamedserver
        description: Jupyter Notebook Start a named server
        call: jupyterhub-rest-users.startnamedserver
        with:
          name: rest.name
          server_name: rest.server_name
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: stopnamedserver
        description: Jupyter Notebook Stop a named server
        call: jupyterhub-rest-users.stopnamedserver
        with:
          name: rest.name
          server_name: rest.server_name
          remove: rest.remove
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/users/{name}/tokens
      name: users-name-tokens
      description: REST surface for users-name-tokens.
      operations:
      - method: GET
        name: listusertokens
        description: Jupyter Notebook List user's API tokens
        call: jupyterhub-rest-users.listusertokens
        with:
          name: rest.name
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createusertoken
        description: Jupyter Notebook Create an API token
        call: jupyterhub-rest-users.createusertoken
        with:
          name: rest.name
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/users/{name}/tokens/{token-id}
      name: users-name-tokens-token-id
      description: REST surface for users-name-tokens-token_id.
      operations:
      - method: GET
        name: getusertoken
        description: Jupyter Notebook Get token details
        call: jupyterhub-rest-users.getusertoken
        with:
          name: rest.name
          token_id: rest.token_id
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: deleteusertoken
        description: Jupyter Notebook Revoke an API token
        call: jupyterhub-rest-users.deleteusertoken
        with:
          name: rest.name
          token_id: rest.token_id
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: jupyterhub-rest-users-mcp
    port: 9090
    transport: http
    description: MCP adapter for Jupyter Notebook JupyterHub REST API — Users. One tool per consumed operation, routed inline
      through this capability's consumes block.
    tools:
    - name: jupyter-notebook-list-users
      description: Jupyter Notebook List users
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: jupyterhub-rest-users.listusers
      with:
        state: tools.state
        offset: tools.offset
        limit: tools.limit
        include_stopped_servers: tools.include_stopped_servers
      outputParameters:
      - type: object
        mapping: $.
    - name: jupyter-notebook-create-multiple-users
      description: Jupyter Notebook Create multiple users
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: jupyterhub-rest-users.createusers
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: jupyter-notebook-get-user-details
      description: Jupyter Notebook Get user details
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: jupyterhub-rest-users.getuser
      with:
        name: tools.name
        include_stopped_servers: tools.include_stopped_servers
      outputParameters:
      - type: object
        mapping: $.
    - name: jupyter-notebook-create-single-user
      description: Jupyter Notebook Create a single user
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: jupyterhub-rest-users.createuser
      with:
        name: tools.name
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: jupyter-notebook-update-user-properties
      description: Jupyter Notebook Update user properties
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: jupyterhub-rest-users.updateuser
      with:
        name: tools.name
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: jupyter-notebook-delete-user
      description: Jupyter Notebook Delete a user
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: jupyterhub-rest-users.deleteuser
      with:
        name: tools.name
      outputParameters:
      - type: object
        mapping: $.
    - name: jupyter-notebook-notify-user-activity
      description: Jupyter Notebook Notify user activity
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: jupyterhub-rest-users.notifyuseractivity
      with:
        name: tools.name
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: jupyter-notebook-start-user-s-default
      description: Jupyter Notebook Start user's default server
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: jupyterhub-rest-users.startuserserver
      with:
        name: tools.name
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: jupyter-notebook-stop-user-s-default
      description: Jupyter Notebook Stop user's default server
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: jupyterhub-rest-users.stopuserserver
      with:
        name: tools.name
        remove: tools.remove
      outputParameters:
      - type: object
        mapping: $.
    - name: jupyter-notebook-start-named-server
      description: Jupyter Notebook Start a named server
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: jupyterhub-rest-users.startnamedserver
      with:
        name: tools.name
        server_name: tools.server_name
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: jupyter-notebook-stop-named-server
      description: Jupyter Notebook Stop a named server
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: jupyterhub-rest-users.stopnamedserver
      with:
        name: tools.name
        server_name: tools.server_name
        remove: tools.remove
      outputParameters:
      - type: object
        mapping: $.
    - name: jupyter-notebook-list-user-s-api
      description: Jupyter Notebook List user's API tokens
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: jupyterhub-rest-users.listusertokens
      with:
        name: tools.name
      outputParameters:
      - type: object
        mapping: $.
    - name: jupyter-notebook-create-api-token
      description: Jupyter Notebook Create an API token
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: jupyterhub-rest-users.createusertoken
      with:
        name: tools.name
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: jupyter-notebook-get-token-details
      description: Jupyter Notebook Get token details
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: jupyterhub-rest-users.getusertoken
      with:
        name: tools.name
        token_id: tools.token_id
      outputParameters:
      - type: object
        mapping: $.
    - name: jupyter-notebook-revoke-api-token
      description: Jupyter Notebook Revoke an API token
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: jupyterhub-rest-users.deleteusertoken
      with:
        name: tools.name
        token_id: tools.token_id
      outputParameters:
      - type: object
        mapping: $.