Start a session
GET /api/v1/session[?language=<language>]
This call starts a new session. The new session will be unauthorized and will contain the required parameters needed to authorize it:
- a token, and
- the allowed authentication_methods
Query String
| language | Session language (string, optional) | 
Output
An unauthorized session.
Permissions
This call does not require any permission.
HTTP status codes
| 200 | Success | 
| 400 | API error: something is malformed | 
| 400 | Language Not Found: the user provided a languagethat does not exist | 
| 500 | Server error: internal server error | 
Retrieve current session
GET /api/v1/session?token=<token>[&language=<language>]
It returns the session object associated with this token. This call also lets the frontend update the session language.
Query String
| token | Session token (string) | 
| language | Session language (string, optional) | 
Output
The current session.
Permissions
This call does not require any permission.
HTTP status codes
| 200 | Success | 
| 400 | API error: something is malformed | 
| 400 | Session Not Found: session not found for the given token | 
| 500 | Server error: internal server error | 
Authenticate a session
POST /api/v1/session/authenticate?token=<token>[&method=<method>][&login=<login>&password=<password>][&success=<success>][&error=<error>][&response_type=<response_type>][&remember_me={1|0}][&log_event={1|0}]
Authenticate a session using the provided user credentials.
The authentication methods are tested in the given order until one of them succeeds, in which case the session will be authenticated and will provide which method was used; or until all fail, in which case, the request will redirect to the error URL.
The supported authentication methods are:
- “easydb” (default): authenticate easydb user
- logincan be either the user login, if it is not null or a user e-mail address, if it is marked as- use_for_login
- passwordis the user password
 
- “task”: authenticate easydb to perform a task - this method is called during the “forgot password” and “confirm e-mail” processes
- loginis an e-mail address
- passwordis an authentication token for the process
 
- “easydb_cookie”: authenticate easydb user using a cookie
- “anonymous”: a virtual user will be created
- “email”: authenticate an easydb user of type “email” using its email as login and a collection UUID as password
- “collection”: authenticate an easydb user of type “collection” using the collection UUID as login and the collection secret as password
The method task is only supported if it is given as sole method (not in combination with others). This method does not support success, error,
response_type or remember_me. It always returns a session with pending tasks.
When the system detects a series of failed login attempts, it will block the user for a certain time. The amount of attempts and the duration of the block can be configured in the base configuration.
Query String
| token | Session token (string) | 
| method | Authentication method(s) (string): comma-separated list of authentication methods | 
| login | Login (string): mandatory except for anonymous and easydb_cookie | 
| password | Password (string): mandatory except for anonymous and easydb_cookie | 
| response_type | Response type (see “Output”): redirect (default) or javascript | 
| success | URL to redirect / function to be called in case of success (string, optional) | 
| error | URL to redirect / function to be called in case of authentication error (string, optional) | 
| remember_me | If set to "1", remember user using a cookie (only for method “easydb”, optional, defaults to"0") | 
| log_event | If set to "0", for the authentication no USER_LOGIN event is logged, optional, defaults to"1") | 
All query parameter can also be sent in an HTML form in the request body (content type application/x-www-form-urlencoded)
Authenticating any user account with a root account
To login into any user account without knowledge of the users password, provide the password in the form <root login>/<root password>.
- <root login>: Login of the Root account- rootor any user account that has the system right- root
- <root password>: Password of the Root account
Example: to login as the user user01 without knowing the actual user password, provide ?login=user01&password=root/admin as URL parameters, where root and admin are the login credentials of an account with root rights.
Output
The output depends on the response_type.
Response type “redirect”
If the response is successful and success was given, a HTTP 302 response (redirect) is returned with the “Location” header
pointing to the given URL. If no success was given, the session is returned.
If the response is not successful and error was given, a HTTP 302 response (redirect) is returned with the “Location” header
pointing to the given URL, extended with a fragment identifier: <error>#m:<reason>#l:<login>. If no error was given, an
appropriate error response is returned.
Response type “javascript”
For this response type, success and error must be given. They contain the name of a function that should be called on success
or error, respectively. A HTML page is returned with a simple script that calls the corresponding function with the session or
error response as argument. The HTTP status code will be 200 or 403 depending on the success of the authentication.
Method “task”
This method returns a session with pending tasks to guide the client through a process (“forgot_password” or “confirm_email”).
Permissions
The authentication method “anonymous” is allowed
- if the configuration variable login_intranetis set to true and the user comes from an intranet address, or
- if the configuration variable login_internetis set to true and the user comes from an internet address
The other authentication methods are always allowed. However, the authentication itself may fail:
- The authentication method “easydb” will fail if the user flag login_disabledis set. This can be used by the administrator to block users
- The authentication method “easydb” may fail due to wrong credentials
- The authentication methods “email” and “collection” may fail due to wrong credentials or because the sharing has stopped. If the latter case, a message explains what happened
HTTP status codes
If an error is redirected (302), the 
| reason | ||
|---|---|---|
| 200 | Success (the body may be JSON or HTML, depending on the response_type) | |
| 302 | See “Output” | |
| 400 | API error: something is malformed | |
| 400 | Session Not Found: session not found for the given token | session_missing | 
| 400 | Username or Password Empty: username or password empty | username_or_password_empty | 
| 400 | Login Failed: login failed | login_failed | 
| 400 | Login Disabled: login disabled | login_disabled | 
| 400 | Login Disabled From: login disabled from a timestamp on | login_disabled | 
| 400 | Login Disabled To: login disabled until a timestamp | login_disabled | 
| 400 | Login Blocked: login blocked | login_blocked | 
| 400 | Authentication Method Not Allowed: authentication method not allowed | |
| 400 | Collection Sharing Inactive: Collection sharing has been deactivated (for “email” or “collection”) | |
| 400 | Collection Sharing Too Soon: Collection sharing is not valid yet (for “email” or “collection”) | |
| 400 | Collection Sharing Too Late: Collection sharing is no longer valid (for “email” or “collection”) | |
| 400 | Authentication Token Expired: The authentication token used as passwordhas expired (1) | |
| 400 | Authentication Token Used: The authentication token used as passwordhas already been used (1) | |
| 403 | Login failed and response_typejavascript; the body will be HTML | |
| 403 | Login disabled and response_typejavascript; the body will be HTML | |
| 500 | Server error: internal server error | 
1: the authentication token is only used in the password reset process and should not be confused with the session token.
Authenticate a session using single-sign-on
GET /api/v1/session/sso/authenticate
This authentication method is only allowed if some plugin has registered an “sso_get_user” callback.
The user is authenticated using the underlying authentication method (this is configured as part of the Apache configuration).
The plugin is responsible for generating a partial user record. The server will create the user if it does not exist (based on the user login).
If this user record contains an array of strings under “_groups”, the server will try to map them to actual groups and link the
user to them. The mapping is based on the configuration of the group: field _auth_method_group_maps. The
methods are processed in order:
- “eq” means that the name provided by the plugin must match the value
- “regexp” means that the name provided by the plugin must match the regexp described by the value
Query String
| token | Session token (string) | 
| success | Function to be called in case of success (string, optional) | 
| error | Function to be called in case of authentication error (string, optional) | 
Output
An authenticated session. If success is set, a HTML page is returned with a
simple script that calls the corresponding function with the session as argument.
HTTP status codes
If error is set, a HTML page is returned with a simple script that calls the corresponding function with the error as argument.
| 200 | Success | 
| 500 | Server error: internal server error | 
Deauthenticate a session
POST /api/v1/session/deauthenticate?token=<token>[&error=<error>]
Deauthenticate a session. If the session was not authenticated, this call does nothing.
Query String
| token | Session token (string) | 
| error | URL to redirect in case of authentication error (string, optional) | 
Output
An unauthenticated session.
Permissions
This call does not require any permission.
HTTP status codes
If an error occurs and error is set, the response will be a redirection. See previous call for details.
| reason | ||
|---|---|---|
| 200 | Success | |
| 302 | See “Output” | |
| 400 | API error: something is malformed | |
| 400 | Session Not Found: session not found for the given token | session_missing | 
| 500 | Server error: internal server error | 
Confirm messages for a session
POST /api/v1/session/messages_confirm?token=<token>
Query String
| token | Session token (string) | 
Input
A JSON array of confirmation keys (string). The keys are included in the session’s pending_tasks.
Output
The current session.
Permissions
The session must be authenticated.
HTTP status codes
| 200 | Success | 
| 400 | API error: something is malformed | 
| 400 | Not Authenticated: session is not authenticated | 
| 500 | Server error: internal server error | 
Change password
POST /api/v1/session/change_password?token=<token>
Query String
| token | Session token (string) | 
Input
A JSON object containing the keys:
- password: the current password (string)
- new_password: the new password (string)
Permissions
The user needs the system.user.change_password or be required to change its password via set_change_password (see user).
HTTP status codes
| 200 | Success | 
| 400 | API error: something is malformed | 
| 400 | Invalid Password: the provided passwordis wrong | 
| 400 | Bad Password: the new_passwordviolates the password policy | 
| 400 | Same Password: the new_passwordis the same as the old password | 
| 400 | No System Right: user lacks system.user.change_password | 
| 500 | Server error: internal server error | 
Set password
POST /api/v1/session/set_password?token=<token>[&email=<email>&code=<code>]
This call can be used to set the user’s password. It can be called directly using an authenticated session or as part of the “forgot password” process with an email and code as authentication method.
Query String
| token | Session token (string) | 
| email | E-mail address (string, optional) | 
| code | Authentication code (string, optional) | 
Input
A JSON object containing the keys:
- new_password: the new password (string)
Ouput
The current session.
Permissions
If the session is authenticated, the user needs the system.user.change_password or be required to change its password
via set_change_password (see user).
If the session is not authenticated, email and code are mandatory. These are the parameters sent to the user’s e-mail
address as part of the “forgot password” process. If the call uses the parameters AND is authenticated, it will only work
if the authenticated user is the same as the user identified by the email address.
HTTP status codes
| 200 | Success | 
| 400 | API error: something is malformed | 
| 400 | Invalid Password: the provided passwordis wrong | 
| 400 | Bad Password: the new_passwordviolates the password policy | 
| 400 | Same Password: the new_passwordis the same as the old password | 
| 400 | Login Failed: authentication via emailandcodefailed | 
| 400 | Authentication Token Expired: the codehas expired | 
| 400 | Authentication Token Used: the codehas already been used | 
| 400 | No System Right: user lacks system.user.change_password | 
| 500 | Server error: internal server error | 
Forgot password
POST /api/v1/session/forgot_password
Query String
| token | Session token (string, optional) | 
Input
A JSON object with the key:
- forgot: either a login name or an e-mail address (string)
On success, an e-mail is sent out to the user identified by forgot containing a link to set a new password. If a primary e-mail is found, the link to reset the password is sent to this e-mail address.
If the confirmation of this e-mail address was requested, but the user has not yet confirmed it, the confirmation request will be resent to the user.
Permissions
This call does not require any permission.
HTTP status codes
| 200 | Success | 
| 400 | API error: something is malformed | 
| 400 | User error error.user.forgotten_password_process_disabled: the forgot password process has been disabled | 
| 400 | User error error.user.forgot_password.unknown: the user specified inforgotcould not be identified | 
| 500 | Server error: internal server error | 
Base configuration entries
(l10n-base-config.csv)
email sending keys are shared with POST /api/v1/user:
| l10n key | description | 
|---|---|
| email.usermanagement.block.subject | subject of mail to send | 
| email.usermanagement.block.header | header of email body | 
| email.usermanagement.block.password.forgot_password | body of mail to send, if process was success | 
| email.usermanagement.block.email.confirm | body of mail to send, if email address needs to get confirmed | 
| email.usermanagement.block.footer | footer of email body | 
within the email templates the following keys are replaced (using the %(key)s syntax):
| key | description | 
|---|---|
| displayname | name of recipient | 
| token | one-time authentication token | 
| url | URL to easydb frontend |