defineApplication. Dichiara:
- Identità — identificatore universale, nome visualizzato, descrizione.
- Autorizzazioni — il ruolo sotto il quale vengono eseguite le sue funzioni logiche e i componenti front-end.
- Variabili (opzionali) — coppie chiave–valore esposte al tuo codice come variabili d’ambiente.
- Hook di pre-installazione / post-installazione / disinstallazione (opzionali) — vedi Funzioni logiche.
src/application-config.ts
- I campi
universalIdentifiersono ID deterministici che possiedi. Generali una volta e mantienili stabili tra una sincronizzazione e l’altra. applicationVariablesdiventano variabili d’ambiente per le tue funzioni e i componenti front-end. Nelle funzioni di logica (lato server), sono disponibili comeprocess.env.VARIABLE_NAME. Nei componenti front-end, usagetApplicationVariable('VARIABLE_NAME')datwenty-sdk/front-component. Le variabili contrassegnate conisSecret: truevengono iniettate solo nelle funzioni di logica. I componenti front-end ricevono solo variabili non segrete.- Il ruolo predefinito viene rilevato automaticamente dal file di ruolo contrassegnato con
defineApplicationRole(): non è necessario farvi riferimento dadefineApplication(). - Le funzioni di pre-installazione, post-installazione e disinstallazione vengono rilevate automaticamente durante il build del manifest — non è necessario farne riferimento in
defineApplication(). - Il passaggio esplicito di
defaultRoleUniversalIdentifierè ancora supportato per garantire la compatibilità con le versioni precedenti, ma è deprecato a favore didefineApplicationRole(). serverVariablessono configurazioni e segreti con ambito di istanza (ad esempio chiavi API). A differenza diapplicationVariables, non dichiarano alcun valore nel manifest — l’operatore dello spazio di lavoro li compila dalle impostazioni dell’app e vengono iniettati nelle funzioni di logica solo una volta impostati.- Per eseguire il rendering di un’interfaccia di configurazione personalizzata all’interno della scheda Settings dell’app (al posto della sezione predefinita di configurazione delle variabili), dichiara un front component con
defineSettingsFrontComponent()in un proprio file. Ne è consentito solo uno per app. Le sezioni gestite dal sistema (auto-upgrade, App URL, connessioni) rimangono sempre visibili.
Tipi di variabili
SiaapplicationVariables che serverVariables accettano un type opzionale (e, per SELECT / MULTI_SELECT, un elenco di options). Tipi supportati: TEXT (predefinito), BOOLEAN, NUMBER, NUMERIC, DATE, DATE_TIME, SELECT, MULTI_SELECT, ARRAY, RAW_JSON, RICH_TEXT.
src/application-config.ts
type influisce solo su presentazione e convalida: seleziona l’input corrispondente nell’interfaccia delle impostazioni dell’area di lavoro (un interruttore, campo numerico, menu a discesa, selettore di data, editor JSON, …) e consente alla build di convalidare la tua configurazione (ad esempio, SELECT / MULTI_SELECT devono dichiarare options non vuote). Non cambia il modo in cui il valore arriva al tuo codice.
I valori sono sempre inseriti come stringhe: ciò è intrinseco alle variabili di ambiente (process.env.* accetta solo stringhe). Quando la tua funzione di logica viene eseguita, l’executor serializza ogni valore in base al type dichiarato mentre costruisce process.env, quindi il formato della stringa è coerente indipendentemente da come è stato impostato il valore (valore predefinito del manifest, interfaccia delle impostazioni o una versione precedente):
Analizza nuovamente la stringa nel tipo che ti aspetti:
getApplicationVariable('VARIABLE_NAME'): il valore restituito è una stringa; analizzalo secondo le necessità.
Ruolo funzione predefinito
Il ruolo dichiarato condefineApplicationRole() controlla a cosa possono accedere le funzioni di logica e i componenti di interfaccia dell’app:
- Il token di runtime iniettato come
TWENTY_APP_ACCESS_TOKENè derivato da questo ruolo. - Il client API tipizzato è limitato alle autorizzazioni concesse a quel ruolo.
- Segui il principio del privilegio minimo: dichiara solo le autorizzazioni necessarie alle tue funzioni.
src/roles/default-role.ts. Per la documentazione completa, vedi Ruoli e autorizzazioni.
Metadati del marketplace
Se prevedi di pubblicare la tua app, questi campi opzionali controllano come appare nel marketplace:logoUrl e screenshots sono alias deprecati di logo e galleryImages. Gli URL assoluti esterni (http:// o https://) non sono supportati per questi campi: vengono eliminati con un avviso al momento della generazione. Raccogli invece le immagini nella cartella public/ della tua app.