Skip to content

Управление установками

Установка — это экземпляр конкретной интеграции внутри вашего портала. У каждой интеграции может быть только одна активная установка на портал.

API установок

Все эндпоинты требуют роль tenant_admin или tenant_owner.

Список установок

GET /api/v1/integrations/installations

Возвращает все активные (не удалённые) установки текущего портала.

json
[
  {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "integrationSlug": "telegram-notify",
    "integrationName": "Telegram Уведомления",
    "type": "API_KEY",
    "status": "ACTIVE",
    "installedAt": "2026-03-15T10:00:00.000Z",
    "lastSyncAt": "2026-04-27T08:30:00.000Z",
    "lastErrorAt": null,
    "lastErrorMessage": null,
    "capabilities": [
      { "capability": "NOTIFY_ON_PROCUREMENT_STATUS_CHANGE", "isEnabled": true },
      { "capability": "NOTIFY_ON_INVOICE_CREATED", "isEnabled": false }
    ]
  }
]

Установить интеграцию

POST /api/v1/integrations/installations

json
{ "integrationSlug": "telegram-notify" }

Ответ — новая установка со статусом PENDING_CONFIG. Если интеграция была ранее удалена — восстанавливается с очисткой конфигурации.

Карточка установки

GET /api/v1/integrations/installations/:id

Возвращает детальную информацию, включая поля конфигурации (секреты маскируются символами ••••••••).

json
{
  "id": "550e8400-...",
  "integrationSlug": "telegram-notify",
  "status": "ACTIVE",
  "configView": {
    "fields": [
      { "key": "botToken", "isSecret": true, "isSet": true, "maskedValue": "••••••••" },
      { "key": "chatId", "isSecret": false, "isSet": true, "value": "-1001234567890" }
    ]
  },
  "capabilities": [ ... ],
  "metadata": null
}

Настройка конфигурации

PATCH /api/v1/integrations/installations/:id/config

Частичное обновление — незаполненные поля сохраняют предыдущие значения. Секреты при передаче null или отсутствии поля не затираются.

json
{
  "botToken": "7123456789:AAF...",
  "chatId": "-1001234567890"
}

Конфигурация хранится зашифрованной (AES-256-GCM). Секретные поля никогда не возвращаются в открытом виде.

После сохранения конфига статус переходит обратно в PENDING_CONFIG до явной активации.

Активация и деактивация

Включить интеграцию

POST /api/v1/integrations/installations/:id/enable

Переводит установку в статус ACTIVE. Требует заполненной конфигурации — без неё вернёт 400 Bad Request.

Выключить интеграцию

POST /api/v1/integrations/installations/:id/disable

Переводит в статус DISABLED. Все возможности (capabilities) деактивируются автоматически.

Удалить интеграцию

DELETE /api/v1/integrations/installations/:id

Помечает установку как UNINSTALLED, стирает конфигурацию и OAuth-токены. Повторная установка той же интеграции возможна.

Проверка соединения и синхронизация

Проверить соединение

POST /api/v1/integrations/installations/:id/test

Проверяет, что введённая конфигурация позволяет подключиться к внешнему сервису.

json
{ "ok": true, "message": "Connection successful" }

Запустить синхронизацию вручную

POST /api/v1/integrations/installations/:id/sync

Инициирует немедленную синхронизацию (для интеграций, поддерживающих sync).

json
{ "queued": true, "jobId": "sync_a3f1b2c4d5e6f7a8", "message": "Sync started" }

Журнал событий

GET /api/v1/integrations/installations/:id/logs

ПараметрОписание
directionINBOUND или OUTBOUND
pageНомер страницы
limitРазмер страницы (максимум 50)
json
{
  "items": [
    {
      "id": "log-uuid",
      "direction": "INBOUND",
      "event": "order.created",
      "responseStatus": 200,
      "durationMs": 42,
      "createdAt": "2026-04-27T09:15:00.000Z",
      "hasPayload": true,
      "hasResponseBody": false
    }
  ],
  "total": 156
}

Документация платформы SNABZHENETS+.