Перейти к основному содержанию
В каждом приложении должен быть ровно один вызов defineApplication. Он объявляет:
  • Идентификация — универсальный идентификатор, отображаемое имя, описание.
  • Разрешения — от имени какой роли выполняются его логические функции и фронтенд-компоненты.
  • Переменные (необязательно) — пары ключ–значение, доступные вашему коду как переменные окружения.
  • Хуки предустановки / постустановки (необязательно) — см. Логические функции.
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,
    },
  },
});
Заметки:
  • Поля universalIdentifier — это детерминированные идентификаторы, которые принадлежат вам. Сгенерируйте их один раз и сохраняйте неизменными между синхронизациями.
  • applicationVariables становятся переменными окружения для ваших функций и фронтенд-компонентов. В логических функциях (на стороне сервера) они доступны как process.env.VARIABLE_NAME. Во фронтенд-компонентах используйте getApplicationVariable('VARIABLE_NAME') из twenty-sdk/front-component. Переменные, помеченные как isSecret: true, внедряются только в логические функции. Фронтенд-компоненты получают только несекретные переменные.
  • Роль по умолчанию автоматически определяется из файла роли, помеченного с помощью defineApplicationRole() — вам не нужно ссылаться на неё из defineApplication().
  • Предустановочные и постустановочные функции обнаруживаются автоматически во время сборки манифеста — вам не нужно указывать их в defineApplication().
  • Явная передача defaultRoleUniversalIdentifier по-прежнему поддерживается для обратной совместимости, но считается устаревшей и вместо неё рекомендуется использовать defineApplicationRole().

Роль функции по умолчанию

Роль, объявленная с помощью defineApplicationRole(), определяет, к чему могут получать доступ логические функции и фронтенд‑компоненты приложения:
  • Токен времени выполнения, подставляемый как TWENTY_APP_ACCESS_TOKEN, формируется из этой роли.
  • Типизированный клиент API ограничен правами, предоставленными этой роли.
  • Следуйте принципу наименьших привилегий: объявляйте только те разрешения, которые действительно нужны вашим функциям.
Когда вы создаёте новое приложение с помощью шаблона, CLI создаёт стартовый файл роли по адресу src/roles/default-role.ts. Полную справочную информацию см. в разделе Роли и разрешения.

Метаданные маркетплейса

Если вы планируете опубликовать приложение, эти необязательные поля определяют, как оно отображается в маркетплейсе:
ПолеОписание
authorИмя автора или название компании
categoryКатегория приложения для фильтрации в маркетплейсе
logoUrlПуть к логотипу вашего приложения (например, public/logo.png)
screenshotsМассив путей к скриншотам (например, public/screenshot-1.png)
aboutDescriptionРасширенное описание в Markdown для вкладки “About”. Если опущено, маркетплейс использует README.md пакета из npm
websiteUrlСсылка на ваш сайт
termsUrlСсылка на условия предоставления услуг
emailSupportАдрес электронной почты поддержки
issueReportUrlСсылка на систему отслеживания проблем