defineConnectionProvider({ type: 'oauth', ... }) no necesitarán migrar.
defineConnectionProvider
Declara cómo se obtienen las conexiones de tu aplicación
defineConnectionProvider
Declara cómo se obtienen las conexiones de tu aplicación
ConnectedAccount en su espacio de trabajo.Una configuración funcional necesita dos archivos — el proveedor de conexión y una declaración serverVariables correspondiente en defineApplication que contiene las credenciales del cliente OAuth.namees la cadena de identificador única utilizada enlistConnections({ providerName })(kebab-case, debe coincidir con^[a-z][a-z0-9-]*$).displayNamese muestra en la pestaña de configuración por aplicación y en la lista de herramientas de IA.clientIdVariable/clientSecretVariableson nombres, no valores — deben coincidir con las claves declaradas endefineApplication.serverVariables. Losclient_idyclient_secretreales los introduce el administrador del servidor a través de la interfaz de registro de la aplicación; nunca se incluyen en tu repositorio.- Usa
serverVariables(noapplicationVariables) — las credenciales de OAuth son a nivel de servidor y hay una aplicación OAuth por servidor de Twenty. - Hasta que ambos
serverVariablesestén completos, la pestaña de configuración por aplicación muestra un aviso de “requiere administrador del servidor” y el botón “Agregar conexión” está deshabilitado. type: 'oauth'es el único valor admitido actualmente. El discriminador es compatible hacia adelante: tipos futuros ('pat','api-key', …) agregarán nuevos bloques de subconfiguración junto aoauth.
Ejecutar una función de lógica al conectar
Reaccionar en el momento en que se establece una conexión
Ejecutar una función de lógica al conectar
Reaccionar en el momento en que se establece una conexión
team_id del espacio de trabajo con el que se asociarán los eventos entrantes. Establece onConnectLogicFunction para que haga referencia a una función de lógica en la misma aplicación (por su universalIdentifier), y se ejecutará justo después de que se cree el ConnectedAccount.getConnection(connectedAccountId) para leer el token de acceso reciente y llamar a la API del proveedor (por ejemplo, Slack auth.test) o para conservar un mapeo con el almacenamiento de pares clave-valor.Ejecutar una función de lógica al desconectar
Limpieza cuando se elimina una conexión
Ejecutar una función de lógica al desconectar
Limpieza cuando se elimina una conexión
team_id al conectarse, por ejemplo, debe liberar esa reserva para que otro espacio de trabajo pueda conectar ese mismo espacio de trabajo de Slack. Establece onDisconnectLogicFunction para que haga referencia a una función de lógica en la misma aplicación, y se ejecutará justo después de que se elimine el ConnectedAccount.ConnectedAccount ya ha desaparecido cuando se ejecuta el hook, por lo que getConnection(connectedAccountId) ya no se resuelve. Cualquier cosa que la limpieza necesite (un team_id, un id de suscripción externa) debe haberse escrito en el almacén de claves y valores en el momento de la conexión, usando connectedAccountId como clave.El hook se dispara cuando una conexión se elimina por sí sola. Desinstalar la app elimina sus conexiones mediante una cascada de base de datos, por lo que el hook no se ejecuta en ese caso. Declara una uninstallLogicFunction en defineApplication para esa ruta: se ejecuta antes de que se eliminen los metadatos de la app, por lo que todavía puede llamar a listConnections y limpiar lo que quede.listConnections / getConnection
Usa conexiones desde una función de lógica
listConnections / getConnection
Usa conexiones desde una función de lógica
listConnections({ providerName }) devuelve las filas ConnectedAccount de esta aplicación para el proveedor indicado, con tokens de acceso actualizados.- Pasa
{ providerName }para filtrar por proveedor; omítelo para obtener todas las conexiones que posee esta aplicación en todos los proveedores. - El servidor actualiza de forma transparente el token de acceso antes de devolver la respuesta. Tu controlador siempre ve un token utilizable (o
authFailedAtestablecido). getConnection(id)es el equivalente de una sola fila.
Visibilidad por usuario vs. compartida con el espacio de trabajo
Cómo los usuarios eligen entre credenciales privadas y compartidas
Visibilidad por usuario vs. compartida con el espacio de trabajo
Cómo los usuarios eligen entre credenciales privadas y compartidas
- Solo para mí — la credencial es privada para el usuario que se conecta. Cualquier función de lógica llamada en su nombre (activador de ruta HTTP con
isAuthRequired: true) la ve; los activadores de cron y los eventos de base de datos no. - Compartida en el espacio de trabajo — cualquier miembro del espacio de trabajo puede usar la credencial. Los activadores de cron y de base de datos también la ven, ya que no tienen usuario de la solicitud.
Configuración única del proveedor
Registra tu aplicación OAuth con el servicio de terceros
Configuración única del proveedor
Registra tu aplicación OAuth con el servicio de terceros
- Ve a la configuración de desarrollador del proveedor (p. ej., https://linear.app/settings/api/applications/new).
- Configura el URI de redirección en
\<SERVER_URL>/auth/apps/callback. - Copia el Client ID y el Client Secret generados.
- Abre la aplicación instalada en Twenty como administrador del servidor → establece los valores en los
serverVariablescorrespondientes. - Luego, los miembros del espacio de trabajo pueden agregar conexiones desde la sección Conexiones por aplicación.