Email API
Библиотеки
На данный момент мы еще не выпустили обертки для API, но планируем сделать это в ближайшем будущем. Отправьте письмо на api@forwardemail.net, если хотите получить уведомление о выпуске обертки API для конкретного языка программирования. Тем временем вы можете использовать эти рекомендуемые библиотеки HTTP-запросов в вашем приложении или просто использовать curl, как в приведенных ниже примерах.
| Язык | Библиотека |
|---|---|
| Ruby | Faraday |
| Python | requests |
| Java | OkHttp |
| PHP | guzzle |
| JavaScript | superagent (мы являемся мейнтейнерами) |
| Node.js | superagent (мы являемся мейнтейнерами) |
| Go | net/http |
| .NET | RestSharp |
Base URI
Текущий базовый путь HTTP URI: https://fe.tiamati.email.
Authentication
Все конечные точки требуют аутентификации с использованием Basic Authorization. Мы поддерживаем два метода аутентификации:
API Token Authentication (Рекомендуется для большинства конечных точек)
Установите ваш API ключ в качестве значения "username" с пустым паролем:
curl https://fe.tiamati.email/v1/account \
-u API_TOKEN:
Обратите внимание на двоеточие (:) после API токена – это указывает на пустой пароль в формате Basic Auth.
Alias Credentials Authentication (Для исходящей почты)
Конечная точка Create outbound SMTP email также поддерживает аутентификацию с использованием вашего псевдонима электронной почты и сгенерированного пароля псевдонима:
curl -X POST https://fe.tiamati.email/v1/emails \
-u "alias@yourdomain.com:your_generated_password" \
-d "to=recipient@example.com" \
-d "subject=Hello" \
-d "text=Test email"
Этот метод полезен при отправке писем из приложений, которые уже используют SMTP учетные данные, и обеспечивает бесшовную миграцию с SMTP на наш API.
Alias-Only Endpoints
Конечные точки Alias Contacts, Alias Calendars, Alias Messages и Alias Folders требуют учетных данных псевдонима и не поддерживают аутентификацию с помощью API токена.
Не волнуйтесь – ниже приведены примеры, если вы не уверены, что это такое.
Errors
Если возникнут ошибки, тело ответа API будет содержать подробное сообщение об ошибке.
| Код | Название |
|---|---|
| 200 | OK |
| 400 | Неверный запрос |
| 401 | Неавторизован |
| 403 | Запрещено |
| 404 | Не найдено |
| 429 | Слишком много запросов |
| 500 | Внутренняя ошибка сервера |
| 501 | Не реализовано |
| 502 | Плохой шлюз |
| 503 | Сервис недоступен |
| 504 | Тайм-аут шлюза |
Tip
Если вы получили статус 5xx (что не должно происходить), пожалуйста, свяжитесь с нами по адресу api@forwardemail.net, и мы поможем вам немедленно решить вашу проблему.
Localization
Наш сервис переведен более чем на 25 языков. Все сообщения ответа API переводятся на последний обнаруженный язык пользователя, делающего запрос к API. Вы можете переопределить это, передав пользовательский заголовок Accept-Language. Не стесняйтесь попробовать, используя выпадающий список языков внизу этой страницы.
Pagination
Note
С 1 ноября 2024 года конечные точки API для List domains и List domain aliases по умолчанию будут возвращать максимум 1000 результатов на страницу. Если вы хотите включить это поведение заранее, вы можете добавить ?paginate=true в качестве дополнительного параметра строки запроса к URL конечной точки.
Пагинация поддерживается всеми конечными точками API, которые возвращают списки результатов.
Просто укажите параметры строки запроса page (и опционально limit).
Параметр page должен быть числом, большим или равным 1. Если вы указываете limit (также число), минимальное значение — 10, максимальное — 50 (если не указано иное).
| Параметр строки запроса | Обязательный | Тип | Описание |
|---|---|---|---|
page |
Нет | Number | Страница результатов для возврата. Если не указано, значение page будет 1. Должно быть числом, большим или равным 1. |
limit |
Нет | Number | Количество результатов на страницу. По умолчанию 10, если не указано. Должно быть числом, большим или равным 1 и не превышающим 50. |
| Для определения наличия дополнительных результатов мы предоставляем следующие HTTP-заголовки ответа (которые вы можете разобрать для программной пагинации): |
| HTTP Response Header | Example | Description |
|---|---|---|
X-Page-Count |
X-Page-Count: 3 |
Общее количество доступных страниц. |
X-Page-Current |
X-Page-Current: 1 |
Текущая возвращённая страница результатов (например, основанная на параметре запроса page). |
X-Page-Size |
X-Page-Size: 10 |
Общее количество результатов на возвращённой странице (например, основанное на параметре запроса limit и фактически возвращённых результатах). |
X-Item-Count |
X-Item-Count: 30 |
Общее количество элементов, доступных на всех страницах. |
Link |
Link: <https://api.forwardemail.net/v1/emails?page=1>; rel="prev", <https://api.forwardemail.net/v1/emails?page=3>; rel="next", <https://api.forwardemail.net/v1/emails?page=3; rel="last", https://api.forwardemail.net/v1/emails?page=1; rel="first" |
Мы предоставляем HTTP-заголовок ответа Link, который вы можете разобрать, как показано в примере. Это похоже на GitHub (например, не все значения будут предоставлены, если они не актуальны или недоступны, например, "next" не будет предоставлен, если следующей страницы нет). |
Пример запроса:
curl https://fe.tiamati.email/v1/domains/example.com/aliases?page=2&pagination=true \
-u API_TOKEN:
Логи
Получение логов
Наш API программно позволяет вам скачать логи для вашей учетной записи. Отправка запроса на этот эндпоинт обработает все логи вашей учетной записи и отправит их вам по электронной почте в виде вложения (сжатого файла Gzip с CSV таблицей) после завершения.
Это позволяет создавать фоновые задачи с помощью Cron job или используя наше Node.js программное обеспечение для планирования задач Bree, чтобы получать логи когда угодно. Обратите внимание, что этот эндпоинт ограничен 10 запросами в день.
Вложение имеет имя в нижнем регистре email-deliverability-logs-YYYY-MM-DD-h-mm-A-z.csv.gz, а само письмо содержит краткое резюме полученных логов. Вы также можете скачать логи в любое время из Мой аккаунт → Логи
GET /v1/logs/download
| Параметр Querystring | Обязательно | Тип | Описание |
|---|---|---|---|
domain |
Нет | Строка (FQDN) | Фильтровать логи по полностью квалифицированному домену ("FQDN"). Если не указано, будут получены логи по всем доменам. |
q |
Нет | Строка | Поиск логов по email, домену, имени алиаса, IP-адресу или дате (форматы M/Y, M/D/YY, M-D, M-D-YY или M.D.YY). |
bounce_category |
Нет | Строка | Поиск логов по конкретной категории отказа (например, blocklist). |
response_code |
Нет | Число | Поиск логов по конкретному коду ошибки (например, 421 или 550). |
Пример запроса:
curl https://fe.tiamati.email/v1/logs/download \
-u API_TOKEN:
Пример Cron job (каждую ночь в полночь):
0 0 * * * /usr/bin/curl https://fe.tiamati.email/v1/logs/download -u API_TOKEN: &>/dev/null
Обратите внимание, что вы можете использовать сервисы, такие как Crontab.guru, для проверки синтаксиса выражения cron job.
Пример Cron job (каждую ночь в полночь и с логами за предыдущий день):
Для MacOS:
0 0 * * * /usr/bin/curl https://fe.tiamati.email/v1/logs/download?q=`date -v-1d -u "+%-m/%-d/%y"` -u API_TOKEN: &>/dev/null
Для Linux и Ubuntu:
0 0 * * * /usr/bin/curl https://fe.tiamati.email/v1/logs/download?q=`date --date "-1 days" -u "+%-m/%-d/%y"` -u API_TOKEN: &>/dev/null
Аккаунт
Создать аккаунт
POST /v1/account
| Параметр тела | Обязательно | Тип | Описание |
|---|---|---|---|
email |
Да | Строка (Email) | Адрес электронной почты |
password |
Да | Строка | Пароль |
Пример запроса:
curl -X POST https://fe.tiamati.email/v1/account \
-u API_TOKEN: \
-d "email=user%40gmail.com"
Получить аккаунт
GET /v1/account
Пример запроса:
curl https://fe.tiamati.email/v1/account \
-u API_TOKEN:
Обновить аккаунт
PUT /v1/account
| Параметр тела | Обязательно | Тип | Описание |
|---|---|---|---|
email |
Нет | Строка (Email) | Адрес электронной почты |
given_name |
Нет | Строка | Имя |
family_name |
Нет | Строка | Фамилия |
avatar_url |
Нет | Строка (URL) | Ссылка на изображение аватара |
Пример запроса:
curl -X PUT https://fe.tiamati.email/v1/account \
-u API_TOKEN: \
-d "email=user%40gmail.com"
Контакты алиаса (CardDAV)
Note
В отличие от других API эндпоинтов, для этих требуется Аутентификация с "username", равным имени пользователя алиаса, и "password", равным сгенерированному паролю алиаса, в заголовках Basic Authorization. [!WARNING] Этот раздел конечных точек находится в разработке и, надеемся, будет выпущен в 2024 году. Временно, пожалуйста, используйте IMAP-клиент из выпадающего меню "Apps" в навигации нашего сайта.
Список контактов
GET /v1/contacts
Скоро будет
Создать контакт
POST /v1/contacts
Скоро будет
Получить контакт
GET /v1/contacts/:id
Скоро будет
Обновить контакт
PUT /v1/contacts/:id
Скоро будет
Удалить контакт
DELETE /v1/contacts/:id
Скоро будет
Календарь псевдонимов (CalDAV)
Note
В отличие от других конечных точек API, для этих требуется аутентификация с "username", равным имени пользователя псевдонима, и "password", равным сгенерированному паролю псевдонима, в заголовках Basic Authorization.
Warning
Этот раздел конечных точек находится в разработке и, надеемся, будет выпущен в 2024 году. Временно, пожалуйста, используйте IMAP-клиент из выпадающего меню "Apps" в навигации нашего сайта.
Список календарей
GET /v1/calendars
Скоро будет
Создать календарь
POST /v1/calendars
Скоро будет
Получить календарь
GET /v1/calendars/:id
Скоро будет
Обновить календарь
PUT /v1/calendars/:id
Скоро будет
Удалить календарь
DELETE /v1/calendars/:id
Скоро будет
Сообщения псевдонимов (IMAP/POP3)
Note
В отличие от других конечных точек API, для этих требуется аутентификация с "username", равным имени пользователя псевдонима, и "password", равным сгенерированному паролю псевдонима, в заголовках Basic Authorization.
Warning
Этот раздел конечных точек находится в разработке и, надеемся, будет выпущен в 2024 году. Временно, пожалуйста, используйте IMAP-клиент из выпадающего меню "Apps" в навигации нашего сайта.
Пожалуйста, убедитесь, что вы выполнили инструкции по настройке для вашего домена.
Эти инструкции можно найти в разделе FAQ Поддерживаете ли вы получение почты через IMAP?.
Список и поиск сообщений
GET /v1/messages
Скоро будет
Создать сообщение
Note
Это НЕ отправит электронное письмо – оно просто добавит сообщение в папку вашего почтового ящика (например, это похоже на команду IMAP APPEND). Если вы хотите отправить письмо, смотрите Создать исходящее SMTP письмо ниже. После создания исходящего SMTP письма вы можете добавить его копию с помощью этой конечной точки в почтовый ящик вашего псевдонима для хранения.
POST /v1/messages
Скоро будет
Получить сообщение
GET /v1/messages/:id
Скоро будет
Обновить сообщение
PUT /v1/messages/:id
Скоро будет
Удалить сообщение
DELETE /v1/messages:id
Скоро будет
Папки псевдонимов (IMAP/POP3)
Tip
Конечные точки папок с путем папки /v1/folders/:path взаимозаменяемы с ID папки :id. Это означает, что вы можете ссылаться на папку либо по path, либо по id.
Warning
Этот раздел конечных точек находится в разработке и, надеемся, будет выпущен в 2024 году. Временно, пожалуйста, используйте IMAP-клиент из выпадающего меню "Apps" в навигации нашего сайта.
Список папок
GET /v1/folders
Скоро будет
Создать папку
POST /v1/folders
Скоро будет
Получить папку
GET /v1/folders/:id
Скоро будет
Обновить папку
PUT /v1/folders/:id
Скоро будет
Удалить папку
DELETE /v1/folders/:id
Скоро будет
Копировать папку
POST /v1/folders/:id/copy
Скоро будет
Исходящие письма
Пожалуйста, убедитесь, что вы выполнили инструкции по настройке для вашего домена.
Эти инструкции можно найти в разделе Мой аккаунт → Домены → Настройки → Конфигурация исходящего SMTP. Вам необходимо настроить DKIM, Return-Path и DMARC для отправки исходящих SMTP писем с вашего домена.
Получить лимит исходящих SMTP писем
Это простой эндпоинт, который возвращает JSON-объект, содержащий count и limit для количества ежедневных исходящих SMTP сообщений на основе каждой учетной записи.
GET /v1/emails/limit
Пример запроса:
curl https://fe.tiamati.email/v1/emails/limit \
-u API_TOKEN:
Список исходящих SMTP писем
Обратите внимание, что этот эндпоинт не возвращает значения свойств для message, headers и rejectedErrors письма.
Чтобы получить эти свойства и их значения, используйте эндпоинт Получить письмо с ID письма.
GET /v1/emails
| Параметр Querystring | Обязательно | Тип | Описание |
|---|---|---|---|
q |
Нет | Строка (поддерживается RegExp) | Поиск писем по метаданным |
domain |
Нет | Строка (поддерживается RegExp) | Поиск писем по доменному имени |
sort |
Нет | Строка | Сортировка по определённому полю (префикс с одним дефисом - для обратного порядка сортировки). По умолчанию created_at, если не указано. |
page |
Нет | Число | Подробнее см. Пагинация |
limit |
Нет | Число | Подробнее см. Пагинация |
Пример запроса:
curl https://fe.tiamati.email/v1/emails?limit=1 \
-u API_TOKEN:
Создать исходящее SMTP письмо
Наш API для создания письма вдохновлен и использует конфигурацию опций сообщения Nodemailer. Пожалуйста, обратитесь к конфигурации сообщения Nodemailer для всех параметров тела ниже.
Обратите внимание, что за исключением envelope и dkim (так как мы устанавливаем их автоматически для вас), мы поддерживаем все опции Nodemailer. Мы автоматически устанавливаем опции disableFileAccess и disableUrlAccess в true в целях безопасности.
Вы должны либо передать единственную опцию raw с вашим полным сырцовым письмом, включая заголовки, или передать отдельные параметры тела ниже.
Этот API автоматически кодирует эмодзи, если они встречаются в заголовках (например, строка темы Subject: 🤓 Hello автоматически преобразуется в Subject: =?UTF-8?Q?=F0=9F=A4=93?= Hello). Наша цель — сделать API для писем максимально удобным и защищённым для разработчиков.
Аутентификация: Этот эндпоинт поддерживает как аутентификацию по API токену, так и аутентификацию по учетным данным алиаса. Подробнее см. раздел Аутентификация выше.
POST /v1/emails
| Параметр тела | Обязательно | Тип | Описание |
|---|---|---|---|
from |
Нет | Строка (Email) | Адрес электронной почты отправителя (должен существовать как алиас домена). |
to |
Нет | Строка или Массив | Список получателей для заголовка "To", разделённый запятыми, или массив. |
cc |
Нет | Строка или Массив | Список получателей для заголовка "Cc", разделённый запятыми, или массив. |
bcc |
Нет | Строка или Массив | Список получателей для заголовка "Bcc", разделённый запятыми, или массив. |
subject |
Нет | Строка | Тема письма. |
text |
Нет | Строка или Буфер | Текстовая версия сообщения. |
html |
Нет | Строка или Буфер | HTML-версия сообщения. |
attachments |
Нет | Массив | Массив объектов вложений (см. общие поля Nodemailer). |
sender |
Нет | Строка | Адрес электронной почты для заголовка "Sender" (см. более продвинутые поля Nodemailer). |
replyTo |
Нет | Строка | Адрес электронной почты для заголовка "Reply-To". |
inReplyTo |
Нет | Строка | Message-ID, на который данное сообщение является ответом. |
references |
Нет | Строка или Массив | Список Message-ID, разделённых пробелами, или массив. |
attachDataUrls |
Нет | Булево | Если true, то преобразует изображения с префиксом data: в HTML-содержимом сообщения в встроенные вложения. |
watchHtml |
Нет | Строка | Специфичная для Apple Watch HTML-версия сообщения (согласно документации Nodemailer), последние модели часов не требуют установки этого параметра. |
amp |
Нет | Строка | Специфичная для AMP4EMAIL HTML-версия сообщения (см. пример Nodemailer). |
icalEvent |
Нет | Объект | Событие iCalendar для использования в качестве альтернативного содержимого сообщения (см. календарные события Nodemailer). |
alternatives |
Нет | Массив | Массив альтернативного содержимого сообщения (см. альтернативное содержимое Nodemailer). |
encoding |
Нет | Строка | Кодировка для текстовых и HTML строк (по умолчанию "utf-8", также поддерживаются значения "hex" и "base64"). |
raw |
Нет | Строка или Буфер | Пользовательское сгенерированное сообщение в формате RFC822 для использования (вместо сгенерированного Nodemailer – см. пользовательский источник Nodemailer). |
textEncoding |
Нет | Строка | Кодировка, которая принудительно используется для текстовых значений (либо "quoted-printable", либо "base64"). Значение по умолчанию — ближайшее обнаруженное (для ASCII используйте "quoted-printable"). |
priority |
Нет | Строка | Уровень приоритета письма (может быть "high", "normal" (по умолчанию) или "low"). Обратите внимание, что значение "normal" не устанавливает заголовок приоритета (это поведение по умолчанию). Если установлено значение "high" или "low", то заголовки X-Priority, X-MSMail-Priority и Importance будут установлены соответствующим образом. |
headers |
Нет | Объект или Массив | Объект или массив дополнительных заголовков для установки (см. пользовательские заголовки Nodemailer). |
messageId |
Нет | Строка | Необязательное значение Message-ID для заголовка "Message-ID" (если не установлено, будет создано значение по умолчанию – обратите внимание, что значение должно соответствовать спецификации RFC2822). |
date |
Нет | Строка или Дата | Необязательное значение даты, которое будет использовано, если заголовок Date отсутствует после парсинга, иначе будет использована текущая строка UTC, если не установлено. Заголовок даты не может быть более чем на 30 дней позже текущего времени. |
list |
Нет | Объект | Необязательный объект заголовков List-* (см. заголовки списка Nodemailer). |
Пример запроса (API токен):
curl -X POST https://fe.tiamati.email/v1/emails \
-u API_TOKEN: \
-d "from=alias@example.com" \
-d "to=user%40gmail.com" \
-d "subject=test" \
-d "text=test"
Пример запроса (учётные данные алиаса):
curl -X POST https://fe.tiamati.email/v1/emails \
-u "alias@example.com:GENERATED_PASSWORD" \
-d "from=alias@example.com" \
-d "to=user%40gmail.com" \
-d "subject=test" \
-d "text=test"
Пример запроса (сырой email):
curl -X POST https://fe.tiamati.email/v1/emails \
-u API_TOKEN: \
-d "raw=`cat file.eml`"
Получить исходящее SMTP письмо
GET /v1/emails/:id
Пример запроса:
curl https://fe.tiamati.email/v1/emails/:id \
-u API_TOKEN:
Удалить исходящее SMTP письмо
Удаление письма установит статус в "rejected" (и впоследствии не будет обрабатывать его в очереди) только если текущий статус является одним из "pending", "queued" или "deferred". Мы можем автоматически удалять письма спустя 30 дней после их создания и/или отправки – поэтому вам следует хранить копию исходящих SMTP писем в вашем клиенте, базе данных или приложении. Вы можете ссылаться на наш идентификатор письма в вашей базе данных при необходимости – это значение возвращается как из Create email, так и из Retrieve email эндпоинтов.
DELETE /v1/emails/:id
Пример запроса:
curl -X DELETE https://fe.tiamati.email/v1/emails/:id \
-u API_TOKEN:
Домены
Tip
Эндпоинты доменов с именем домена /v1/domains/:domain_name в качестве конечной точки взаимозаменяемы с использованием ID домена :domain_id. Это означает, что вы можете ссылаться на домен либо по его name, либо по id.
Список доменов
Note
Начиная с 1 ноября 2024 года API эндпоинты для Списка доменов и Списка алиасов доменов по умолчанию будут возвращать максимум 1000 результатов на страницу. Если вы хотите включить это поведение заранее, вы можете передать ?paginate=true в качестве дополнительного параметра querystring в URL запроса. Подробнее см. в разделе Пагинация.
GET /v1/domains
| Параметр querystring | Обязательно | Тип | Описание |
|---|---|---|---|
q |
Нет | Строка (поддерживается RegExp) | Поиск доменов по имени |
name |
Нет | Строка (поддерживается RegExp) | Поиск доменов по имени |
sort |
Нет | Строка | Сортировка по конкретному полю (поставьте один дефис - в начале, чтобы отсортировать в обратном порядке). По умолчанию created_at, если не указано. |
page |
Нет | Число | Подробнее см. в разделе Пагинация |
limit |
Нет | Число | Подробнее см. в разделе Пагинация |
Пример запроса:
curl https://fe.tiamati.email/v1/domains \
-u API_TOKEN:
Создать домен
POST /v1/domains
| Параметр тела запроса | Обязательно | Тип | Описание |
|---|---|---|---|
domain |
Да | Строка (FQDN или IP) | Полное доменное имя ("FQDN") или IP-адрес |
team_domain |
Нет | Строка (ID домена или имя домена; FQDN) | Автоматически назначить этот домен той же команде, что и другой домен. Это означает, что все участники этого домена будут назначены членами команды, а plan автоматически установится в team. Вы можете установить значение "none", если необходимо явно отключить это, но обычно это не требуется. |
plan |
Нет | Строка (перечислимое) | Тип плана (должен быть "free", "enhanced_protection" или "team", по умолчанию "free" или текущий платный план пользователя, если он есть) |
catchall |
Нет | Строка (разделённые адреса электронной почты) или Boolean | Создать алиас по умолчанию catch-all, по умолчанию true (если true, будет использоваться email пользователя API в качестве получателя, если false — catch-all не создаётся). Если передана строка, это список email-адресов, разделённых переносом строки, пробелом и/или запятой, которые будут получателями. |
has_adult_content_protection |
Нет | Boolean | Включить защиту от взрослого контента в Спам-сканере для этого домена |
has_phishing_protection |
Нет | Boolean | Включить защиту от фишинга в Спам-сканере для этого домена |
has_executable_protection |
Нет | Boolean | Включить защиту от исполняемых файлов в Спам-сканере для этого домена |
has_virus_protection |
Нет | Boolean | Включить защиту от вирусов в Спам-сканере для этого домена |
has_recipient_verification |
Нет | Boolean | Глобальное значение по умолчанию для домена, указывающее, требуется ли от получателей алиасов кликать по ссылке подтверждения email, чтобы письма проходили |
ignore_mx_check |
Нет | Boolean | Игнорировать проверку MX-записи домена для верификации. Это в основном для пользователей с продвинутыми правилами настройки MX и необходимостью сохранить существующую MX-почту и пересылать её на нашу. |
retention_days |
Нет | Число | Целое число от 0 до 30, соответствующее количеству дней хранения исходящих SMTP писем после успешной доставки или окончательной ошибки. По умолчанию 0, что означает немедленное удаление и редактирование исходящих SMTP писем для вашей безопасности. |
bounce_webhook |
Нет | Строка (URL) или Boolean (false) | URL вебхука http:// или https:// по вашему выбору для отправки bounce-вебхуков. Мы будем отправлять POST запросы на этот URL с информацией о сбоях исходящей SMTP почты (например, мягкие или жёсткие ошибки – чтобы вы могли управлять подписчиками и программно управлять исходящей почтой). |
max_quota_per_alias |
Нет | Строка | Максимальная квота хранения для алиасов на этом домене. Введите значение, например "1 GB", которое будет распознано библиотекой bytes. |
Пример запроса:
curl -X POST https://fe.tiamati.email/v1/domains \
-u API_TOKEN: \
-d domain=example.com \
-d plan=free
Получить домен
GET /v1/domains/example.com
Пример запроса:
curl https://fe.tiamati.email/v1/domains/example.com \
-u API_TOKEN:
Проверить записи домена
GET /v1/domains/example.com/verify-records
Пример запроса:
curl https://fe.tiamati.email/v1/domains/example.com/verify-records \
-u API_TOKEN:
Проверить SMTP-записи домена
GET /v1/domains/example.com/verify-smtp
Пример запроса:
curl https://fe.tiamati.email/v1/domains/example.com/verify-smtp \
-u API_TOKEN:
Список паролей catch-all для всего домена
GET /v1/domains/example.com/catch-all-passwords
Пример запроса:
curl https://fe.tiamati.email/v1/domains/example.com/catch-all-passwords \
-u API_TOKEN:
Создать пароль catch-all для всего домена
POST /v1/domains/example.com/catch-all-passwords
| Параметр тела | Обязательно | Тип | Описание |
|---|---|---|---|
new_password |
Нет | String | Ваш собственный новый пароль для использования в качестве пароля catch-all для всего домена. Обратите внимание, что вы можете оставить это поле пустым или вовсе не включать его в тело запроса API, если хотите получить случайно сгенерированный и надежный пароль. |
description |
Нет | String | Описание для целей организации. |
Пример запроса:
curl BASE_URL/v1/domains/example.com/catch-all-passwords \
-u API_TOKEN:
Удалить пароль catch-all для всего домена
DELETE /v1/domains/example.com/catch-all-passwords/:token_id
Пример запроса:
curl -X DELETE https://fe.tiamati.email/v1/domains/:domain_name/catch-all-passwords/:token_id \
-u API_TOKEN:
Обновить домен
PUT /v1/domains/example.com
| Параметр тела | Обязательно | Тип | Описание |
|---|---|---|---|
smtp_port |
Нет | String или Number | Пользовательский порт для настройки SMTP-перенаправления (по умолчанию "25") |
has_adult_content_protection |
Нет | Boolean | Включить ли защиту от взрослого контента в Спам-сканере для этого домена |
has_phishing_protection |
Нет | Boolean | Включить ли защиту от фишинга в Спам-сканере для этого домена |
has_executable_protection |
Нет | Boolean | Включить ли защиту от исполняемых файлов в Спам-сканере для этого домена |
has_virus_protection |
Нет | Boolean | Включить ли антивирусную защиту в Спам-сканере для этого домена |
has_recipient_verification |
Нет | Boolean | Глобальное значение по умолчанию для домена, указывающее, требуется ли от получателей алиасов кликать по ссылке подтверждения электронной почты для прохождения писем |
ignore_mx_check |
Нет | Boolean | Игнорировать ли проверку MX-записи домена для верификации. Это в основном для пользователей с продвинутыми правилами настройки MX и необходимостью сохранить существующую MX-конфигурацию и перенаправлять на нашу. |
retention_days |
Нет | Number | Целое число от 0 до 30, соответствующее количеству дней хранения исходящих SMTP-писем после успешной доставки или окончательной ошибки. По умолчанию 0, что означает немедленное удаление и редактирование исходящих SMTP-писем для вашей безопасности. |
bounce_webhook |
Нет | String (URL) или Boolean (false) | URL вебхука http:// или https:// по вашему выбору для отправки вебхуков о возвратах. Мы будем отправлять POST запросы на этот URL с информацией о сбоях исходящей SMTP-почты (например, мягкие или жесткие ошибки – чтобы вы могли управлять подписчиками и программно управлять исходящей почтой). |
max_quota_per_alias |
Нет | String | Максимальная квота хранения для алиасов на этом домене. Введите значение, например "1 GB", которое будет обработано библиотекой bytes. |
Пример запроса:
curl -X PUT https://fe.tiamati.email/v1/domains/example.com \
-u API_TOKEN:
Удалить домен
DELETE /v1/domains/:domain_name
Пример запроса:
curl -X DELETE https://fe.tiamati.email/v1/domains/:domain_name \
-u API_TOKEN:
Приглашения
Принять приглашение в домен
GET /v1/domains/:domain_name/invites
Пример запроса:
curl https://fe.tiamati.email/v1/domains/:domain_name/invites \
-u API_TOKEN:
Создать приглашение в домен
POST /v1/domains/example.com/invites
| Параметр тела | Обязательно | Тип | Описание |
|---|---|---|---|
email |
Да | Строка (Email) | Адрес электронной почты для приглашения в список участников домена |
group |
Да | Строка (перечисление) | Группа, в которую будет добавлен пользователь в составе домена (может быть "admin" или "user") |
Пример запроса:
curl -X POST https://fe.tiamati.email/v1/domains/example.com/invites \
-u API_TOKEN: \
-d "email=user%40gmail.com" \
-d group=admin
Important
Если пользователь, которого приглашают, уже является принятым участником любого другого домена, в котором состоит администратор, отправляющий приглашение, то приглашение будет автоматически принято и письмо отправлено не будет.
Удалить приглашение в домен
DELETE /v1/domains/:domain_name/invites
| Параметр тела | Обязательно | Тип | Описание |
|---|---|---|---|
email |
Да | Строка (Email) | Адрес электронной почты для удаления из списка участников домена |
Пример запроса:
curl -X DELETE https://fe.tiamati.email/v1/domains/:domain_name/invites \
-u API_TOKEN:
Участники
Обновить участника домена
PUT /v1/domains/example.com/members/:member_id
| Параметр тела | Обязательно | Тип | Описание |
|---|---|---|---|
group |
Да | Строка (перечисление) | Группа, в которую будет обновлен пользователь в составе домена (может быть "admin" или "user") |
Пример запроса:
curl -X PUT https://fe.tiamati.email/v1/domains/example.com/members/:member_id \
-u API_TOKEN:
Удалить участника домена
DELETE /v1/domains/:domain_name/members/:member_id
Пример запроса:
curl -X DELETE https://fe.tiamati.email/v1/domains/:domain_name/members/:member_id \
-u API_TOKEN:
Псевдонимы
Сгенерировать пароль для псевдонима
Обратите внимание, что если вы не отправите инструкции по электронной почте, то имя пользователя и пароль будут в теле JSON-ответа успешного запроса в формате { username: 'alias@yourdomain.com', password: 'some-generated-password' }.
POST /v1/domains/example.com/aliases/:alias_id/generate-password
| Параметр тела | Обязательно | Тип | Описание |
|---|---|---|---|
new_password |
Нет | Строка | Ваш собственный новый пароль для использования с псевдонимом. Обратите внимание, что вы можете оставить это поле пустым или вовсе не включать его в тело запроса, если хотите получить случайно сгенерированный и надежный пароль. |
password |
Нет | Строка | Существующий пароль для псевдонима, чтобы изменить пароль без удаления существующего хранилища почтового ящика IMAP (см. опцию is_override ниже, если у вас больше нет существующего пароля). |
is_override |
Нет | Булево | ИСПОЛЬЗУЙТЕ С ОСТОРОЖНОСТЬЮ: Это полностью перезапишет существующий пароль псевдонима и базу данных, а также навсегда удалит существующее хранилище IMAP и полностью сбросит базу данных электронной почты SQLite псевдонима. Пожалуйста, сделайте резервную копию, если возможно, если у вас есть существующий почтовый ящик, связанный с этим псевдонимом. |
emailed_instructions |
Нет | Строка | Адрес электронной почты, на который будут отправлены пароль псевдонима и инструкции по настройке. |
Пример запроса:
curl -X POST https://fe.tiamati.email/v1/domains/example.com/aliases/:alias_id/generate-password \
-u API_TOKEN:
Список псевдонимов домена
Note
Начиная с 1 ноября 2024 года API-эндпоинты для Списка доменов и Списка псевдонимов домена по умолчанию будут возвращать максимум 1000 результатов на страницу. Если вы хотите включить это поведение заранее, вы можете добавить ?paginate=true в качестве дополнительного параметра строки запроса к URL эндпоинта. Подробнее см. в разделе Пагинация.
GET /v1/domains/example.com/aliases
| Параметр строки запроса | Обязательно | Тип | Описание |
|---|---|---|---|
q |
Нет | Строка (поддерживается RegExp) | Поиск псевдонимов в домене по имени, метке или получателю |
name |
Нет | Строка (поддерживается RegExp) | Поиск псевдонимов в домене по имени |
recipient |
Нет | Строка (поддерживается RegExp) | Поиск псевдонимов в домене по получателю |
sort |
Нет | Строка | Сортировка по определённому полю (добавьте префикс с одним дефисом - для обратного порядка сортировки). По умолчанию created_at, если не указано. |
page |
Нет | Число | Подробнее см. в разделе Пагинация |
limit |
Нет | Число | Подробнее см. в разделе Пагинация |
Пример запроса:
curl https://fe.tiamati.email/v1/domains/example.com/aliases?pagination=true \
-u API_TOKEN:
Создать новый псевдоним домена
POST /v1/domains/example.com/aliases
| Параметр тела запроса | Обязательно | Тип | Описание |
|---|---|---|---|
name |
Нет | Строка | Имя псевдонима (если не указано или пустое, будет сгенерирован случайный псевдоним) |
recipients |
Нет | Строка или Массив | Список получателей (должен быть строкой с разделителями в виде переноса строки/пробела/запятой или массивом валидных email-адресов, полностью квалифицированных доменных имён ("FQDN"), IP-адресов и/или URL вебхуков – если не указан или пустой массив, в качестве получателя будет установлен email пользователя, делающего API-запрос) |
description |
Нет | Строка | Описание псевдонима |
labels |
Нет | Строка или Массив | Список меток (должен быть строкой с разделителями в виде переноса строки/пробела/запятой или массивом) |
has_recipient_verification |
Нет | Булево | Требовать от получателей кликнуть по ссылке подтверждения в письме для прохождения почты (по умолчанию используется настройка домена, если явно не указано в теле запроса) |
is_enabled |
Нет | Булево | Включить или отключить этот псевдоним (если отключён, письма не будут маршрутизироваться и вернут успешные коды статуса). Если передано значение, оно будет преобразовано в булево с помощью boolean) |
error_code_if_disabled |
Нет | Число (одно из 250, 421 или 550) |
Входящие письма на этот псевдоним будут отклоняться, если is_enabled равен false, с кодом 250 (тихая доставка в никуда, например, чёрная дыра или /dev/null), 421 (временный отказ; повторная попытка в течение ~5 дней) или 550 (постоянная ошибка и отклонение). По умолчанию 250. |
has_imap |
Нет | Булево | Включить или отключить IMAP-хранилище для этого псевдонима (если отключено, входящие письма не будут сохраняться в IMAP-хранилище. Если передано значение, оно будет преобразовано в булево с помощью boolean) |
has_pgp |
Нет | Булево | Включить или отключить OpenPGP шифрование для IMAP/POP3/CalDAV/CardDAV зашифрованного хранения почты с использованием public_key псевдонима. |
public_key |
Нет | Строка | OpenPGP публичный ключ в формате ASCII Armor (нажмите здесь, чтобы посмотреть пример; например, GPG ключ для support@forwardemail.net). Применяется только если has_pgp установлен в true. Подробнее о сквозном шифровании в нашем FAQ. |
max_quota |
Нет | Строка | Максимальная квота хранения для этого псевдонима. Оставьте пустым, чтобы сбросить до текущей максимальной квоты домена, или введите значение, например "1 GB", которое будет распарсено с помощью bytes. Это значение может изменять только администратор домена. |
vacation_responder_is_enabled |
Нет | Булево | Включить или отключить автоматический автоответчик "в отпуске". |
vacation_responder_start_date |
Нет | Строка | Дата начала работы автоответчика (если включён и дата начала не указана, считается, что автоответчик уже активен). Поддерживаются форматы дат, такие как MM/DD/YYYY, YYYY-MM-DD и другие форматы с умным парсингом с помощью dayjs. |
vacation_responder_end_date |
Нет | Строка | Дата окончания работы автоответчика (если включён и дата окончания не указана, считается, что автоответчик работает бесконечно). Поддерживаются форматы дат, такие как MM/DD/YYYY, YYYY-MM-DD и другие форматы с умным парсингом с помощью dayjs. |
vacation_responder_subject |
Нет | Строка | Тема письма автоответчика в обычном тексте, например "Вне офиса". Для удаления всего HTML используется striptags. |
vacation_responder_message |
Нет | Строка | Сообщение автоответчика в обычном тексте, например "Я буду вне офиса до февраля.". Для удаления всего HTML используется striptags. |
Example Request:
curl -X POST https://fe.tiamati.email/v1/domains/example.com/aliases \
-u API_TOKEN:
Получить псевдоним домена
Вы можете получить псевдоним домена по его значению id или name.
GET /v1/domains/:domain_name/aliases/:alias_id
Example Request:
curl https://fe.tiamati.email/v1/domains/:domain_name/aliases/:alias_id \
-u API_TOKEN:
GET /v1/domains/:domain_name/aliases/:alias_name
Example Request:
curl https://fe.tiamati.email/v1/domains/:domain_name/aliases/:alias_name \
-u API_TOKEN:
Обновить псевдоним домена
PUT /v1/domains/example.com/aliases/:alias_id
| Параметр тела | Обязательно | Тип | Описание |
|---|---|---|---|
name |
Нет | Строка | Имя псевдонима |
recipients |
Нет | Строка или Массив | Список получателей (должен быть строкой, разделённой переводами строк/пробелами/запятыми, или массивом с действительными адресами электронной почты, полностью квалифицированными доменными именами ("FQDN"), IP-адресами и/или URL вебхуков) |
description |
Нет | Строка | Описание псевдонима |
labels |
Нет | Строка или Массив | Список меток (должен быть строкой, разделённой переводами строк/пробелами/запятыми, или массивом) |
has_recipient_verification |
Нет | Булево | Требовать от получателей кликнуть по ссылке подтверждения электронной почты для прохождения писем (по умолчанию используется настройка домена, если явно не указано в теле запроса) |
is_enabled |
Нет | Булево | Включить или отключить этот псевдоним (если отключён, письма не будут маршрутизироваться и вернут успешные коды статуса). Если передано значение, оно преобразуется в булево с помощью boolean) |
error_code_if_disabled |
Нет | Число (одно из 250, 421 или 550) |
Входящие письма на этот псевдоним будут отклоняться, если is_enabled равно false, с кодом 250 (тихая доставка в никуда, например, чёрная дыра или /dev/null), 421 (мягкий отказ; повторная попытка в течение ~5 дней) или 550 (постоянная ошибка и отклонение). По умолчанию 250. |
has_imap |
Нет | Булево | Включить или отключить IMAP-хранилище для этого псевдонима (если отключено, входящие письма не будут сохраняться в IMAP-хранилище. Если передано значение, оно преобразуется в булево с помощью boolean) |
has_pgp |
Нет | Булево | Включить или отключить OpenPGP шифрование для IMAP/POP3/CalDAV/CardDAV зашифрованного хранения электронной почты с использованием public_key псевдонима. |
public_key |
Нет | Строка | Публичный ключ OpenPGP в формате ASCII Armor (нажмите здесь, чтобы посмотреть пример; например, GPG ключ для support@forwardemail.net). Применяется только если has_pgp установлен в true. Подробнее о сквозном шифровании в нашем FAQ. |
max_quota |
Нет | Строка | Максимальная квота хранилища для этого псевдонима. Оставьте пустым, чтобы сбросить до текущей максимальной квоты домена, или введите значение, например "1 GB", которое будет обработано с помощью bytes. Это значение может изменять только администратор домена. |
vacation_responder_is_enabled |
Нет | Булево | Включить или отключить автоматический автоответчик отсутствия. |
vacation_responder_start_date |
Нет | Строка | Дата начала работы автоответчика отсутствия (если включён и дата начала не указана, считается, что он уже активен). Поддерживаются форматы дат, такие как MM/DD/YYYY, YYYY-MM-DD и другие форматы с помощью умного парсинга через dayjs. |
vacation_responder_end_date |
Нет | Строка | Дата окончания работы автоответчика отсутствия (если включён и дата окончания не указана, считается, что он работает бесконечно). Поддерживаются форматы дат, такие как MM/DD/YYYY, YYYY-MM-DD и другие форматы с помощью умного парсинга через dayjs. |
vacation_responder_subject |
Нет | Строка | Тема в обычном тексте для автоответчика отсутствия, например "Вне офиса". Для удаления всего HTML используется striptags. |
vacation_responder_message |
Нет | Строка | Сообщение в обычном тексте для автоответчика отсутствия, например "Я буду вне офиса до февраля.". Для удаления всего HTML используется striptags. |
Пример запроса:
curl -X PUT https://fe.tiamati.email/v1/domains/example.com/aliases/:alias_id \
-u API_TOKEN:
Удалить псевдоним домена
DELETE /v1/domains/:domain_name/aliases/:alias_id
Пример запроса:
curl -X DELETE https://fe.tiamati.email/v1/domains/:domain_name/aliases/:alias_id \
-u API_TOKEN:
Шифрование
Мы позволяем вам шифровать записи даже на бесплатном тарифе без дополнительной платы. Конфиденциальность не должна быть функцией, она должна быть неотъемлемой частью всех аспектов продукта. По многочисленным просьбам в обсуждении Privacy Guides и в наших задачах на GitHub мы добавили эту возможность.
Шифрование TXT записи
POST /v1/encrypt
| Параметр тела | Обязательно | Тип | Описание |
|---|---|---|---|
input |
Да | String | Любая действительная открытая TXT запись Forward Email |
Пример запроса:
curl -X POST https://fe.tiamati.email/v1/encrypt \
-d "input=user@gmail.com"