Документация 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¶meter1=value1¶meter2=value2"GET /api/v1/test?access_token=5c918ed51f38749782b8b2c3ad41a265e560661137363830¶meter1=value1¶meter2=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¶meter2=value2"POST /api/v1/test?access_token=5c918ed51f38749782b8b2c3ad41a265e560661137363830Host: biz.mail.ruContent-Type: application/x-www-form-urlencodedparameter1=value1¶meter2=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-urlencodedname=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-urlencodedlastname=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 запросов в минуту.
Авторизация пользователя начинается с того, что происходит перенаправление пользователя на https://o2.mail.ru/login для получения кода авторизации. После чего авторизационный код (либо описание ошибки) возвращается веб-серверу приложения в строке запроса на указанный redirect_uri. После получения авторизационного кода приложение может обменять его на токен доступа access_token и токен для обновления токена доступа refresh_token.
В качестве приложения можно использовать следующее:
-
client_id: J34ZMt9oJv3jnx4KuSf2E5RQTxKmNbR5 -
client_secret: dJyVVMrC2cPftztWdXHjukt2SY97SZMT -
redirect_uri: https://localhost
Список запросов:
Описание ошибок авторизации: раздел 5. Ошибки авторизации.
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 в запросе. |
Если ошибка при получении кода авторизации:
См. раздел Ошибки авторизации.
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"}
Если ошибка при получении токена:
См. раздел Ошибки авторизации.
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.
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 | Почтовый адрес |
- В случае неправильного заголовка авторизации возвращается 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"}
Список запросов:
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 присутствует только у подтвержденных доменов в случае, если ключи были ранее сгенерированы.
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 | Вы уже являетесь администратором этого домена |
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}
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 | Домен уже подтверждён |
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 | Способ подтверждения не доступен |
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}}
DELETE /domains/{domain_id}
HTTP 204 NO CONTENT
HTTP 409 CONFLICT
Домен находится в процессе удаления.
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. В этом случае надо повторить запрос.
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-записи не найдены |
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}
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"}
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 | Выполняется загрузка логотипа |
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"}
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"}]
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.
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 |
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 | Превышен лимит синонимов для данного домена |
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}
DELETE /domains/{domain_id}/aliases/{alias_id}
HTTP 204 NO CONTENT
HTTP 409 CONFLICT
Домен находится в процессе удаления.
Список запросов:
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 | Пользователь находится в стадии удаления. Любые действия над пользователем, за исключением получения информации о нём, запрещены |
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"}]}}
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"}]}}
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}
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 | Невозможно удалить ящик администратора домена. |
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 |
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 | Описание ошибки валидации |
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 | Невозможно добавить синоним пользователя |
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"}
DELETE /domains/{domain_id}/users/{user_id}/aliases/{alias_id}
HTTP 204 NO CONTENT
Список запросов:
GET /domains/{domain_id}/groups
HTTP 200 OK[{"id": 12383,"name": "programmers","created_at": "2013-01-04T16:33:07Z","user_count": 10,"reply": false}]
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 | Невозможно создать группу |
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}
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 | Невозможно отредактировать группу |
DELETE /domains/{domain_id}/groups/{group_id}
HTTP 204 NO CONTENT
code | message |
|---|---|
133 | Ошибка удаления группы, попробуйте повторить операцию |
134 | Невозможно удалить ящик по умолчанию. Смените его в Настройках. |
164 | Невозможно удалить последнюю группу пользователя |
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"}]}
Список пользователей группы разбивается на страницы. Механизм постраничной навигации описан в разделе Постраничная навигация.
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 | Невозможно добавить пользователя в группу |
DELETE /domains/{domain_id}/groups/{group_id}/users/{user_id}
HTTP 204 NO CONTENT
Миграция позволяет настроить перенос и последующую сборку писем со старого почтового сервера. Для сборки писем необходимо включить миграцию для домена и сборщик писем для каждого пользователя.
Список запросов:
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 |
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 | Миграция уже включена |
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 | Миграция выключена |
При редактировании миграции нельзя изменить протокол. Если есть необходимость в его измении, то нужно выключить текущую миграцию и включить уже с новыми настройками.
DELETE /domains/{domain_id}/migration
HTTP 204 NO CONTENT
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 | Миграция выключена |
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 | Миграция выключена |
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 секунд до тех пор, пока не будет получен другой статус.
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 секунд до тех пор, пока не будет получен другой статус.
DELETE /domains/{domain_id}/collectors/{user_id}
HTTP 204 NO CONTENT
Список запросов:
GET /domains/{domain_id}/contacts/
?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 | Список словарей с информацией о телефонных номерах контакта |
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": "Пупкин"}
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": "Пупкин",}
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"}]}
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"}]}
DELETE /domains/{domain_id}/contacts/{contact_id}/
HTTP 204 OK{"id": 1231,"sid": "a1986b78e78e482bbe78e8ce5d7f85ec","email": "alex@test.com","first_name": "Алексей","last_name": "Пупкин",}
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 |
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": "Должность"}
Список запросов:
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 |
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}
GET /domains/{domain_id}/teambox/users/{user_id}/
HTTP 200 OK{"blocked": false,"email": "user1@some.ru","quota": 5368709120,}
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}
DELETE /domains/{domain_id}/teambox/users/{user_id}/
HTTP 204 NO CONTENT