VK WorkSpace SaaS logo
Помощь

Документация API

Введение

Для пользования некоторыми возможностями платформы VK WorkSpacе доступен API по адресу https://biz.mail.ru/api/v1/. Для доступа к методам API используется протокол HTTPS. Все ответы API имеют формат JSON.

Все таймстампы возвращаются в формате ISO 8601, в UTC:

YYYY-MM-DDTHH:MM:SSZ

Параметры

Некоторые параметры запросов, такие как идентификатор домена, идентификатор пользователя, передаются как часть адреса:

https://biz.mail.ru/api/v1/domain/{domain_id}/users/{user_id}

Остальные параметры передаются в зависимости от типа запроса либо в теле запроса, либо в строке запроса. Для GET-запросов параметры методов передаются в строке запроса.

curl "https://biz.mail.ru/api/v1/test?access_token=5c918ed51f38749782b8b2c3ad41a265e560661137363830&parameter1=value1&parameter2=value2"GET /api/v1/test?access_token=5c918ed51f38749782b8b2c3ad41a265e560661137363830&parameter1=value1&parameter2=value2Host: biz.mail.ru

Для остальных типов запросов параметры методов передаются в теле запроса. Содержимое тела запроса в этом случае определяется типом, указанным в заголовке Content-Type:

  • application/x-www-form-urlencoded
curl -X POST  "https://biz.mail.ru/api/v1/test?access_token=5c918ed51f38749782b8b2c3ad41a265e560661137363830" -d "parameter1=value1&parameter2=value2"POST /api/v1/test?access_token=5c918ed51f38749782b8b2c3ad41a265e560661137363830Host: biz.mail.ruContent-Type: application/x-www-form-urlencodedparameter1=value1&parameter2=value2
  • application/json
curl -X POST  'https://biz.mail.ru/api/v1/test?access_token=5c918ed51f38749782b8b2c3ad41a265e560661137363830' -d '{"parameter1": "value1", "parameter2": "value2"}' -H 'Content-Type: application/json'POST /api/v1/test?access_token=5c918ed51f38749782b8b2c3ad41a265e560661137363830Host: biz.mail.ruContent-Type: application/x-www-form-urlencoded{"parameter1": "value1", "parameter2": "value2"}
  • multipart/form-data
curl -X POST  "https://biz.mail.ru/api/v1/test?access_token=5c918ed51f38749782b8b2c3ad41a265e560661137363830" -F "parameter1=value1" -F "parameter2=value2"POST /api/v1/test?access_token=5c918ed51f38749782b8b2c3ad41a265e560661137363830'Host: biz.mail.ruContent-Type: multipart/form-data; boundary=------------------------------7b1bfd973086------------------------------7b1bfd973086Content-Disposition: form-data; name="parameter1"value1------------------------------7b1bfd973086Content-Disposition: form-data; name="parameter2"value2------------------------------7b1bfd973086--

Постраничная навигация

Результаты некоторых запросов, возвращающих список однотипных элементов, например список пользователей на домене, выдаются постранично. Атрибут offset показывает смещение выдаваемых элементов в результирующем списке, а атрибут limit — количество выдаваемых элементов на странице, причем limit по умолчанию равен 25 и может принимать максимальное значение, равное 100.

GET /domains/1/users?limit=25&offset=25

В ответе на запрос возвращается словарь, содержащий следующие поля:

  • paging, которое содержит поля:

    • previous — URL предыдущей страницы;

    • next — URL следующей страницы;

    • results_count — общее количество объектов на всех страницах.

  • data – контейнер для данных.

При выдаче элементов первой страницы отсутствует поле previous, а последней — поле next соответственно. В случае когда результирующий список элементов помещается на одну страницу, словарь paging будет содержать только поле results_count.

{  "paging": {    "previous": "https://biz.mail.ru/api/domains/1/users?limit=25&offset=0",    "results_count": 26  },  "data": [    {      "id": 14423,      "username": "alex",      "email": "alex@test.com",      "nick": null,      "firstname": "Алексей",      "lastname": "Пупкин",      "groups": [        {          "id": 3241,          "name": "programmers"        }      ],      "avatars": {        "90x90": "//filin.mail.ru/pic?width=90&height=90&email=alex@test.com"      },      "created_at": "2013-01-09T12:03:28Z",      "status": "active",      "status_at": "2013-01-09T12:03:28Z"    }  ]}

Принципы авторизации

Авторизация клиентов API выполняется на основе протокола OAuth 2.0. В каждом запросе помимо параметров вызываемого метода следует передавать токен access token. Процедуры получения и обновления токена access token описаны в разделе Авторизация OAuth 2.0.

Примеры

GET-запрос:

curl "https://biz.mail.ru/api/v1/domains?access_token=5c918ed51f38749782b8b2c3ad41a265e560661137363830"   GET /api/v1/domains?access_token=5c918ed51f38749782b8b2c3ad41a265e560661137363830Host: biz.mail.ru

POST-запрос:

curl -X POST "https://biz.mail.ru/api/v1/domains?access_token=5c918ed51f38749782b8b2c3ad41a265e560661137363830" -d "name=domain.net"POST /api/v1/domains?access_token=5c918ed51f38749782b8b2c3ad41a265e560661137363830Host: biz.mail.ruContent-Type: application/x-www-form-urlencoded   name=domain.net

PUT-запрос:

curl -X PUT "https://biz.mail.ru/api/v1/domains/1/users/2341?access_token=5c918ed51f38749782b8b2c3ad41a265e560661137363830" -d "lastname=Kotikov"   PUT /api/v1/domains?access_token=5c918ed51f38749782b8b2c3ad41a265e560661137363830Host: biz.mail.ruContent-Type: application/x-www-form-urlencoded lastname=Kotikov

Токен access token можно передавать как часть строки запроса (см. выше) или включать его в заголовок Authorization: Bearer.

Пример

curl "https://biz.mail.ru/api/v1/domains" -H "Authorization: Bearer 5c918ed51f38749782b8b2c3ad41a265e560661137363830"GET /api/v1/domainsAuthorization: Bearer 5c918ed51f38749782b8b2c3ad41a265e560661137363830Host: biz.mail.ru

Ошибки клиента

В случае ошибок клиента возвращается ответ с HTTP-кодом 400.

Ответ

HTTP 400 BAD REQUEST{  "code": 0,  "message": "Ошибка валидации данных.",  "data":  {    "name": ["Недопустимое имя домена"]  }}

Описание полей

Название
Тип
Описание
message
String
code
Number
data
String

Общие ошибки

code
message
0
Ошибка валидации данных
1
Домен не подтвержден
2
В данный момент Вы не можете воспользоваться выбранной услугой

Для неавторизованных пользователей отдается ответ с HTTP-кодом 403.

HTTP 403 FORBIDDEN{  "message": "Authentication credentials were not provided."}

В случае превышения лимита запросов к какому-либо из методов отдается ответ с HTTP-кодом 429.

Действующие ограничения

  • Любые запросы с одного IP-адреса — не более 200 запросов в минуту.
  • Запросы на добавление домена — не более 50 запросов в минуту.

Описание запросов

Авторизация OAuth 2.0

Авторизация пользователя начинается с того, что происходит перенаправление пользователя на https://o2.mail.ru/login для получения кода авторизации. После чего авторизационный код (либо описание ошибки) возвращается веб-серверу приложения в строке запроса на указанный redirect_uri. После получения авторизационного кода приложение может обменять его на токен доступа access_token и токен для обновления токена доступа refresh_token.

В качестве приложения можно использовать следующее:

  • client_id: J34ZMt9oJv3jnx4KuSf2E5RQTxKmNbR5

  • client_secret: dJyVVMrC2cPftztWdXHjukt2SY97SZMT

  • redirect_uri: https://localhost

Список запросов:

  1. Получение кода авторизации
  2. Получение токена
  3. Обновление токена
  4. Информация о пользователе по токену

Описание ошибок авторизации: раздел 5. Ошибки авторизации.

1. Получение кода авторизации

GET https://o2.mail.ru/login

Поля

Название
Значение
Описание
response_type
code
client_id
redirect_uri
scope
biz.api userinfo
state
Любая строка

Пример

GET /login?client_id=test_client_id&response_type=code&scope=biz.api%20userinfo&redirect_uri=http://domain.net/&state=some_state HTTP/1.1Host: o2.mail.ruContent-Type: text/html

Ответ

Если пользователь успешно прошел авторизацию:

В случае успешного прохождения авторизации пользователь будет перенаправлен на адрес следующего вида:

{redirect_uri}?state={state}&code={authorization_code}

Пример

http://domain.net/?state=some_state&code=b42019a80b7d76b388b504cc4366e98425fcbd3e37363830

После нажатия на кнопку «Отмена» пользователь будет перенаправлен на адрес следующего вида:

{redirect_uri}?error=access_denied&state={state}

Пример

http://domain.net/?error=access_denied&state=some_state

Поля

Название
Описание
code
Код авторизации, по которому может быть получен в дальнейшем токен для доступа. Время жизни кода авторизации 5 минут.
state
Соответствует значению указанному в параметре state в запросе.

Если ошибка при получении кода авторизации:

См. раздел Ошибки авторизации.

2. Запрос на получение токена

POST https://o2.mail.ru/token

Поля

Название
Значение
Описание
grant_type
authorization_code
code
redirect_uri

Необходимо указать значения параметров client_id и client_secret в параметрах запроса или в заголовке Authorization (Базовая HTTP-авторизация).

Пример

curl -X POST "https://o2.mail.ru/token" -d "grant_type=authorization_code&code=b42019a80b7d76b388b504cc4366e98425fcbd3e37363830&redirect_uri=http://domain.net/" -u test_client_id:test_client_secretPOST /token HTTP/1.1Host: o2.mail.ruAuthorization: Basic dGVzdF9jbGllbnRfaWQ6dGVzdF9jbGllbnRfc2VjcmV0Content-Type: application/x-www-form-urlencodedgrant_type=authorization_code&code=b42019a80b7d76b388b504cc4366e98425fcbd3e37363830&redirect_uri=http://domain.net/

Ответ

Если токен успешно получен:

HTTP 200 OK { "expires_in": 3600, "access_token": "6c3c7dcebeba73ba878439237b8cdc302031313737363830",     "refresh_token": "b42019a80b7d76b388b504cc4366e98425fcbd3e37363830"   }

Если ошибка при получении токена:

См. раздел Ошибки авторизации.

3. Запрос на обновление токена

POST https://o2.mail.ru/token

Поля

Название
Значение
Описание
client_id
grant_type
refresh_token
refresh_token

Пример

curl -X POST "https://o2.mail.ru/token" -d "client_id=test_client_id&grant_type=refresh_token&refresh_token=b42019a80b7d76b388b504cc4366e98425fcbd3e37363830"POST /token HTTP/1.1Host: o2.mail.ruContent-Type: application/x-www-form-urlencodedclient_id=test_client_id&grant_type=refresh_token&refresh_token=b42019a80b7d76b388b504cc4366e98425fcbd3e37363830

Ответ

Если токен успешно обновлён:

Поля:

Название
Описание
access_token
Токен для доступа
expires_in
Оставшееся время жизни токена в секундах

Пример:

HTTP 200 OK      {     "expires_in": 3600,     "access_token": "4ab90dfebeb475d6aff3702120e6fa4125fcbd3e37363830"   }

Если ошибка при обновлении токена:

См. раздел Ошибки авторизации.

При возращении ошибки token not found необходимо вновь запросить refresh_token.

4. Запрос информации о пользователе по токену

GET https://o2.mail.ru/userinfo

Запрос работает только для токенов, у которых есть scope userinfo.

Поля

Название
Описание
access_token
Токен для доступа.

Пример

curl "https://o2.mail.ru/userinfo?access_token=8e41b7a475aa7691aeead06ef0db28f989fbab0c37363830"GET /userinfo?access_token=8e41b7a475aa7691aeead06ef0db28f989fbab0c37363830 HTTP/1.1Host: o2.mail.ru

Ответ

HTTP 200 OK{    "gender": "m",    "name": "Алексей Иванов",    "locale": "ru_RU",    "first_name": "Алексей",    "last_name": "Иванов"    "email": "alex@ivanov.ru"}

Поля

Название
Описание
gender
Пол, m — мужской, f — женский.
name
Имя и фамилия
first_name
Имя
last_name
Фамилия
locale
Локаль
email
Почтовый адрес

5. Ошибки авторизации

  • В случае неправильного заголовка авторизации возвращается HTTP-статус 401;
  • При возникновении внутренней ошибки сервера возвращается HTTP-статус 500;
  • В остальных случаях — HTTP-статус 200.

Ответ имеет JSON-формат.

Описание полей

Название
Описание
error
Символьный код ошибки
error_code
Численный код ошибки
error_description
Описание ошибки

Описание ошибок

Код
Ошибка
1
invalid client
2
invalid request
6
token not found

Пример

HTTP 200 OK{  "error": "invalid request",  "error_code": 2,  "error_description": "Client has issued malformed or illegal request"}

Домены

Список запросов:

  1. Список доменов

  2. Добавление домена

  3. Получение домена

  4. Варианты подтверждения домена

  5. Подтверждение домена

  6. Получение результата подтверждения домена

  7. Удаление домена

  8. Запрос проверки MX-записей

  9. Получение результата проверки MX-записей

  10. Получение настроек домена

  11. Редактирование настроек домена

  12. Список логотипов

  13. Добавление логотипа

  14. Удаление логотипов

  15. Генерация ключей DKIM

  16. Список алиасов

  17. Добавление алиаса

  18. Получение алиаса

  19. Удаление алиаса

1. Список доменов

GET /domains

Ответ

HTTP 200 OK[  {    "id": 3112,    "name": "test.com",    "confirmed": true,    "migration": false,    "mx_status": -1,    "spf_status": -1,    "shared_address_book": true,    "dkim": {      "status": 0,      "subdomain": "mail._domainkey.test.com",      "value": "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDCXo2/9Yiap0jzdauCeCsAMsuYftQB7oCCE1FIDDMmwoq5hp8HK7KPA+u9Riwmj9zYBAMCBCQckP0wN9Oxs4WUteW1rFLt/6OmNh5b0QrV2M4jy7MLxneu7oqX+dKAKqNZKlH+FReQOoGmaPqadToBeRucif8f1+f8s2YCagzRwIDAQAB"    },    "mxs": {      "records": [        {          "priority": 20,          "record": "alt1.aspmx.l.test.com."        },        {          "priority": 50,          "record": "alt4.aspmx.l.test.com."        },        {          "priority": 40,          "record": "alt3.aspmx.l.test.com."        },        {          "priority": 10,          "record": "aspmx.l.test.com."        },        {          "priority": 30,          "record": "alt2.aspmx.l.test.com."        }      ],      "next_at": "2013-01-15T07:17:34Z",      "checked_at": "2013-01-15T07:17:34Z"    },    "created_at": "2013-01-04T17:29:49Z",    "is_blocked": false,    "user_count": 10,    "is_deleted": false,    "is_blocked": false,    "features": [        "contacts-enabled"    ],    "is_type_confirmed": false,    "domain_version": 2,    "confirmed_at": null,    "confirmation_type": "html",    "contacts": {        "name": "Фамилия",        "email": "test@test.ru",        "phone": "81234567890"    }    "block_reason": null,    "is_trial": false,  }]

Описание полей

Информация о проверке MX-записей:

Название
Тип
next_at
String
checked_at
String
records
Array
record
String
priority
Number

Информация о DKIM:

Название
Тип
status
Number
subdomain
String
value
String

Статусы SPF:

Статус
Описание
-1
Среди SPF-записей нет необходимой
0
Проверка SPF-записей не проводилась
1
Среди SPF-записей есть необходимая, и она является единственной

Статусы MX:

Статус
Описание
-2
Среди найденных MX-записей присутствует необходимая, но она не является единственной
-1
Среди найденных MX-записей нет необходимой
0
Проверка MX-записей не проводилась
1
Среди найденных MX-записей есть необходимая, и она является единственной

Cтатусы DKIM:

status
description
-1
Нет необходимой DKIM-записи
0
Проверка DKIM-записей не проводилась
1
Есть необходимая DKIM-запись

Поле dkim присутствует только у подтвержденных доменов в случае, если ключи были ранее сгенерированы.

2. Добавление домена

POST /domains

Поля

Поле
Обязательность
Тип данных
Описание
name
required
string
Имя домена
{  "name": "test.com"}

Ответ

HTTP 201 CREATED{  "id": 3112,  "name": "test.com",  "confirmed": false,  "mx_status": 0,  "spf_status": 0,  "shared_address_book": true,  "mxs": {},  "created_at": "2013-01-04T16:33:07.022Z",  "user_count": 0}

Ошибки

Код
Описание
0
Ошибка валидации данных
90
Ошибка добавления домена
91
Домен уже добавлен
92
Вы уже являетесь администратором этого домена

3. Получение информации по домену

GET /domains/{domain_id}

Ответ

HTTP 200 OK{  "id": 1,  "name": "test.com",  "confirmed": true,  "migration": false,  "mx_status": -1,  "spf_status": -1,  "shared_address_book": true,  "dkim": {    "status": 0,    "subdomain": "mail._domainkey.test.com",    "value": "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDCXo2/9Yiap0jzdauCeCsAMsuYftQB7oCCE1FIDDMmwoq5hp8HK7KPA+u9Riwmj9zYBAMCBCQckP0wN9Oxs4WUteW1rFLt/6OmNh5b0QrV2M4jy7MLxneu7oqX+dKAKqNZKlH+FReQOoGmaPqadToBeRucif8f1+f8s2YCagzRwIDAQAB"  },  "mxs": {    "records": [      {        "priority": 20,        "record": "alt1.aspmx.l.test.com."      },      {        "priority": 50,        "record": "alt4.aspmx.l.test.com."      },      {        "priority": 40,        "record": "alt3.aspmx.l.test.com."      },      {        "priority": 10,        "record": "aspmx.l.test.com."      },      {        "priority": 30,        "record": "alt2.aspmx.l.test.com."      }    ],    "next_at": "2013-01-15T07:17:34Z",    "checked_at": "2013-01-15T07:17:34Z"  },  "created_at": "2013-01-04T16:33:07.022Z",  "user_count": 10}

4. Варианты подтверждения домена

GET /domains/{domain_id}/confirm

Ответ

HTTP 200 OK{  "html": {    "url": "http://test.com/mailru-domainrk3scrKVBkXxAnH8.html",    "content": "mailru-domain: rk3scrKVBkXxAnH8",    "filename": "mailru-domainrk3scrKVBkXxAnH8.html"  },  "meta": {    "tag": "<meta name=\"mailru-domain\" content=\"rk3scrKVBkXxAnH8\" />"  },  "dns": {    "record": "mailru-domain: rk3scrKVBkXxAnH8"  },  "registrar": "godaddy"}

Ошибки

Код
Описание
103
Домен уже подтверждён

5. Подтверждение домена

POST /domains/{domain_id}/confirm

Поля

Поле
Обязательность
Тип данных
Описание
method
required
string
Выбранный метод: html, meta, dns
{    "method": "html"}

Ответ

  • Запрос на подтверждение домена успешно поставлен в очередь, и получен соответствующий task_id.
HTTP 201 CREATED{  "status": "pending",  "message": "Выполняется проверка",  "task_id": "eafbccae-061b-4b85-ad4c-1a39b5e6a812"}
  • Запрос на подтверждение домена уже был ранее поставлен в очередь, возвращается task_id этого запроса.
HTTP 200 CREATED{  "status": "pending",  "message": "Выполняется проверка",  "task_id": "eafbccae-061b-4b85-ad4c-1a39b5e6a812"}

Возможна ситуация, когда не возвращается task_id. В этом случае надо повторить запрос.

Ошибки

Код
Описание
101
Вы не являетесь владельцем данного домена
102
Ошибка при подтверждении домена
103
Домен уже подтверждён
105
Неизвестный способ подтверждения
106
Превышен лимит количества администрируемых доменов. Обратитесь в службу поддержки
108
Превышен лимит синонимов для данного домена
110
Способ подтверждения не доступен

6. Получение результата подтверждения домена

GET /domains/{domain_id}/confirm/{task_id}

Ответ

  • Выполняется проверка домена
HTTP 200 OK{  "status": "pending",  "message": "Выполняется проверка"}
  • Не удалось выполнить подтверждение домена
HTTP 200 OK{  "status": "failed",  "message": "Доменное имя не найдено.",  "domain": {    "id": 1,    "name": "test.com",    "confirmed": false,    "migration": false,    "mx_status": 0,    "spf_status": 0,    "mxs": {},    "created_at": "2013-01-04T17:29:49Z",    "user_count": 0  }}
  • Домен успешно подтвержден
HTTP 200 OK{  "status": "success",  "message": "Домен подтвержден",  "domain": {    "id": 1,    "name": "test.com",    "confirmed": true,    "migration": false,    "mx_status": 0,    "spf_status": 0,    "shared_address_book": true,    "mxs": {      "records": [],      "next_at": "2013-01-15T07:17:34Z",      "checked_at": "2013-01-15T07:17:34Z"    },    "created_at": "2013-01-04T17:29:49Z",    "user_count": 0  }}

7. Удаление домена

DELETE /domains/{domain_id}

Ответ

HTTP 204 NO CONTENT

Ошибки

HTTP 409 CONFLICT

Домен находится в процессе удаления.

8. Запрос проверки MX-записей

POST /domains/{domain_id}/mx

Ответ

Запрос на подтверждение домена успешно поставлен в очередь, и получен соответствующий task_id:

HTTP 201 CREATED    {    "status": "pending",    "message": "Выполняется проверка",    "task_id": "eafbccae-061b-4b85-ad4c-1a39b5e6a812"  }

Запрос на подтверждение домена уже был ранее поставлен в очередь, возвращается task_id этого запроса:

HTTP 200 OK    {    "status": "pending",    "message": "Выполняется проверка",    "task_id": "eafbccae-061b-4b85-ad4c-1a39b5e6a812"  }

Возможна ситуация когда не возвращается task_id. В этом случае надо повторить запрос.

9. Получение результата проверки MX-записей

GET /domains/{domain_id}/mx/{task_id}

Ответ

Если проверка MX-записей прошла успешно:

HTTP 200 OK    {    "status": "success",    "domain": {      "id": 1,      "name": "test.com",      "confirmed": true,      "mx_status": 0,      "spf_status": 0,      "mxs": {        "records": [          {            "priority": 10,            "record": "emx.mail.ru."          }        ],        "next_at": "2013-01-15T07:17:34Z",        "checked_at": "2013-01-15T07:17:34Z"      },      "created_at": "2013-01-04T17:29:49Z",      "user_count": 10    }  }

Если при проверке MX-записей произошла ошибка:

HTTP 200 OK    {    "status": "failed",    "message": "Обнаружены проблемы с MX-записями",    "code": "no_needed_mx",    "domain": {      "id": 1,      "name": "test.com",      "confirmed": true,      "mx_status": -1,      "spf_status": 0,      "mxs": {        "records": [          {            "priority": 20,            "record": "alt1.aspmx.l.test.com."          },          {            "priority": 50,            "record": "alt4.aspmx.l.test.com."          },          {            "priority": 40,            "record": "alt3.aspmx.l.test.com."          },          {            "priority": 10,            "record": "aspmx.l.test.com."          },          {            "priority": 30,            "record": "alt2.aspmx.l.test.com."          }        ],        "next_at": "2013-01-15T07:17:34Z",        "checked_at": "2013-01-15T07:17:34Z"      },      "created_at": "2013-01-04T17:29:49Z",      "user_count": 10    }  }

Ошибки

Код
Описание
has_other_mxs
Обнаружены лишние MX-записи
no_needed_mx
Необходимые MX-записи не найдены

10. Получение настроек домена

GET /domains/{domain_id}/settings

Ответ

HTTP 200 OK{  "default_email": "support@test.com",  "is_agent_collaborated": false,  "user_limit": 5000,  "allow_password_remind": true,  "allow_password_change": true,  "enable_web_agent": true,  "shared_address_book": true,  "theme": "default",  "two_fa_preserved": true,  "is_company": false,  "offer_accepted": true,  "enable_auto_recharge": false,  "is_trial": false,  "partner": "Megafon",  "is_partner": true}

11. Редактирование настроек домена

PUT /domains/{domain_id}/settings

Поля

Поле
Обязательность
Тип данных
Описание
default_email
optional
string
В этот ящик будут приходить все письма, которые отправлены на несуществующие адреса вашего домена. Например, письмо, отправленное по ошибке на mi@moi_domen.ru, вместо me@moi_domen.ru, попадет в этот ящик.
is_agent_collaborated
optional
boolean
Флаг автоматического добавления пользователей в список контактов агента (флаг работает, пока на домене не более 100 пользователей)
allow_password_remind
optional
boolean
Флаг разрешения восстановления пароля пользователями
allow_password_change
optional
boolean
Флаг разрешения изменения пароли в ящике
enable_web_agent
optional
boolean
Флаг включения/выключения веб-агента в почте
shared_address_book
optional
boolean
Флаг включения/выключения общей адресной книги домена в почте
theme
optional
string
Тема интерфейса в почте (default или t4000…t4016)
two_fa_preserved
optional
boolean
Запрет снятия двухфакторной аутентификации в почте
is_company
optional
boolean
Принадлежность домена к юридическому / физическому лицу. Значения: true — юридическое лицо; false — физическое лицо; null — не определено. Примечание. Флаг невозможно поменять после установки
offer_accepted
optional
boolean
Согласие или несогласие с договором оферты
enable_auto_recharge
optional
boolean
Флаг включения/выключения автоматического пополнения баланса
{  "default_email": "support@test.com",  "is_agent_collaborated": false,  "allow_password_remind": true,  "allow_password_change": false,  "enable_web_agent": true,  "shared_address_book": true,  "theme": "t4016",  "two_fa_preserved": true,  "is_company": false,  "enable_auto_recharge": true}

Ответ

HTTP 200 OK{  "default_email": "support@test.com",  "is_agent_collaborated": false,  "user_limit": 5000,  "allow_password_remind": true,  "allow_password_change": false,  "enable_web_agent": false,  "shared_address_book": true,  "theme": "t4016",  "two_fa_preserved": true,  "is_company": false,  "offer_accepted": true,  "enable_auto_recharge": false,  "is_trial": false,  "partner": "Megafon"}

12. Список логотипов

GET /domains/{domain_id}/logos

Чтобы получить возможность пользоваться данным методом API, необходимо обратиться в службу поддержки.

Ответ

HTTP 200 OK[  {    "type": "hidpi",    "status": "available",    "url": "https://biz.mail.ru/portal_logo/alex.ru/logo_hidpi.png"  },  {    "type": "common",    "status": "available",    "url": "https://biz.mail.ru/portal_logo/alex.ru/logo.png"  }]

Если статусы всех логотипов домена равны available, то возвращается ответ с HTTP-статусом 200, иначе — 202.

Описание полей

Название
Тип
Описание
type
String
status
String
url
String

Типы логотипов

Тип
Размер
common
240х52
hidpi
480x104

Статусы логотипов

Статус
Описание
available
Логотип доступен
removing
Выполняется удаление логотипа
uploading
Выполняется загрузка логотипа

13. Добавление логотипа

POST /domains/{domain_id}/logos

Чтобы получить возможность пользоваться данным методом API, необходимо обратиться в службу поддержки.

Поля

Поле
Обязательность
Тип данных
Описание
image
required
file
Файл с изображением логотипа (допустимый размер логотипа зависит от типа логотипа), формат изображения должен быть png
type
required
string
Тип логотипа

Ответ

HTTP 202 ACCEPTED{  "type": "hidpi",  "status": "uploading",  "url": "https://biz.mail.ru/portal_logo/alex.ru/logo_hidpi.png"}

14. Удаление логотипов

DELETE /domains/{domain_id}/logos

Чтобы получить возможность пользоваться данным методом API, необходимо обратиться в службу поддержки.

Ответ

HTTP 202 ACCEPTED[  {    "type": "hidpi",    "status": "removing",    "url": "https://biz.mail.ru/portal_logo/alex.ru/logo_hidpi.png"  }]

15. Генерация ключей DKIM

POST /domains/{domain_id}/dkim

Ответ

{  "id": 1,  "name": "test.com",  "confirmed": true,  "migration": false,  "mx_status": -1,  "spf_status": -1,  "dkim": {    "status": 0,    "subdomain": "mail._domainkey.test.com",    "value": "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDCXo2/9Yiap0jzdauCeCsAMsuYftQB7oCCE1FIDDMmwoq5hp8HK7KPA+u9Riwmj9zYBAMCBCQckP0wN9Oxs4WUteW1rFLt/6OmNh5b0QrV2M4jy7MLxneu7oqX+dKAKqNZKlH+FReQOoGmaPqadToBeRucif8f1+f8s2YCagzRwIDAQAB"  },  "mxs": {...},  "created_at": "2013-01-04T16:33:07.022Z",  "user_count": 10}

Если ключи были успешно сгенерированы, возвращается HTTP-статус 201. Если ключи были сгенерированы ранее, возвращается HTTP-татус 200.

16. Список алиасов

GET /domains/{domain_id}/aliases

У одного домена может быть несколько доменов-алиасов. Например, если у домена test.com есть подтвержденный домен-алиас test.ru, и на основном домене test.com есть пользователь alex@test.com, то письма, отправленные на ящик alex@test.ru, придут в основной ящик alex@test.com. Данная возможность позволяет не терять письма даже в том случае, если ваши клиенты или партнеры, перепутают доменную зону (напишут на test.ru вместо test.com). Письмо придет в соответствующий ящик, расположенный на основном домене.

Ответ

HTTP 200 OK[  {    "id": 74121,    "name": "alias.com",    "confirmed": true,    "mx_status": -1,    "spf_status": -1,    "mxs": {      "records": [        {          "priority": 20,          "record": "alt1.aspmx.l.test.com."        }      ],      "next_at": "2013-01-15T07:17:34Z",      "checked_at": "2013-01-15T07:17:34Z"    },    "created_at": "2013-01-04T17:29:59Z",    "alias_for": 3112  }]

Описание полей

Название
Тип
Описание
id
Number
name
String
confirmed
Boolean
mx_status
Number
spf_status)
Number
mxs
Object
created_at
String
alias_for
Number

17. Добавление алиаса

POST /domains/{domain_id}/aliases

После того как алиас добавлен, его необходимо подтвердить. Подтверждение алиасов выполняется аналогично подтверждению обычных доменов. Для каждого домена может быть добавлено не более 5 подтвержденных доменов-алиасов.

Поля

Поле
Обязательность
Тип данных
Описание
name
required
string
Имя алиаса
{  "name": "alias.com"}

Ответ

HTTP 201 CREATED{  "id": 74121,  "name": "alias.com",  "confirmed": false,  "mx_status": 0,  "spf_status": 0,  "mxs": {},  "created_at": "2013-01-04T17:29:59Z",  "alias_for": 3112}

Ошибки

code
message
90
Ошибка добавления домена
91
Домен уже добавлен
108
Превышен лимит синонимов для данного домена

18. Получение алиаса

GET /domains/{domain_id}/aliases/{alias_id}

Ответ

HTTP 200 OK{  "id": 74121,  "name": "alias.com",  "confirmed": true,  "mx_status": -1,  "spf_status": -1,  "mxs": {    "records": [      {        "priority": 20,        "record": "alt1.aspmx.l.test.com."      }    ],    "next_at": "2013-01-15T07:17:34Z",    "checked_at": "2013-01-15T07:17:34Z"  },  "created_at": "2013-01-04T17:29:59Z",  "alias_for": 3112}

19. Удаление алиаса

DELETE /domains/{domain_id}/aliases/{alias_id}

Ответ

HTTP 204 NO CONTENT

Ошибки

HTTP 409 CONFLICT

Домен находится в процессе удаления.

Пользователи

Список запросов:

  1. Список пользователей

  2. Добавление пользователя

  3. Редактирование пользователя

  4. Получение пользователя

  5. Удаление пользователя

  6. Список алиасов

  7. Валидация алиаса

  8. Добавление алиаса

  9. Получение алиаса

  10. Удаление алиаса

1. Список пользователей

GET /domains/{domain_id}/users

Параметры фильтрации (строки запроса)

Параметр
Обязательность
Тип данных
Описание
cloud
optional
string
Фильтрует список пользователей, оставляя только тех, которые есть в облаке. Может принимать только одно значение: true. Используется для частного случая только в связке с no_limit=true. В остальных случаях не работает.
no_limit
optional
string
Отключает пагинацию для списка пользователей. Принимает только одно значение: true Используется для частного случая только в связке с cloud=true. В остальных случаях не работает.

Ответ

HTTP 200 OK{  "paging": {...},  "data": [    {      "id": 414,      "username": "alex",      "email": "alex@test.com",      "nick": null,      "firstname": "Алексей",      "lastname": "Пупкин",      "is_spammer": False,      "groups": [        {          "id": 563,          "name": "programmers"        }      ],      "avatars": {        "90x90": "//filin.mail.ru/pic?width=90&height=90&email=alex@test.com"      },      "created_at": "2013-01-09T12:03:28Z",      "status": "active",      "status_at": "2013-01-09T12:03:28Z",      "contact": null    }  ]}

Список пользователей разбивается на страницы. Механизм постраничной навигации описан в разделе Постраничная навигация.

Описание полей

Название
Тип
Описание
id
Number
username
String
email
String
nick
String
firstname
String
lastname
String
is_spammer
Boolean
groups
Array
avatars
Object
created_at
String
status
String
status_at
String
contact
Object
glasha_enabled
Boolean

Статусы

Значение
Описание
active
Пользователь является активным
blocked
Пользователь заблокирован
soft-blocked
«Мягкая» блокировка пользователя. Блокируется авторизация, при попытке пройти авторизацию пользователь будет перенаправлен на страницу https://account.mail.ru/errors/login/blocked?project=biz. Входящие письма продолжают поступать в почтовый ящик
purging
Пользователь помечен для удаления. Удаление можно отменить
deleted
Пользователь находится в стадии удаления. Любые действия над пользователем, за исключением получения информации о нём, запрещены

2. Добавление пользователя

POST /domains/{domain_id}/users

Поля

Поле
Обязательность
Тип данных
Описание
username
required
string
Имя почтового ящика
password
required
string
Пароль
password_type
optional
string
Тип пароля
firstname
optional
string
Имя пользователя. Поля firstname и lastname нельзя передавать по-отдельности. При указании значения хотя бы одного из этих полей, указание второго поля является обязательным.
lastname
optional
string
Фамилия пользователя. Поля firstname и lastname нельзя передавать по-отдельности. При указании значения хотя бы одного из этих полей, указание второго поля является обязательным.
{  "username": "alex",  "password": "password",  "firstname": "Алексей",  "lastname": "Пупкин"}

Ответ

HTTP 201 CREATED{  "id": 341,  "username": "alex",  "email": "alex@test.com",  "nick": null,  "firstname": "Алексей",  "lastname": "Пупкин",  "is_spammer": False,  "groups": [],  "avatars": {    "90x90": "//filin.mail.ru/pic?width=90&height=90&email=alex@test.com"  },  "created_at": "2013-01-09T12:03:28Z",  "status": "active",  "status_at": "2013-01-09T12:03:28Z"}

Ошибки

code
message
140
Невозможно создать пользователя.
141
Администратор с неподтверждённым номером телефона может добавить не более 5 пользователей.
142
Превышен лимит количества пользователей на домене. Обратитесь в службу поддержки.
192
Нельзя восстанавливать терминированных пользователей

Типы паролей

Значение
Описание
text
Пароль в открытом виде (по умолчанию)
md5
MD5-хеш пароля

Добавление контакта адресной книги

При создании и редактировании пользователя можно одним запросом создать соответствующий ему контакт адресной книги. Основная статья: Список контактов.

POST /domains/{domain_id}/users{  "username": "alex",  "password": "password",  "firstname": "Алексей",  "lastname": "Пупкин",  "contact": {    "first_name": "Алексей",    "last_name": "Пупкин (работа)",    "phones": [      {        "phone": "+79123456789",        "type": "work"      }    ]  }}

Ответ:

HTTP 201 CREATED{  "id": 341,  "username": "alex",  "email": "alex@test.com",  "nick": null,  "firstname": "Алексей",  "lastname": "Пупкин",  "is_spammer": False,  "groups": [],  "avatars": {    "90x90": "//filin.mail.ru/pic?width=90&height=90&email=alex@test.com"  },  "created_at": "2013-01-09T12:03:28Z",  "status": "active",  "status_at": "2013-01-09T12:03:28Z",  "contact": {    "sid": "a1986b78e78e482bbe78e8ce5d7f85ec",    "email": "alex@test.com",    "first_name": "Алексей",    "last_name": "Пупкин (работа)",    "phones": [      {        "phone": "+79123456789",        "type": "work"      }    ]  }}

3. Редактирование пользователя

PUT /domains/{domain_id}/users/{user_id}PATCH /domains/{domain_id}/users/{user_id}

Параметры

Поле
Обязательность
Тип данных
Описание
firstname
optional
string
Имя пользователя. Может быть пустым. Редактирование полей firstname и lastname не может производиться по-отдельности. При указании значения хотя бы одного из этих полей, указание второго поля является обязательным.
lastname
optional
string
Фамилия пользователя. Может быть пустым. Редактирование полей firstname и lastname не может производиться по-отдельности. При указании значения хотя бы одного из этих полей, указание второго поля является обязательным.
password
optional
string
Новый пароль пользователя
password_type
optional
string
Тип пароля
status
optional
string
Статус пользователя. Разрешенные значения: active, blocked, soft-blocked
{  "firstname": "Алексей",  "lastname": "Пупкин",  "password": "mysecretpassword"}

Ответ

HTTP 200 OK{  "id": 4124,  "username": "alex",  "email": "alex@test.com",  "nick": null,  "firstname": "Алексей",  "lastname": "Пупкин",  "is_spammer": False,  "groups": [],  "avatars": {    "90x90": "//filin.mail.ru/pic?width=90&height=90&email=alex@test.com"  },  "created_at": "2013-01-09T12:03:28Z",  "status": "active",  "status_at": "2013-08-11T14:52:23Z",  "contact": null}

Ошибки

code
message
145
Невозможно сменить пароль пользователя.
147
Невозможно отредактировать пользователя.

Редактирование контакта адресной книги

При создании и редактировании пользователя можно одним запросом создать соответствующий ему контакт адресной книги. Основная статья: Список контактов .

PUT/PATCH /domains/{domain_id}/users/{user_id}{  "firstname": "Лёша",  "contact": {    "first_name": "Лёша",    "middle_name": "Витальевич",  }}

Ответ:

HTTP 200 OK{  "id": 4124,  "username": "alex",  "email": "alex@test.com",  "nick": null,  "firstname": "Лёша",  "lastname": "Пупкин",  "is_spammer": False,  "groups": [],  "avatars": {    "90x90": "//filin.mail.ru/pic?width=90&height=90&email=alex@test.com"  },  "created_at": "2013-01-09T12:03:28Z",  "status": "active",  "status_at": "2013-08-11T14:52:23Z",  "contact": {    "sid": "a1986b78e78e482bbe78e8ce5d7f85ec",    "email": "alex@test.com",    "first_name": "Лёша",    "last_name": "Пупкин (работа)",    "middle_name": "Витальевич",    "phones": [      {        "phone": "+79123456789",        "type": "work"      }    ]  }}

4. Получение пользователя

GET /domains/{domain_id}/users/{user_id}

Ответ

HTTP 200 OK{  "id": 4123,  "username": "alex",  "email": "alex@test.com",  "nick": null,  "firstname": "Алексей",  "lastname": "Пупкин",  "is_spammer": False,  "groups": [      {        "id": 1341,        "name": "programmers"      }    ],  "avatars": {    "90x90": "//filin.mail.ru/pic?width=90&height=90&email=alex@test.com"  },  "created_at": "2013-01-09T12:03:28Z",  "status": "active",  "status_at": "2013-01-09T12:03:28Z",  "contact": null}

5. Удаление пользователя

DELETE /domains/{domain_id}/users/{user_id}

Ответ

HTTP 200 OK{  "id": 1231,  "username": "alex",  "email": "alex@test.com",  "nick": null,  "firstname": "Алексей",  "lastname": "Пупкин",  "is_spammer": False,  "groups": [],  "avatars": {    "90x90": "//filin.mail.ru/pic?width=90&height=90&email=alex@test.com"  },  "created_at": "2013-01-09T12:03:28Z",  "status": "deleted",  "status_at": "2013-01-12T11:00:45Z",  "contact": null}

Ошибки

code
message
134
Невозможно удалить ящик по умолчанию. Смените его в Настройках.
135
Невозможно удалить ящик администратора домена.

6. Список алиасов

GET /domains/{domain_id}/users/{user_id}/aliases

У одного пользователя может быть несколько адресов-алиасов. Например, если у пользователя alex@test.com есть алиас alexey@test.com, то письма, отправленные на любой из этих адресов, придут на основной адрес.

Ответ

HTTP 200 OK[  {    "id": 653,    "username": "alexey",    "email": "alexey@test.com",    "created_at": "2013-11-22T14:31:39Z"  }]

Описание полей

Название
Тип
Описание
id
Number
username
String
email
String
created_at
String

7. Валидация алиаса

POST /domains/{domain_id}/users/{user_id}/aliases/validate

Валидация на:

  • Такой алиас для данного пользователя уже существует
  • Максимальное / минимальное количество символов в алиасе
  • Содержание и порядок спецсимволов
  • На домене существует алиас с таким именем

Поля

Поле
Обязательность
Тип данных
Описание
alias
required
string
Алиас
{  "alias": "alexey",  "domain_name": "domain.com"}

Ответ

HTTP 204 NO CONTENT

Ошибки

code
message
400
Описание ошибки валидации

8. Добавление алиаса

POST /domains/{domain_id}/users/{user_id}/aliases

Для каждого пользователя может быть добавлено не более 5 алиасов.

Поля

Поле
Обязательность
Тип данных
Описание
username
required
string
Имя почтового ящика
{  "username": "alexey"}

Ответ

HTTP 201 CREATED{  "id": 653,  "username": "alexey",  "email": "alexey@test.com",  "created_at": "2013-11-22T14:31:39Z"}

Ошибки

code
message
143
Превышен лимит алиасов для этого пользователя
144
Невозможно добавить синоним пользователя

9. Получение алиаса

GET /domains/{domain_id}/users/{user_id}/aliases/{alias_id}

Ответ

HTTP 200 OK{  "id": 653,  "username": "alexey",  "email": "alexey@test.com",  "created_at": "2013-11-22T14:31:39Z"}

10. Удаление алиаса

DELETE /domains/{domain_id}/users/{user_id}/aliases/{alias_id}

Ответ

HTTP 204 NO CONTENT

Группы

Список запросов:

  1. Список групп

  2. Добавление группы

  3. Получение группы

  4. Редактирование групп

  5. Удаление группы

  6. Список пользователей группы

  7. Добавление пользователя в группу

  8. Удаление пользователя из группы

1. Список групп

GET /domains/{domain_id}/groups

Ответ

HTTP 200 OK[  {    "id": 12383,    "name": "programmers",    "created_at": "2013-01-04T16:33:07Z",    "user_count": 10,    "reply": false  }]

2. Добавление группы

POST /domains/{domain_id}/groups

Параметры

Поле
Обязательность
Тип данных
Описание
name
required
string
Имя группы
{  "name": "programmers"}

Ответ

HTTP 201 CREATED{  "id": 12383,  "name": "programmers",  "created_at": "2013-01-04T16:33:07Z",  "user_count": 0,  "reply": true}

Ошибки

code
message
160
Невозможно создать группу

3. Получение группы

GET /domains/{domain_id}/groups/{group_id}

Ответ

HTTP 200 OK{  "id": 12383,  "name": "programmers",  "created_at": "2013-01-04T16:33:07Z",  "user_count": 10,  "reply": false}

4. Редактирование группы

PUT /domains/{domain_id}/groups/{group_id}

Поля

Поле
Обязательность
Тип данных
Описание
reply
optional
boolean
Флаг, отвечающий за добавление адреса группы в список адресатов при ответе на рассылку
{  "reply": false}

Ответ

HTTP 200 OK{  "id": 65072,  "name": "news",  "created_at": "2013-01-04T16:33:07.022Z",  "user_count": 10,  "reply": false}

Ошибки

code
message
163
Невозможно отредактировать группу

5. Удаление группы

DELETE /domains/{domain_id}/groups/{group_id}

Ответ

HTTP 204 NO CONTENT

Ошибки

code
message
133
Ошибка удаления группы, попробуйте повторить операцию
134
Невозможно удалить ящик по умолчанию. Смените его в Настройках.
164
Невозможно удалить последнюю группу пользователя

6. Список пользователей группы

GET /domains/{domain_id}/groups/{group_id}/users

Ответ

HTTP 200 OK{  "paging": {...},  "data": [    {      "id": 3617,      "username": "alex",      "email": "alex@test.com",      "added_at":  "2013-01-04T16:33:07Z"    }  ]}

Список пользователей группы разбивается на страницы. Механизм постраничной навигации описан в разделе Постраничная навигация.

7. Добавление пользователя в группу

POST /domains/{domain_id}/groups/{group_id}/users

Параметры

Поле
Обязательность
Тип данных
Описание
id
required
integer
Идентификатор пользователя
{  "id": 3617}

Ответ

HTTP 201 CREATED{  "id": 3617,  "username": "alex",  "email": "alex@test.com",  "added_at": "2013-01-04T16:33:07Z"}

Ошибки

code
message
162
Невозможно добавить пользователя в группу

8. Удаление пользователя из группы

DELETE /domains/{domain_id}/groups/{group_id}/users/{user_id}

Ответ

HTTP 204 NO CONTENT

Миграция

Миграция позволяет настроить перенос и последующую сборку писем со старого почтового сервера. Для сборки писем необходимо включить миграцию для домена и сборщик писем для каждого пользователя.

Список запросов:

  1. Состояние миграции

  2. Включение миграции

  3. Редактирование миграции

  4. Выключение миграции

  5. Список сборщиков

  6. Получение сборщика

  7. Включение сборщика

  8. Редактирование сборщика

  9. Выключение сборщика

1. Состояние миграции

GET /domains/{domain_id}/migration

Ответ

HTTP 200 OK{  "server": "imap.mail.ru",  "port": 993,  "proto": 1,  "use_ssl": true,  "is_active": true}

Описание полей

Название
Тип
Описание
server
String
port
Number
proto
Number
use_ssl
Boolean
is_active
Boolean

Протоколы

Код
Протокол
0
POP3
1
IMAP
2
Exchange

2. Включение миграции

POST /domains/{domain_id}/migration

Поля

Поле
Обязательность
Тип данных
Описание
server
required
string
Адрес сервера
port
required
integer
Порт сервера
proto
required
integer
Протокол
use_ssl
required
boolean
Флаг использования SSL. Для Exchange использование SSL обязательно
{  "server": "imap.mail.ru",  "port": 993,  "proto": 1,  "use_ssl": true}

Ответ

HTTP 201 CREATED{  "server": "imap.mail.ru",  "port": 993,  "proto": 1,  "use_ssl": true,  "is_active": true}

Ошибки

code
message
119
Миграция уже включена

3. Редактирование миграции

PUT /domains/{domain_id}/migration

Поля

Поле
Обязательность
Тип данных
Описание
server
required
string
Адрес сервера
port
required
integer
Порт сервера
use_ssl
required
boolean
Флаг использования SSL. Для Exchange использование SSL обязательно
{  "server": "imap.mail.ru",  "port": 993,  "use_ssl": true}

Ответ

HTTP 200 OK{  "server": "imap.mail.ru",  "port": 993,  "proto": 1,  "use_ssl": true,  "is_active": true}

Ошибки

code
message
120
Миграция выключена

При редактировании миграции нельзя изменить протокол. Если есть необходимость в его измении, то нужно выключить текущую миграцию и включить уже с новыми настройками.

4. Выключение миграции

DELETE /domains/{domain_id}/migration

Ответ

HTTP 204 NO CONTENT

5. Список сборщиков

GET /domains/{domain_id}/collectors

Параметры фильтрации (строки запроса)

Поле
Обязательность
Тип данных
Описание
status__in
optional
number
Фильтрует список сборщиков, с переданными статусами, через запятую
status__not_in
optional
number
Фильтрует список сборщиков, исключая переданные статусы, через запятую
export
optional
string
Значение: csv. Выгрузка пользователей и их статусов в формате csv

Ответ

HTTP 200 OK{  "paging": {...},  "data": [    {      "id": 1,      "status": 1,      "email": "user@domain.ru"      "firstname": "Ivan",      "lastname": "Ivanov",      "last_error": ""    }  ]}

Список сборщиков разбивается на страницы. Механизм постраничной навигации описан в разделе Постраничная навигация.

Описание полей

Название
Тип
Описание
id
Number
status
Number
email
String
firstname
String
lastname
String
last_error
String

Статусы

Статус
Описание
0
Сборка отключена
1
Сборщик работает
2
Сборщик приостановлен
3
Ошибка аутентификации
4
Ошибка авторизации. Неверный логин или пароль
5
Превышен лимит запросов
6
Внутренняя ошибка сборщика
7
В очереди
8
Ожидание активации сборщика
9
Выполняется создание сборщика
10
Ошибка создания сборщика
11
Ошибка редактирования сборщика
12
Почтовый аккаунт стороннего сервиса заблокирован
13
Ожидание активации сборщика пользователем

Ошибки

code
message
120
Миграция выключена

6. Получение сборщика

GET /domains/{domain_id}/collectors/{user_id}

Ответ

HTTP 200 OK{  "id": 1,  "status": 1,  "email": "user@domain.ru"  "firstname": "Ivan",  "lastname": "Ivanov",  "last_error": ""}

Ошибки

code
message
120
Миграция выключена

7. Включение сборщика

POST /domains/{domain_id}/collectors/{user_id}

Поля

Поле
Обязательность
Тип данных
Описание
username
required
string
Имя для авторизации
passwd
required
string
Пароль
{  "username": "user@old-mail.ru",  "passwd": "password"}

Ответ

HTTP 201 CREATED{  "status": 7,  "message": "В очереди"}

Ошибки

code
message
120
Миграция выключена
121
Сборщик уже включен

Для включения сборщика требуется большое количество времени. Поэтому в ответ на запрос возвращается статус 7 (в очереди). После его получения необходимо отправлять запросы на получение сборщика с переодичностью раз в 10 секунд до тех пор, пока не будет получен другой статус.

8. Редактирование сборщика

PUT /domains/{domain_id}/collectors/{user_id}

Поля

Поле
Обязательность
Тип данных
Описание
username
required
string
Имя для авторизации
passwd
required
string
Пароль
{  "username": "user@old-mail.ru",  "passwd": "password"}

Ответ

HTTP 200 OK{  "status": 7,  "message": "В очереди"}

Ошибки

code
message
120
Миграция выключена

Для редактирования сборщика требуется большое количество времени. Поэтому в ответ на запрос возвращается статус 7 (в очереди). После его получения необходимо отправлять запросы на получение сборщика с переодичностью раз в 10 секунд до тех пор, пока не будет получен другой статус.

9. Выключение сборщика

DELETE /domains/{domain_id}/collectors/{user_id}

Ответ

HTTP 204 NO CONTENT

Контакты

Список запросов:

  1. Список контактов

  2. Добавление контакта

  3. Редактирование контакта

  4. Полное редактирование контакта

  5. Получение контакта

  6. Удаление контакта

  7. Контакты домена

  8. Добавление и изменение контакта

1. Список контактов

GET /domains/{domain_id}/contacts/

Дополнительные GET-параметры

  • ?search=<querystring> — поиск по полям email, first_name, last_name, middle_name
  • ?status_not=<querystring> — исключение из выборки контактов с определенным статусом

Ответ

HTTP 200 OK{  "paging": {...},  "data": [    {      "id": 321,      "sid": "a1986b78e78e482bbe78e8ce5d7f85ec",      "email": "alex@test.com",      "first_name": "Алексей",      "last_name": "Пупкин",      "middle_name": "Витальевич",      "emails": [        "a.pupkin@corp.test.com",        "a.pupkin@gmail.com"      ]      "phones": [        {          "phone": "+79123456789",          "type": "work"        }      ]    }  ]}

Список контактов разбивается на страницы. Механизм постраничной навигации описан в разделе Постраничная навигация.

Описание полей

Название
Обязательность
Тип данных
Описание
sid
optional
String
Идентификатор контакта
status
optional
String
Статус контакта
email
required
String
Email контакта
first_name
optional
String
Имя контакта
last_name
optional
String
Фамилия контакта
middle_name
optional
String
Отчество контакта
company
optional
String
Компания контакта
boss
optional
String
Начальник контакта
department
optional
String
Отдел/подразделение контакта
position
optional
String
Должность контакта
office
optional
String
Офис контакта
address
optional
String
Адрес контакта
сomment
optional
String
Примечание
emails
optional
Array
Список дополнительных email-адресов контакта
phones
optional
Array
Список словарей с информацией о телефонных номерах контакта

2. Добавление контакта

POST /domains/{domain_id}/contacts/

Поля

Поле
Обязательность
Тип данных
Описание
sid
optional
string
Идентификатор (если не указан, будет выдан автоматически)
email
required
string
Email-адрес контакта
first_name
optional
string
Имя контакта
last_name
optional
string
Фамилия контакта
middle_name
optional
string
Отчество контакта
company
optional
string
Компания контакта
boss
optional
string
Начальник контакта
department
optional
string
Отдел/подразделение контакта
position
optional
string
Должность контакта
office
optional
string
Офис контакта
address
optional
string
Адрес контакта
comment
optional
string
Комментарий к контакту
emails
optional
array
Дополнительные email-адреса контакта
phones
optional
array
Телефонные номера контакта
phones type
optional
string
Тип телефона. Разрешенные значения: mobile, home, work, fax, other
{  "email": "alex@test.com",  "first_name": "Алексей",  "last_name": "Пупкин"}

Ответ

HTTP 201 CREATED{  "sid": "a1986b78e78e482bbe78e8ce5d7f85ec",  "email": "alex@test.com",  "first_name": "Алексей",  "last_name": "Пупкин"}

3. Редактирование контакта

PATCH /domains/{domain_id}/contacts/{contact_sid}/

Параметры

Поле
Обязательность
Тип данных
Описание
first_name
optional
string
Имя контакта
last_name
optional
string
Фамилия контакта
middle_name
optional
string
Отчество контакта
company
optional
string
Компания контакта
position
optional
string
Должность контакта
comment
optional
string
Комментарий к контакту
{  "first_name": "Алексей",  "last_name": "Пупкин",}

Ответ

HTTP 200 OK{  "sid": "a1986b78e78e482bbe78e8ce5d7f85ec",  "email": "alex@test.com",  "first_name": "Алексей",  "last_name": "Пупкин",}

4. Полное редактирование контакта

PUT /domains/{domain_id}/contacts/{contact_sid}/

Параметры

Поле
Обязательность
Тип данных
Описание
first_name
optional
string
Имя контакта
last_name
optional
string
Фамилия контакта
middle_name
optional
string
Отчество контакта
company
optional
string
Компания контакта
position
optional
string
Должность контакта
comment
optional
string
Комментарий к контакту
emails
optional
array
Дополнительные адреса электронных почт (при передаче пустого массива все поля emails удалятся)
phones
optional
array
Номера телефонов (при передаче пустого массива все поля phones удалятся)
{    "emails": ["a.pupkin@corp.test.com"],    "phones": [        {          "phone": "+79123456789",          "type": "work"        }    ],    "first_name": "Алексей",    "last_name": "Пупкин",    "middle_name": "Витальевич",    "sid": "a1986b78e78e482bbe78e8ce5d7f85ec",    "email": "alex@test.com",}

Ответ

HTTP 200 OK{  "sid": "a1986b78e78e482bbe78e8ce5d7f85ec",  "email": "alex@test.com",  "first_name": "Алексей",  "last_name": "Пупкин",  "middle_name": "Витальевич",  "emails": [    "a.pupkin@corp.test.com",    "a.pupkin@gmail.com"  ]  "phones": [    {      "phone": "+79123456789",      "type": "work"    }  ]}

5. Получение контакта

GET /domains/{domain_id}/contacts/{contact_sid}/

Ответ

HTTP 200 OK{  "sid": "a1986b78e78e482bbe78e8ce5d7f85ec",  "email": "alex@test.com",  "first_name": "Алексей",  "last_name": "Пупкин",  "middle_name": "Витальевич",  "emails": [    "a.pupkin@corp.test.com",    "a.pupkin@gmail.com"  ]  "phones": [    {      "phone": "+79123456789",      "type": "work"    }  ]}

6. Удаление контакта

DELETE /domains/{domain_id}/contacts/{contact_id}/

Ответ

HTTP 204 OK{  "id": 1231,  "sid": "a1986b78e78e482bbe78e8ce5d7f85ec",  "email": "alex@test.com",  "first_name": "Алексей",  "last_name": "Пупкин",}

7. Контакты домена

GET /domains/{domain_id}/contacts/company/

Ответ

HTTP 200 OK{  "name": "Фамилия",  "email": "test1@test.ru",  "phone": "81234567890",  "accounting_email": null,  "position": null}

Описание полей

Название
Тип
Описание
name
String
email
String
phone
String
accounting_email
String
position
String

8. Добавление и изменение контакта

POST /domains/{domain_id}/contacts/company/

Поля

Поле
Обязательность
Тип данных
Описание
name
required
string
ФИО
email
required
string
Email-адрес
phone
required
string
Телефон
accounting_email
optional
string
Email-адрес бухгалтерии
position
optional
string
Должность
{  "name": "ФИО",  "email": "test@test.ru",  "phone": "81234567890",  "accounting_email": "acc.test@test.ru",  "position": "Должность"}

Ответ

HTTP 201 CREATED{  "name": "ФИО",  "email": "test@test.ru",  "phone": "81234567890",  "accounting_email": "acc.test@test.ru",  "position": "Должность"}

Диск

Список запросов:

  1. Список пользователей

  2. Добавление пользователя

  3. Получение пользователя

  4. Обновление данных пользователя

  5. Удаление пользователя

1. Список пользователей

GET /domains/{domain_id}/teambox/users/

Ответ

HTTP 200 OK[  {    "blocked": false,    "email": "user1@some.ru",    "quota": 5368709120,  },  {    "blocked": false,    "email": "user2@some.ru",    "quota": 5368709120  }]

Описание полей

Название
Тип
Описание
blocked
Boolean
email
String
quota
Integer

2. Добавление пользователя

POST /domains/{domain_id}/teambox/users/

Поля

Поле
Обязательность
Тип данных
Описание
quota
required
integer
Размер доступного для пользователя места (кратно 1024)
{  "email": "user3@some.ru",  "quota": 3221225472}

Ответ

HTTP 201 CREATED{  "blocked": true,  "email": "user3@some.ru",  "quota": 3221225472}

3. Получение пользователя

GET /domains/{domain_id}/teambox/users/{user_id}/

Ответ

HTTP 200 OK{  "blocked": false,  "email": "user1@some.ru",  "quota": 5368709120,}

4. Обновление данных пользователя

PATCH /domains/{domain_id}/teambox/users/{user_id}/

Поля

Поле
Обязательность
Тип данных
Описание
blocked
optional
boolean
Статус блокировки
quota
optional
integer
Размер доступного для пользователя места (кратно 1024)

Можно обновить оба или одно из полей.

{  "blocked": true,  "quota": 3221225472}

Ответ

HTTP 200 OK{  "blocked": true,  "email": "user1@some.ru",  "quota": 3221225472}

5. Удаление пользователя

DELETE /domains/{domain_id}/teambox/users/{user_id}/

Ответ

HTTP 204 NO CONTENT