# Подключение аккаунтов

Коннектор возвращает реальные данные только после того, как организация-владелец подключит к нему аккаунт. Каждый коннектор объявляет, как он авторизуется; ассистент подбирает и расшифровывает нужные учётные данные на каждый вызов.

## Схемы авторизации

Коннекторы используют одну из трёх схем, объявленную для каждого сервиса:

<ParamTable rows={[
  { name: "credentials", type: "схема", description: "API-ключ, токен или basic-авторизация, вставленные на экране подключения. Преобладающая схема в каталоге." },
  { name: "popup_oauth", type: "схема", description: "OAuth-авторизация во всплывающем окне — пользователь подтверждает доступ, токен захватывается автоматически." },
  { name: "device_code", type: "схема", description: "Device-code: пользователь подтверждает подключение на сайте провайдера по короткому коду (используется рядом сервисов Яндекса)." },
]} />

Транспорт — то, как секрет прикрепляется к каждому запросу — это отдельная ось (bearer-заголовок, basic, query-токен, HMAC конкретного вендора и так далее) и обрабатывается самим коннектором.

## Где подключаются аккаунты

Аккаунты подключаются в интерфейсе продукта в настройках организации; OAuth-коннекторы также показывают кнопку подключения прямо в чате через инструмент `request_form`, когда вызову нужен ещё не подключённый аккаунт. Программно метаданные подключения (какие поля нужны коннектору) доступны по `GET /api/v1/connectors/metadata`.

## Хранение учётных данных

Подключённые учётные данные **шифруются при хранении** (Fernet) и хранятся для каждого пользователя. Ассистент никогда не отдаёт сырой секрет; в момент исполнения он подбирает и расшифровывает учётные данные для адресуемого аккаунта.

**Несколько аккаунтов (кабинеты)**

Один сервис может держать несколько подключённых аккаунтов — несколько кабинетов Ozon, два продавца WB. Каждый — это адресуемый instance; нацельтесь на один через `instance_id` или суффикс сервиса (`ozon:Top Zip`). См. [Вызов коннектора](/docs/connector-flow).

## Выдача коннекторов и учётных данных агенту

[Агент](/docs/agents) ограничен теми коннекторами и учётными данными, которые вы ему явно выдали. Два слоя:

- **Разрешённые коннекторы** — `PUT /agents/{id}/connectors` задаёт, какие ключи коннекторов агент может вызывать (`wildberries`, `ozon`, …). Это решает, *какие инструменты* у него есть.
- **Гранты учётных данных** — `POST /agents/{id}/grants` выдаёт агенту конкретный подключённый аккаунт с опциональными scope на чтение/запись. Это решает, *какие аккаунты* он может использовать.

Полный флоу выдачи — в [Agents API](/docs/agents).
