Create account
Create accounts (users) of varying permission levels (MasterAdmin, DomainAdmin, MailUser)
- HTTP Method:
POST
- URL:
https://example.domain.tld/api/v1/accounts/
- Require authentication:
Yes
Permission levels
- MailUser is the permission level with ability to send and receive emails.
- DomainAdmin administers all MailUsers of domains belonging to them.
- MasterAdmin administers all admins & MailUsers and has access to server-wide configuration.
Password requirements
- Must be at least 12 characters long
- Must contain at least 1 uppercase & lowercase letter
- Must contain at least 1 digit
Create MasterAdmin
- Permission level required:
MasterAdmin
Request parameters
| Parameter |
Type |
Description |
Required |
| username |
str |
Account username |
Required |
| password |
str |
Account password |
Required |
| perm_level |
str |
Account permission level |
Required |
| api_access |
int |
Enable (1) or disable (0) API access |
Required |
| enabled |
int |
Enable (1) or disable (0) account |
Required |
| recovery_email |
str |
Email to use for password reset |
Required |
| language |
str |
ISO 639-1 or ISO 639-2 language code |
Required |
password can be in plain-text or hashed form. Hash must use SHA512-Crypt scheme and must be of the following format: {SHA512-CRYPT}$6$...
Response parameters
| Parameter |
Type |
Description |
| username |
str |
Account username |
| perm_level |
str |
Account permission level |
| api_access |
int |
Enabled (1) or disabled (0) API access |
| enabled |
int |
Enabled (1) or disabled (0) account |
| recovery_email |
str |
Email used for password reset |
| language |
str |
ISO 639-1 or ISO 639-2 language code |
Example request (Python)
import requests
import json
from pprint import pprint
url = "https://example.domain.tld/api/v1/accounts/"
data = {
"username" : "some-username",
"password" : "some-password",
"perm_level" : "MasterAdmin",
"api_access" : 1,
"enabled" : 1,
"recovery_email" : "recovery@domain.tld",
"language" : "en"
}
r = requests.post(url, json=data, auth=("admin","long-auth_token-here"))
try:
pprint(r.json())
except:
print(r.text)
Example response (JSON)
{'api_access': 1,
'enabled': 1,
'language': 'en',
'perm_level': 'MasterAdmin',
'recovery_email': 'recovery@domain.tld',
'username': 'some-username'}
Create DomainAdmin
- Permission level required:
MasterAdmin
Request parameters
| Parameter |
Type |
Description |
Required |
| username |
str |
Account username |
Required |
| password |
str |
Account password |
Required |
| perm_level |
str |
Account permission level |
Required |
| api_access |
int |
Enable (1) or disable (0) API access |
Required |
| enabled |
int |
Enable (1) or disable (0) account |
Required |
| recovery_email |
str |
Email to use for password reset |
Required |
| language |
str |
ISO 639-1 or ISO 639-2 language code |
Required |
| domains |
str |
Comma separated list of administered domains |
Required |
| storagequota_total |
int |
Storage quota in MB |
Required |
| quota_domains |
int |
Domains quota |
Required |
| quota_mailboxes |
int |
Mailboxes quota |
Required |
| quota_aliases |
int |
Aliases quota |
Required |
| quota_domainaliases |
int |
Domain aliases quota |
Required |
password can be in plain-text or hashed form. Hash must use SHA512-Crypt scheme and must be of the following format: {SHA512-CRYPT}$6$...
Response parameters
| Parameter |
Type |
Description |
| username |
str |
Account username |
| perm_level |
str |
Account permission level |
| api_access |
int |
Enabled (1) or disabled (0) API access |
| enabled |
int |
Enabled (1) or disabled (0) account |
| recovery_email |
str |
Email used for password reset |
| language |
str |
ISO 639-1 or ISO 639-2 language code |
| domains |
str |
Comma separated list of administered domains |
| storagequota_total |
int |
Storage quota in MB |
| quota_domains |
int |
Domains quota |
| quota_mailboxes |
int |
Mailboxes quota |
| quota_aliases |
int |
Aliases quota |
| quota_domainaliases |
int |
Domain aliases quota |
Example request (Python)
import requests
import json
from pprint import pprint
url = "https://example.domain.tld/api/v1/accounts/"
data = {
"username" : "some-username",
"password" : "some-password",
"perm_level" : "DomainAdmin",
"api_access" : 1,
"enabled" : 1,
"recovery_email" : "recovery@domain.tld",
"language" : "en",
"domains" : "domain1.tld, domain2.tld", # value can be empty string
"storagequota_total" : 500,
"quota_domains" : 5,
"quota_mailboxes" : 5,
"quota_aliases" : 5,
"quota_domainaliases" : 5,
}
r = requests.post(url, json=data, auth=("admin","long-auth_token-here"))
try:
pprint(r.json())
except:
print(r.text)
Example response (JSON)
{
'api_access': 1,
'domains' : 'domain1.tld, domain2.tld',
'enabled': 1,
'language': 'en',
'perm_level': 'DomainAdmin',
'quota_domains' : 5,
'quota_mailboxes' : 5,
'quota_aliases' : 5,
'quota_domainaliases' : 5,
'recovery_email': 'recovery@domain.tld',
'storagequota_total' : 500,
'username': 'some-username'
}
Create MailUser
- Permission level required:
MasterAdmin / DomainAdmin
Request parameters
| Parameter |
Type |
Description |
Required |
| username |
str |
Account username (email address) |
Required |
| password |
str |
Account password |
Required |
| perm_level |
str |
Account permission level |
Required |
| api_access |
int |
Enable (1) or disable (0) API access |
Required |
| enabled |
int |
Enable (1) or disable (0) account |
Required |
| recovery_email |
str |
Email to use for password reset |
Required |
| language |
str |
ISO 639-1 or ISO 639-2 language code |
Required |
| domain |
str |
Domain of email account |
Required |
| storagequota_total |
int |
Storage quota in MB |
Required |
password can be in plain-text or hashed form. Hash must use SHA512-Crypt scheme and must be of the following format: {SHA512-CRYPT}$6$...
Response parameters
| Parameter |
Type |
Description |
| username |
str |
Account username (email address) |
| perm_level |
str |
Account permission level |
| api_access |
int |
Enabled (1) or disabled (0) API access |
| enabled |
int |
Enabled (1) or disabled (0) account |
| recovery_email |
str |
Email used for password reset |
| language |
str |
ISO 639-1 or ISO 639-2 language code |
| domain |
str |
Domain of email account |
| storagequota_total |
int |
Storage quota in MB |
Example request (Python)
import requests
import json
from pprint import pprint
url = "https://example.domain.tld/api/v1/accounts/"
data = {
"username" : "user@mydomain.tld",
"password" : "some-password",
"perm_level" : "MailUser",
"api_access" : 1,
"enabled" : 1,
"recovery_email" : "recovery@domain.tld",
"language" : "en",
"domain" : "mydomain.tld",
"storagequota_total" : 100
}
r = requests.post(url, json=data, auth=("admin","long-auth_token-here"))
try:
pprint(r.json())
except:
print(r.text)
Example response (JSON)
{
'api_access': 1,
'domain' : 'mydomain.tld',
'enabled': 1,
'language': 'en',
'perm_level': 'MailUser',
'recovery_email': 'recovery@domain.tld',
'storagequota_total' : 100,
'username': 'user@mydomain.tld'
}