Разрешения

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

Что такое разрешения?

Permissions позволяют ограничить, что может делать API-ключ. По умолчанию ключ имеет полный доступ в пределах своей области (организация, pod или inbox). Если вы передаёте объект permissions, он работает как белый список: разрешены только те права, которые явно установлены в true. Всё остальное запрещено.

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

Как работают разрешения

Модель белого списка

При создании API-ключа с объектом permissions режим переключается с «полного доступа» на «белый список»:

  • Без поля permissions: ключ имеет полный доступ в пределах своей области. Это поведение по умолчанию и обратно совместимо с уже существующими ключами.
  • Если permissions указан: разрешены только права, выставленные в true. Любое право, которое опущено или равно false, запрещено.
Обратная совместимость

У существующих API-ключей без поля permissions всё работает как раньше — полный доступ. Белый список включается только когда вы явно передаёте объект permissions.

Пересечение с областью (scope)

Разрешения пересекаются с областью ключа. Ключ, ограниченный одним inbox, не получит возможностей уровня организации (например inbox_create или domain_create), даже если в permissions они true. Эффективные права — это пересечение того, что допускает область, и того, что даёт объект permissions.

Защита от повышения привилегий

Ограниченный API-ключ не может создать дочерний ключ с большими правами, чем у него самого. При создании нового ключа права потомка автоматически ограничиваются эффективными правами родителя. Так нельзя повысить привилегии через создание ключей.

Справочник разрешений

Inbox

РазрешениеОписание
inbox_readЧтение параметров inbox
inbox_createСоздание новых inbox
inbox_updateОбновление настроек inbox
inbox_deleteУдаление inbox

Треды (Threads)

РазрешениеОписание
thread_readЧтение тредов
thread_deleteУдаление тредов

Сообщения (Messages)

РазрешениеОписание
message_readЧтение сообщений
message_sendОтправка сообщений
message_updateОбновление меток сообщений

Видимость меток (Label visibility)

РазрешениеОписание
label_spam_readДоступ к сообщениям с меткой spam
label_blocked_readДоступ к сообщениям с меткой blocked
label_trash_readДоступ к сообщениям с меткой trash

Если разрешение на видимость метки запрещено, элементы с этой меткой автоматически исключаются из списков и при прямом обращении возвращается «не найдено». Например, при label_spam_read: false ключ никогда не увидит спам ни в списках, ни при поиске.

Черновики (Drafts)

РазрешениеОписание
draft_readЧтение черновиков
draft_createСоздание черновиков
draft_updateОбновление черновиков
draft_deleteУдаление черновиков
draft_sendОтправка черновиков

Вебхуки (Webhooks)

РазрешениеОписание
webhook_readЧтение конфигураций вебхуков
webhook_createСоздание вебхуков
webhook_updateОбновление вебхуков
webhook_deleteУдаление вебхуков

Домены (Domains)

РазрешениеОписание
domain_readЧтение сведений о домене
domain_createСоздание доменов
domain_updateОбновление доменов
domain_deleteУдаление доменов

Списки (Lists)

РазрешениеОписание
list_entry_readЧтение записей списка
list_entry_createСоздание записей списка
list_entry_deleteУдаление записей списка

Метрики (Metrics)

РазрешениеОписание
metrics_readЧтение метрик

API-ключи

РазрешениеОписание
api_key_readЧтение API-ключей
api_key_createСоздание API-ключей
api_key_deleteУдаление API-ключей

Pod

РазрешениеОписание
pod_readЧтение pod
pod_createСоздание pod
pod_deleteУдаление pod

Примеры кода

Ключ только на чтение

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

1from agentinbox import Agentinbox
2
3client = Agentinbox(api_key="YOUR_API_KEY")
4
5key = client.api_keys.create(
6 name="read-only-agent",
7 permissions={
8 "inbox_read": True,
9 "thread_read": True,
10 "message_read": True,
11 "draft_read": True,
12 "webhook_read": True,
13 "domain_read": True,
14 "list_entry_read": True,
15 "metrics_read": True,
16 "api_key_read": True,
17 "pod_read": True,
18 "label_spam_read": True,
19 "label_blocked_read": True,
20 "label_trash_read": True,
21 }
22)
23
24print(key.api_key)

Ключ без спама

Создайте ключ с полным доступом, но без видимости контента в spam, blocked и trash. Удобно для ключей агентов, чтобы они не обрабатывали нежелательную почту.

1key = client.api_keys.create(
2 name="clean-inbox-agent",
3 permissions={
4 "inbox_read": True,
5 "inbox_create": True,
6 "inbox_update": True,
7 "inbox_delete": True,
8 "thread_read": True,
9 "thread_delete": True,
10 "message_read": True,
11 "message_send": True,
12 "message_update": True,
13 "label_spam_read": False,
14 "label_blocked_read": False,
15 "label_trash_read": False,
16 "draft_read": True,
17 "draft_create": True,
18 "draft_update": True,
19 "draft_delete": True,
20 "draft_send": True,
21 "webhook_read": True,
22 "webhook_create": True,
23 "webhook_update": True,
24 "webhook_delete": True,
25 "domain_read": True,
26 "domain_create": True,
27 "domain_update": True,
28 "domain_delete": True,
29 "list_entry_read": True,
30 "list_entry_create": True,
31 "list_entry_delete": True,
32 "metrics_read": True,
33 "api_key_read": True,
34 "api_key_create": True,
35 "api_key_delete": True,
36 "pod_read": True,
37 "pod_create": True,
38 "pod_delete": True,
39 }
40)

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

Скопируйте один из блоков ниже в Cursor или Claude, чтобы дать полный контекст по API разрешений за один раз.

1"""
2Agent Inbox Permissions — copy into Cursor/Claude.
3
4Permissions are a whitelist on API keys. No `permissions` field = full access.
5When `permissions` is set, only `True` values are granted; omitted or `False` = denied.
6Permissions intersect with scope (pod/inbox). A restricted key cannot create a more privileged child key.
7
8Permission fields (all optional<bool>, resource_action format):
9 Inboxes: inbox_read, inbox_create, inbox_update, inbox_delete
10 Threads: thread_read, thread_delete
11 Messages: message_read, message_send, message_update
12 Label visibility: label_spam_read, label_blocked_read, label_trash_read
13 Drafts: draft_read, draft_create, draft_update, draft_delete, draft_send
14 Webhooks: webhook_read, webhook_create, webhook_update, webhook_delete
15 Domains: domain_read, domain_create, domain_update, domain_delete
16 Lists: list_entry_read, list_entry_create, list_entry_delete
17 Metrics: metrics_read
18 API Keys: api_key_read, api_key_create, api_key_delete
19 Pods: pod_read, pod_create, pod_delete
20
21API: api_keys.create(name, permissions={...})
22"""
23from agentinbox import Agentinbox
24
25client = Agentinbox(api_key="YOUR_API_KEY")
26
27# read-only key
28key = client.api_keys.create(
29 name="read-only",
30 permissions={"inbox_read": True, "message_read": True, "thread_read": True}
31)
32print(key.api_key)

Рекомендации

  • Принцип минимальных привилегий. Выдавайте только те права, которые реально нужны агенту. Саппорт-агенту, который читает и отвечает на письма, не нужны domain_create или inbox_delete.
  • Сочетайте с областями для защиты в глубину. Используйте вместе с ключами с областью pod или ключами с областью inbox. Область ограничивает какие ресурсы видит ключ, а разрешения — что он может с ними делать.
  • Отсекайте нежелательный контент для агентов. Для ключей агентов ставьте label_spam_read, label_blocked_read и label_trash_read в false, чтобы агенты не видели и не обрабатывали ненужную почту и сохраняли чистый контекст.