ВозможностиОрганизации
Документация
    Ring Platform

    Децентрализованное самостроящееся будущее

    Войти
    Организации
    Возможности
    Магазин
    Документация
    Концепции платформы
    RING ЭкономикаSonoratek LLCГлобальное влияниеAI встречает Web3
    Начать
    Быстрый стартКалькуляторДорожная карта
    Конфиденциальность|Контакты
    v1.104.17|Sonoratek LLC

    Documentation

    Концепции, ценность и типичные сценарии клонирования — меньше кода.

    Добро пожаловать в Ring
    Краткий справочник
    С чего начать
    Предварительные требования
    Установка
    Первый успех
    Следующие шаги
    Функции
    Store
    Склад и остатки
    Управление вендорами
    Комиссии и расчёты
    SubscriptionConductor
    PaymentConductor
    Интеграция платежей
    Интеграция WayForPay
    Web3 Кошелек
    Реферальные коды (Refcodes)
    NFT Exhibition Marketplace
    Система Стейкинга Токенов
    Entities
    Opportunities
    Real-Time Messaging
    Peer Games
    Модуль Новостей - Цифровой Газетный Опыт
    Блоги участников
    Система Резервирования Имён Пользователей
    Научный редактор
    Notifications
    Push-уведомления через FCM (Ring)
    Email AI-CRM
    Протокол Tunnel
    Authentication
    Безопасность и соответствие
    Система локалей
    Мобильный Опыт
    Паттерны Оптимизации Производительности
    Примеры
    Quick Start
    Базовая настройка
    White Label
    Custom Branding
    Интеграция Web3
    Реальные Проекты
    Advanced Features
    Кастомизация
    Руководство по Ringization
    Branding
    Темы оформления
    Features
    Localization
    Настройка токеномики
    Web3
    Token launch jurisdictions
    Интеграции
    Ethereum-кошельки (Wagmi v3)
    Развёртывание
    Self-hosted развёртывание
    Vercel
    Docker
    Конфигурация Окружения
    Мониторинг и аналитика
    Оптимизация производительности
    Резервное копирование и восстановление
    Архитектура
    Data Model
    Security
    Real Time
    Архитектура PaymentConductor
    Бекенд Сервисы
    Интеграция Firebase
    Разработка
    Ring MCP Server

    Быстрый вход (CTO · аудиторы · агенты)

    Приветствие — миссия и аудитории
    Краткий справочник
    С чего начать
    Архитектура и Auth.js
    Режимы бэкенда и базы данных (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Деплой (Docker · k8s)
    Безопасность и соответствие требованиям
    ringdom.org — база LegioX
    Исходный код — лицензия MIT (GitHub)

    Documentation

    Концепции, ценность и типичные сценарии клонирования — меньше кода.

    Добро пожаловать в Ring
    Краткий справочник
    С чего начать
    Предварительные требования
    Установка
    Первый успех
    Следующие шаги
    Функции
    Store
    Склад и остатки
    Управление вендорами
    Комиссии и расчёты
    SubscriptionConductor
    PaymentConductor
    Интеграция платежей
    Интеграция WayForPay
    Web3 Кошелек
    Реферальные коды (Refcodes)
    NFT Exhibition Marketplace
    Система Стейкинга Токенов
    Entities
    Opportunities
    Real-Time Messaging
    Peer Games
    Модуль Новостей - Цифровой Газетный Опыт
    Блоги участников
    Система Резервирования Имён Пользователей
    Научный редактор
    Notifications
    Push-уведомления через FCM (Ring)
    Email AI-CRM
    Протокол Tunnel
    Authentication
    Безопасность и соответствие
    Система локалей
    Мобильный Опыт
    Паттерны Оптимизации Производительности
    Примеры
    Quick Start
    Базовая настройка
    White Label
    Custom Branding
    Интеграция Web3
    Реальные Проекты
    Advanced Features
    Кастомизация
    Руководство по Ringization
    Branding
    Темы оформления
    Features
    Localization
    Настройка токеномики
    Web3
    Token launch jurisdictions
    Интеграции
    Ethereum-кошельки (Wagmi v3)
    Развёртывание
    Self-hosted развёртывание
    Vercel
    Docker
    Конфигурация Окружения
    Мониторинг и аналитика
    Оптимизация производительности
    Резервное копирование и восстановление
    Архитектура
    Data Model
    Security
    Real Time
    Архитектура PaymentConductor
    Бекенд Сервисы
    Интеграция Firebase
    Разработка
    Ring MCP Server

    Быстрый вход (CTO · аудиторы · агенты)

    Приветствие — миссия и аудитории
    Краткий справочник
    С чего начать
    Архитектура и Auth.js
    Режимы бэкенда и базы данных (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Деплой (Docker · k8s)
    Безопасность и соответствие требованиям
    ringdom.org — база LegioX
    Исходный код — лицензия MIT (GitHub)

    Documentation

    Концепции, ценность и типичные сценарии клонирования — меньше кода.

    Добро пожаловать в Ring
    Краткий справочник
    С чего начать
    Предварительные требования
    Установка
    Первый успех
    Следующие шаги
    Функции
    Store
    Склад и остатки
    Управление вендорами
    Комиссии и расчёты
    SubscriptionConductor
    PaymentConductor
    Интеграция платежей
    Интеграция WayForPay
    Web3 Кошелек
    Реферальные коды (Refcodes)
    NFT Exhibition Marketplace
    Система Стейкинга Токенов
    Entities
    Opportunities
    Real-Time Messaging
    Peer Games
    Модуль Новостей - Цифровой Газетный Опыт
    Блоги участников
    Система Резервирования Имён Пользователей
    Научный редактор
    Notifications
    Push-уведомления через FCM (Ring)
    Email AI-CRM
    Протокол Tunnel
    Authentication
    Безопасность и соответствие
    Система локалей
    Мобильный Опыт
    Паттерны Оптимизации Производительности
    Примеры
    Quick Start
    Базовая настройка
    White Label
    Custom Branding
    Интеграция Web3
    Реальные Проекты
    Advanced Features
    Кастомизация
    Руководство по Ringization
    Branding
    Темы оформления
    Features
    Localization
    Настройка токеномики
    Web3
    Token launch jurisdictions
    Интеграции
    Ethereum-кошельки (Wagmi v3)
    Развёртывание
    Self-hosted развёртывание
    Vercel
    Docker
    Конфигурация Окружения
    Мониторинг и аналитика
    Оптимизация производительности
    Резервное копирование и восстановление
    Архитектура
    Data Model
    Security
    Real Time
    Архитектура PaymentConductor
    Бекенд Сервисы
    Интеграция Firebase
    Разработка
    Ring MCP Server

    Быстрый вход (CTO · аудиторы · агенты)

    Приветствие — миссия и аудитории
    Краткий справочник
    С чего начать
    Архитектура и Auth.js
    Режимы бэкенда и базы данных (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Деплой (Docker · k8s)
    Безопасность и соответствие требованиям
    ringdom.org — база LegioX
    Исходный код — лицензия MIT (GitHub)
    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    Email AI-CRM API

    Доступ администратора

    Все маршруты /api/admin/email/* требуют аутентифицированной сессии platform admin (роль admin или superadmin).

    Админский UI и API

    Интерфейс обзора: /admin/crm/* (CrmAdminShell). API остаются на /api/admin/email/* — см. Email AI-CRM.

    Cron / Webhook

    /api/cron/* и /api/webhooks/email/inbound используют CRON_SECRET или WEBHOOK_EMAIL_SECRET — не user session. Без секрета закрываются по умолчанию.

    CRM SMTP ≠ Auth SMTP

    Отправка черновика использует EmailSenderService + SMTP канала (CRM_CHANNEL_*). Auth OTP использует lib/mailer.ts / SMTP_*. Не путайте их в операционных процедурах.

    Admin — каналы

    GET /api/admin/email/channels

    Только для чтения: статус CRM-каналов (без паролей). Используется для фильтрации почтовых ящиков во UI.

    Ответ:

    json
    
    {
      "channels": [
        {
          "id": "primary",
          "name": "Primary",
          "flow": "standard",
          "mailbox": "INBOX",
          "imapHost": "mail.ringdom.org",
          "imapUser": "info@ringdom.org",
          "smtpHost": "mail.ringdom.org",
          "smtpUser": "info@ringdom.org",
          "hasImapPassword": true,
          "hasSmtpPassword": true
        }
      ],
      "validation": { "ok": true, "errors": [] }
    }

    Реализация: loadCrmChannels() и validateCrmChannels() из features/email-crm/pipeline/imap/config.ts.


    Admin — треды

    GET /api/admin/email/threads

    Список тредов переписки.

    QueryTypeОписание
    statusstringФильтр: new, ongoing, waiting, resolved или все
    sourceChannelstringФильтровать по id/name канала (многопочтовый ящик)

    Ответ: { threads: EmailThreadRecord[] }

    PATCH /api/admin/email/threads

    Обновить статус треда.

    Тело: { "id": "<threadId>", "status": "resolved" }

    GET /api/admin/email/threads/[id]

    Детали треда с сообщениями, черновиками и открытыми задачами.

    Ответ: { thread, messages, drafts, tasks }


    Admin — черновики

    GET /api/admin/email/drafts

    Ожидающие черновики (status: pending), отсортированы по времени (новые выше).

    POST /api/admin/email/drafts/[id]/approve

    Утвердить черновик к отправке. В reviewer сохраняется id текущего пользователя-сессии.

    POST /api/admin/email/drafts/[id]/reject

    Тело: { "reason": "опциональная строка" }

    POST /api/admin/email/drafts/[id]/send

    Отправка утверждённого черновика через CRM SMTP-канал (EmailSenderService).

    Тело (опционально): { "toEmail": "...", "subject": "..." } — по умолчанию из треда.

    Ответ: { "success": true, "messageId": "<smtp-message-id>" }

    Запись сохраняется в email_messages, статус треда обновляется на waiting.


    Admin — контакты

    GET /api/admin/email/contacts

    QueryОписание
    email, name, company, typeФильтры поиска

    POST /api/admin/email/contacts

    Тело: { "email": "обяз.", "name?", "company?", "type?" }


    Admin — задачи

    GET /api/admin/email/tasks

    QueryОписание
    statusopen, in_progress, overdue, completed и др.

    POST /api/admin/email/tasks

    Тело: { "threadId", "title", "taskType", ... } — см. TaskCreateInput из task-service.ts.

    POST /api/admin/email/tasks/[id]/complete

    Тело: { "completionNotes?": "string" }


    Admin — аналитика

    GET /api/admin/email/analytics

    QueryЗначения
    range7d (по умолч.), 30d, 90d

    Ответ: распределение intent/sentiment, costStats из email_api_usage, dailyStats, черновики/задачи.


    Cron — email processor

    POST или GET /api/cron/email-processor

    Аутентификация: Authorization: Bearer $CRON_SECRET (без секрета — отказ)

    Тело запроса или query-параметр action:

    ActionДействие
    poll (по умолч.)pollInboundBatch() — загрузка UNSEEN на каждом канале, обработка, disconnect
    statusСтатус обработчика и IMAP (getEmailProcessor())
    stopОстановить IDLE слушатель
    startЗапустить IDLE (EMAIL_PROCESSOR_ALLOW_HTTP_START=true)
    mark-overdue-tasksЗапуск EmailTaskService.processOverdueTasks()

    На каждый action создаётся новый обработчик (Processor), нет постоянно работающего глобального экземпляра.

    Пример:

    GET /api/cron/email-analytics

    7-дневный срез дашборда (структура — как admin analytics). Только по cron-авторизации.

    Очистка токенов авторизации (смежное)

    GET/POST /api/cron/cleanup-email-tokens — чистка просроченных email_login_tokens. Такой же fail-closed по CRON_SECRET. Документировано в Ring Mailer, не относится к Email CRM напрямую.


    Webhook — входящая почта

    POST /api/webhooks/email/inbound

    Авторизация: Authorization: Bearer $WEBHOOK_EMAIL_SECRET или HMAC-SHA256 hex в X-Email-Webhook-Signature по сырому телу.

    Тело запроса (JSON):

    Вызывает EmailProcessor.ingestEvent() c uid: 0 (IMAP-пометка как “прочитано” не ставится).


    Связанная документация

    Related documentation

    Email AI-CRM

    Предпосылки: настройка операторов, секреты каналов, Auth vs CRM SMTP.

    Email AI-CRM architecture

    Детальный разбор: EmailProcessor и persistance через jsonb-collection.

    Email AI-CRM developer guide

    Использование: локальный poll + smoke-тест отправки черновика.

    Ring Mailer & RingdomX Mail

    См. также: Auth cleanup-email-tokens cron и SMTP_* плоскость.

    Email AI-CRM API

    Доступ администратора

    Все маршруты /api/admin/email/* требуют аутентифицированной сессии platform admin (роль admin или superadmin).

    Админский UI и API

    Интерфейс обзора: /admin/crm/* (CrmAdminShell). API остаются на /api/admin/email/* — см. Email AI-CRM.

    Cron / Webhook

    /api/cron/* и /api/webhooks/email/inbound используют CRON_SECRET или WEBHOOK_EMAIL_SECRET — не user session. Без секрета закрываются по умолчанию.

    CRM SMTP ≠ Auth SMTP

    Отправка черновика использует EmailSenderService + SMTP канала (CRM_CHANNEL_*). Auth OTP использует lib/mailer.ts / SMTP_*. Не путайте их в операционных процедурах.

    Admin — каналы

    GET /api/admin/email/channels

    Только для чтения: статус CRM-каналов (без паролей). Используется для фильтрации почтовых ящиков во UI.

    Ответ:

    json
    
    {
      "channels": [
        {
          "id": "primary",
          "name": "Primary",
          "flow": "standard",
          "mailbox": "INBOX",
          "imapHost": "mail.ringdom.org",
          "imapUser": "info@ringdom.org",
          "smtpHost": "mail.ringdom.org",
          "smtpUser": "info@ringdom.org",
          "hasImapPassword": true,
          "hasSmtpPassword": true
        }
      ],
      "validation": { "ok": true, "errors": [] }
    }

    Реализация: loadCrmChannels() и validateCrmChannels() из features/email-crm/pipeline/imap/config.ts.


    Admin — треды

    GET /api/admin/email/threads

    Список тредов переписки.

    QueryTypeОписание
    statusstringФильтр: new, ongoing, waiting, resolved или все
    sourceChannelstringФильтровать по id/name канала (многопочтовый ящик)

    Ответ: { threads: EmailThreadRecord[] }

    PATCH /api/admin/email/threads

    Обновить статус треда.

    Тело: { "id": "<threadId>", "status": "resolved" }

    GET /api/admin/email/threads/[id]

    Детали треда с сообщениями, черновиками и открытыми задачами.

    Ответ: { thread, messages, drafts, tasks }


    Admin — черновики

    GET /api/admin/email/drafts

    Ожидающие черновики (status: pending), отсортированы по времени (новые выше).

    POST /api/admin/email/drafts/[id]/approve

    Утвердить черновик к отправке. В reviewer сохраняется id текущего пользователя-сессии.

    POST /api/admin/email/drafts/[id]/reject

    Тело: { "reason": "опциональная строка" }

    POST /api/admin/email/drafts/[id]/send

    Отправка утверждённого черновика через CRM SMTP-канал (EmailSenderService).

    Тело (опционально): { "toEmail": "...", "subject": "..." } — по умолчанию из треда.

    Ответ: { "success": true, "messageId": "<smtp-message-id>" }

    Запись сохраняется в email_messages, статус треда обновляется на waiting.


    Admin — контакты

    GET /api/admin/email/contacts

    QueryОписание
    email, name, company, typeФильтры поиска

    POST /api/admin/email/contacts

    Тело: { "email": "обяз.", "name?", "company?", "type?" }


    Admin — задачи

    GET /api/admin/email/tasks

    QueryОписание
    statusopen, in_progress, overdue, completed и др.

    POST /api/admin/email/tasks

    Тело: { "threadId", "title", "taskType", ... } — см. TaskCreateInput из task-service.ts.

    POST /api/admin/email/tasks/[id]/complete

    Тело: { "completionNotes?": "string" }


    Admin — аналитика

    GET /api/admin/email/analytics

    QueryЗначения
    range7d (по умолч.), 30d, 90d

    Ответ: распределение intent/sentiment, costStats из email_api_usage, dailyStats, черновики/задачи.


    Cron — email processor

    POST или GET /api/cron/email-processor

    Аутентификация: Authorization: Bearer $CRON_SECRET (без секрета — отказ)

    Тело запроса или query-параметр action:

    ActionДействие
    poll (по умолч.)pollInboundBatch() — загрузка UNSEEN на каждом канале, обработка, disconnect
    statusСтатус обработчика и IMAP (getEmailProcessor())
    stopОстановить IDLE слушатель
    startЗапустить IDLE (EMAIL_PROCESSOR_ALLOW_HTTP_START=true)
    mark-overdue-tasksЗапуск EmailTaskService.processOverdueTasks()

    На каждый action создаётся новый обработчик (Processor), нет постоянно работающего глобального экземпляра.

    Пример:

    GET /api/cron/email-analytics

    7-дневный срез дашборда (структура — как admin analytics). Только по cron-авторизации.

    Очистка токенов авторизации (смежное)

    GET/POST /api/cron/cleanup-email-tokens — чистка просроченных email_login_tokens. Такой же fail-closed по CRON_SECRET. Документировано в Ring Mailer, не относится к Email CRM напрямую.


    Webhook — входящая почта

    POST /api/webhooks/email/inbound

    Авторизация: Authorization: Bearer $WEBHOOK_EMAIL_SECRET или HMAC-SHA256 hex в X-Email-Webhook-Signature по сырому телу.

    Тело запроса (JSON):

    Вызывает EmailProcessor.ingestEvent() c uid: 0 (IMAP-пометка как “прочитано” не ставится).


    Связанная документация

    Related documentation

    Email AI-CRM

    Предпосылки: настройка операторов, секреты каналов, Auth vs CRM SMTP.

    Email AI-CRM architecture

    Детальный разбор: EmailProcessor и persistance через jsonb-collection.

    Email AI-CRM developer guide

    Использование: локальный poll + smoke-тест отправки черновика.

    Ring Mailer & RingdomX Mail

    См. также: Auth cleanup-email-tokens cron и SMTP_* плоскость.

    Email AI-CRM API

    Доступ администратора

    Все маршруты /api/admin/email/* требуют аутентифицированной сессии platform admin (роль admin или superadmin).

    Админский UI и API

    Интерфейс обзора: /admin/crm/* (CrmAdminShell). API остаются на /api/admin/email/* — см. Email AI-CRM.

    Cron / Webhook

    /api/cron/* и /api/webhooks/email/inbound используют CRON_SECRET или WEBHOOK_EMAIL_SECRET — не user session. Без секрета закрываются по умолчанию.

    CRM SMTP ≠ Auth SMTP

    Отправка черновика использует EmailSenderService + SMTP канала (CRM_CHANNEL_*). Auth OTP использует lib/mailer.ts / SMTP_*. Не путайте их в операционных процедурах.

    Admin — каналы

    GET /api/admin/email/channels

    Только для чтения: статус CRM-каналов (без паролей). Используется для фильтрации почтовых ящиков во UI.

    Ответ:

    json
    
    {
      "channels": [
        {
          "id": "primary",
          "name": "Primary",
          "flow": "standard",
          "mailbox": "INBOX",
          "imapHost": "mail.ringdom.org",
          "imapUser": "info@ringdom.org",
          "smtpHost": "mail.ringdom.org",
          "smtpUser": "info@ringdom.org",
          "hasImapPassword": true,
          "hasSmtpPassword": true
        }
      ],
      "validation": { "ok": true, "errors": [] }
    }

    Реализация: loadCrmChannels() и validateCrmChannels() из features/email-crm/pipeline/imap/config.ts.


    Admin — треды

    GET /api/admin/email/threads

    Список тредов переписки.

    QueryTypeОписание
    statusstringФильтр: new, ongoing, waiting, resolved или все
    sourceChannelstringФильтровать по id/name канала (многопочтовый ящик)

    Ответ: { threads: EmailThreadRecord[] }

    PATCH /api/admin/email/threads

    Обновить статус треда.

    Тело: { "id": "<threadId>", "status": "resolved" }

    GET /api/admin/email/threads/[id]

    Детали треда с сообщениями, черновиками и открытыми задачами.

    Ответ: { thread, messages, drafts, tasks }


    Admin — черновики

    GET /api/admin/email/drafts

    Ожидающие черновики (status: pending), отсортированы по времени (новые выше).

    POST /api/admin/email/drafts/[id]/approve

    Утвердить черновик к отправке. В reviewer сохраняется id текущего пользователя-сессии.

    POST /api/admin/email/drafts/[id]/reject

    Тело: { "reason": "опциональная строка" }

    POST /api/admin/email/drafts/[id]/send

    Отправка утверждённого черновика через CRM SMTP-канал (EmailSenderService).

    Тело (опционально): { "toEmail": "...", "subject": "..." } — по умолчанию из треда.

    Ответ: { "success": true, "messageId": "<smtp-message-id>" }

    Запись сохраняется в email_messages, статус треда обновляется на waiting.


    Admin — контакты

    GET /api/admin/email/contacts

    QueryОписание
    email, name, company, typeФильтры поиска

    POST /api/admin/email/contacts

    Тело: { "email": "обяз.", "name?", "company?", "type?" }


    Admin — задачи

    GET /api/admin/email/tasks

    QueryОписание
    statusopen, in_progress, overdue, completed и др.

    POST /api/admin/email/tasks

    Тело: { "threadId", "title", "taskType", ... } — см. TaskCreateInput из task-service.ts.

    POST /api/admin/email/tasks/[id]/complete

    Тело: { "completionNotes?": "string" }


    Admin — аналитика

    GET /api/admin/email/analytics

    QueryЗначения
    range7d (по умолч.), 30d, 90d

    Ответ: распределение intent/sentiment, costStats из email_api_usage, dailyStats, черновики/задачи.


    Cron — email processor

    POST или GET /api/cron/email-processor

    Аутентификация: Authorization: Bearer $CRON_SECRET (без секрета — отказ)

    Тело запроса или query-параметр action:

    ActionДействие
    poll (по умолч.)pollInboundBatch() — загрузка UNSEEN на каждом канале, обработка, disconnect
    statusСтатус обработчика и IMAP (getEmailProcessor())
    stopОстановить IDLE слушатель
    startЗапустить IDLE (EMAIL_PROCESSOR_ALLOW_HTTP_START=true)
    mark-overdue-tasksЗапуск EmailTaskService.processOverdueTasks()

    На каждый action создаётся новый обработчик (Processor), нет постоянно работающего глобального экземпляра.

    Пример:

    GET /api/cron/email-analytics

    7-дневный срез дашборда (структура — как admin analytics). Только по cron-авторизации.

    Очистка токенов авторизации (смежное)

    GET/POST /api/cron/cleanup-email-tokens — чистка просроченных email_login_tokens. Такой же fail-closed по CRON_SECRET. Документировано в Ring Mailer, не относится к Email CRM напрямую.


    Webhook — входящая почта

    POST /api/webhooks/email/inbound

    Авторизация: Authorization: Bearer $WEBHOOK_EMAIL_SECRET или HMAC-SHA256 hex в X-Email-Webhook-Signature по сырому телу.

    Тело запроса (JSON):

    Вызывает EmailProcessor.ingestEvent() c uid: 0 (IMAP-пометка как “прочитано” не ставится).


    Связанная документация

    Related documentation

    Email AI-CRM

    Предпосылки: настройка операторов, секреты каналов, Auth vs CRM SMTP.

    Email AI-CRM architecture

    Детальный разбор: EmailProcessor и persistance через jsonb-collection.

    Email AI-CRM developer guide

    Использование: локальный poll + smoke-тест отправки черновика.

    Ring Mailer & RingdomX Mail

    См. также: Auth cleanup-email-tokens cron и SMTP_* плоскость.

    Owner Project Lab

    См. также: CRM orders desk, использующий тот же admin shell.

    bash
    
    curl -X POST "$BASE_URL/api/cron/email-processor" \
      -H "Authorization: Bearer $CRON_SECRET" \
      -H "Content-Type: application/json" \
      -d '{"action":"poll"}'
    json
    
    {
      "messageId": "<rfc5322-message-id>",
      "from": "sender@example.com",
      "fromName": "Опциональное имя",
      "to": "info@example.com",
      "subject": "Тема письма",
      "bodyText": "Текстовое тело",
      "bodyHtml": "<div>опционально</div>",
      "date": "2026-06-10T12:00:00.000Z",
      "inReplyTo": "<parent-message-id>",
      "references": ["<ref1>", "<ref2>"]
    }

    Owner Project Lab

    См. также: CRM orders desk, использующий тот же admin shell.

    bash
    
    curl -X POST "$BASE_URL/api/cron/email-processor" \
      -H "Authorization: Bearer $CRON_SECRET" \
      -H "Content-Type: application/json" \
      -d '{"action":"poll"}'
    json
    
    {
      "messageId": "<rfc5322-message-id>",
      "from": "sender@example.com",
      "fromName": "Опциональное имя",
      "to": "info@example.com",
      "subject": "Тема письма",
      "bodyText": "Текстовое тело",
      "bodyHtml": "<div>опционально</div>",
      "date": "2026-06-10T12:00:00.000Z",
      "inReplyTo": "<parent-message-id>",
      "references": ["<ref1>", "<ref2>"]
    }

    Owner Project Lab

    См. также: CRM orders desk, использующий тот же admin shell.

    bash
    
    curl -X POST "$BASE_URL/api/cron/email-processor" \
      -H "Authorization: Bearer $CRON_SECRET" \
      -H "Content-Type: application/json" \
      -d '{"action":"poll"}'
    json
    
    {
      "messageId": "<rfc5322-message-id>",
      "from": "sender@example.com",
      "fromName": "Опциональное имя",
      "to": "info@example.com",
      "subject": "Тема письма",
      "bodyText": "Текстовое тело",
      "bodyHtml": "<div>опционально</div>",
      "date": "2026-06-10T12:00:00.000Z",
      "inReplyTo": "<parent-message-id>",
      "references": ["<ref1>", "<ref2>"]
    }
    1. Документация
    2. /API-интерфейс
    3. /Email AI-CRM API

    Обновлено 21 июл. 2026 г.3 мин прослушивания

    1. Документация
    2. /API-интерфейс
    3. /Email AI-CRM API

    Обновлено 21 июл. 2026 г.3 мин прослушивания

    1. Документация
    2. /API-интерфейс
    3. /Email AI-CRM API

    Обновлено 21 июл. 2026 г.3 мин прослушивания