For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
info@patternautomation.com
ДокументацияБаза знанийЖурнал измененийСправочник API
ДокументацияБаза знанийЖурнал измененийСправочник API
  • Начало работы
    • Добро пожаловать
    • Введение
    • Быстрый старт
  • Основные понятия
    • Ящики (инбоксы)
    • Сообщения
    • Цепочки (треды)
    • Черновики
    • Метки
    • Списки
    • Вложения
    • Pods
    • Разрешения
  • Интеграции
    • Онбординг агента
    • Skills
    • MCP
    • CLI
    • Google ADK
    • OpenClaw
    • Replit
    • x402
    • MPP
    • Интеграция с LiveKit Agents
  • Руководства
    • Отправка и получение почты
    • IMAP и SMTP
    • Мультитенантность
  • Вебхуки
    • Обзор вебхуков
    • События вебхуков
    • Настройка вебхуков
    • Проверка вебхуков
  • WebSockets
    • WebSockets
    • WebSockets — быстрый старт
  • Лучшие практики
    • Доставляемость почты
    • Идемпотентные запросы
  • Примеры
    • Событийно-ориентированный агент
    • Агент автоответа
    • Агент умной разметки
    • Sales-агент на WebSocket
    • Живые почтовые агенты
  • Ресурсы
    • Часто задаваемые вопросы
    • Извлечение ответов (Talon)
    • Сообщество
    • Поддержка
info@patternautomation.com
LogoLogo
On this page
  • Что такое pod?
  • Иерархия
  • Зачем нужны pod?
  • Мультитенантность
  • Как устроены pod
  • Жизненный цикл
  • Что можно делать с pod
  • Создание ресурсов
  • Список ресурсов
  • Скопировать в Cursor / Claude
  • Важные моменты
  • Ограничения при удалении pod
  • Типовые сценарии
  • Сценарий 1: мультитенантный SaaS
  • Сценарий 2: агентство и клиенты
  • Сценарий 3: платформа ИИ-агентов
  • FAQ
  • Дальше
Основные понятия

Pods

Was this page helpful?
Edit this page
Previous

Разрешения

Управляйте тем, к чему имеют доступ ваши API-ключи, с помощью гранулярных разрешений.

Next
Built with

Что такое pod?

Pod — изолированная сущность между вашей организацией и inbox, которая помогает сегментировать и организовать почтовую инфраструктуру в многотенантных приложениях. Если вы делаете сервис с почтой для своих клиентов, pod — ключ к изоляции их ресурсов.

Иерархия

Organization (ваш бизнес)
└── Pod (клиент A)
├── Inbox 1
├── Inbox 2
└── Domain 1
└── Pod (клиент B)
├── Inbox 3
├── Inbox 4
└── Domain 2

Organization: аккаунт Agent Inbox вашей компании

  • У вас одна организация, представляющая бизнес

Pod: каждый из ваших клиентов

  • Создавайте один pod на клиента/тенанта в своей системе
  • Pod дают полную изоляцию данных между клиентами
  • Все ресурсы (inbox, домены, треды, черновики) можно привязать к pod

Inbox: отдельные почтовые ящики внутри pod

  • У клиента может быть несколько inbox в одном pod
  • Вы сами обеспечиваете ресурсы для каждого клиента

Зачем нужны pod?

Мультитенантность

Pod позволяют предлагать инфраструктуру Agent Inbox своим клиентам при строгой изоляции данных. Типичные сценарии:

Платформы SaaS/агентства: отдельный pod на каждого клиента — у каждого свой изолированный почтовый контур.

White-label почта: сервис под вашим брендом; у каждого конечного пользователя свой pod и изоляция данных.

Платформы ИИ-агентов: отдельный pod под агента с его задачами — со своими inbox и доменами.

Как устроены pod

Жизненный цикл

На стороне API при создании ресурсов происходит следующее.

  • При регистрации у вас автоматически создаётся Default Pod; все ресурсы — Inboxes или Domains — привязываются к этому Default Pod.
  • Удалить Pod, у которого ещё есть дочерние ресурсы, нельзя. Сначала удалите связанные Inboxes и Domains, затем Pod.

Что можно делать с pod

Создание ресурсов

Внутри pod можно создавать:

  • Inboxes (Ящики)
  • Domains (Домены)

Сейчас домен может быть привязан либо к одному pod, либо ко всем pod сразу. Нельзя привязать домен к нескольким, но не ко всем pod.

Указывайте client_id при создании Pod, чтобы однозначно сопоставлять pod с вашими сущностями. Тогда не нужна отдельная таблица соответствия ваших organization_id и наших pod_id — задайте client_id как ваш внутренний идентификатор и обращайтесь к ресурсу по нему.

Эти ресурсы автоматически связываются с pod и наследуют гарантии изоляции.

Список ресурсов

Следующие ресурсы можно получать в разрезе pod:

  • Inboxes (GET /pods/{pod_id}/inboxes) — все inbox в pod
  • Threads (GET /pods/{pod_id}/threads) — все переписки по всем inbox pod
  • Drafts (GET /pods/{pod_id}/drafts) — все черновики по всем inbox pod
  • Domains (GET /pods/{pod_id}/domains) — все пользовательские домены pod

Так вы получаете единую картину активности в «рабочем пространстве» клиента — удобно для сценариев вроде:

  • «Покажи все непрочитанные письма клиента X» (используйте и метки!)
  • «Список всех тредов по всем командным inbox клиента Y»
  • «Все ожидающие черновики клиента Z»

Скопировать в Cursor / Claude

Скопируйте один из блоков ниже в Cursor или Claude для полного контекста по API pod.

1"""
2Agent Inbox Pods — copy into Cursor/Claude. Multi-tenant isolation.
3
4API reference:
5- pods.create(client_id?) — client_id for idempotent mapping to your tenant IDs
6- pods.get(pod_id), pods.list(limit?, page_token?), pods.delete(pod_id)
7- pods.inboxes.list(pod_id, ...), pods.inboxes.create(pod_id, ...), pods.inboxes.delete(pod_id, inbox_id)
8- pods.domains.list(pod_id, ...), pods.domains.create(pod_id, ...), pods.domains.delete(pod_id, domain_id)
9- pods.threads.list(pod_id, ...), pods.drafts.list(pod_id, ...)
10
11Delete order: inboxes + domains first, then pod. Deleting inbox/domain cascades to messages/threads.
12"""
13from agentinbox import Agentinbox
14
15client = Agentinbox(api_key="YOUR_API_KEY")
16
17pod = client.pods.create(client_id="tenant-acme-1")
18inboxes = client.pods.inboxes.list(pod.pod_id)
19inbox = client.pods.inboxes.create(pod.pod_id, username="support", display_name="Support")
20threads = client.pods.threads.list(pod.pod_id, limit=20)

Важные моменты

Ограничения при удалении pod

Критично: нельзя удалить pod, пока к нему привязаны ресурсы. Сначала удалите все inbox и домены внутри pod, затем сам pod.

Это защита от случайной потери данных. Правильный порядок:

1// Не сработает, если в pod ещё есть ресурсы
2await client.pods.delete(podId);
3
4// Правильно: сначала очистка
5async function offboardCustomer(podId: string) {
6 // 1. Удалить все inbox
7 const inboxRes = await client.inboxes.list(podId);
8 for (const inbox of inboxRes.inboxes) {
9 await client.inboxes.delete(inbox.inbox_id);
10 }
11
12 // 2. Удалить все домены
13 const domainRes = await client.domains.list({ podId });
14 for (const domain of domainRes.domains) {
15 await client.domains.delete(domain.domain_id);
16 }
17
18 // 3. Теперь можно удалить pod
19 await client.pods.delete(podId);
20}

При удалении inbox или домена связанные данные (сообщения, треды, черновики) очищаются автоматически. Удалять треды и сообщения по одному не нужно.

Что НЕ изолировано уровнем pod:

  • API-ключи уровня организации (доступ ко всем ресурсам во всех pod). Используйте API-ключи с областью pod, чтобы ограничить доступ одним pod, или API-ключи с областью inbox — одним inbox.

Типовые сценарии

Сценарий 1: мультитенантный SaaS

У каждой компании на платформе свой pod:

1// Рабочее пространство клиента A
2Pod: "Acme Corp"
3├── Inbox: support@acme.com
4├── Inbox: sales@acme.com
5└── Domain: acme.com
6
7// Рабочее пространство клиента B
8Pod: "TechStart Inc"
9├── Inbox: hello@techstart.io
10├── Inbox: team@techstart.io
11└── Domain: techstart.io

Сценарий 2: агентство и клиенты

У каждого клиента изолированный pod:

1// Клиент 1
2Pod: "Client - Retail Co"
3├── Inbox: info@retailco.com
4└── Domain: retailco.com
5
6// Клиент 2
7Pod: "Client - FinTech"
8├── Inbox: support@fintech.ai
9└── Domain: fintech.ai

Сценарий 3: платформа ИИ-агентов

У каждого агента свой pod и выделенная почта:

1// Агент 1: поддержка
2Pod: "Support-Agent"
3├── Inbox: support@mycompany.com
4├── Inbox: help@mycompany.com
5└── Inbox: tickets@mycompany.com
6
7// Агент 2: продажи
8Pod: "Sales-Agent"
9├── Inbox: sales@mycompany.com
10├── Inbox: outreach@mycompany.com
11└── Inbox: leads@mycompany.com
12
13// Агент 3: маркетинг
14Pod: "Marketing-Agent"
15├── Inbox: newsletter@mycompany.com
16├── Inbox: campaigns@mycompany.com
17└── Inbox: events@mycompany.com

FAQ

Могут ли inbox из разных pod переписываться друг с другом?

Да. Inbox в разных pod обмениваются почтой как обычные адреса. Pod дают организационную изоляцию, а не сетевую.

Можно ли перенести inbox из одного pod в другой?

Нет, перенос между pod не поддерживается. Создайте новый inbox в нужном pod.

Сколько pod можно создать?

Жёсткого лимита нет — создавайте столько, сколько нужно под клиентов.

Обязательно ли использовать pod?

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

Можно ли задать свои разрешения на уровне pod?

Да. Можно создать API-ключ с областью одного pod или ключ с областью одного inbox внутри pod. Подробнее — в руководстве по мультитенантности.

Дальше

  • Узнайте про Inboxes и создание ящиков внутри pod
  • Изучите Domains для своих доменов под pod