Keboola Users API

Manage Keboola users by super admins.

OpenAPI Specification

keboola-users-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: AI Service Actions Users API
  version: 1.0.0
  contact:
    email: devel@keboola.com
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
  description: Manage Keboola users by super admins.
tags:
- name: Users
  description: Manage Keboola users by super admins.
paths:
  /manage/users/{idOrEmail}/mfa:
    delete:
      tags:
      - Users
      summary: Disable MFA for User
      description: 'Disables multi-factor authentication for the specified user.


        This endpoint can also be accessed using user token with feature `can-manage-users`.


        The path parameter accepts an integer user ID or an email address.'
      operationId: delete_/manage/users/{idOrEmail}/mfa::DisableMfaAction
      parameters:
      - name: idOrEmail
        in: path
        description: User ID (integer) or email address.
        required: true
        schema:
          type: string
          pattern: '[^\/]*'
        example: john.doe@keboola.com
      responses:
        '204':
          description: MFA disabled successfully.
        '400':
          description: Returned when MFA is not enabled for the user.
        '401':
          description: Returned when the Manage token is missing or invalid.
        '403':
          description: Returned when the current admin cannot manage the user.
        '404':
          description: Returned when the user does not exist.
  /manage/users/{idOrEmail}:
    get:
      tags:
      - Users
      summary: User detail
      description: Returns detail of a user. The path parameter accepts an integer user ID or an email address.
      operationId: get_/manage/users/{idOrEmail}::UserDetailAction
      parameters:
      - name: idOrEmail
        in: path
        description: User ID (integer) or email address.
        required: true
        schema:
          type: string
          pattern: '[^\/]*'
        example: john.doe@keboola.com
      responses:
        '200':
          description: User detail response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
              example:
                id: 2
                name: Martin
                email: spelling@keboola.com
                features:
                - inline-manual
                mfaEnabled: true
                canAccessLogs: true
                isSuperAdmin: true
        '401':
          description: Returned when the Manage token is missing or invalid.
        '403':
          description: Returned when the current admin cannot access the user.
        '404':
          description: Returned when the user does not exist.
    put:
      tags:
      - Users
      summary: Update a user
      description: Updates the specified user. The path parameter accepts an integer user ID or an email address.
      operationId: put_/manage/users/{idOrEmail}::UserUpdateAction
      parameters:
      - name: idOrEmail
        in: path
        description: User ID (integer) or email address.
        required: true
        schema:
          type: string
          pattern: '[^\/]*'
        example: john.doe@keboola.com
      requestBody:
        required: true
        content:
          application/json:
            schema:
              properties:
                name:
                  description: User name.
                  type: string
                  example: Martin
              type: object
            example:
              name: Martin
      responses:
        '200':
          description: Updated user detail.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
              example:
                id: 2
                name: Martin
                email: spelling@keboola.com
                features:
                - inline-manual
                mfaEnabled: true
                canAccessLogs: true
                isSuperAdmin: true
        '400':
          description: Returned when the request body is invalid or the name is empty.
        '401':
          description: Returned when the Manage token is missing or invalid.
        '403':
          description: Returned when the current admin cannot manage other users.
        '404':
          description: Returned when the user does not exist.
    delete:
      tags:
      - Users
      summary: Remove user
      description: 'It will completely remove user from everywhere (projects, organizations and maintainers).

        Removes also personal data of user (e-mail and name).


        The path parameter accepts an integer user ID or an email address.'
      operationId: delete_/manage/users/{idOrEmail}::UserDeleteAction
      parameters:
      - name: idOrEmail
        in: path
        description: User ID (integer) or email address.
        required: true
        schema:
          type: string
          pattern: '[^\/]*'
        example: john.doe@keboola.com
      responses:
        '204':
          description: User has been successfully deleted.
        '401':
          description: Returned when the Manage token is missing or invalid.
        '403':
          description: Returned when the current admin has no privilege to delete other users.
        '404':
          description: Returned when the user does not exist.
  /manage/users/{idOrEmail}/metadata/{metadataId}:
    delete:
      tags:
      - Users
      summary: Remove User Metadata
      description: 'Each user can delete only own metadata. Super admins can delete everyone''s metadata.


        The path parameter accepts an integer user ID or an email address.'
      operationId: delete_/manage/users/{idOrEmail}/metadata/{metadataId}::UserDeleteMetadataAction
      parameters:
      - name: idOrEmail
        in: path
        description: User ID (integer) or email address.
        required: true
        schema:
          type: string
          pattern: '[^\/]*'
        example: john.doe@keboola.com
      - name: metadataId
        in: path
        description: Metadata ID.
        required: true
        schema:
          type: integer
          pattern: '[1-9][0-9]*'
        example: 123
      responses:
        '204':
          description: Metadata deleted successfully.
        '401':
          description: Returned when the Manage token is missing or invalid.
        '403':
          description: Returned when the current admin cannot delete the metadata.
        '404':
          description: Returned when the user or metadata entry does not exist.
  /manage/users/{idOrEmail}/metadata:
    get:
      tags:
      - Users
      summary: List user Metadata
      description: 'Each user can list only own metadata. Super admins can list everyone''s metadata.


        The path parameter accepts an integer user ID or an email address.'
      operationId: get_/manage/users/{idOrEmail}/metadata::UserListMetadataAction
      parameters:
      - name: idOrEmail
        in: path
        description: User ID (integer) or email address.
        required: true
        schema:
          type: string
          pattern: '[^\/]*'
        example: john.doe@keboola.com
      responses:
        '200':
          description: List of metadata.
          content:
            application/json:
              schema:
                type: array
                items:
                  properties:
                    id:
                      description: Metadata identifier.
                      type: integer
                      example: 123
                    provider:
                      description: Metadata provider.
                      type: string
                      example: user
                    timestamp:
                      description: Last update timestamp.
                      type: string
                      example: 2021-02-17T15:05:21+0100
                    key:
                      description: Metadata key.
                      type: string
                      example: KBC.SomeEnity.metadataKey
                    value:
                      description: Metadata value.
                      type: string
                      example: Some value
                  type: object
              example:
              - id: 123
                provider: user
                timestamp: 2021-02-17T15:05:21+0100
                key: KBC.SomeEnity.metadataKey
                value: Some value
              - id: 124
                provider: user
                timestamp: 2021-02-17T15:05:21+0100
                key: someMetadataKey
                value: Some value
        '401':
          description: Returned when the Manage token is missing or invalid.
        '404':
          description: Returned when the user does not exist.
    post:
      tags:
      - Users
      summary: Set user metadata
      description: 'Sets multiple metadata with one call. If the given key and provider combination already exist

        for the user, the data will be updated with the new value and timestamp.


        Each user can set only own metadata. Super admins can set everyone''s metadata.


        The path parameter accepts an integer user ID or an email address.'
      operationId: post_/manage/users/{idOrEmail}/metadata::UserSetMetadataAction
      parameters:
      - name: idOrEmail
        in: path
        description: User ID (integer) or email address.
        required: true
        schema:
          type: string
          pattern: '[^\/]*'
        example: john.doe@keboola.com
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MetadataRequest'
            example:
              provider: user
              metadata:
              - key: KBC.SomeEnity.metadataKey
                value: Some value
              - key: someMetadataKey
                value: Some value
      responses:
        '201':
          description: Metadata set successfully.
          content:
            application/json:
              schema:
                type: array
                items:
                  properties:
                    id:
                      description: Metadata identifier.
                      type: integer
                      example: 123
                    provider:
                      description: Metadata provider.
                      type: string
                      example: user
                    timestamp:
                      description: Last update timestamp.
                      type: string
                      example: 2021-02-17T15:05:21+0100
                    key:
                      description: Metadata key.
                      type: string
                      example: KBC.SomeEnity.metadataKey
                    value:
                      description: Metadata value.
                      type: string
                      example: Some value
                  type: object
              example:
              - id: 123
                provider: user
                timestamp: 2021-02-17T15:05:21+0100
                key: KBC.SomeEnity.metadataKey
                value: Some value
              - id: 124
                provider: user
                timestamp: 2021-02-17T15:05:21+0100
                key: someMetadataKey
                value: Some value
        '400':
          description: Returned when the request body fails validation (missing provider/metadata, invalid key/value).
        '401':
          description: Returned when the Manage token is missing or invalid.
        '403':
          description: Returned when the current admin cannot manage user metadata.
        '404':
          description: Returned when the user does not exist.
  /manage/users/{idOrEmail}/super-admin:
    delete:
      tags:
      - Users
      summary: Remove super admin privilege from User
      description: Removes super admin privileges from the specified user. The path parameter accepts an integer user ID or an email address.
      operationId: delete_/manage/users/{idOrEmail}/super-admin::UserRemoveSuperAdminAction
      parameters:
      - name: idOrEmail
        in: path
        description: User ID (integer) or email address.
        required: true
        schema:
          type: string
          pattern: '[^\/]*'
        example: john.doe@keboola.com
      responses:
        '200':
          description: Updated user detail.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
              example:
                id: 2
                name: Corrected Spelling
                email: spelling@keboola.com
                features:
                - inline-manual
                mfaEnabled: true
                canAccessLogs: false
                isSuperAdmin: false
        '401':
          description: Returned when the Manage token is missing or invalid.
        '403':
          description: Returned when the current admin is not a super admin.
        '404':
          description: Returned when the user does not exist.
components:
  schemas:
    UserResponse:
      required:
      - id
      - name
      - email
      - mfaEnabled
      - features
      - canAccessLogs
      - isSuperAdmin
      properties:
        id:
          description: User identifier.
          type: integer
          example: 2
        name:
          description: User full name.
          type: string
          example: Martin
        email:
          description: User email address.
          type: string
          example: martin@keboola.com
        mfaEnabled:
          description: Whether MFA is enabled for the user.
          type: boolean
          example: true
        features:
          description: List of assigned features.
          type: array
          items:
            type: string
          example:
          - inline-manual
        canAccessLogs:
          description: Whether the user can access logs.
          type: boolean
          example: true
        isSuperAdmin:
          description: Whether the user has super admin privileges.
          type: boolean
          example: true
      type: object
      example:
        id: 2
        name: Martin
        email: martin@keboola.com
        mfaEnabled: true
        features:
        - inline-manual
        canAccessLogs: true
        isSuperAdmin: true
    MetadataRequest:
      required:
      - provider
      - metadata
      properties:
        provider:
          description: Metadata provider.
          type: string
          enum:
          - user
          - system
        metadata:
          description: List of metadata entries.
          type: array
          items:
            required:
            - key
            - value
            properties:
              key:
                description: Metadata key.
                type: string
              value:
                description: Metadata value.
                type: string
            type: object
      type: object
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-StorageApi-Token