Salt la conținutul principal
Fiecare aplicație trebuie să aibă exact un apel defineApplication. Acesta declară:
  • Identitate — identificator universal, nume de afișare, descriere.
  • Permisiuni — sub ce rol rulează funcțiile logice și componentele front-end ale acesteia.
  • Variabile (opțional) — perechi cheie–valoare expuse codului dvs. ca variabile de mediu.
  • Hook-uri de pre-instalare / post-instalare (opțional) — vedeți Funcții logice.
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,
    },
  },
});
Notițe:
  • Câmpurile universalIdentifier sunt ID-uri deterministe pe care le dețineți. Generați-le o singură dată și mențineți-le stabile între sincronizări.
  • applicationVariables devin variabile de mediu pentru funcțiile și componentele front-end. În funcțiile de logică (server-side), acestea sunt disponibile ca process.env.VARIABLE_NAME. În componentele front-end, folosește getApplicationVariable('VARIABLE_NAME') din twenty-sdk/front-component. Variabilele marcate cu isSecret: true sunt injectate doar în funcțiile de logică. Componentele front-end primesc doar variabile non-secrete.
  • Rolul implicit este detectat automat din fișierul de rol marcat cu defineApplicationRole() — nu este necesar să faci referire la el în defineApplication().
  • Funcțiile de pre-instalare și post-instalare sunt detectate automat în timpul construirii manifestului — nu trebuie să le referiți în defineApplication().
  • Transmiterea explicită a defaultRoleUniversalIdentifier este în continuare acceptată pentru compatibilitate retroactivă, dar este considerată învechită în favoarea defineApplicationRole().

Rol implicit pentru funcții

Rolul declarat cu defineApplicationRole() controlează la ce pot avea acces funcțiile logice și componentele de interfață ale aplicației:
  • Tokenul de runtime injectat ca TWENTY_APP_ACCESS_TOKEN este derivat din acest rol.
  • Clientul API tipizat este restricționat la permisiunile acordate acelui rol.
  • Respectați principiul celui mai mic privilegiu: declarați doar permisiunile de care au nevoie funcțiile.
Când generați o aplicație nouă, CLI creează un fișier de rol de pornire la src/roles/default-role.ts. Consultați Roluri și permisiuni pentru referința completă.

Metadate pentru marketplace

Dacă intenționați să publicați aplicația, aceste câmpuri opționale controlează modul în care apare în marketplace:
CâmpDescriere
authorNumele autorului sau al companiei
categoryCategoria aplicației pentru filtrarea în marketplace
logoUrlCalea către logo-ul aplicației (de ex., public/logo.png)
screenshotsArray de căi către capturi de ecran (de ex., public/screenshot-1.png)
aboutDescriptionDescriere markdown mai lungă pentru fila “About”. Dacă este omis, marketplace-ul folosește README.md al pachetului de pe npm
websiteUrlLink către site-ul dvs.
termsUrlLink către termenii de serviciu
emailSupportAdresă de e-mail pentru suport
issueReportUrlLink către sistemul de urmărire a problemelor