Keboola Maintainers API
Manage maintainer records, their members and invitations.
Manage maintainer records, their members and invitations.
openapi: 3.0.0
info:
title: AI Service Actions Maintainers API
version: 1.0.0
contact:
email: devel@keboola.com
license:
name: MIT
url: https://opensource.org/licenses/MIT
description: Manage maintainer records, their members and invitations.
tags:
- name: Maintainers
description: Manage maintainer records, their members and invitations.
paths:
/manage/maintainers/{id}/join-maintainer:
post:
tags:
- Maintainers
summary: Join maintainer
description: Joins the specified maintainer as an administrator.
operationId: post_/manage/maintainers/{id}/join-maintainer::JoinMaintainerAction
parameters:
- name: id
in: path
description: Identifier of the maintainer.
required: true
schema:
type: integer
pattern: '[0-9]+'
example: 1
responses:
'204':
description: Successfully joined the maintainer.
'400':
description: Returned when the user is already a member of this maintainer.
'404':
description: Returned when the maintainer does not exist.
/manage/maintainers/{id}/users:
get:
tags:
- Maintainers
summary: List maintainer users
description: Returns all users of the specified maintainer.
operationId: get_/manage/maintainers/{id}/users::MaintainerListAdministratorsAction
parameters:
- name: id
in: path
description: Maintainer ID.
required: true
schema:
type: integer
pattern: '[0-9]+'
example: 1
responses:
'200':
description: List of maintainer users.
content:
application/json:
schema:
type: array
items:
properties:
id:
type: integer
example: 23423
name:
type: string
example: Martin Halamicek
email:
type: string
example: martin@keboola.com
type: object
example:
- id: 23423
name: Martin Halamicek
email: martin@keboola.com
'401':
description: Returned when the Manage token is missing or invalid.
'403':
description: Returned when the token does not have access to the maintainer.
'404':
description: Returned when the maintainer does not exist.
post:
tags:
- Maintainers
summary: Add a User to maintainer
description: Either `id` or `email` of a user must be set. If the email is not associated with a user, a new account is created and an invitation is sent.
operationId: post_/manage/maintainers/{id}/users::MaintainerAddAdministratorAction
parameters:
- name: id
in: path
description: Maintainer ID.
required: true
schema:
type: integer
pattern: '[0-9]+'
example: 1
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddMaintainerAdministratorRequest'
responses:
'200':
description: Administrator added successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/UserResponse'
'400':
description: Returned when provided parameters are invalid.
'401':
description: Returned when the Manage token is missing or invalid.
'403':
description: Returned when the token does not have access to the maintainer.
'404':
description: Returned when the maintainer does not exist.
/manage/maintainers:
get:
tags:
- Maintainers
summary: List maintainers
description: Returns all maintainers accessible by the manage token.
operationId: get_/manage/maintainers::MaintainerListAction
responses:
'200':
description: List of maintainers.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/MaintainerResponse'
'401':
description: Returned when the Manage token is missing or invalid.
post:
tags:
- Maintainers
summary: Create a maintainer
description: Creates a new maintainer. The user associated with the token will become an admin of the maintainer.
operationId: post_/manage/maintainers::MaintainerCreateAction
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateMaintainerRequest'
responses:
'200':
description: Maintainer created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/MaintainerResponse'
'400':
description: Returned when provided parameters are invalid.
'401':
description: Returned when the Manage token is missing or invalid.
'403':
description: Returned when the token does not have permission to create maintainers.
/manage/maintainers/{id}/invitations:
get:
tags:
- Maintainers
summary: List maintainers invitations
description: Returns all pending invitations for the specified maintainer.
operationId: get_/manage/maintainers/{id}/invitations::MaintainerListInvitationsAction
parameters:
- name: id
in: path
description: Maintainer ID.
required: true
schema:
type: integer
pattern: '[0-9]+'
example: 1
responses:
'200':
description: List of invitations.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/MaintainerInvitationDetailResponse'
example:
- id: 112
created: 2018-07-10T10:45:11+0200
user:
id: 124
name: test user 2
email: spam@keboola.com
creator:
id: 123
name: test user
email: martin@keboola.com
- id: 113
created: 2018-07-10T10:50:00+0200
user:
id: 125
name: test user 3
email: spam@keboola.com
creator:
id: 123
name: test user
email: martin@keboola.com
'401':
description: Returned when the Manage token is missing or invalid.
'403':
description: Returned when the token does not have access to the maintainer.
'404':
description: Returned when the maintainer does not exist.
post:
tags:
- Maintainers
summary: Invite a user to a maintainer
description: Only members of the maintainer and superadmins can invite other users.
operationId: post_/manage/maintainers/{id}/invitations::MaintainerCreateInvitationAction
parameters:
- name: id
in: path
description: Maintainer ID.
required: true
schema:
type: integer
pattern: '[0-9]+'
example: 1
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateMaintainerInvitationRequest'
responses:
'201':
description: Invitation created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/MaintainerInvitationDetailResponse'
'400':
description: Returned when the email is missing or the user is already a member or already invited.
'401':
description: Returned when the Manage token is missing or invalid.
'403':
description: Returned when the token does not have access to the maintainer.
'404':
description: Returned when the maintainer does not exist.
'422':
description: Returned when the provided email address is not a valid email.
/manage/maintainers/{id}:
get:
tags:
- Maintainers
summary: Retrieve a maintainer
description: Returns detail of the specified maintainer.
operationId: get_/manage/maintainers/{id}::MaintainerDetailAction
parameters:
- name: id
in: path
description: Maintainer ID.
required: true
schema:
type: integer
pattern: '[0-9]+'
example: 1
responses:
'200':
description: Maintainer detail.
content:
application/json:
schema:
$ref: '#/components/schemas/MaintainerDetailResponse'
'401':
description: Returned when the Manage token is missing or invalid.
'403':
description: Returned when the token does not have access to the maintainer.
'404':
description: Returned when the maintainer does not exist.
delete:
tags:
- Maintainers
summary: Delete a maintainer
description: Deletes the specified maintainer.
operationId: delete_/manage/maintainers/{id}::MaintainerDeleteAction
parameters:
- name: id
in: path
description: Maintainer ID.
required: true
schema:
type: integer
pattern: '[0-9]+'
example: 1
responses:
'204':
description: Maintainer deleted successfully.
'400':
description: Returned when the maintainer still has organizations and cannot be deleted.
'401':
description: Returned when the Manage token is missing or invalid.
'403':
description: Returned when the token does not have permission to delete the maintainer.
'404':
description: Returned when the maintainer does not exist.
patch:
tags:
- Maintainers
summary: Update a maintainer
description: A partial update of a maintainer.
operationId: patch_/manage/maintainers/{id}::MaintainerUpdateAction
parameters:
- name: id
in: path
description: Maintainer ID.
required: true
schema:
type: integer
pattern: '[0-9]+'
example: 1
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateMaintainerRequest'
responses:
'200':
description: Maintainer updated successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/MaintainerResponse'
'400':
description: Returned when provided parameters are invalid.
'401':
description: Returned when the Manage token is missing or invalid.
'403':
description: Returned when the token does not have permission to update this maintainer.
'404':
description: Returned when the maintainer does not exist.
/manage/maintainers/{id}/invitations/{invitationId}:
get:
tags:
- Maintainers
summary: Maintainer invitation detail
description: Returns detail of the specified maintainer invitation.
operationId: get_/manage/maintainers/{id}/invitations/{invitationId}::MaintainerGetInvitationAction
parameters:
- name: id
in: path
description: Maintainer ID.
required: true
schema:
type: integer
pattern: '[0-9]+'
example: 1
- name: invitationId
in: path
description: Invitation ID.
required: true
schema:
type: integer
pattern: '[0-9]+'
example: 113
responses:
'200':
description: Invitation detail.
content:
application/json:
schema:
$ref: '#/components/schemas/MaintainerInvitationDetailResponse'
'401':
description: Returned when the Manage token is missing or invalid.
'403':
description: Returned when the token does not have access to the maintainer.
'404':
description: Returned when the invitation does not exist.
delete:
tags:
- Maintainers
summary: Cancel maintainer invitation
description: Cancels a pending invitation to join the specified maintainer.
operationId: delete_/manage/maintainers/{id}/invitations/{invitationId}::MaintainerDeleteInvitationAction
parameters:
- name: id
in: path
description: Maintainer ID.
required: true
schema:
type: integer
pattern: '[0-9]+'
example: 1
- name: invitationId
in: path
description: Invitation ID.
required: true
schema:
type: integer
pattern: '[0-9]+'
example: 113
responses:
'204':
description: Invitation deleted successfully.
'401':
description: Returned when the Manage token is missing or invalid.
'403':
description: Returned when the token does not have access to the maintainer.
'404':
description: Returned when the invitation does not exist.
/manage/maintainers/{id}/metadata/{metadataId}:
delete:
tags:
- Maintainers
summary: Remove maintainer metadata
description: Only maintainer members and super admins can delete metadata.
operationId: delete_/manage/maintainers/{id}/metadata/{metadataId}::MaintainerDeleteMetadataAction
parameters:
- name: id
in: path
description: Maintainer ID.
required: true
schema:
type: integer
pattern: '[0-9]+'
example: 1
- name: metadataId
in: path
description: Metadata ID.
required: true
schema:
type: integer
pattern: '[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 token does not have permission to delete this metadata.
'404':
description: Returned when the metadata entry does not exist.
/manage/maintainers/{id}/metadata:
get:
tags:
- Maintainers
summary: List maintainer metadata
description: Only members of the maintainer and super admins can list metadata.
operationId: get_/manage/maintainers/{id}/metadata::MaintainerListMetadataAction
parameters:
- name: id
in: path
description: Maintainer ID.
required: true
schema:
type: integer
pattern: '[0-9]+'
example: 1
responses:
'200':
description: List of metadata.
content:
application/json:
schema:
type: array
items:
properties:
id:
type: integer
example: 123
provider:
type: string
example: user
timestamp:
type: string
example: 2021-02-17T15:05:21+0100
key:
type: string
example: KBC.SomeEnity.metadataKey
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.
'403':
description: Returned when the token does not have permission to list metadata.
'404':
description: Returned when the maintainer does not exist.
post:
tags:
- Maintainers
summary: Set maintainer metadata
description: 'Sets multiple metadata with one call. If the given key and provider combination already exist
for the maintainer, the data will be updated with the new value and timestamp.
Only maintainer members and super admins can change metadata.'
operationId: post_/manage/maintainers/{id}/metadata::MaintainerSetMetadataAction
parameters:
- name: id
in: path
description: Maintainer ID.
required: true
schema:
type: integer
pattern: '[0-9]+'
example: 1
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SetMaintainerMetadataRequest'
responses:
'201':
description: Metadata set successfully.
content:
application/json:
schema:
type: array
items:
properties:
id:
type: integer
example: 123
provider:
type: string
example: user
timestamp:
type: string
example: 2021-02-17T15:05:21+0100
key:
type: string
example: KBC.SomeEnity.metadataKey
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 provided metadata is invalid.
'401':
description: Returned when the Manage token is missing or invalid.
'403':
description: Returned when the token does not have permission to set metadata.
'404':
description: Returned when the maintainer does not exist.
/manage/maintainers/{id}/users/{adminId}:
delete:
tags:
- Maintainers
summary: Remove a user from maintainer
description: Removes a user from the specified maintainer.
operationId: delete_/manage/maintainers/{id}/users/{adminId}::MaintainerRemoveAdministratorAction
parameters:
- name: id
in: path
description: Maintainer ID.
required: true
schema:
type: integer
pattern: '[0-9]+'
example: 1
- name: adminId
in: path
description: User ID.
required: true
schema:
type: integer
pattern: '[0-9]+'
example: 1
responses:
'204':
description: Administrator removed successfully.
'400':
description: Returned when the administrator cannot be removed (e.g., last member).
'401':
description: Returned when the Manage token is missing or invalid.
'403':
description: Returned when the token does not have access to the maintainer.
'404':
description: Returned when the maintainer or administrator does not exist.
components:
schemas:
MaintainerDetailResponse:
type: object
allOf:
- $ref: '#/components/schemas/MaintainerResponse'
CreateMaintainerInvitationRequest:
required:
- email
properties:
email:
description: Email of an invited user.
type: string
format: email
example: martin@keboola.com
type: object
example:
email: martin@keboola.com
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
CreateMaintainerRequest:
required:
- name
properties:
name:
description: Maintainer name.
type: string
example: Example
defaultConnectionMysqlId:
description: Default MySQL connection ID.
type: integer
example: 324
nullable: true
defaultConnectionSnowflakeId:
description: Default Snowflake connection ID.
type: integer
example: 324
nullable: true
defaultConnectionSynapseId:
description: Default Synapse connection ID.
type: integer
example: 324
nullable: true
defaultConnectionExasolId:
description: Default Exasol connection ID.
type: integer
example: 324
nullable: true
defaultConnectionBigqueryId:
description: Default BigQuery connection ID.
type: integer
example: 324
nullable: true
defaultConnectionTeradataId:
description: Default Teradata connection ID.
type: integer
example: 324
nullable: true
zendeskUrl:
description: Zendesk URL.
type: string
example: https://keboola.zendesk.com
nullable: true
defaultFileStorageId:
description: Default file storage ID.
type: integer
example: 456
nullable: true
type: object
example:
name: Example
defaultConnectionSnowflakeId: 324
zendeskUrl: https://keboola.zendesk.com
SetMaintainerMetadataRequest:
required:
- provider
- metadata
properties:
provider:
description: Metadata provider. Only super admin can change `system` metadata.
type: string
example: user
enum:
- user
- system
metadata:
description: Array of metadata objects.
type: array
items:
required:
- key
- value
properties:
key:
description: Metadata key.
type: string
example: KBC.SomeEnity.metadataKey
value:
description: Metadata value.
type: string
example: Some value
type: object
type: object
example:
provider: user
metadata:
- key: KBC.SomeEnity.metadataKey
value: Some value
- key: someMetadataKey
value: Some value
AddMaintainerAdministratorRequest:
properties:
id:
description: User ID.
type: integer
example: 7234
nullable: true
email:
description: User email.
type: string
format: email
example: martin@keboola.com
nullable: true
type: object
example:
email: martin@keboola.com
MaintainerResponse:
required:
- id
- name
- created
- organizations
properties:
id:
description: Maintainer identifier.
type: integer
example: 123
name:
description: Maintainer name.
type: string
example: Keboola CZ
created:
description: Maintainer creation timestamp.
type: string
format: date-time
example: '2014-11-11T08:40:51.620Z'
defaultConnectionMysqlId:
description: Default MySQL connection identifier.
type: integer
example: 234
nullable: true
defaultConnectionSnowflakeId:
description: Default Snowflake connection identifier.
type: integer
example: 242
nullable: true
defaultConnectionSynapseId:
description: Default Synapse connection identifier.
type: integer
example: 235
nullable: true
defaultConnectionExasolId:
description: Default Exasol connection identifier.
type: integer
example: 236
nullable: true
defaultConnectionBigqueryId:
description: Default BigQuery connection identifier.
type: integer
example: 236
nullable: true
defaultConnectionTeradataId:
description: Default Teradata connection identifier.
type: integer
example: 236
nullable: true
defaultFileStorageId:
description: Default file storage identifier.
type: integer
example: null
nullable: true
zendeskUrl:
description: Zendesk URL for this maintainer.
type: string
example: https://keboola.zendesk.com
nullable: true
organizations:
description: List of organizations belonging to this maintainer.
type: array
items:
properties:
id:
description: Organization identifier.
type: integer
example: 12
name:
description: Organization name.
type: string
example: My Awesome Organization
type: object
type: object
example:
id: 123
name: Keboola CZ
created: '2014-11-11T08:40:51.620Z'
defaultConnectionMysqlId: 234
defaultConnectionSnowflakeId: 242
defaultConnectionSynapseId: 235
defaultConnectionExasolId: 236
defaultConnectionTeradataId: 236
defaultConnectionBigqueryId: 236
defaultFileStorageId: null
zendeskUrl: https://keboola.zendesk.com
organizations:
- id: 12
name: My Awesome Organization
MaintainerInvitationDetailResponse:
required:
- id
- user
- creator
properties:
id:
description: Invitation identifier.
type: integer
example: 113
created:
description: Invitation creation timestamp (ISO 8601 with `+HHMM` offset).
type: string
example: 2018-07-10T10:50:00+0200
nullable: true
user:
description: Invited user.
properties:
id:
type: integer
example: 125
name:
type: string
example: test user 3
email:
type: string
example: spam@keboola.com
type: object
creator:
description: User who created the invitation.
properties:
id:
type: integer
example: 123
name:
type: string
example: test user
email:
type: string
example: martin@keboola.com
type: object
type: object
example:
id: 113
created: 2018-07-10T10:50:00+0200
user:
id: 125
name: test user 3
email: spam@keboola.com
creator:
id: 123
name: test user
email: martin@keboola.com
UpdateMaintainerRequest:
properties:
name:
description: Maintainer name.
type: string
example: Example
nullable: true
defaultConnectionMysqlId:
description: Default MySQL connection ID.
type: integer
example: 324
nullable: true
defaultConnectionSnowflakeId:
description: Default Snowflake connection ID.
type: integer
example: 324
nullable: true
defaultConnectionSynapseId:
description: Default Synapse connection ID.
type: integer
example: 324
nullable: true
defaultConnectionExasolId:
description: Default Exasol connection ID.
type: integer
example: 324
nullable: true
defaultConnectionBigqueryId:
description: Default BigQuery connection ID.
type: integer
example: 324
nullable: true
defaultConnectionTeradataId:
description: Default Teradata connection ID.
type: integer
example: 324
nullable: true
zendeskUrl:
description: Zendesk URL.
type: string
example: https://keboola.zendesk.com
nullable: true
defaultFileStorageId:
description: Default file storage ID.
type: integer
example: 456
nullable: true
type: object
example:
name: Example
defaultConnectionSnowflakeId: 324
zendeskUrl: https://keboola.zendesk.com
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-StorageApi-Token