> ## Documentation Index
> Fetch the complete documentation index at: https://developers.hubspot.jp/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# イベントタイプの作成と管理（ベータ版）

> イベント オカレンス データをHubSpotに送信できるように、アプリ イベント タイプを定義する方法をご確認ください。

アプリ イベント データをHubSpotに送信するには、まず、開発者プロジェクトを使用してイベントタイプを作成します。イベントタイプとは、送信するイベント オカレンス データの構造、プロパティー、検証ルールを定義するJSONスキーマのことです。このスキーマは、イベント名、表示ラベル、ターゲットCRMオブジェクト、イベントプロパティーからなります。また、イベントタイプにはCRMレコードのタイムラインをレンダリングするための表示テンプレートの定義も含めます。

<Warning>
  このドキュメントで説明するアプリイベントは、開発者プロジェクトを使用して[アプリマーケットプレイス](https://ecosystem.hubspot.com/marketplace/apps)向けに開発されたアプリを対象としています。他のタイプの連携を対象にカスタム イベント レポートを作成するには、代わりに[カスタムイベント](/api-reference/events-manage-event-definitions-v3/guide)を使用してください。
</Warning>

## 前提条件

アプリ イベント タイプの定義をプロジェクトに含めるには、次の条件を満たす必要があります。

* HubSpot CLIバージョン`7.5.4`以降を使用していること。使用しているCLIのバージョンを確認するには、`hs --version`を実行します。また、バージョンを更新するには、`npm i -g @hubspot/cli@next`を実行します。
* アプリ イベント コンポーネントを追加してプロジェクトを更新できるように、あらかじめプロジェクトをデプロイすること。

## プロジェクトファイルを設定する

<Note>
  以前に作成した、タイムラインイベントを使用する公開アプリがある場合は、[開発者プラットフォームに公開アプリを移行する](#migrate-an-existing-timeline-event-type)方法について詳細をご確認ください。
</Note>

<Steps>
  <Step title="アプリの設定とプロジェクトの構造">
    プロジェクトで新しいアプリ イベント タイプの定義を作成するには、[アプリの設定](/apps/developer-platform/build-apps/app-configuration)`hsmeta.json`ファイルを更新して、`requiredScopes`フィールドに`timeline`スコープを含めます。こうしなければ、アプリ イベント データはCRMレコードのタイムラインに表示されません。イベントデータが正常に送信されように、インストーラーがこのスコープを付与する必要があります。

    ```json theme={null}
    "requiredScopes": [
      "timeline"
    ],
    ```

    <Info>
      アプリに組み込まれている機能によっては、他の[スコープ](/apps/legacy-apps/authentication/scopes#list-of-available-scopes)も追加しなければならない場合があります。
    </Info>

    次に、プロジェクトの`app/`ディレクトリー内に`app-events`ディレクトリーを追加します。`app-events/`ディレクトリー内に、アプリ イベント タイプを定義するJSON設定ファイルを追加します。このファイルには任意の名前を付けることができますが、ファイル名の末尾は`*-hsmeta.json`にする必要があります。アプリごとに、それぞれ固有の`*-hsmeta.json`ファイルを持つ最大750個のイベントタイプを含めることができます。

    ```shell theme={null}
    project-folder/
    └── src/
        └── app/
            ├── app-hsmeta.json
            └── app-events/
                └── my-event-type-hsmeta.json
    ```
  </Step>

  <Step title="イベント タイプ スキーマを設定する">
    イベントタイプの`*-hsmeta.json`ファイルで、[イベント タイプ スキーマ](/apps/developer-platform/add-features/app-events/reference#event-type-schema)を設定します。このスキーマで、イベントタイプ属性（名前、CRMレコードのタイムライン表示テンプレート、イベントデータを関連付けるCRMオブジェクトタイプなど）を設定します。

    これらのフィールドの中には作成後に更新できるものもありますが、`name`フィールドと`objectType`フィールドは、イベントタイプの作成後に変更することはできません。

    例えば、顧客のログインイベントを追跡する場合は、以下のイベント タイプ スキーマを使用できます。

    ```json theme={null}
    {
      "uid": "customer_login_event",
      "type": "app-event",
      "config": {
        "name": "Customer login",
        "headerTemplate": "{{customerName}} logged in",
        "detailTemplate": "{{customerName}} logged in via the {{loginLocation}}.",
        "objectType": "CONTACT",
        "properties": [
          {
            "name": "customerName",
            "label": "Customer Name",
            "type": "string"
          },
          {
            "name": "loginLocation",
            "label": "Login location",
            "type": "enumeration",
            "options": [
              {
                "value": "mobileApp",
                "label": "Mobile app"
              },
              {
                "value": "website",
                "label": "Website"
              }
            ]
          }
        ]
      }
    }
    ```

    <p className="table-key">
      <span style={{ color: 'red' }}>\*</span>でマークされたフィールドは必須です。
    </p>

    | フィールド                                             | 型   | 説明                                                                                                                                                                                         |
    | ------------------------------------------------- | --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
    | `uid`<span style={{color:"red"}}>\*</span>        | 文字列 | イベントタイプの内部固有ID。                                                                                                                                                                            |
    | `type`<span style={{color:"red"}}>\*</span>       | 文字列 | コンポーネントのタイプ。`app-event`でなければなりません。                                                                                                                                                         |
    | `name`<span style={{color:"red"}}>\*</span>       | 文字列 | HubSpotに表示されるラベル（最大50文字）。この値を作成後に更新することはできません。                                                                                                                                             |
    | `objectType`<span style={{color:"red"}}>\*</span> | 文字列 | イベントオカレンスを関連付けることができるCRMオブジェクトタイプの完全修飾名。この値を作成後に変更することはできません。`COMPANY`、`CONTACT`、`CUSTOM_OBJECT`、`DEAL`、`TICKET`、`APP_OBJECT`のいずれかを指定できます。                                                 |
    | `headerTemplate`                                  | 文字列 | CRMタイムライン アクティビティー カードのヘッダーの[表示テンプレート](/apps/developer-platform/add-features/app-events/reference#rendering-templates)。使用できる文字数は最大1,000文字です。                                               |
    | `detailTemplate`                                  | 文字列 | CRMタイムライン アクティビティー カードの本文の[表示テンプレート](/apps/developer-platform/add-features/app-events/reference#rendering-templates)。使用できる文字数は最大10,000文字です。                                                |
    | `properties`                                      | 配列  | イベント オカレンス データを格納する、イベントタイプ用に定義されたプロパティー。イベントタイプごとに最大500個のプロパティーを設定できます。[アプリイベントのリファレンスドキュメント](/apps/developer-platform/add-features/app-events/reference)で、要件や制限を含め、プロパティーの詳細についてご確認ください。 |
  </Step>

  <Step title="HubSpotに変更内容をアップロードする">
    HubSpotにプロジェクトをアップロードするには、`hs project upload`コマンドを使用します。

    ```shell theme={null}
    hs project upload
    ```

    ビルドフェーズの際に、HubSpotがイベントタイプを検証します。スキーマ検証エラーがある場合は、CLIから、何を修正すべきかを示すエラーが返されます。

    既定では、ビルドが成功すると、HubSpotによってプロジェクトが自動的にデプロイされます。[プロジェクト設定](/apps/developer-platform/build-apps/manage-apps-in-hubspot#view-your-app-on-the-project-details-page)でこの機能をオフにしている場合は、`hs project deploy`を使用して手動でデプロイできます。

    デプロイが完了すると、アプリ イベント タイプが有効になり、これを使用してイベント オカレンス データを受信できるようになります。
  </Step>
</Steps>

## fullyQualifiedNameを取得する

当該イベントタイプに対応するイベント オカレンス データを送信するには、アプリイベントAPIを使用して`fullyQualifiedName`を取得する必要があります。この名前はイベントタイプを識別するものであり、アプリイベントAPIの全ての操作では、この名前を含める必要があります。

`eventTypeName`を取得するには、`POST`リクエストを`https://api.hubapi.com/integrators/timeline/v4/types/projects`に送信します。リクエスト本文には、以下のフィールドを含めます。

* `projectName`フィールド。プロジェクトの`hsproject.json`ファイルに含まれる`name`値に設定する必要があります。
* `developerSymbol`フィールド。イベントタイプの`*-hsmeta.json`設定ファイルに含まれる`uid`値に設定する必要があります。

```json theme={null}
{
  "projectName": "my-marketplace-app",
  "developerSymbol": "customer_login_event"
}
```

レスポンスでは、プロジェクト名、イベントタイプ名、`fullyQualifiedName`が返されます。

```json highlight={6} theme={null}
{
  "developerQualifiedSymbol": {
    "projectName": "marketplace",
    "developerSymbol": "customer_login_event"
  },
  "fullyQualifiedName": "ae000000_integrators-timeline-event-type-id-0000000"
}
```

`fullyQualifiedName`値は変更されないため、実装にハードコードしても問題ありません。APIでは、この値を取得できる1日あたりの回数に制限が適用されるため、プログラムによってこのAPIを使用することはできません。

## イベントタイプを管理する

イベントタイプを作成後に更新するには、プロジェクト内のイベント タイプ スキーマを更新してから、プロジェクトを再度アップロードしてアプリをビルドし、デプロイすればよいだけです。

イベントタイプを使用する必要がなくなった場合は、プロジェクトから削除できます。ただし、イベントタイプを削除する前に、次の点にご注意ください。

* イベントタイプは完全に削除されます。この削除操作を元に戻すことはできません。
* イベントタイプを削除すると、アプリをインストールした全てのアカウントから、イベントタイプとそのタイプの全てのイベントオカレンスが削除されます。
* イベントタイプを削除すると、そのイベントタイプに依存する他のHubSpotツール（レポートやワークフローなど）が機能しなくなります。
  イベントタイプを削除するには、プロジェクトからイベントタイプ設定ファイル`*-hsmeta.json`を削除した上で、プロジェクトをアップロードしてデプロイします。

## 既存のタイムライン イベント タイプを移行する

タイムラインイベントを使用する既存の公開アプリがある場合は、CLIを使用して、その公開アプリを開発者プラットフォームに移行できます。

<Warning>
  アプリを移行する前に、以下の点をご確認ください。

  * [公開アプリ移行ガイド](/apps/developer-platform/build-apps/migrate-an-app/migrate-an-existing-public-app)で、開発者プラットフォームベータ版に関する現在の考慮事項と制限について確認します。
  * 既存のタイムライン イベント タイプ（`v1`／`v3`）を開発者プラットフォームに移行した後、7日以内に既存の`v1`／`v3`タイムラインイベントAPIリクエスト（当該イベントタイプのイベントオカレンス／インスタンスAPIリクエストの両方を含む）を新しい`v4`エンドポイントに合わせて変更する必要があります。7日が経過すると、`v1`／`v3`イベント オカレンス エンドポイントに対する既存の呼び出しは`401`エラーを返します。
    * イベントタイプおよびテンプレートを作成、更新するためにAPIを使用する必要はなくなりました。代わりに、[イベントタイプ設定ファイル](/apps/developer-platform/add-features/app-events/reference#event-type-schema)を使用して、プロジェクト内で直接イベントタイプおよびテンプレートを管理します。
    * イベント オカレンス データを送信するには、[1回送信エンドポイントと一括送信エンドポイント](/apps/developer-platform/add-features/app-events/send-event-occurrences)の両方を提供する`v4`エンドポイントを使用する必要があります。
</Warning>

アプリを移行するには、次の手順に従います。

* ターミナルで、`hs app migrate`を実行し、ターミナルプロンプトに従ってアプリとタイムラインイベントを移行します。
* 移行プロセスが完了すると、アプリは開発者プロジェクト内で有効になり、ローカル プロジェクト ディレクトリーが自動的に作成されます。
* HubSpotでプロジェクトを開くには、ローカル プロジェクト ディレクトリーに移動して、`hs project open`を実行します。

生成される設定ファイル（`*-hsmeta.json`）には、`null`値のフィールドが含まれている場合があります。これらのフィールドは移行によるアーティファクトであり、削除しても問題ありません。

## 次のステップ

イベントタイプを作成した後は、[APIを使用してイベント オカレンス データを送信する](/apps/developer-platform/add-features/app-events/send-event-occurrences)方法をご確認ください。

また、引き続きアプリイベントの作成とカスタマイズを行うには、[アプリイベントのリファレンスドキュメント](/apps/developer-platform/add-features/app-events/reference)をご確認ください。
