Skip to main content
すべてのアプリは、defineApplication の呼び出しを厳密に 1 つ持つ必要があります。 ここでは次の内容を宣言します。
  • Identity — ユニバーサル識別子、表示名、説明。
  • Permissions — ロジック関数およびフロントコンポーネントがどのロールで実行されるか。
  • Variables (optional) — コードから環境変数として利用できるキーと値のペア。
  • プレインストール / ポストインストール / アンインストール フック (任意)Logic Functions を参照してください。
src/application-config.ts
注記:
  • universalIdentifier フィールドは、あなたが所有する安定した ID です。 一度生成し、その後の同期でも安定して維持してください。
  • applicationVariables は関数やフロントコンポーネントの環境変数になります。 ロジック関数(サーバーサイド)では、process.env.VARIABLE_NAME として利用できます。 フロントコンポーネントでは、twenty-sdk/front-componentgetApplicationVariable('VARIABLE_NAME') を使用します。 isSecret: true が指定された変数は、ロジック関数にのみインジェクトされます。 フロントコンポーネントには、秘密ではない変数のみが渡されます。
  • デフォルトのロールは、defineApplicationRole() でマークされたロールファイルから自動的に検出されます。defineApplication() から参照する必要はありません。
  • プレインストール関数、ポストインストール関数、およびアンインストール関数は、マニフェストのビルド中に自動的に検出されるため、defineApplication() で参照する必要はありません。
  • 後方互換性のために defaultRoleUniversalIdentifier を明示的に渡すことも依然としてサポートされていますが、defineApplicationRole() が推奨されるため、非推奨となっています。
  • serverVariables はインスタンス単位の構成およびシークレット(例: API キー)です。 applicationVariables と異なり、マニフェスト内で値は宣言されません。ワークスペースのオペレーターがアプリの設定からそれらを入力し、設定された時点でのみロジック関数に注入されます。
  • どちらの種類の変数も isDeprecated: true を受け付けます。 変数を削除する代わりに廃止するためにこれを使用します。キーの宣言を残しておくことで保存されている値が保持されます(削除するとオペレーターが入力した値は失われます)。また、その変数は依然としてインジェクトされるため、コードは process.env.NEW_API_KEY ?? process.env.API_KEY にフォールバックできます。 非推奨の変数は値がなくなるとアプリの設定から消え、アプリの構成チェックにも一切カウントされません。そのため、isDeprecatedisRequired より優先されます。
  • アプリの Settings タブ内で(デフォルトの変数設定セクションの代わりに)カスタム設定 UI をレンダーするには、専用のファイル内で defineSettingsFrontComponent() を使用してフロントコンポーネントを宣言します。 アプリごとに 1 つのみ許可されています。 システム管理のセクション(自動アップグレード、App URL、接続)は常に表示されます。

変数の型

applicationVariablesserverVariables の両方は、オプションの type(および SELECT / MULTI_SELECT の場合は options リスト)を受け取ります。 サポートされている型: TEXT (既定), BOOLEAN, NUMBER, NUMERIC, DATE, DATE_TIME, SELECT, MULTI_SELECT, ARRAY, RAW_JSON, RICH_TEXT
src/application-config.ts
type表示とバリデーション のみに影響します。つまり、ワークスペース設定 UI で対応する入力(トグル、数値フィールド、ドロップダウン、日付ピッカー、JSON エディタ など)を選択します。 また、ビルド時に設定を検証できるようにします(たとえば、SELECT / MULTI_SELECT では空でない options を宣言する必要があります)。 これは、値がコードに届く方法を変更しません 値は 常に文字列として注入されます。これは環境変数の性質によるものです(process.env.* は文字列のみです)。 ロジック関数が実行されるとき、エグゼキュータは宣言された type に従って各値をシリアライズしながら process.env を構築します。そのため、値がどのように設定されたか(マニフェストのデフォルト、設定 UI、あるいは以前のバージョン)に関係なく、文字列形式は一貫したものになります。 文字列を、想定している型に再度パースしてください:
同じことが、getApplicationVariable('VARIABLE_NAME') で値を読み取るフロントコンポーネントにも当てはまります。返される値は文字列なので、必要に応じてパースしてください。

デフォルトの関数ロール

defineApplicationRole() で宣言されたロールは、アプリのロジック関数とフロントコンポーネントがアクセスできる内容を制御します。
  • TWENTY_APP_ACCESS_TOKEN として注入される実行時トークンは、このロールに基づいて生成されます。
  • 型付き API クライアントは、そのロールに付与された権限に制限されます。
  • 最小権限の原則に従い、関数に必要な権限のみを宣言してください。
新しいアプリをスキャフォルドすると、CLI は src/roles/default-role.ts にスターターロールファイルを作成します。 詳細は Roles & Permissions を参照してください。

マーケットプレイスのメタデータ

アプリを公開する予定がある場合、これらの任意フィールドでマーケットプレイスでの表示方法を制御できます:
logoUrlscreenshotsは、logogalleryImagesの別名は非推奨です。 外部絶対URL (http://またはhttps://) はこれらのフィールドでサポートされていません: ビルド時に警告が表示されます。 アプリの public/ フォルダに画像を束ねます。