Авторизация и секреты
Три независимых механизма: REST API, подпись исходящих webhook, подпись входящих webhook.
Полный список scopes и сценарии для внешних систем (CRM, ERP, свой сервис): API интеграций → Авторизация. Также: Структура и обозначения.
1. REST API (модуль → PlatParts)
Где: Настройка API — создайте ключ, назначьте роли со scope.
Заголовок:
Authorization: Bearer {identifier}:{secret}identifier— логин ключа;secret— показывается один раз при создании; хранится как hash.
Ошибки:
| HTTP | Причина |
|---|---|
401 | Нет Bearer, неверный формат, неверный secret |
403 | У ключа нет нужного scope |
Scope (права)
Полный список — в пользовательском справочнике: Авторизация.
Часто нужные для модуля:
| Scope | Доступ |
|---|---|
orders.read | Список и карточка заказов |
orders.write_status | Смена статуса заказа и позиций |
orders.write_meta | Meta заказа |
users.read / users.write_meta | Пользователи |
payments.read | Платежи |
documents.read / documents.write_external_ref | Документы |
organizations.read | Организации |
products.read | Товары |
pickup_points.read | Точки выдачи |
integrations.trigger_sync | POST .../integrations/{package}/sync |
Роли собирают список scope; у одного ключа может быть несколько ролей.
Привязка к точке выдачи
У ключа можно указать точку выдачи:
orders.read/ смена статусов — только заказы этой точки;- запрос чужого
order_id→403или404(в зависимости от endpoint); - фильтр
?pickup_point_id=должен совпадать с точкой ключа.
Ключ без точки — доступ ко всем заказам (осторожно на проде).
Подробные URL: REST API.
2. Исходящий webhook (PlatParts → ваш сервер)
Секрет задаётся на вкладке Исходящие webhooks подключения.
Заголовок: X-Integration-Signature
Алгоритм: HMAC-SHA256 от канонического JSON всего тела:
{
"hook": "order.created",
"payload": { ... },
"sent_at": "2026-05-29T12:00:00+00:00"
}Канонизация: рекурсивная сортировка ключей, JSON_UNESCAPED_UNICODE — как App\Integrations\Support\IntegrationJsonSigner.
Не путать с inbound
Inbound подписывает сырое тело запроса ($request->getContent()), не canonical JSON.
3. Входящий webhook (ваш сервер → PlatParts)
Секрет в credentials подключения: ключ inbound_webhook_secret.
Заголовок: X-Integration-Signature: HMAC-SHA256(raw_body, secret)
Dev без секрета: только если INTEGRATIONS_DEBUG=true и INTEGRATION_INBOUND_REQUIRE_SECRET=false. Иначе 503 Configure inbound_webhook_secret.
Переменные окружения
| Переменная | По умолчанию | Назначение |
|---|---|---|
INTEGRATIONS_DEBUG | false | Подробные логи, ослабление URL/секретов на dev |
INTEGRATION_INBOUND_REQUIRE_SECRET | true | Требовать секрет inbound |
INTEGRATION_OUTBOUND_ALLOW_HTTP | false | HTTP URL для outbound (иначе только HTTPS) |
INTEGRATION_API_AUDIT | true | Аудит REST‑запросов |