defineConnectionProvider({ type: 'oauth', ... }) не потребуют миграции.
defineConnectionProvider
Определите, как в вашем приложении получаются подключения
defineConnectionProvider
Определите, как в вашем приложении получаются подключения
Провайдер подключения описывает процедуру OAuth-обмена, которая требуется вашему приложению. Пользователь нажимает “Добавить подключение” в настройках вашего приложения, подтверждает разрешения на экране согласия провайдера, и в его рабочем пространстве создается запись Основные моменты:
ConnectedAccount.Рабочей конфигурации нужны два файла — провайдер подключения и соответствующее объявление serverVariables в defineApplication, которое содержит учетные данные клиента OAuth.src/connection-providers/linear-connection.ts
src/application.config.ts
name— это уникальная строка-идентификатор, используемая вlistConnections({ providerName })(kebab-case, должна соответствовать^[a-z][a-z0-9-]*$).displayNameотображается на вкладке настроек приложения и в списке инструментов ИИ.clientIdVariable/clientSecretVariable— это имена, а не значения — они должны совпадать с ключами, объявленными вdefineApplication.serverVariables. Фактическиеclient_idиclient_secretвводятся администратором сервера через интерфейс регистрации приложения и никогда не коммитятся в ваш репозиторий.- Используйте
serverVariables(неapplicationVariables) — учетные данные OAuth являются общими для сервера, и на каждом сервере Twenty используется одно приложение OAuth. - Пока оба
serverVariablesне заполнены, на вкладке настроек приложения показывается подсказка “нужен администратор сервера”, а кнопка “Добавить подключение” отключена. type: 'oauth'— единственное поддерживаемое сегодня значение. Дискриминатор совместим с будущими версиями: будущие типы ('pat','api-key', …) добавят новые блоки подконфигурации рядом сoauth.
listConnections / getConnection
Используйте подключения из логической функции
listConnections / getConnection
Используйте подключения из логической функции
Внутри обработчика логической функции Каждое подключение имеет:
Основные моменты:
listConnections({ providerName }) возвращает записи ConnectedAccount этого приложения для указанного провайдера с обновленными токенами доступа.src/logic-functions/handlers/create-linear-issue-handler.ts
| Поле | Описание |
|---|---|
id | Уникальный идентификатор записи; передайте его в getConnection(id), чтобы повторно получить одну запись |
visibility | 'user' (приватно для одного участника рабочего пространства) или 'workspace' (доступно всем участникам) |
scopes | Разрешения OAuth, предоставленные внешним провайдером (отличаются от visibility — это несвязанные вещи) |
userWorkspaceId | Идентификатор userWorkspace владельца — полезно для выбора “подключения пользователя запроса” в триггерах HTTP-маршрутов |
accessToken | Актуальный токен доступа OAuth (обновляется автоматически при истечении срока действия) |
name / handle | Отображаемое имя подключения (автоматически определяется при обратном вызове OAuth, может быть переименовано пользователем) |
authFailedAt | Устанавливается, если последняя попытка обновления не удалась; пользователю нужно переподключиться |
- Передайте
{ providerName }, чтобы отфильтровать по провайдеру; опустите, чтобы получить все подключения этого приложения у всех провайдеров. - Сервер прозрачно обновляет токен доступа перед возвратом. Ваш обработчик всегда получает рабочий токен (или установлено
authFailedAt). getConnection(id)— эквивалент для одной записи.
Индивидуальная и общая для рабочего пространства видимость
Как пользователи выбирают между приватными и общими учетными данными
Индивидуальная и общая для рабочего пространства видимость
Как пользователи выбирают между приватными и общими учетными данными
Когда пользователь нажимает “Добавить подключение”, ему предлагается выбрать видимость:Допускается несколько подключений на пару (пользователь, провайдер), поэтому один и тот же пользователь может иметь “Personal Linear” и “Work Linear” одновременно.
- Только для меня — учетные данные приватны для подключившегося пользователя. Любая логическая функция, вызываемая от его имени (триггер HTTP-маршрута с
isAuthRequired: true), видит их; триггеры cron и события базы данных — нет. - Общее для рабочего пространства — любой участник рабочего пространства может использовать эти учетные данные. Триггеры cron/базы данных также видят их, поскольку у них нет пользователя запроса.
Единоразовая настройка провайдера
Зарегистрируйте свое приложение OAuth у стороннего сервиса
Единоразовая настройка провайдера
Зарегистрируйте свое приложение OAuth у стороннего сервиса
Для каждого провайдера подключения администратору сервера сначала нужно зарегистрировать у стороннего сервиса приложение OAuth.
- Перейдите в настройки разработчика провайдера (например, https://linear.app/settings/api/applications/new).
- Установите Redirect URI в значение
\<SERVER_URL>/auth/apps/callback. - Скопируйте сгенерированные Client ID и Client Secret.
- Откройте установленное приложение в Twenty под учетной записью администратора сервера → задайте значения в соответствующих
serverVariables. - Затем участники рабочего пространства смогут добавлять подключения в разделе Подключения конкретного приложения.