---
sourceDocument: Xanadu API リファレンス
sourceDocumentLink: https://www.servicenow.com/docs/r/ja-JP/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - ja-JP

ft:publication_title :

    - Xanadu API リファレンス

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# TopicAPIUtilsOOB :スコープ指定

# TopicAPIUtilsOOB :スコープ指定 {#ariaid-title1}

* リリースバージョン: Xanadu
* 
* 更新日 2024年08月01日
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 所要時間：33分

TopicAPIUtilsOOB スクリプトインクルードは、イベント管理トピックオープン API エンドポイントを処理するときに使用されるメソッドを提供します。

イベント管理トピックオープン API のデフォルト機能を変更する場合は、このスクリプトインクルードに含まれる関数を `TopicAPIUtils` スクリプトインクルードで上書きする必要があります。

このスクリプトインクルードは `sn_api_notif_mgmt` 名前空間で実行され、sn_api_notif_mgmt.event_mgmt_integration ロールが必要です。

## TopicAPIUtilsOOB - createTopicHelper(オブジェクト、topicObject、配列、警告) {#ariaid-title2}

イベント管理トピックオープン API - POST /sn_api_notif_mgmt/topic エンドポイントで渡された情報をトピック \[sn_api_notif_mgmt_topic\] テーブルに挿入します。
この挿入プロセスを変更する場合は、 TopicAPIUtils スクリプトインクルードでこのメソッドを上書きする必要があります。
{#TopAPIUtilOOB-createTopHelp_O_A__table_jkr_mjr_tzb__entry__3}{#TopAPIUtilOOB-createTopHelp_O_A__TopicAPIUtilsOOB-topicObject-entry}{#TopAPIUtilOOB-createTopHelp_O_A__TopicAPIUtilsOOB-warnings-entry}

| 名前 | タイプ | 説明 |
|-|-|-|
| トピックオブジェクト | オブジェクト | [イベント管理トピックオープン API](https://www.servicenow.com/docs/Q~TptFf~K09ln83bndHnnQ#event_management_topic-api "イベント管理トピックオープン API は、メッセージブローカーを介してトピックを送信し、ServiceNowインスタンスに保存できるようにするエンドポイントを提供します。")エンドポイントに渡されるトピックペイロードオブジェクト。 例： { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } このオブジェクトのスキーマは、 <var class="keyword varname">sn_api_notif_mgmtにあるConstants.SCHEMA.CREATE_TOPIC_SCHEMA</var> で定義されているものと一致する必要があります 。定数スクリプト インクルード。 |
| warnings | アレイ | メソッドで「警告」レベルの問題が発生した場合に、 [イベント管理トピックオープン API](https://www.servicenow.com/docs/Q~TptFf~K09ln83bndHnnQ#event_management_topic-api "イベント管理トピックオープン API は、メッセージブローカーを介してトピックを送信し、ServiceNowインスタンスに保存できるようにするエンドポイントを提供します。") エンドポイント応答で返される警告メッセージ。 このパラメーターを使用すると、このエンドポイントの実装にカスタム警告メッセージを追加できます。 追加の警告メッセージがない場合は、空の配列を渡す必要があります。 |
[表 : 1. パラメーター]

{#TopAPIUtilOOB-createTopHelp_O_A__table_jkr_mjr_tzb} {#TopAPIUtilOOB-createTopHelp_O_A__table_kkr_mjr_tzb__entry__2}

| タイプ | 説明 |
|-|-|
| オブジェクト | 応答オブジェクト。 { "contentQuery": "String", "eventType": "String", "externalId": "String", "headerQuery": "String", "id": "String", "name": "String" } これらのパラメーターの詳細については、 [イベント管理トピックを開く - POST /sn_api_notif_mgmt/topic](https://www.servicenow.com/docs/Q~TptFf~K09ln83bndHnnQ#evt_man_top-POST-topic "トピック [sn_api_notif_mgmt_topic] テーブルに新しいレコードを作成し、渡されたトピック情報をそのレコードに保存します。") の戻り値を参照してください。 |
[表 : 2. 返される内容]

{#TopAPIUtilOOB-createTopHelp_O_A__table_kkr_mjr_tzb}  
次のコード例は、このメソッドを呼び出す方法を示しています。

    processTopicCreation: function(topicObject) {
      try {
        var warnings = [];

        var schema = this.getCreateTopicSchema();
        if (!this.isValidCreateTopicPayload(topicObject, schema, warnings)) {
          this._logger.logDebug("Create Topic : validation failed");
          return this.response;
        }
        this.createTopicHelper(topicObject, warnings);
        this._logger.logDebug("Create Topic: Topic created succesfully");
      } catch (ex) {
        this._logger.logErr("Create Topic : Process aborted, error is: " + ex);
        var errorObj = this.apiCoreUtil.getErrorObj(sn_tmt_core.Constants.ERROR_CODES.INTERNAL_ERROR, Constants.MESSAGES.TOPIC_CREATE_ERROR, Constants.MESSAGES.TOPIC_CREATE_ERROR);
        var details = [];
        details.push(this.apiCoreUtil.getErrorDetailsObj(ex.message + '', ''));
        errorObj.details = details;
        this.response.details = errorObj;
      }

      return this.response;
    },

## TopicAPIUtilsOOB:getCreateTopicSchema() {#ariaid-title3}

トピックペイロードを検証するために イベント管理トピックオープン API - POST /sn_api_notif_mgmt/topic エンドポイントで使用されるペイロードの定義済みスキーマを返します。
トピックペイロードのスキーマをカスタマイズする場合は、sn_api_notif_mgmtにあるデフォルトのペイロードスキーマ <var class="keyword varname">Constants.SCHEMA</var> を上書きする必要があります 。定数スクリプト インクルード。このスキーマのデフォルト値は次のとおりです。

    CREATE_TOPIC_SCHEMA: "{
      \"title\":\"Topic\",
      \"type\":\"object\",
      \"properties\":{
        \"name\":{
          \"type\":\"string\"
        },
        \"contentQuery\":{
          \"type\":\"string\"
        },
        \"headerQuery\":{
          \"type\":\"string\"
        },
        \"namespace\":{
          \"type\":\"string\"
        }
      },
      \"required\":[\"name\"]
    }"

{#TopAPIUtilOOB-getCreTopSchema__table_tqw_tnw_tzb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 3. パラメーター]

{#TopAPIUtilOOB-getCreTopSchema__table_tqw_tnw_tzb} {#TopAPIUtilOOB-getCreTopSchema__table_uqw_tnw_tzb__entry__2}

| タイプ | 説明 |
|-|-|
| 文字列 | イベント管理トピックオープン API - POST /sn_api_notif_mgmt/topic エンドポイントペイロードのスキーマ。このスキーマを使用して、 [TopicAPIUtilsOOB - isValidCreateTopicPayload(オブジェクト topicObject, 文字列スキーマ, アレイ警告)](https://www.servicenow.com/docs/88z0N3z3rAijR3DYjymcGQ#TopAPIUtilOOB-isValCreTopPay_O "イベント管理トピックオープン API - POST /sn_api_notif_mgmt/topic エンドポイントに渡されたペイロードを検証します。この検証は、要求本文とスキーマに対して実行されます。") メソッドを使用してエンドポイントに渡されたスキーマを検証します。 |
[表 : 4. 返される内容]

{#TopAPIUtilOOB-getCreTopSchema__table_uqw_tnw_tzb}  
次のコード例は、このメソッドを呼び出す方法を示しています。

    processTopicCreation: function(topicObject) {
      try {
        var warnings = [];

        var schema = this.getCreateTopicSchema();
        if (!this.isValidCreateTopicPayload(topicObject, schema, warnings)) {
          this._logger.logDebug("Create Topic : validation failed");
          return this.response;
        }
        this.createTopicHelper(topicObject, warnings);
        this._logger.logDebug("Create Topic: Topic created succesfully");
      } catch (ex) {
        this._logger.logErr("Create Topic : Process aborted, error is: " + ex);
        var errorObj = this.apiCoreUtil.getErrorObj(sn_tmt_core.Constants.ERROR_CODES.INTERNAL_ERROR, Constants.MESSAGES.TOPIC_CREATE_ERROR, Constants.MESSAGES.TOPIC_CREATE_ERROR);
        var details = [];
        details.push(this.apiCoreUtil.getErrorDetailsObj(ex.message + '', ''));
        errorObj.details = details;
        this.response.details = errorObj;
      }

      return this.response;
    },

## TopicAPIUtilsOOB - isValidCreateTopicPayload(オブジェクト topicObject, 文字列スキーマ, アレイ警告) {#ariaid-title4}

イベント管理トピックオープン API - POST /sn_api_notif_mgmt/topic エンドポイントに渡されたペイロードを検証します。この検証は、要求本文とスキーマに対して実行されます。
ペイロードの検証プロセスを変更する場合は、 TopicAPIUtils スクリプトインクルードでこのメソッドを上書きする必要があります。
{#TopAPIUtilOOB-isValCreTopPay_O__table_jkr_mjr_tzb__entry__3}{#TopAPIUtilOOB-isValCreTopPay_O__TopicAPIUtilsOOB-topicObject-entry}

| 名前 | タイプ | 説明 |
|-|-|-|
| トピックオブジェクト | オブジェクト | [イベント管理トピックオープン API](https://www.servicenow.com/docs/Q~TptFf~K09ln83bndHnnQ#event_management_topic-api "イベント管理トピックオープン API は、メッセージブローカーを介してトピックを送信し、ServiceNowインスタンスに保存できるようにするエンドポイントを提供します。")エンドポイントに渡されるトピックペイロードオブジェクト。 例： { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } このオブジェクトのスキーマは、 <var class="keyword varname">sn_api_notif_mgmtにあるConstants.SCHEMA.CREATE_TOPIC_SCHEMA</var> で定義されているものと一致する必要があります 。定数スクリプト インクルード。 |
| schema | 文字列 | トピックペイロードの検証に使用するスキーマ。このスキーマを取得するには、 [TopicAPIUtilsOOB:getCreateTopicSchema()](https://www.servicenow.com/docs/88z0N3z3rAijR3DYjymcGQ#TopAPIUtilOOB-getCreTopSchema "トピックペイロードを検証するために イベント管理トピックオープン API - POST /sn_api_notif_mgmt/topic エンドポイントで使用されるペイロードの定義済みスキーマを返します。") メソッドを使用します。 |
| warnings | アレイ | メソッドで「警告」レベルの問題が発生した場合に、 [イベント管理トピックオープン API](https://www.servicenow.com/docs/Q~TptFf~K09ln83bndHnnQ#event_management_topic-api "イベント管理トピックオープン API は、メッセージブローカーを介してトピックを送信し、ServiceNowインスタンスに保存できるようにするエンドポイントを提供します。") エンドポイント応答で返される警告メッセージ。 このパラメーターを使用すると、このエンドポイントの実装にカスタム警告メッセージを追加できます。 追加の警告メッセージがない場合は、空の配列を渡す必要があります。 |
[表 : 5. パラメーター]

{#TopAPIUtilOOB-isValCreTopPay_O__table_jkr_mjr_tzb} {#TopAPIUtilOOB-isValCreTopPay_O__table_kkr_mjr_tzb__entry__2}

| タイプ | 説明 |
|-|-|
| ブール | topicObjectパラメーターで渡されたペイロードがスキーマと要求本文の検証に合格したかどうかを示すフラグ。 有効な値： * true:ペイロードは有効です。 * false:ペイロードが無効です。 |
[表 : 6. 返される内容]

{#TopAPIUtilOOB-isValCreTopPay_O__table_kkr_mjr_tzb}  
次のコード例は、このメソッドを呼び出す方法を示しています。

    processTopicCreation: function(topicObject) {
      try {
        var warnings = [];

        var schema = this.getCreateTopicSchema();
        if (!this.isValidCreateTopicPayload(topicObject, schema, warnings)) {
          this._logger.logDebug("Create Topic : validation failed");
          return this.response;
        }
        this.createTopicHelper(topicObject, warnings);
        this._logger.logDebug("Create Topic: Topic created succesfully");
      } catch (ex) {
        this._logger.logErr("Create Topic : Process aborted, error is: " + ex);
        var errorObj = this.apiCoreUtil.getErrorObj(sn_tmt_core.Constants.ERROR_CODES.INTERNAL_ERROR, Constants.MESSAGES.TOPIC_CREATE_ERROR, Constants.MESSAGES.TOPIC_CREATE_ERROR);
        var details = [];
        details.push(this.apiCoreUtil.getErrorDetailsObj(ex.message + '', ''));
        errorObj.details = details;
        this.response.details = errorObj;
      }

      return this.response;
    },

## TopicAPIUtilsOOB - prepareCreateTopicResponse(オブジェクト topicObject, 文字列 topicSysId, 配列 warnings) {#ariaid-title5}

イベント管理トピックオープン API - POST /sn_api_notif_mgmt/topic エンドポイント呼び出しへの応答を生成して返します。
イベント管理トピックオープン API - POST /sn_api_notif_mgmt/topic エンドポイントによって返される応答オブジェクトをカスタマイズする場合は、TopicAPIUtils スクリプトインクルードでこのメソッドを上書きする必要があります。
{#TopAPIUtilOOB-prepCreTopResp_OSA__table_jkr_mjr_tzb__entry__3}{#TopAPIUtilOOB-prepCreTopResp_OSA__TopicAPIUtilsOOB-topicObject-entry}

| 名前 | タイプ | 説明 |
|-|-|-|
| トピックオブジェクト | オブジェクト | [イベント管理トピックオープン API](https://www.servicenow.com/docs/Q~TptFf~K09ln83bndHnnQ#event_management_topic-api "イベント管理トピックオープン API は、メッセージブローカーを介してトピックを送信し、ServiceNowインスタンスに保存できるようにするエンドポイントを提供します。")エンドポイントに渡されるトピックペイロードオブジェクト。 例： { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } このオブジェクトのスキーマは、 <var class="keyword varname">sn_api_notif_mgmtにあるConstants.SCHEMA.CREATE_TOPIC_SCHEMA</var> で定義されているものと一致する必要があります 。定数スクリプト インクルード。 |
| トピック SysID | 文字列 | イベント管理トピックオープン API - POST /sn_api_notif_mgmt/topic 呼び出しの一部として作成されたトピックのSys_id。トピック \[sn_api_notif_mgmt_topic\] テーブルにあります。 |
| warnings | アレイ | メソッドで「警告」レベルの問題が発生した場合に、 [イベント管理トピックオープン API](https://www.servicenow.com/docs/Q~TptFf~K09ln83bndHnnQ#event_management_topic-api "イベント管理トピックオープン API は、メッセージブローカーを介してトピックを送信し、ServiceNowインスタンスに保存できるようにするエンドポイントを提供します。") エンドポイント応答で返される警告メッセージ。 このパラメーターを使用すると、このエンドポイントの実装にカスタム警告メッセージを追加できます。 追加の警告メッセージがない場合は、空の配列を渡す必要があります。 |
[表 : 7. パラメーター]

{#TopAPIUtilOOB-prepCreTopResp_OSA__table_jkr_mjr_tzb} {#TopAPIUtilOOB-prepCreTopResp_OSA__table_kkr_mjr_tzb__entry__2}

| タイプ | 説明 |
|-|-|
| オブジェクト | エンドポイント応答オブジェクト。 例： { "externalId": "ext001", "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "namespace": "telecomEvents", "id": "7ee9850443c3f550461f99612bb8f223" } |
[表 : 8. 返される内容]

{#TopAPIUtilOOB-prepCreTopResp_OSA__table_kkr_mjr_tzb}  
次のコード例は、このメソッドを呼び出す方法を示しています。

     createTopicHelper: function(topicObject, warnings) {
      var topicObj = new sn_tmt_core.BaseObject();
      topicObj.setValue('topic_name', topicObject.name);
      if (!gs.nil(topicObject.headerQuery))
        topicObj.setValue('header_query', topicObject.headerQuery);
      if (!gs.nil(topicObject.contentQuery))
        topicObj.setValue('content_query', topicObject.contentQuery);
      if (!gs.nil(topicObject.namespace))
        topicObj.setValue('namespace', topicObject.namespace);
      if (!gs.nil(topicObject.externalId))
        topicObj.setValue('topic_id', topicObject.externalId);
      topicObj.setValue('type', "egress");
      topicObj.setValue('user_created', false);

      new TopicUtil().createTopic(topicObj);

      // If topic external id is passed by external system, add it in topic id field. This will act as an external id for us.

      var topicGr = TopicDAO.getTopicByNameHeaderContentNamespace(topicObject.name, topicObject.headerQuery, topicObject.contentQuery, topicObject.namespace, '');

      if (topicGr && topicGr.next())
        var newTopicSysId = topicGr.getValue('sys_id');

        this.prepareCreateTopicResponse(topicObject, newTopicSysId, warnings);
        return this.response;

    },

## TopicAPIUtilsOOB - processTopicCreation(オブジェクト topicObject) {#ariaid-title6}

イベント管理トピックオープン API エンドポイントによって行われた要求を処理します。
このメソッドは、データの挿入、スキーマ検証、要求本文の検証、および応答オーケストレーションに必要なヘルパー メソッドを呼び出します。[イベント管理トピックを開く - POST /sn_api_notif_mgmt/topic](https://www.servicenow.com/docs/Q~TptFf~K09ln83bndHnnQ#evt_man_top-POST-topic "トピック [sn_api_notif_mgmt_topic] テーブルに新しいレコードを作成し、渡されたトピック情報をそのレコードに保存します。")要求の基本処理をカスタマイズする必要がある場合は、このメソッドを上書きします。それ以外の場合は、個々のヘルパー メソッドをオーバーライドします。
{#TopAPIUtilOOB-processTopicCreation_O__table_s2k_n3k_tzb__entry__3}{#TopAPIUtilOOB-processTopicCreation_O__TopicAPIUtilsOOB-topicObject-entry}

| 名前 | タイプ | 説明 |
|-|-|-|
| トピックオブジェクト | オブジェクト | [イベント管理トピックオープン API](https://www.servicenow.com/docs/Q~TptFf~K09ln83bndHnnQ#event_management_topic-api "イベント管理トピックオープン API は、メッセージブローカーを介してトピックを送信し、ServiceNowインスタンスに保存できるようにするエンドポイントを提供します。")エンドポイントに渡されるトピックペイロードオブジェクト。 例： { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } このオブジェクトのスキーマは、 <var class="keyword varname">sn_api_notif_mgmtにあるConstants.SCHEMA.CREATE_TOPIC_SCHEMA</var> で定義されているものと一致する必要があります 。定数スクリプト インクルード。 |
[表 : 9. パラメーター]

{#TopAPIUtilOOB-processTopicCreation_O__table_s2k_n3k_tzb} {#TopAPIUtilOOB-processTopicCreation_O__table_t2k_n3k_tzb__entry__2}

| タイプ | 説明 |
|-|-|
| オブジェクト | エンドポイント応答オブジェクト。 例： { "externalId": "ext001", "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "namespace": "telecomEvents", "id": "7ee9850443c3f550461f99612bb8f223" } |
[表 : 10. 返される内容]

{#TopAPIUtilOOB-processTopicCreation_O__table_t2k_n3k_tzb}  
次のコード例は、このメソッドを呼び出す方法を示しています。

    try {
      var topicAPIUtils = new TopicAPIUtils();
      var apiResponse = topicAPIUtils.processTopicCreation(request.body.data);
      response.setStatus(apiResponse.status);
      return tsmOpenAPIUtil.responseBuilder(response, apiResponse.details);
    } 

## TopicAPIUtilsOOB - transformCreateTopicResponse(オブジェクト topicObject, 文字列 topicSysId) {#ariaid-title7}

イベント管理トピックオープン API - POST /sn_api_notif_mgmt/topic エンドポイントに返される応答オブジェクトにカスタムデータを追加する機能を提供します。
この応答オブジェクトをカスタマイズするには、 TopicAPIUtils スクリプトインクルードでこのメソッドを上書きします。
{#TopAPIUtilOOB-tranCreTopResp_OS__table_jkr_mjr_tzb__entry__3}{#TopAPIUtilOOB-tranCreTopResp_OS__TopicAPIUtilsOOB-topicObject-entry}

| 名前 | タイプ | 説明 |
|-|-|-|
| トピックオブジェクト | オブジェクト | [イベント管理トピックオープン API](https://www.servicenow.com/docs/Q~TptFf~K09ln83bndHnnQ#event_management_topic-api "イベント管理トピックオープン API は、メッセージブローカーを介してトピックを送信し、ServiceNowインスタンスに保存できるようにするエンドポイントを提供します。")エンドポイントに渡されるトピックペイロードオブジェクト。 例： { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } このオブジェクトのスキーマは、 <var class="keyword varname">sn_api_notif_mgmtにあるConstants.SCHEMA.CREATE_TOPIC_SCHEMA</var> で定義されているものと一致する必要があります 。定数スクリプト インクルード。 |
| トピック SysID | 文字列 | イベント管理トピックオープン API - POST /sn_api_notif_mgmt/topic 呼び出しの一部として作成されたトピックのSys_id。トピック \[sn_api_notif_mgmt_topic\] テーブルにあります。このレコードの情報をトピック応答オブジェクトに追加できます。 |
[表 : 11. パラメーター]

{#TopAPIUtilOOB-tranCreTopResp_OS__table_jkr_mjr_tzb} {#TopAPIUtilOOB-tranCreTopResp_OS__table_kkr_mjr_tzb__entry__2}

| タイプ | 説明 |
|-|-|
| オブジェクト | 変換されたエンドポイント応答オブジェクト。このオブジェクトは TMF688 に準拠している必要があります。 例： { "externalId": "ext001", "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "namespace": "telecomEvents", "id": "7ee9850443c3f550461f99612bb8f223" } |
[表 : 12. 返される内容]

{#TopAPIUtilOOB-tranCreTopResp_OS__table_kkr_mjr_tzb}  
次のコード例は、このメソッドを呼び出す方法を示しています。

    prepareCreateTopicResponse: function(topicObject, topicSysId, warnings) {
      if (!gs.nil(topicSysId)) {
        topicObject.id = topicSysId;
        this.response.status = sn_tmt_core.Constants.STATUS_CODES.CREATED;
        topicObject = this.transformCreateTopicResponse(topicObject, topicSysId); // Customize response payload as per requirement.
        this.response.details = topicObject;
        if (!gs.nil(warnings) && warnings.length > 0) {
          this.response.details.warnings = warnings;
        }
      } else {
        var errorObj = this.apiCoreUtil.getErrorObj(sn_tmt_core.Constants.ERROR_CODES.INTERNAL_ERROR, Constants.MESSAGES.CREATE_TOPIC_ERROR, Constants.MESSAGES.CREATE_TOPIC_ERROR);
        var details = [];
        details.push(this.apiCoreUtil.getErrorDetailsObj(Constants.MESSAGES.CREATE_TOPIC_ERROR, ''));
        errorObj.details = details;
        this.response.details = errorObj;
      }
    },

次のコード例は、このメソッドの既定の機能をオーバーライドするコードを示しています。

    transformCreateTopicResponse: function(topicObject, topicSysId) {
      new sn_tmt_core.BaseAPIUtil().removeNulls(topicObject);

      // Add custom attributes to the topicObject
      topicObject.origin = "ServiceNow",
      topicObject.ServiceId= "service001",
      return topicObject;
    },

## TopicAPIUtilsOOB:validateTopicAttributes(オブジェクト、topicObject、配列 details) {#ariaid-title8}

イベント管理トピックオープン API エンドポイントペイロードで渡されたトピック名、ヘッダーとクエリ、コンテンツとクエリ、および名前空間の組み合わせが一意かどうかを検証します。
エンドポイントは、この属性の組み合わせを使用して、トピック \[sn_api_notif_mgmt_topic\] テーブルにトピックが現在存在するかどうかを判断します。

検証プロセスを変更する場合は、 TopicAPIUtils スクリプトインクルードでこのメソッドをオーバーライドする必要があります。
{#TopAPIUtilOOB-valTopAtts_O_A__table_i1s_zqr_tzb__entry__3}{#TopAPIUtilOOB-valTopAtts_O_A__TopicAPIUtilsOOB-topicObject-entry}

| 名前 | タイプ | 説明 |
|-|-|-|
| トピックオブジェクト | オブジェクト | [イベント管理トピックオープン API](https://www.servicenow.com/docs/Q~TptFf~K09ln83bndHnnQ#event_management_topic-api "イベント管理トピックオープン API は、メッセージブローカーを介してトピックを送信し、ServiceNowインスタンスに保存できるようにするエンドポイントを提供します。")エンドポイントに渡されるトピックペイロードオブジェクト。 例： { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } このオブジェクトのスキーマは、 <var class="keyword varname">sn_api_notif_mgmtにあるConstants.SCHEMA.CREATE_TOPIC_SCHEMA</var> で定義されているものと一致する必要があります 。定数スクリプト インクルード。 |
| 詳細 | アレイ | メソッドで「警告」レベルの問題が発生した場合に、 [イベント管理トピックオープン API](https://www.servicenow.com/docs/Q~TptFf~K09ln83bndHnnQ#event_management_topic-api "イベント管理トピックオープン API は、メッセージブローカーを介してトピックを送信し、ServiceNowインスタンスに保存できるようにするエンドポイントを提供します。") エンドポイント応答で返される警告メッセージ。 このパラメーターを使用すると、このエンドポイントの実装にカスタム警告メッセージを追加できます。 追加の警告メッセージがない場合は、空の配列を渡す必要があります。 |
[表 : 13. パラメーター]

{#TopAPIUtilOOB-valTopAtts_O_A__table_i1s_zqr_tzb} {#TopAPIUtilOOB-valTopAtts_O_A__table_j1s_zqr_tzb__entry__2}

| タイプ | 説明 |
|-|-|
| ブール | topicObject パラメーターで渡されたトピック名、ヘッダーとクエリ、コンテンツとクエリ、および名前空間の組み合わせが一意かどうかを示すフラグ。 有効な値： * true:パラメーターの組み合わせは一意です。 * false:パラメーターの組み合わせが一意ではありません。 |
[表 : 14. 返される内容]

{#TopAPIUtilOOB-valTopAtts_O_A__table_j1s_zqr_tzb}  
次のコード例は、このメソッドを呼び出す方法を示しています。

    isValidCreateTopicPayload: function(topicObject, schema, warnings) {
      var isValidPayload = true;
      var details = [];
      var validationResults = this.jsonSchemaValidation.validateJSON(topicObject, schema, ''); // Schema validation
      var errorObj = this.apiCoreUtil.getErrorObj(sn_tmt_core.Constants.ERROR_CODES.MISSING_BODY_FIELD, sn_tmt_core.Constants.MESSAGES.MISSING_BODY_FIELD, sn_tmt_core.Constants.MESSAGES.MISSING_BODY_FIELD);

      if (validationResults.length > 0) {
        if (validationResults[0].message == Constants.PAYLOAD_MISSING) {
          this._logger.logDebug("isValidCreateTopicPayload: Missing request body, invalid payload");
          errorObj = this.apiCoreUtil.getErrorObj(sn_tmt_core.Constants.ERROR_CODES.MISSING_BODY, sn_tmt_core.Constants.MESSAGES.MISSING_BODY, sn_tmt_core.Constants.MESSAGES.MISSING_BODY);
          details.push(this.apiCoreUtil.getErrorDetailsObj(sn_tmt_core.Constants.MESSAGES.MISSING_BODY, ''));
          errorObj.details = details;
          this.response.details = errorObj;
          return false;
        } else {
          for (var i = 0; i < validationResults.length; i++) {
            var missingFieldMsg = sn_tmt_core.Constants.MESSAGES.MISSING_FIELD_KEY;
            var message = validationResults[i].message;
            var errorMessage = '';
            if (message.indexOf('missing') != -1) {
              var newMessage = this.apiCoreUtil.constructErrorMsg(message, validationResults[i].dataPath);
              errorMessage = missingFieldMsg.replace(/\$key/g, newMessage);
            } else {
              errorMessage = message;
            }
            details.push(this.apiCoreUtil.getErrorDetailsObj(errorMessage, validationResults[i].dataPath));
          }
        }
        isValidPayload = false;
      }
      var isValidTopicExternalId = this.validateTopicExternalId(topicObject, details);
      var isValidTopicAttributes = this.validatateTopicAttributes(topicObject, details);

      isValidPayload = isValidPayload && isValidTopicExternalId && isValidTopicAttributes;
        if (!isValidPayload) {
          errorObj.details = details;
          this.response.details = errorObj;
        }
        return isValidPayload;
      },

## TopicAPIUtilsOOB - validateTopicExternalId(オブジェクト topicObject, 配列 details) {#ariaid-title9}

イベント管理トピックオープン API エンドポイントの要求本文で渡されたトピック外部 ID を検証します。
基本実装では、外部 ID が空でないことが検証されるだけです。トピック外部 ID の検証プロセスを変更する場合は、 TopicAPIUtils スクリプトインクルードでこのメソッドを上書きする必要があります。渡された外部 ID は、トピック \[sn_api_notif_mgmt_topic\] テーブルの topic_id フィールドにマッピングされます。
{#TopAPIUtilOOB-valTopExtId_O_A__table_dyg_5mr_tzb__entry__3}{#TopAPIUtilOOB-valTopExtId_O_A__TopicAPIUtilsOOB-topicObject-entry}

| 名前 | タイプ | 説明 |
|-|-|-|
| トピックオブジェクト | オブジェクト | [イベント管理トピックオープン API](https://www.servicenow.com/docs/Q~TptFf~K09ln83bndHnnQ#event_management_topic-api "イベント管理トピックオープン API は、メッセージブローカーを介してトピックを送信し、ServiceNowインスタンスに保存できるようにするエンドポイントを提供します。")エンドポイントに渡されるトピックペイロードオブジェクト。 例： { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } このオブジェクトのスキーマは、 <var class="keyword varname">sn_api_notif_mgmtにあるConstants.SCHEMA.CREATE_TOPIC_SCHEMA</var> で定義されているものと一致する必要があります 。定数スクリプト インクルード。 |
| 詳細 | アレイ | メソッドで「エラー」レベルの問題が発生した場合に、 [イベント管理トピックオープン API](https://www.servicenow.com/docs/Q~TptFf~K09ln83bndHnnQ#event_management_topic-api "イベント管理トピックオープン API は、メッセージブローカーを介してトピックを送信し、ServiceNowインスタンスに保存できるようにするエンドポイントを提供します。") エンドポイント応答で返されるエラー/詳細メッセージ。 このパラメーターを使用すると、このエンドポイントの実装にカスタムエラーメッセージを追加できます。 追加のエラーメッセージがない場合は、空の配列を渡す必要があります。 |
[表 : 15. パラメーター]

{#TopAPIUtilOOB-valTopExtId_O_A__table_dyg_5mr_tzb} {#TopAPIUtilOOB-valTopExtId_O_A__table_eyg_5mr_tzb__entry__2}

| タイプ | 説明 |
|-|-|
| ブール | topicObjectパラメーターで渡された外部 ID が有効かどうかを示すフラグ。 有効な値： * true:外部 ID は有効です。 * false:外部 ID が無効です。 |
[表 : 16. 返される内容]

{#TopAPIUtilOOB-valTopExtId_O_A__table_eyg_5mr_tzb}  
次のコード例は、このメソッドを呼び出す方法を示しています。

    isValidCreateTopicPayload: function(topicObject, schema, warnings) {
      var isValidPayload = true;
      var details = [];
      var validationResults = this.jsonSchemaValidation.validateJSON(topicObject, schema, ''); // Schema validation
      var errorObj = this.apiCoreUtil.getErrorObj(sn_tmt_core.Constants.ERROR_CODES.MISSING_BODY_FIELD, sn_tmt_core.Constants.MESSAGES.MISSING_BODY_FIELD, sn_tmt_core.Constants.MESSAGES.MISSING_BODY_FIELD);

      if (validationResults.length > 0) {
        if (validationResults[0].message == Constants.PAYLOAD_MISSING) {
          this._logger.logDebug("isValidCreateTopicPayload: Missing request body, invalid payload");
          errorObj = this.apiCoreUtil.getErrorObj(sn_tmt_core.Constants.ERROR_CODES.MISSING_BODY, sn_tmt_core.Constants.MESSAGES.MISSING_BODY, sn_tmt_core.Constants.MESSAGES.MISSING_BODY);
          details.push(this.apiCoreUtil.getErrorDetailsObj(sn_tmt_core.Constants.MESSAGES.MISSING_BODY, ''));
          errorObj.details = details;
          this.response.details = errorObj;
          return false;
        } else {
          for (var i = 0; i < validationResults.length; i++) {
            var missingFieldMsg = sn_tmt_core.Constants.MESSAGES.MISSING_FIELD_KEY;
            var message = validationResults[i].message;
            var errorMessage = '';
            if (message.indexOf('missing') != -1) {
              var newMessage = this.apiCoreUtil.constructErrorMsg(message, validationResults[i].dataPath);
              errorMessage = missingFieldMsg.replace(/\$key/g, newMessage);
            } else {
              errorMessage = message;
            }
            details.push(this.apiCoreUtil.getErrorDetailsObj(errorMessage, validationResults[i].dataPath));
          }
        }
        isValidPayload = false;
      }
      var isValidTopicExternalId = this.validateTopicExternalId(topicObject, details);
      var isValidTopicAttributes = this.validatateTopicAttributes(topicObject, details);

      isValidPayload = isValidPayload && isValidTopicExternalId && isValidTopicAttributes;
        if (!isValidPayload) {
          errorObj.details = details;
          this.response.details = errorObj;
        }
        return isValidPayload;
      },


