Passer au contenu principal
Chaque application doit avoir exactement un appel à defineApplication. Il déclare :
  • Identité — identifiant universel, nom d’affichage, description.
  • Autorisations — le rôle sous lequel s’exécutent ses fonctions logiques et ses composants front-end.
  • Variables (facultatif) — paires clé–valeur exposées à votre code en tant que variables d’environnement.
  • Hooks de pré-installation / post-installation (facultatif) — voir Fonctions logiques.
src/application-config.ts
import { defineApplication } from 'twenty-sdk/define';

export default defineApplication({
  universalIdentifier: '39783023-bcac-41e3-b0d2-ff1944d8465d',
  displayName: 'My Twenty App',
  description: 'My first Twenty app',
  applicationVariables: {
    DEFAULT_RECIPIENT_NAME: {
      universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de',
      description: 'Default recipient name for postcards',
      value: 'Jane Doe',
      isSecret: false,
    },
  },
});
Notes :
  • Les champs universalIdentifier sont des identifiants déterministes que vous contrôlez. Générez-les une fois et conservez-les stables entre les synchronisations.
  • applicationVariables deviennent des variables d’environnement pour vos fonctions et vos composants front-end. Dans les fonctions logiques (côté serveur), elles sont disponibles sous process.env.VARIABLE_NAME. Dans les composants front-end, utilisez getApplicationVariable('VARIABLE_NAME') depuis twenty-sdk/front-component. Les variables marquées avec isSecret: true sont uniquement injectées dans les fonctions logiques. Les composants front-end ne reçoivent que des variables non secrètes.
  • Le rôle par défaut est détecté automatiquement à partir du fichier de rôle marqué avec defineApplicationRole() — vous n’avez pas besoin d’y faire référence depuis defineApplication().
  • Les fonctions de pré-installation et de post-installation sont détectées automatiquement lors de la construction du manifeste — vous n’avez pas besoin de les référencer dans defineApplication().
  • Le passage explicite de defaultRoleUniversalIdentifier est toujours pris en charge pour des raisons de rétrocompatibilité, mais il est obsolète au profit de defineApplicationRole().

Rôle de fonction par défaut

Le rôle déclaré avec defineApplicationRole() contrôle ce à quoi les fonctions logiques de l’application et les composants front peuvent accéder :
  • Le jeton d’exécution injecté sous TWENTY_APP_ACCESS_TOKEN est dérivé de ce rôle.
  • Le client d’API typé est limité aux autorisations accordées à ce rôle.
  • Appliquez le principe du moindre privilège : déclarez uniquement les autorisations dont vos fonctions ont besoin.
Lorsque vous générez une nouvelle application, la CLI crée un fichier de rôle par défaut à src/roles/default-role.ts. Voir Rôles et autorisations pour la référence complète.

Métadonnées de la marketplace

Si vous prévoyez de publier votre application, ces champs optionnels contrôlent la façon dont elle apparaît dans la marketplace :
ChampDescription
authorNom de l’auteur ou de l’entreprise
categoryCatégorie de l’application pour le filtrage dans la marketplace
logoUrlChemin vers le logo de votre application (p. ex., public/logo.png)
screenshotsTableau de chemins de captures d’écran (p. ex., public/screenshot-1.png)
aboutDescriptionDescription markdown plus longue pour l’onglet “À propos”. S’il est omis, la marketplace utilise le README.md du package sur npm
websiteUrlLien vers votre site web
termsUrlLien vers les conditions d’utilisation
emailSupportAdresse e-mail du support
issueReportUrlLien vers le système de suivi des problèmes