Почта на домене
API читает письма, которые пришли на адреса домена сайта, отправляет ответы и управляет шаблонами и настройками почты. Сценарии — в гайде.
API — https://onpress.pro/api/v2, SITE — id сайта, OP_TOKEN — токен op_XXXX. Пути на этой странице начинаются с $API/site/$SITE. Токен и права — в «Авторизации», общий формат — в «Общих правилах».
Эндпоинты
| Метод | Путь | Действие |
|---|---|---|
| GET | /inbox/threads | Получить список переписок |
| GET | /inbox/filters | Получить ящики и счетчики |
| GET | /inbox/unread-count | Посчитать непрочитанные переписки |
| POST | /inbox/read-all | Прочитать все переписки |
| GET | /inbox/threads/{id} | Прочитать переписку |
| PATCH | /inbox/threads/{id} | Изменить признаки переписки |
| POST | /inbox/threads/{id}/read | Отметить переписку прочитанной |
| GET | /inbox/threads/{id}/messages/{mid}/html | Получить HTML письма |
| GET | /inbox/messages/{id}/raw | Скачать исходник письма |
| GET | /inbox/attachments/{id} | Скачать вложение |
| POST | /inbox/threads/{id}/reply | Ответить на письмо |
| POST | /inbox/uploads | Загрузить вложение ответа |
| POST | /inbox/messages/{id}/retry | Повторить отправку письма |
| GET | /inbox/sender | Прочитать адрес отправителя |
| GET | /inbox/settings | Прочитать настройки ящика |
| PATCH | /inbox/settings | Изменить настройки ящика |
| POST | /inbox/domains | Подключить домен |
| DELETE | /inbox/domains/{domain} | Отключить домен |
| GET | /inbox/templates | Получить шаблоны ответа |
| POST | /inbox/templates | Создать шаблон ответа |
| PUT | /inbox/templates/{id} | Изменить шаблон ответа |
| DELETE | /inbox/templates/{id} | Удалить шаблон ответа |
| POST | /inbox/templates/{id}/used | Отметить использование шаблона |
Получить список переписок
GET /inbox/threads
Отдает список переписок с отбором, поиском и сортировкой. Подробнее в гайде.
curl -s "$API/site/$SITE/inbox/threads?unread=1" -H "Authorization: Bearer $OP_TOKEN"
Параметры запроса
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
archived | string | нет | 0 | 0 — входящие, 1 — архив, all — все |
unread | string | нет | все | 1 — только непрочитанные, 0 — только прочитанные |
mailbox | string | нет | все | адрес ящика, на который писали |
has_attachments | string | нет | все | 1 или 0 |
q | string | нет | — | поиск по теме, адресу и имени собеседника, началу письма |
sort | string | нет | last_message_at | last_message_at, created_at, messages_count, contact |
dir | string | нет | desc | desc или asc |
page | int | нет | 1 | номер страницы |
per_page | int | нет | 30 | до 200 |
Ответ
Ответ — threads, total, page, per_page и unread_count (непрочитанные во входящих, без архива).
{
"id": 7,
"site_id": "x9HTLHECq",
"domain": "example.com",
"mailbox": "info@example.com",
"subject": "Вопрос по заказу",
"archived": false,
"unread": true,
"contact": { "email": "client@example.org", "name": "Анна" },
"messages_count": 1,
"preview": "Добрый день! …",
"has_attachments": false,
"last_direction": "in",
"last_message_at": "2026-10-02T17:44:19Z",
"created_at": "2026-10-02T17:44:19Z",
"updated_at": "2026-10-02T19:22:38Z",
"resolved_by": "mail_domain",
"external_ref": ""
}
| Поле | Описание |
|---|---|
domain, mailbox | домен и адрес, на который написали |
contact | собеседник: email, name |
preview | начало последнего письма |
last_direction | чье последнее письмо: in — собеседника, out — наше |
resolved_by | как письмо нашло сайт; mail_domain — по домену адреса |
external_ref | непустой — переписка ведется во внешней службе поддержки: здесь она только для чтения, ответ отказывает 409 thread_read_only |
Ошибки
| Код | HTTP | Когда | Что делать |
|---|---|---|---|
invalid_sort | 400 | неизвестный sort | возьмите значение из таблицы |
Получить ящики и счетчики
GET /inbox/filters
Отдает ящики и счетчики для боковой панели. Подробнее в гайде.
curl -s "$API/site/$SITE/inbox/filters" -H "Authorization: Bearer $OP_TOKEN"
Параметров строки запроса и тела нет.
Ответ
mailboxes — ящики, на которые уже писали, с числом переписок threads и непрочитанных unread; counts — inbox (во входящих), archived (в архиве), unread; плюс unread_count и has_unread.
{ "mailboxes": [ { "mailbox": "info@example.com", "threads": 1, "unread": 0 } ], "counts": { "inbox": 1, "archived": 0, "unread": 0 }, "unread_count": 0, "has_unread": false }
Ошибки
Общие коды — на странице «Ошибки».
Посчитать непрочитанные переписки
GET /inbox/unread-count
Отдает число непрочитанных переписок во входящих, архив не считается: {"unread_count": 3}. Подробнее в гайде.
curl -s "$API/site/$SITE/inbox/unread-count" -H "Authorization: Bearer $OP_TOKEN"
Параметров строки запроса и тела нет.
Ответ
По нему консоль рисует число у пункта меню.
Ошибки
Общие коды — на странице «Ошибки».
Прочитать все переписки
POST /inbox/read-all
Снимает «непрочитано» со всех переписок сайта; тело запроса эндпоинт не читает. Подробнее в гайде.
curl -s -X POST "$API/site/$SITE/inbox/read-all" -H "Authorization: Bearer $OP_TOKEN"
Дополнительных полей строки запроса нет.
Ответ
Ответ — {"success": true, "updated": 3}.
Ошибки
Общие коды — на странице «Ошибки».
Прочитать переписку
GET /inbox/threads/{id}
Отдает переписку thread и ее письма messages по порядку и снимает с переписки «непрочитано». Подробнее в гайде.
curl -s "$API/site/$SITE/inbox/threads/7?mark_read=0" -H "Authorization: Bearer $OP_TOKEN"
Параметры пути
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
id | string | да | — | Id ресурса из ответа чтения. |
Параметры запроса
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
mark_read | string | нет | 1 | 0 — не снимать «непрочитано» |
Ответ
| Поле письма | Описание |
|---|---|
direction | in — от собеседника, out — наше |
from, to, cc | отправитель (email, name) и получатели |
subject, body_text | тема и текст |
has_html | есть ли HTML-часть — ее отдает GET …/messages/{mid}/html |
attachments | вложения: id, name, mime, size, stored — сохранен ли файл |
mail_status | inbound, sending, sent, draft, failed |
mail_error, mail_error_code | почему наше письмо не ушло |
template_ids | какие шаблоны применены в ответе |
created_at | время письма |
Ошибки
| Код | HTTP | Когда | Что делать |
|---|---|---|---|
thread_not_found | 404 | переписки нет на этом сайте | проверьте {id} |
Изменить признаки переписки
PATCH /inbox/threads/{id}
Убирает переписку в архив или возвращает во входящие и ставит отметку «прочитано»; передайте одно поле или оба. Подробнее в гайде.
curl -s -X PATCH "$API/site/$SITE/inbox/threads/7" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"read": false}'
Параметры пути
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
id | string | да | — | Id ресурса из ответа чтения. |
Тело запроса
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
archived | bool | нет | — | true — в архив, false — во входящие |
read | bool | нет | — | true — прочитана, false — непрочитана |
Ответ
Ответ — {"success": true, "thread": {…}}.
Ошибки
| Код | HTTP | Когда | Что делать |
|---|---|---|---|
nothing_to_update | 400 | нет ни одного поля | передайте archived или read |
thread_not_found | 404 | переписки нет на этом сайте | проверьте {id} |
Отметить переписку прочитанной
POST /inbox/threads/{id}/read
Ставит или снимает отметку «прочитано» у одной переписки и не трогает архив. Подробнее в гайде.
curl -s -X POST "$API/site/$SITE/inbox/threads/7/read" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"read": true}'
Параметры пути
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
id | string | да | — | Id ресурса из ответа чтения. |
Тело запроса
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
read | bool | нет | true | true — прочитана, false — непрочитана; строки API разбирает как в PATCH: "1", "true" и "yes" — прочитана, остальные — непрочитана |
Ответ
Ответ — {"success": true, "thread": {…}}.
Ошибки
| Код | HTTP | Когда | Что делать |
|---|---|---|---|
thread_not_found | 404 | переписки нет на этом сайте | проверьте {id} |
Получить HTML письма
GET /inbox/threads/{id}/messages/{mid}/html
Отдает HTML письма как оно пришло, без обработки: {"message_id": 10, "thread_id": 7, "html": "…"}; html: null — HTML-части не было. Подробнее в гайде.
curl -s "$API/site/$SITE/inbox/threads/7/messages/10/html" -H "Authorization: Bearer $OP_TOKEN"
Параметры пути
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
id | string | да | — | Id ресурса из ответа чтения. |
mid | string | да | — | Id письма из messages переписки. |
Параметров строки запроса и тела нет.
Ответ
Показывайте его только в изолированной рамке без скриптов: содержимое чужое.
Ошибки
| Код | HTTP | Когда | Что делать |
|---|---|---|---|
message_not_found | 404 | письма нет в этой переписке | проверьте {mid} |
Скачать исходник письма
GET /inbox/messages/{id}/raw
Отдает исходник письма файлом .eml (message/rfc822) — только у полученных писем. Подробнее в гайде.
curl -s -o letter.eml "$API/site/$SITE/inbox/messages/10/raw" -H "Authorization: Bearer $OP_TOKEN"
Параметры пути
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
id | string | да | — | Id ресурса из ответа чтения. |
Параметров строки запроса и тела нет.
Ответ
Отдает исходник письма файлом .eml (message/rfc822) — только у полученных писем. Подробнее в гайде.
Ошибки
| Код | HTTP | Когда | Что делать |
|---|---|---|---|
raw_not_found | 404 | исходника нет: письмо наше или не сохранено | — |
Скачать вложение
GET /inbox/attachments/{id}
Отдает вложение файлом с заголовком скачивания. Подробнее в гайде.
curl -s -OJ "$API/site/$SITE/inbox/attachments/10-1" -H "Authorization: Bearer $OP_TOKEN"
Параметры пути
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
id | string | да | — | Id ресурса из ответа чтения. |
Параметров строки запроса и тела нет.
Ответ
{id} вида <письмо>-<номер> — из attachments письма.
Ошибки
| Код | HTTP | Когда | Что делать |
|---|---|---|---|
attachment_not_found | 404 | файла нет или он не был сохранен: письмо пришло с описью без содержимого (stored: false) | — |
Ответить на письмо
POST /inbox/threads/{id}/reply
Отправляет ответ собеседнику с темой «Re: …» и ссылками на предыдущие письма, так что в его почте он ложится в ту же цепочку. Подробнее в гайде.
curl -s -X POST "$API/site/$SITE/inbox/threads/7/reply" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"body": "Добрый день! Заказ отправлен сегодня.", "template_ids": [3]}'
Параметры пути
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
id | string | да | — | Id ресурса из ответа чтения. |
Тело запроса
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
body | string | нет | "" | текст ответа, до 100 000 знаков |
attachments | array | нет | [] | токены из POST /inbox/uploads, до 10 и не больше 7 МБ на письмо |
template_ids | array | нет | [] | какие шаблоны применены — для счетчика применений |
Ответ
Нужен текст или хотя бы одно вложение; подпись из настроек ящика дописывается в конец текста. Переписка становится прочитанной и остается в своей папке.
Ушедший ответ — 200 с status: "sent". В отказах ниже, кроме 400, приходят draft — сохраненное письмо — и thread.
Ошибки
| Код | HTTP | Когда | Что делать |
|---|---|---|---|
empty_reply | 400 | нет ни текста, ни вложений | передайте body или attachments |
body_too_long | 400 | текст длиннее 100 000 знаков | сократите |
too_many_attachments | 400 | больше 10 вложений | уберите лишние |
invalid_upload, upload_not_found | 400 | токен не из POST /inbox/uploads или истек | загрузите файл заново |
attachment_too_large | 413 | вложений больше 7 МБ | уберите лишние |
thread_not_found | 404 | переписки нет на этом сайте | проверьте {id} |
sender_not_verified | 409 | почтовый сервис отклонил домен отправителя; письмо сохранено черновиком, в ответе state | повторите через POST /inbox/messages/{id}/retry |
thread_read_only | 409 | переписка ведется во внешней службе поддержки | — |
no_recipient | 422 | у переписки нет адреса собеседника | — |
send_failed | 422 или 502 | письмо не ушло, сохранено в переписке; retryable — стоит ли повторять, mail_error_code — причина, например mail_unreachable — почтовый сервис не ответил | при retryable: true повторите через retry |
Загрузить вложение ответа
POST /inbox/uploads
Загружает файл для вложения в ответ и отдает токен, который идет в attachments. Подробнее в гайде.
curl -s -X POST "$API/site/$SITE/inbox/uploads" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"name": "a.pdf", "mime": "application/pdf", "content": "JVBERi0xLjQK…"}'
Тело запроса
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
name | string | да | — | имя файла |
mime | string | нет | — | тип файла |
content | string | нет | — | файл в base64, до 7 МБ |
Ответ
Ответ — {"success": true, "upload": {"token": "upl_…", "name": "a.pdf", "mime": "application/pdf", "size": 1024}}.
Ошибки
| Код | HTTP | Когда | Что делать |
|---|---|---|---|
invalid_upload | 400 | нет content, он пустой или не base64 | передайте файл в base64 |
attachment_too_large | 413 | файл больше 7 МБ | уменьшите файл |
Повторить отправку письма
POST /inbox/messages/{id}/retry
Повторяет отправку нашего письма в draft или failed: платформа заново выбирает отправителя, тело запроса эндпоинт не читает. Подробнее в гайде.
curl -s -X POST "$API/site/$SITE/inbox/messages/12/retry" -H "Authorization: Bearer $OP_TOKEN"
Параметры пути
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
id | string | да | — | Id ресурса из ответа чтения. |
Дополнительных полей строки запроса нет.
Ответ
Исходы и отказы — как у ответа.
Ошибки
| Код | HTTP | Когда | Что делать |
|---|---|---|---|
not_outgoing | 400 | письмо не наше | — |
not_retryable | 409 | письмо не в draft и не в failed | — |
Прочитать адрес отправителя
GET /inbox/sender
Отдает, с какого адреса уйдет ответ. Подробнее в гайде.
curl -s "$API/site/$SITE/inbox/sender" -H "Authorization: Bearer $OP_TOKEN"
Параметров строки запроса и тела нет.
Ответ
Ответы уходят с адреса <имя-сайта>-<site_id>@framesuite.app. В Reply-To стоит личный адрес сайта <имя-сайта>-<site_id>@onpress.pro, поэтому ответ собеседника возвращается в ту же переписку.
{ "from": "mysite-x9htlhecq@framesuite.app", "from_name": "Мой сайт", "site_address": "mysite-x9htlhecq@onpress.pro", "reply_to": "mysite-x9htlhecq@onpress.pro", "domain": "framesuite.app", "platform_domain": "onpress.pro", "ready": true, "state": "ready", "checked_at": "2026-10-31T16:33:11+00:00" }
| Поле | Описание |
|---|---|
from, from_name | адрес и имя отправителя |
reply_to | куда придет ответ собеседника |
ready | готова ли отправка по журналу отправки домена: true, false или null — с этого домена еще не отправляли |
state | ready, not_verified, identity_missing или unknown |
checked_at | когда проверяли |
Ошибки
Общие коды — на странице «Ошибки».
Прочитать настройки ящика
GET /inbox/settings
Отдает имя отправителя, подпись, пределы полей, домены сайта, прием почты на них, ящики и отправителя. Подробнее в гайде.
curl -s "$API/site/$SITE/inbox/settings" -H "Authorization: Bearer $OP_TOKEN"
Параметров строки запроса и тела нет.
Ответ
{
"success": true,
"settings": { "from_name": "", "signature": "", "updated_at": null },
"limits": { "from_name": 120, "signature": 2000 },
"domains": ["example.com"],
"reception": [ { "domain": "example.com", "state": "catch_all", "mx": ["mail.onpress.pro"], "catch_all": "info@example.com", "added": true, "managed": false } ],
"mx": { "type": "MX", "name": "@", "value": "mail.onpress.pro", "priority": 10 },
"mailboxes": [ { "address": "info@example.com", "threads": 1, "last_message_at": "2026-10-02T17:44:19Z" } ],
"sender": { "from": "mysite-x9htlhecq@framesuite.app", "from_name": "Мой сайт", "ready": true, "state": "ready" }
}
| Поле | Описание |
|---|---|
domains | домены, письма на которые попадают в этот сайт: подходит любой адрес на них |
reception | прием почты по каждому домену: state — catch_all (почта принимается, все адреса собирает ящик catch_all), platform (MX ведет на платформу, домен заведен, но сбор писем на любой адрес не настроен), not_added (MX ведет на платформу, но домен не заведен на почтовом сервере, и сервер отклоняет письма; подключите его через POST /inbox/domains), external (MX ведет на чужой почтовый сервер), no_mx (у домена нет MX), unknown (проверить не удалось); mx — MX-записи домена; added — заведен ли домен на почтовом сервере, null — проверить не удалось; managed — ведет ли почту домена другая служба, null — проверить не удалось |
mx | запись, которую нужно поставить в DNS домена: type, name, value, priority |
mailboxes | адреса, на которые уже писали, с числом переписок |
sender | то же, что GET /inbox/sender |
Ошибки
Общие коды — на странице «Ошибки».
Изменить настройки ящика
PATCH /inbox/settings
Меняет имя отправителя и подпись; остальные поля настроек только для чтения. Подробнее в гайде.
curl -s -X PATCH "$API/site/$SITE/inbox/settings" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"from_name": "Поддержка", "signature": "С уважением,\nкоманда сайта"}'
Тело запроса
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
from_name | string | нет | название сайта | имя рядом с адресом отправителя, до 120 знаков, без <, >, " и @; "" — название сайта |
signature | string | нет | "" | подпись в конце каждого ответа через пустую строку, до 2000 знаков; "" — без подписи |
Ответ
Ответ — настройки целиком, как у GET /inbox/settings.
Ошибки
| Код | HTTP | Когда | Что делать |
|---|---|---|---|
nothing_to_update | 400 | нет ни одного поля | передайте from_name или signature |
invalid_from_name | 400 | длиннее 120 знаков или с запрещенными символами | исправьте поле |
invalid_signature | 400 | длиннее 2000 знаков | сократите |
Подключить домен
POST /inbox/domains
Заводит домен сайта на почтовом сервере с ящиком info@ и сбором писем на любой адрес. Подробнее в гайде.
curl -s -X POST "$API/site/$SITE/inbox/domains" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"domain": "example.com"}'
Тело запроса
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
domain | string | да | — | домен этого сайта из поля domains настроек; www. в начале не учитывается |
Ответ
Ответ — настройки целиком, как у GET /inbox/settings, и поле result: domain и created. Значение created: false означает, что домен уже был заведен, и повторный вызов ничего не сломал; выключенный домен эндпоинт включает снова. Запись, которую нужно поставить в DNS, находится в поле mx.
{
"success": true,
"result": { "domain": "example.com", "created": true },
"mx": { "type": "MX", "name": "@", "value": "mail.onpress.pro", "priority": 10 },
"reception": [ { "domain": "example.com", "state": "no_mx", "mx": [], "catch_all": "info@example.com", "added": true, "managed": false } ]
}
Ошибки
| Код | HTTP | Когда | Что делать |
|---|---|---|---|
mail_domain_required | 400 | нет поля domain | передайте домен |
mail_domain_not_owned | 403 | домен не принадлежит этому сайту | укажите домен из domains |
mail_domain_taken | 409 | домен подключен к другому сайту | подключите его на том сайте |
mail_domain_managed | 409 | почту домена ведет другая служба | — |
mail_domain_unreadable | 502 | не удалось проверить домен | повторите позже |
mail_domain_failed | 502 | почтовый сервер не завел домен | повторите позже |
Отключить домен
DELETE /inbox/domains/{domain}
Выключает прием писем на произвольные адреса домена. Ящики и полученные письма остаются, а ящик info@ продолжает принимать письма, пока MX-запись ведет на mail.onpress.pro. Подробнее в гайде.
curl -s -X DELETE "$API/site/$SITE/inbox/domains/example.com" \
-H "Authorization: Bearer $OP_TOKEN"
Параметры пути
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
domain | string | да | — | домен этого сайта |
Ответ
Ответ — настройки целиком, как у GET /inbox/settings, и поле result: domain, disconnected и removed. Значение disconnected: false означает, что домен не был заведен. Значение removed: true означает, что у домена не было ящиков и эндпоинт удалил его с почтового сервера.
Ошибки
| Код | HTTP | Когда | Что делать |
|---|---|---|---|
mail_domain_not_owned | 403 | домен не принадлежит этому сайту | укажите домен из domains |
mail_domain_taken | 409 | домен подключен к другому сайту | отключите его на том сайте |
mail_domain_managed | 409 | почту домена ведет другая служба | — |
mail_domain_platform | 409 | домен onpress.pro | — |
mail_domain_unreadable | 502 | не удалось проверить домен | повторите позже |
mail_domain_failed | 502 | почтовый сервер не отключил домен | повторите позже |
Получить шаблоны ответа
GET /inbox/templates
Отдает шаблоны сайта (scope: "site") и общие шаблоны платформы (scope: "network"). Подробнее в гайде.
curl -s "$API/site/$SITE/inbox/templates?all=1&order=usage" -H "Authorization: Bearer $OP_TOKEN"
Параметры запроса
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
all | string | нет | — | 1 — и выключенные; без него только is_active |
order | string | нет | sort | sort, usage — чаще применяемые первыми, title |
Ответ
Шаблон: id, scope, title, body, locale, category, sort, is_active, quick_reply, usage_count, last_used_at.
Ошибки
Общие коды — на странице «Ошибки».
Создать шаблон ответа
POST /inbox/templates
Создает шаблон сайта. Подробнее в гайде.
curl -s -X POST "$API/site/$SITE/inbox/templates" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"title": "Спасибо", "body": "Спасибо за письмо! Ответим в течение дня."}'
Тело запроса
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
title | string | нет | — | название, до 190 знаков |
body | string | да | — | текст, до 20 000 знаков |
locale | string | нет | "" | язык шаблона |
category | string | нет | "" | группа в списке |
sort | int | нет | 0 | порядок в списке |
is_active | bool | нет | true | показывать в полосе шаблонов под полем ответа |
quick_reply | bool | нет | false | кнопка под полем ответа, которая сразу отправляет этот текст |
Ответ
Ответ — {"success": true, "template": {…}}.
Ошибки
| Код | HTTP | Когда | Что делать |
|---|---|---|---|
invalid_template | 400 | нет title или body, или они длиннее предела | исправьте поля |
Изменить шаблон ответа
PUT /inbox/templates/{id}
Меняет переданные поля шаблона сайта; поля — как у создания, ответ — {"success": true, "template": {…}}. Подробнее в гайде.
curl -s -X PUT "$API/site/$SITE/inbox/templates/3" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"quick_reply": true}'
Параметры пути
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
id | string | да | — | Id ресурса из ответа чтения. |
Дополнительных полей строки запроса нет.
Ответ
Меняет переданные поля шаблона сайта; поля — как у создания, ответ — {"success": true, "template": {…}}. Подробнее в гайде.
Ошибки
| Код | HTTP | Когда | Что делать |
|---|---|---|---|
nothing_to_update | 400 | пустое тело | передайте поле |
invalid_template | 400 | неверное поле | исправьте поле |
template_not_found | 404 | шаблона нет, он чужой или общий | меняются только шаблоны своего сайта |
Удалить шаблон ответа
DELETE /inbox/templates/{id}
Удаляет шаблон сайта. Подробнее в гайде.
curl -s -X DELETE "$API/site/$SITE/inbox/templates/3" -H "Authorization: Bearer $OP_TOKEN"
Параметры пути
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
id | string | да | — | Id ресурса из ответа чтения. |
Дополнительных полей строки запроса нет.
Ответ
Ответ — {"success": true, "deleted": 3}.
Ошибки
| Код | HTTP | Когда | Что делать |
|---|---|---|---|
template_not_found | 404 | шаблона нет, он чужой или общий | удаляются только шаблоны своего сайта |
Отметить использование шаблона
POST /inbox/templates/{id}/used
Увеличивает usage_count шаблона, ответ — шаблон в template. Подробнее в гайде.
curl -s -X POST "$API/site/$SITE/inbox/templates/3/used" -H "Authorization: Bearer $OP_TOKEN"
Параметры пути
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
id | string | да | — | Id ресурса из ответа чтения. |
Дополнительных полей строки запроса нет.
Ответ
Обычно не нужен: ответ с template_ids засчитывает применение сам, когда письмо ушло.
Ошибки
Общие коды — на странице «Ошибки».
Как устроена переписка
У переписки два признака: прочитана она или нет (unread) и лежит во входящих или в архиве (archived); статусов «открыта» и «закрыта» нет. Новое письмо делает переписку непрочитанной и возвращает ее из архива во входящие. Чужая и несуществующая переписка отвечают одинаково — 404 thread_not_found.
Общие отказы
| Код | Статус | Когда | Что делать |
|---|---|---|---|
invalid_thread, invalid_message, invalid_template | 400 | id переписки, письма или шаблона в адресе не целое положительное число | возьмите id из списка |
mail_domain_unreadable | 502 | не удалось прочитать настройки почтового домена | повторите позже |
mail_not_configured | 503 | почтовый сервис временно недоступен | повторите позже |