Download OpenAPI specification:Download
Some data formats need some clarification and are not obvious from the API itself.
Timestamps are in milliseconds since 01/01/1970 UTC +0:00.
URLs can be either an absolute URL or an absolute URL path. In case of an absolute URL path the client is expected to prepend the configured scheme and hostname.
To be able to distinguish different mail clients in the facade all clients must send a specific user agent. This user agent is build up with a branding identifier, an OS identifier, a string identifying the type of client, a version of the client, version information about the operating system running on and the name of the device running on.
The complete user agent has the format:
{branding name}.{OS identifier}.Mail/{client version} (OS: {OS version}; device: {device identifier})
The default branding name is OpenXchange
.
The OS specific identifier is a short string as described in the following table.
Platform | OS identifier |
---|---|
Android | Android |
iOS | iOS |
OS X | OSX |
Windows | Windows |
Windows 10 Mobile | WP |
Swagger | Swagger |
If your client is not listed in the above table please contact the facade developers.
Version numbers are in semantic versioning scheme.
Examples are
OpenXchange.Android.Mail/1.0+1234 (OS: 7.0; device: Samsung/GT9700)
OpenXchange.iOS.Mail/1.0.6 (OS: 10.0.3; device: iPhone 7 Plus)
To be able to track users and requests among different components (app, Mobile API Facade, middleware) the clients can use the headers 'X-Context-ID', 'X-User-ID' and 'X-Tracking-ID'. These headers should be included in all requests, excpet the authentication request cannot include 'X-Context-ID' and 'X-User-ID' as these values are not yet known. The values for 'X-Context-ID' and 'X-User-ID' are returned in the login request and are the respective values of contextId and userId attributes. The value 'X-Tracking-ID' is a client generated unique token per request. It's recommended to use a string representation of a UUID.
The Mobile API Facade returns the capabilities configured in the Middleware on successful login and on the configuration endpoint. In addition to these capabilities the Mobile API Facade also defines its own set to signal availability of specific features. To make sure we don't get naming conflicts capabilities only known to the Mobile API Facade they are prefixed with 'facade_'.
The following capabilities are specific to the Mobile API Facade:
Name | Description | Versions |
---|---|---|
facade_accounts_sync | new endpoints for syncing multiple accounts | 1.0.9, 1.2.0, 1.4.0, 1.6.0, 1.8.0 |
facade_accounts_crud | new endpoints for create, update, deletion of accounts | 1.0.12, 1.2.3, 1.4.0, 1.6.0, 1.8.0 |
facade_multiple_accounts_enabled | multiple accounts support is enabled on the Mobile API Facade | 1.0.13, 1.2.4, 1.4.2, 1.6.0, 1.8.0 |
In general the errors are delegated from the middleware to the facade. The facade wraps them in a common format and sends them to the client. The error codes for errors returned by the middleware can be found at https://oxpedia.org/wiki/index.php?title=Error_list.
The facade itself provides the following error codes:
Code | Information |
---|---|
1 | Invalid credentials |
2 | Missing header |
3 | Missing parameter |
4 | Missing cookie |
5 | Invalid User-Agent header |
6 | Too many sessions |
7 | Account not found |
8 | Empty array not allowed |
9 | Invalid account data |
10 | Redirect to another AppSuite server |
11 | Database update...try again later |
12 | Password of secondary mail account changed |
13 | Permission denied |
900 | Client too old |
999 | Internal server error |
The response is a JSON string with two string fields:
This request performs the authentication for the user.
X-User-Agent required | string Default: OpenXchange.Swagger.Mail/2.0.0 (device: unknown, OS: unknown) A user agent string. Has to be named 'User-Agent' in clients but not all web browsers allow setting this header. |
A JSON object.
username required | string |
password required | string Default: "secret" |
clientId | string String to identify the client. This must be an a string with only ascii characters and/or digits. |
{- "username": "string",
- "password": "secret",
- "clientId": "string"
}
{- "session": "string",
- "capabilities": [
- {
- "id": "string",
- "attributes": { }
}
], - "properties": {
- "property1": "string",
- "property2": "string"
}
}
This request performs the logout for the user.
X-Session required | string A session ID previously obtained from the login module. |
X-User-Agent required | string Default: OpenXchange.Swagger.Mail/2.0.0 (device: unknown, OS: unknown) A user agent string. Has to be named 'User-Agent' in clients but not all web browsers allow setting this header. |
X-Tracking-ID | string The tracking ID the client generated to be able to track request from client to middleware. To be able to track requests through the Mobile API Facade to the middleware properly it must be unique per request. Its advised to use a UUID in its string representation. |
X-Context-ID | string The context ID of the logged in user. |
X-User-ID | string The user ID of the logged in user. |
A JSON object.
object (PushUnsubscribeRequestBody) |
{- "push": {
- "transport": "apn",
- "token": "string",
- "topics": [
- "mail"
]
}
}
{- "error": "string",
- "message": "string",
- "categories": [
- "string"
]
}
This returns a list of mail accounts.
X-Session required | string A session ID previously obtained from the login module. |
X-User-Agent required | string Default: OpenXchange.Swagger.Mail/2.0.0 (device: unknown, OS: unknown) A user agent string. Has to be named 'User-Agent' in clients but not all web browsers allow setting this header. |
X-Tracking-ID | string The tracking ID the client generated to be able to track request from client to middleware. To be able to track requests through the Mobile API Facade to the middleware properly it must be unique per request. Its advised to use a UUID in its string representation. |
X-Context-ID | string The context ID of the logged in user. |
X-User-ID | string The user ID of the logged in user. |
{- "accounts": [
- "string"
]
}
This request takes an email address and a password and tries to find the server settings needed.
X-Session required | string A session ID previously obtained from the login module. |
X-User-Agent required | string Default: OpenXchange.Swagger.Mail/2.0.0 (device: unknown, OS: unknown) A user agent string. Has to be named 'User-Agent' in clients but not all web browsers allow setting this header. |
X-Tracking-ID | string The tracking ID the client generated to be able to track request from client to middleware. To be able to track requests through the Mobile API Facade to the middleware properly it must be unique per request. Its advised to use a UUID in its string representation. |
X-Context-ID | string The context ID of the logged in user. |
X-User-ID | string The user ID of the logged in user. |
A JSON object.
mailAddress required | string |
password required | string |
forceInsecureConnection | boolean Default: false |
{- "mailAddress": "string",
- "password": "string",
- "forceInsecureConnection": false
}
{- "account": {
- "id": "string",
- "accountName": "string",
- "userName": "string",
- "firstName": "string",
- "lastName": "string",
- "primaryAddress": "string",
- "aliases": [
- {
- "address": "string"
}
], - "canSend": true,
- "folders": [
- {
- "id": "string",
- "parentId": "string",
- "name": "string",
- "type": "string",
- "validity": "string",
- "next": "string",
- "total": 0,
- "unread": 0
}
], - "standardFolders": {
- "draftsId": "string",
- "inboxId": "string",
- "sentId": "string",
- "spamId": "string",
- "trashId": "string",
- "archiveId": "string"
}
}
}
This returns a list of ids of mail accounts. To retrieve the actual mail account data these informations need to be requests subsequently.
Names/ids are given by the middleware. The main/primary account is usually named '0'.
X-Session required | string A session ID previously obtained from the login module. |
X-User-Agent required | string Default: OpenXchange.Swagger.Mail/2.0.0 (device: unknown, OS: unknown) A user agent string. Has to be named 'User-Agent' in clients but not all web browsers allow setting this header. |
X-Tracking-ID | string The tracking ID the client generated to be able to track request from client to middleware. To be able to track requests through the Mobile API Facade to the middleware properly it must be unique per request. Its advised to use a UUID in its string representation. |
X-Context-ID | string The context ID of the logged in user. |
X-User-ID | string The user ID of the logged in user. |
{- "accounts": [
- "string"
]
}
This returns a specific mail account with all its information and the related folders including the info about the standard forlders.
accountId required | string The id of the requested account of the current user |
X-Session required | string A session ID previously obtained from the login module. |
X-User-Agent required | string Default: OpenXchange.Swagger.Mail/2.0.0 (device: unknown, OS: unknown) A user agent string. Has to be named 'User-Agent' in clients but not all web browsers allow setting this header. |
X-Tracking-ID | string The tracking ID the client generated to be able to track request from client to middleware. To be able to track requests through the Mobile API Facade to the middleware properly it must be unique per request. Its advised to use a UUID in its string representation. |
X-Context-ID | string The context ID of the logged in user. |
X-User-ID | string The user ID of the logged in user. |
{- "account": {
- "id": "string",
- "accountName": "string",
- "userName": "string",
- "firstName": "string",
- "lastName": "string",
- "primaryAddress": "string",
- "aliases": [
- {
- "address": "string"
}
], - "canSend": true,
- "folders": [
- {
- "id": "string",
- "parentId": "string",
- "name": "string",
- "type": "string",
- "validity": "string",
- "next": "string",
- "total": 0,
- "unread": 0
}
], - "standardFolders": {
- "draftsId": "string",
- "inboxId": "string",
- "sentId": "string",
- "spamId": "string",
- "trashId": "string",
- "archiveId": "string"
}
}
}
This returns a list of mail accounts with all its information and the related folders including the info about the standard folders.
X-Session required | string A session ID previously obtained from the login module. |
X-User-Agent required | string Default: OpenXchange.Swagger.Mail/2.0.0 (device: unknown, OS: unknown) A user agent string. Has to be named 'User-Agent' in clients but not all web browsers allow setting this header. |
X-Tracking-ID | string The tracking ID the client generated to be able to track request from client to middleware. To be able to track requests through the Mobile API Facade to the middleware properly it must be unique per request. Its advised to use a UUID in its string representation. |
X-Context-ID | string The context ID of the logged in user. |
X-User-ID | string The user ID of the logged in user. |
{- "accounts": [
- {
- "id": "string",
- "accountName": "string",
- "userName": "string",
- "personalName": "string",
- "login": "string",
- "password": "string",
- "primaryAddress": "string",
- "aliases": [
- {
- "address": "string"
}
], - "mailProtocol": "imap",
- "mailServer": "string",
- "mailPort": 0,
- "mailSecure": true,
- "mailStartTLS": true,
- "mailOauth": "string",
- "mailDisabled": false,
- "transportAuth": "string",
- "transportProtocol": "string",
- "transportServer": "string",
- "transportPort": 0,
- "transportLogin": "string",
- "transportSecure": true,
- "transportStartTLS": true,
- "transportOauth": "string",
- "transportDisabled": false,
- "spamHandler": "string",
- "rootFolder": "string",
- "trashFolder": "string",
- "sentFolder": "string",
- "draftsFolder": "string",
- "spamFolder": "string",
- "confirmedSpamFolder": "string",
- "confirmedHamFolder": "string",
- "inboxFolderId": "string",
- "archiveFolderId": "string",
- "unifiedInboxEnabled": true,
- "folders": [
- {
- "id": "string",
- "parentId": "string",
- "name": "string",
- "type": "string",
- "validity": "string",
- "next": "string",
- "total": 0,
- "unread": 0
}
], - "standardFolders": {
- "draftsId": "string",
- "inboxId": "string",
- "sentId": "string",
- "spamId": "string",
- "trashId": "string",
- "archiveId": "string"
}, - "canSend": true
}
]
}
This creates a mail account and returns it again.
X-Session required | string A session ID previously obtained from the login module. |
X-User-Agent required | string Default: OpenXchange.Swagger.Mail/2.0.0 (device: unknown, OS: unknown) A user agent string. Has to be named 'User-Agent' in clients but not all web browsers allow setting this header. |
X-Tracking-ID | string The tracking ID the client generated to be able to track request from client to middleware. To be able to track requests through the Mobile API Facade to the middleware properly it must be unique per request. Its advised to use a UUID in its string representation. |
X-Context-ID | string The context ID of the logged in user. |
X-User-ID | string The user ID of the logged in user. |
A JSON object.
id | string |
accountName required | string |
personalName | string |
login | string |
password | string |
primaryAddress | string |
Array of objects (AliasCto) [ items ] | |
forceInsecureConnection | boolean Default: false |
ignoreInvalidTransport | boolean Default: false |
mailProtocol required | string Enum: "imap" "pop3" |
mailServer required | string |
mailPort | integer |
mailSecure | boolean |
mailStartTLS | boolean |
mailOauth | string |
mailDisabled | boolean Default: false |
transportProtocol | string |
transportAuth | string |
transportServer | string |
transportPort | integer |
transportLogin | string |
transportSecure | boolean |
transportStartTLS | boolean |
transportOauth | string |
transportDisabled | boolean Default: false |
spamHandler | string |
rootFolder | string |
trashFolder | string |
sentFolder | string |
draftsFolder | string |
spamFolder | string |
confirmedSpamFolder | string |
confirmedHamFolder | < |