OpenAPI Specification
openapi: 3.0.0
info:
title: AI Service Actions Auth API
version: 1.0.0
contact:
email: devel@keboola.com
license:
name: MIT
url: https://opensource.org/licenses/MIT
description: Authentication, account confirmation and MFA.
tags:
- name: Auth
description: Authentication, account confirmation and MFA.
paths:
/auth/signup:
post:
tags:
- Auth
summary: Create account
description: 'Anyone can create an account but must belong to a vendor to manage apps.
'
security: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- name
- email
- password
properties:
name:
type: string
email:
type: string
format: email
password:
type: string
description: 'At least 8 characters with one lowercase, one uppercase and one number; no whitespace.
'
example:
name: John Doe
email: john@keboola.com
password: superSecret1
responses:
'201':
description: Account created
/auth/confirm/{email}/{code}:
post:
tags:
- Auth
summary: Confirm account
description: 'Account needs to be confirmed by a code from the confirmation email sent to the user''s email address.
'
security: []
parameters:
- name: email
in: path
required: true
schema:
type: string
- name: code
in: path
required: true
schema:
type: string
responses:
'200':
description: Account confirmed
get:
tags:
- Auth
summary: Confirm account (browser)
description: 'Confirmation link from the email for browser-based confirmation flows; returns an HTML page.
'
security: []
parameters:
- name: email
in: path
required: true
schema:
type: string
- name: code
in: path
required: true
schema:
type: string
responses:
'200':
description: HTML confirmation page
content:
text/html:
schema:
type: string
/auth/confirm:
post:
tags:
- Auth
summary: Resend confirmation code
description: Resends the account confirmation email.
security: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- email
- password
properties:
email:
type: string
format: email
password:
type: string
example:
email: john@keboola.com
password: superSecret
responses:
'204':
description: Confirmation code resent
/auth/login:
post:
tags:
- Auth
summary: Login
description: 'Login returns three different tokens: `token` (auth, 1 hour), `accessToken` (MFA / logout, 1 hour), and `refreshToken` (30 days). If your account has active MFA, first call returns `session` which is used in a second call along with the MFA code.
'
security: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- email
properties:
email:
type: string
format: email
password:
type: string
description: Use in the first step (before MFA).
session:
type: string
description: Use in the second step (MFA).
code:
type: string
description: MFA code, use in the second step.
challenge:
type: string
enum:
- SMS_MFA
- SOFTWARE_TOKEN_MFA
default: SMS_MFA
description: MFA challenge type, use in the second step.
examples:
password_login:
summary: Login with password
value:
email: john@keboola.com
password: superSecret
mfa_step2:
summary: Login with MFA code
value:
email: john@keboola.com
code: '123456'
session: '{session}'
responses:
'200':
description: Login successful
content:
application/json:
schema:
type: object
properties:
token:
type: string
accessToken:
type: string
refreshToken:
type: string
session:
type: string
expiresIn:
type: integer
/auth/logout:
post:
tags:
- Auth
summary: Logout
description: Invalidates all active access and refresh tokens.
responses:
'204':
description: Logged out
/auth/token:
get:
tags:
- Auth
summary: Refresh token
description: 'Returns fresh auth token and access token in exchange for refresh token received on login.
'
responses:
'200':
description: Token refreshed
content:
application/json:
schema:
type: object
properties:
token:
type: string
accessToken:
type: string
expiresIn:
type: integer
example:
token: '{your token}'
accessToken: '{your token}'
expiresIn: 3600
/auth/profile:
get:
tags:
- Auth
summary: Get user profile
description: 'Returns the current user''s profile. Note that `isMfaEnabled` is deprecated; use `mfa` instead. Property `mfa` can contain values `SOFTWARE_TOKEN_MFA`, `SMS_MFA` and `false`.
'
responses:
'200':
description: User profile
content:
application/json:
schema:
$ref: '#/components/schemas/User'
example:
email: john@keboola.com
name: John Doe
vendors:
- keboola
isAdmin: false
isMfaEnabled: true
mfa: SOFTWARE_TOKEN_MFA
/auth/forgot/{email}:
post:
tags:
- Auth
summary: Reset password
description: Sends email with confirmation code for password reset.
security: []
parameters:
- name: email
in: path
required: true
schema:
type: string
format: email
responses:
'204':
description: Password reset email sent
/auth/forgot/{email}/confirm:
post:
tags:
- Auth
summary: Forgot password confirmation
description: Confirms password reset using the code from the email.
security: []
parameters:
- name: email
in: path
required: true
schema:
type: string
format: email
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- password
- code
properties:
password:
type: string
code:
type: string
example:
code: your code from email
password: new password
responses:
'204':
description: Password reset confirmed
/auth/mfa:
post:
tags:
- Auth
summary: Enable Software MFA
description: 'Enable login using TOTP software token MFA. Returns secret code to enter into a TOTP-generating app such as Google Authenticator.
'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
accessToken:
type: string
description: Access token from login call
example:
accessToken: xxxyyy
responses:
'200':
description: MFA secret code
content:
application/json:
schema:
type: object
properties:
secretCode:
type: string
example:
secretCode: xxx
/auth/mfa/confirm:
post:
tags:
- Auth
summary: Confirm Software MFA
description: Confirm multi-factor authentication using code from your TOTP app.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- accessToken
- code
properties:
accessToken:
type: string
description: Access token from login call
code:
type: string
description: Code from your TOTP app
example:
accessToken: xxxyyy
code: '123456'
responses:
'200':
description: MFA confirmed
components:
schemas:
User:
type: object
additionalProperties: true
properties:
name:
type: string
email:
type: string
format: email
vendors:
type: array
items:
type: string
isAdmin:
type: boolean
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-StorageApi-Token