Saltar para o conteúdo principal
Todo app deve ter exatamente uma chamada a defineApplication. Ela declara:
  • Identidade — identificador universal, nome de exibição, descrição.
  • Permissões — qual papel é usado pelas suas funções de lógica e pelos componentes de front-end.
  • Variáveis (opcional) — pares chave–valor expostos ao seu código como variáveis de ambiente.
  • Hooks de pré-instalação/pós-instalação (opcional) — consulte Funções de lógica.
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,
    },
  },
});
Notas:
  • Os campos universalIdentifier são IDs determinísticos que você controla. Gere-os uma vez e mantenha-os estáveis entre sincronizações.
  • applicationVariables tornam-se variáveis de ambiente para suas funções e componentes de front-end. Em funções lógicas (no lado do servidor), elas ficam disponíveis como process.env.VARIABLE_NAME. Em componentes de front-end, use getApplicationVariable('VARIABLE_NAME') de twenty-sdk/front-component. Variáveis marcadas com isSecret: true são injetadas apenas em funções lógicas. Componentes de front-end recebem apenas variáveis não secretas.
  • O papel padrão é detectado automaticamente a partir do arquivo de definição de papel marcado com defineApplicationRole() — você não precisa referenciá-lo em defineApplication().
  • As funções de pré-instalação e pós-instalação são detectadas automaticamente durante a construção do manifesto — você não precisa referenciá-las em defineApplication().
  • Passar defaultRoleUniversalIdentifier explicitamente ainda é compatível para retrocompatibilidade, mas foi preterido em favor de defineApplicationRole().

Papel de função padrão

O papel declarado com defineApplicationRole() controla o que as funções de lógica e os componentes de front-end do aplicativo podem acessar:
  • O token em tempo de execução injetado como TWENTY_APP_ACCESS_TOKEN é derivado desse papel.
  • O cliente de API tipado é restrito às permissões concedidas a esse papel.
  • Siga o princípio do menor privilégio: declare apenas as permissões de que suas funções precisam.
Ao criar um novo app com o scaffold, a CLI cria um arquivo de papel inicial em src/roles/default-role.ts. Consulte Papéis e permissões para a referência completa.

Metadados do Marketplace

Se você planeja publicar seu app, estes campos opcionais controlam como seu app aparece no marketplace:
CampoDescrição
authorNome do autor ou da empresa
categoryCategoria do app para filtragem no marketplace
logoUrlCaminho para o logo do seu app (por exemplo, public/logo.png)
screenshotsArray de caminhos de capturas de tela (por exemplo, public/screenshot-1.png)
aboutDescriptionDescrição em markdown mais longa para a aba “Sobre”. Se omitido, o marketplace usa o README.md do pacote no npm
websiteUrlLink para seu site
termsUrlLink para os Termos de Serviço
emailSupportEndereço de e-mail de suporte
issueReportUrlLink para o rastreador de problemas