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 / dezinstalare (opțional) — vedeți Funcții logice.
src/application-config.ts
- Câmpurile
universalIdentifiersunt ID-uri deterministe pe care le dețineți. Generați-le o singură dată și mențineți-le stabile între sincronizări. applicationVariablesdevin variabile de mediu pentru funcțiile și componentele front-end. În funcțiile de logică (server-side), acestea sunt disponibile caprocess.env.VARIABLE_NAME. În componentele front-end, foloseștegetApplicationVariable('VARIABLE_NAME')dintwenty-sdk/front-component. Variabilele marcate cuisSecret: truesunt 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 îndefineApplication(). - Funcțiile de pre-instalare, post-instalare și dezinstalare sunt detectate automat în timpul construirii manifestului — nu este nevoie să faceți referire la ele în
defineApplication(). - Transmiterea explicită a
defaultRoleUniversalIdentifiereste în continuare acceptată pentru compatibilitate retroactivă, dar este considerată învechită în favoareadefineApplicationRole(). serverVariablessunt configurări și secrete la nivel de instanță (de ex. chei API). Spre deosebire deapplicationVariables, ele nu declară nicio valoare în manifest — operatorul spațiului de lucru le completează din setările aplicației și sunt injectate în funcțiile de logică doar după ce au fost setate.- Pentru a afișa o interfață de configurare personalizată în fila Settings a aplicației (în locul secțiunii implicite de configurare a variabilelor), declară un front component cu
defineSettingsFrontComponent()într-un fișier separat. Este permis doar unul per aplicație. Secțiunile gestionate de sistem (auto-upgrade, App URL, connections) rămân întotdeauna vizibile.
Tipuri de variabile
AtâtapplicationVariables, cât și serverVariables acceptă un câmp opțional type (și, pentru SELECT / MULTI_SELECT, o listă options). Tipuri acceptate: TEXT (implicit), BOOLEAN, NUMBER, NUMERIC, DATE, DATE_TIME, SELECT, MULTI_SELECT, ARRAY, RAW_JSON, RICH_TEXT.
src/application-config.ts
type afectează doar prezentarea și validarea — selectează câmpul de intrare corespunzător în interfața de setări a spațiului de lucru (un comutator, câmp numeric, listă derulantă, selector de dată, editor JSON, …) și permite build‑ului să valideze configurația (de exemplu, SELECT / MULTI_SELECT trebuie să declare o listă options negoală). Nu modifică deloc modul în care valoarea ajunge în codul tău.
Valorile sunt întotdeauna injectate ca stringuri — acest lucru este inerent pentru variabilele de mediu (process.env.* este doar string). Când rulează funcția ta de logică, executorul serializează fiecare valoare în funcție de type‑ul declarat în timp ce construiește process.env, astfel încât formatul stringului este consecvent indiferent de modul în care a fost setată valoarea (valoare implicită din manifest, interfața de setări sau o versiune anterioară):
Parsează stringul înapoi în tipul pe care îl aștepți:
getApplicationVariable('VARIABLE_NAME') — valoarea returnată este un string; parseaz-o după cum este necesar.
Rol implicit pentru funcții
Rolul declarat cudefineApplicationRole() controlează la ce pot avea acces funcțiile logice și componentele de interfață ale aplicației:
- Tokenul de runtime injectat ca
TWENTY_APP_ACCESS_TOKENeste 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.
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:logoUrl și screenshots sunt aliasuri învechite pentru logo și galleryImages. URL-urile absolute externe (http:// sau https://) nu sunt acceptate pentru aceste câmpuri: ele sunt eliminate cu un avertisment în timpul build-ului. În schimb, include imaginile în folderul public/ al aplicației tale.