---
sourceDocument: Xanadu-API-Referenz
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/de-DE/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - de-DE

ft:publication_title :

    - Xanadu-API-Referenz

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# TopicAPIUtilsOOB: Bereichsbezogen

# TopicAPIUtilsOOB: Bereichsbezogen {#ariaid-title1}

* Freigeben Version: Xanadu
* 
* Aktualisiert 1. August 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 10 Minuten Lesedauer

Die TopicAPIUtilsOOB-Skripteinbindung stellt Methoden bereit, die bei der Verarbeitung des Open API- Endpunkts des Ereignismanagement-Themas verwendet werden.

Wenn Sie die Standardfunktionalität der Event Management Topic Open APIändern möchten, müssen Sie die in dieser Skripteinbindung enthaltenen Funktionen in der `Skripteinbindung TopicAPIUtils überschreiben`.

Diese Skripteinbindung wird im Namespace `sn_api_notif_mgmt ausgeführt` und erfordert die Rolle sn_api_notif_mgmt.event_mgmt_integration.

## TopicAPIUtilsOOB - createTopicHelper(Object topicObject, Array Warnungen) {#ariaid-title2}

Fügt die im Endpunkt „ Offene Ereignismanagement-Thema-API -- POST /sn_api_notif_mgmt/topic " übergebenen Informationen in die Thementabelle \[sn_api_notif_mgmt_topic\] ein.
Wenn Sie diesen Einfügeprozess ändern möchten, müssen Sie diese Methode in der Skripteinbindung TopicAPIUtils überschreiben.
{#TopAPIUtilOOB-createTopHelp_O_A__table_jkr_mjr_tzb__entry__3}{#TopAPIUtilOOB-createTopHelp_O_A__TopicAPIUtilsOOB-topicObject-entry}{#TopAPIUtilOOB-createTopHelp_O_A__TopicAPIUtilsOOB-warnings-entry}

| Name | Typ | Beschreibung |
|-|-|-|
| topicObject | Objekt | An den Endpunkt [Ereignismanagement-Thema -- Offene API](https://servicenow-prod.fluidtopics.net/QVI2gmm8bySRBfd_NtxgEg#event_management_topic-api "Die Event Management Topic Open API bietet einen Endpunkt, mit dem Sie ein Thema über Ihren Nachrichten-Broker senden und in einer Instanz ServiceNow speichern können.") übergebenes Nutzlastobjekt des Themas. Beispiel: { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } Das Schema dieses Objekts muss mit dem übereinstimmen, was in „ <var class="keyword varname">Constants.SCHEMA.CREATE_TOPIC_SCHEMA</var> " in der Skripteinbindung sn_api_notif_mgmt.Constants definiert ist. |
| Warnungen | Array | Warnmeldungen, die in der Endpunktantwort [Ereignismanagement-Thema -- Offene API](https://servicenow-prod.fluidtopics.net/QVI2gmm8bySRBfd_NtxgEg#event_management_topic-api "Die Event Management Topic Open API bietet einen Endpunkt, mit dem Sie ein Thema über Ihren Nachrichten-Broker senden und in einer Instanz ServiceNow speichern können.") zurückgegeben werden sollen, wenn die Methode auf ein Problem auf der Ebene „Warnung" stößt. Mit diesem Parameter können Sie anwenderdefinierte Warnmeldungen zu Ihrer Implementierung dieses Endpunkts hinzufügen. Wenn keine zusätzlichen Warnmeldungen angezeigt werden, müssen Sie ein leeres Array übergeben. |
[Tabelle : 1. Parameter]

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

| Typ | Beschreibung |
|-|-|
| Objekt | Antwortobjekt. { "contentQuery": "String", "eventType": "String", "externalId": "String", "headerQuery": "String", "id": "String", "name": "String" } Weitere Informationen zu diesen Parametern finden Sie unter den Rückgabeergebnissen für [Ereignismanagement-Thema offen -- POST /sn_api_notif_mgmt/topic](https://servicenow-prod.fluidtopics.net/QVI2gmm8bySRBfd_NtxgEg#evt_man_top-POST-topic "Erstellt einen neuen Datensatz in der Thementabelle [sn_api_notif_mgmt_topic] und speichert die übergebenen Themeninformationen in diesem Datensatz."). |
[Tabelle : 2. Ausgabe]

{#TopAPIUtilOOB-createTopHelp_O_A__table_kkr_mjr_tzb}  
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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}

Gibt das definierte Schema für die Nutzlast zurück, die vom Endpunkt „Offene Ereignismanagement-Themen-API -- POST /sn_api_notif_mgmt/topic" zum Validieren der Themennutzlast verwendet wird.
Wenn Sie das Schema für die Nutzlast des Themas anpassen möchten, müssen Sie das Standardschema für Nutzlast ( <var class="keyword varname">Constants.SCHEMA</var>) überschreiben, das sich in der Skripteinbindung sn_api_notif_mgmt.Constants befindet. Der Standardwert dieses Schemas ist:

    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}

| Name | Typ | Beschreibung |
|-|-|-|
| Keine |   |   |
[Tabelle : 3. Parameter]

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

| Typ | Beschreibung |
|-|-|
| Zeichenfolge | Schema für die Endpunkt-Payload „Ereignismanagement-Thema -- Offene API -- POST /sn_api_notif_mgmt/topic". Verwenden Sie dieses Schema, um das Schema zu validieren, das mit der Methode [TopicAPIUtilsOOB - isValidCreateTopicPayload(Object topicObject, Zeichenfolgenschema, Array-Warnungen)](https://servicenow-prod.fluidtopics.net/NW3TEgcG3qNK8ybPTAGyBA#TopAPIUtilOOB-isValCreTopPay_O "Validiert die Nutzlast, die an den Endpunkt „Offene Ereignismanagement-Themen-API – POST /sn_api_notif_mgmt/topic“ übergeben wird. Diese Validierung wird für den Anforderungstext und das Schema durchgeführt.") an den Endpunkt übergeben wurde. |
[Tabelle : 4. Ergebnisse]

{#TopAPIUtilOOB-getCreTopSchema__table_uqw_tnw_tzb}  
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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(Object topicObject, Zeichenfolgenschema, Array-Warnungen) {#ariaid-title4}

Validiert die Nutzlast, die an den Endpunkt „Offene Ereignismanagement-Themen-API -- POST /sn_api_notif_mgmt/topic" übergeben wird. Diese Validierung wird für den Anforderungstext und das Schema durchgeführt.
Wenn Sie den Validierungsprozess für die Nutzlast ändern möchten, müssen Sie diese Methode in der Skripteinbindung TopicAPIUtils überschreiben.
{#TopAPIUtilOOB-isValCreTopPay_O__table_jkr_mjr_tzb__entry__3}{#TopAPIUtilOOB-isValCreTopPay_O__TopicAPIUtilsOOB-topicObject-entry}

| Name | Typ | Beschreibung |
|-|-|-|
| topicObject | Objekt | An den Endpunkt [Ereignismanagement-Thema -- Offene API](https://servicenow-prod.fluidtopics.net/QVI2gmm8bySRBfd_NtxgEg#event_management_topic-api "Die Event Management Topic Open API bietet einen Endpunkt, mit dem Sie ein Thema über Ihren Nachrichten-Broker senden und in einer Instanz ServiceNow speichern können.") übergebenes Nutzlastobjekt des Themas. Beispiel: { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } Das Schema dieses Objekts muss mit dem übereinstimmen, was in „ <var class="keyword varname">Constants.SCHEMA.CREATE_TOPIC_SCHEMA</var> " in der Skripteinbindung sn_api_notif_mgmt.Constants definiert ist. |
| Schema | Zeichenfolge | Schema, das zum Validieren der Themennutzlast verwendet wird. Verwenden Sie die Methode [TopicAPIUtilsOOB -- getCreateTopicSchema()](https://servicenow-prod.fluidtopics.net/NW3TEgcG3qNK8ybPTAGyBA#TopAPIUtilOOB-getCreTopSchema "Gibt das definierte Schema für die Nutzlast zurück, die vom Endpunkt „Offene Ereignismanagement-Themen-API – POST /sn_api_notif_mgmt/topic“ zum Validieren der Themennutzlast verwendet wird."), um dieses Schema abzurufen. |
| Warnungen | Array | Warnmeldungen, die in der Endpunktantwort [Ereignismanagement-Thema -- Offene API](https://servicenow-prod.fluidtopics.net/QVI2gmm8bySRBfd_NtxgEg#event_management_topic-api "Die Event Management Topic Open API bietet einen Endpunkt, mit dem Sie ein Thema über Ihren Nachrichten-Broker senden und in einer Instanz ServiceNow speichern können.") zurückgegeben werden sollen, wenn die Methode auf ein Problem auf der Ebene „Warnung" stößt. Mit diesem Parameter können Sie anwenderdefinierte Warnmeldungen zu Ihrer Implementierung dieses Endpunkts hinzufügen. Wenn keine zusätzlichen Warnmeldungen angezeigt werden, müssen Sie ein leeres Array übergeben. |
[Tabelle : 5. Parameter]

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

| Typ | Beschreibung |
|-|-|
| Boolean | Kennzeichnung, die angibt, ob die im Parameter topicObject übergebene Nutzlast die Schema- und Anforderungstextvalidierungen bestanden hat. Gültige Werte: * true: Nutzlast ist gültig. * false: Nutzlast ist ungültig. |
[Tabelle : 6. Ergebnisse]

{#TopAPIUtilOOB-isValCreTopPay_O__table_kkr_mjr_tzb}  
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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 - präparCreateTopicResponse(Object topicObject, Zeichenfolge topicSysId, Array Warnungen) {#ariaid-title5}

Generiert die Antwort und gibt sie an einen Endpunktaufruf „Event Management Topic Open API - POST /sn_api_notif_mgmt/topic" zurück.
Wenn Sie das vom Endpunkt „Event Management Topic Open API - POST /sn_api_notif_mgmt/topic" zurückgegebene Antwortobjekt anpassen möchten, müssen Sie diese Methode in der Skripteinbindung TopicAPIUtils überschreiben.
{#TopAPIUtilOOB-prepCreTopResp_OSA__table_jkr_mjr_tzb__entry__3}{#TopAPIUtilOOB-prepCreTopResp_OSA__TopicAPIUtilsOOB-topicObject-entry}

| Name | Typ | Beschreibung |
|-|-|-|
| topicObject | Objekt | An den Endpunkt [Ereignismanagement-Thema -- Offene API](https://servicenow-prod.fluidtopics.net/QVI2gmm8bySRBfd_NtxgEg#event_management_topic-api "Die Event Management Topic Open API bietet einen Endpunkt, mit dem Sie ein Thema über Ihren Nachrichten-Broker senden und in einer Instanz ServiceNow speichern können.") übergebenes Nutzlastobjekt des Themas. Beispiel: { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } Das Schema dieses Objekts muss mit dem übereinstimmen, was in „ <var class="keyword varname">Constants.SCHEMA.CREATE_TOPIC_SCHEMA</var> " in der Skripteinbindung sn_api_notif_mgmt.Constants definiert ist. |
| topicSysId | Zeichenfolge | Sys_id des Themas, das als Teil des Aufrufs „Ereignismanagement-Thema -- Offene API -- POST /sn_api_notif_mgmt/topic" erstellt wurde. Befindet sich in der Thementabelle \[sn_api_notif_mgmt_topic\]. |
| Warnungen | Array | Warnmeldungen, die in der Endpunktantwort [Ereignismanagement-Thema -- Offene API](https://servicenow-prod.fluidtopics.net/QVI2gmm8bySRBfd_NtxgEg#event_management_topic-api "Die Event Management Topic Open API bietet einen Endpunkt, mit dem Sie ein Thema über Ihren Nachrichten-Broker senden und in einer Instanz ServiceNow speichern können.") zurückgegeben werden sollen, wenn die Methode auf ein Problem auf der Ebene „Warnung" stößt. Mit diesem Parameter können Sie anwenderdefinierte Warnmeldungen zu Ihrer Implementierung dieses Endpunkts hinzufügen. Wenn keine zusätzlichen Warnmeldungen angezeigt werden, müssen Sie ein leeres Array übergeben. |
[Tabelle : 7. Parameter]

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

| Typ | Beschreibung |
|-|-|
| Objekt | Endpunkt-Antwortobjekt. Beispiel: { "externalId": "ext001", "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "namespace": "telecomEvents", "id": "7ee9850443c3f550461f99612bb8f223" } |
[Tabelle : 8. Ergebnisse]

{#TopAPIUtilOOB-prepCreTopResp_OSA__table_kkr_mjr_tzb}  
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

     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(Object topicObject) {#ariaid-title6}

Verarbeitet die Anforderung, die vom Endpunkt der Ereignismanagement-Themen-Offen-API gestellt wurde.
Diese Methode ruft die Hilfsmethoden auf, die für das Einfügen von Daten, die Schemavalidierung, die Validierung des Anforderungstexts und die Antwortorchestrierung erforderlich sind. Überschreiben Sie diese Methode, wenn Sie die grundlegende Verarbeitung der [Ereignismanagement-Thema offen -- POST /sn_api_notif_mgmt/topic](https://servicenow-prod.fluidtopics.net/QVI2gmm8bySRBfd_NtxgEg#evt_man_top-POST-topic "Erstellt einen neuen Datensatz in der Thementabelle [sn_api_notif_mgmt_topic] und speichert die übergebenen Themeninformationen in diesem Datensatz.") -Anforderung anpassen müssen. Andernfalls überschreiben Sie die einzelnen Hilfsmethoden.
{#TopAPIUtilOOB-processTopicCreation_O__table_s2k_n3k_tzb__entry__3}{#TopAPIUtilOOB-processTopicCreation_O__TopicAPIUtilsOOB-topicObject-entry}

| Name | Typ | Beschreibung |
|-|-|-|
| topicObject | Objekt | An den Endpunkt [Ereignismanagement-Thema -- Offene API](https://servicenow-prod.fluidtopics.net/QVI2gmm8bySRBfd_NtxgEg#event_management_topic-api "Die Event Management Topic Open API bietet einen Endpunkt, mit dem Sie ein Thema über Ihren Nachrichten-Broker senden und in einer Instanz ServiceNow speichern können.") übergebenes Nutzlastobjekt des Themas. Beispiel: { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } Das Schema dieses Objekts muss mit dem übereinstimmen, was in „ <var class="keyword varname">Constants.SCHEMA.CREATE_TOPIC_SCHEMA</var> " in der Skripteinbindung sn_api_notif_mgmt.Constants definiert ist. |
[Tabelle : 9. Parameter]

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

| Typ | Beschreibung |
|-|-|
| Objekt | Endpunkt-Antwortobjekt. Beispiel: { "externalId": "ext001", "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "namespace": "telecomEvents", "id": "7ee9850443c3f550461f99612bb8f223" } |
[Tabelle : 10. Ausgabe]

{#TopAPIUtilOOB-processTopicCreation_O__table_t2k_n3k_tzb}  
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

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

## TopicAPIUtilsOOB - transformCreateTopicResponse(Object topicObject, String topicSysId) {#ariaid-title7}

Bietet die Möglichkeit, dem Antwortobjekt, das an den Endpunkt „Offene Ereignismanagement-Themen-API -- POST /sn_api_notif_mgmt/topic" zurückgegeben wird, anwenderdefinierte Daten hinzuzufügen.
Um dieses Antwortobjekt anzupassen, überschreiben Sie diese Methode in der Skripteinbindung TopicAPIUtils.
{#TopAPIUtilOOB-tranCreTopResp_OS__table_jkr_mjr_tzb__entry__3}{#TopAPIUtilOOB-tranCreTopResp_OS__TopicAPIUtilsOOB-topicObject-entry}

| Name | Typ | Beschreibung |
|-|-|-|
| topicObject | Objekt | An den Endpunkt [Ereignismanagement-Thema -- Offene API](https://servicenow-prod.fluidtopics.net/QVI2gmm8bySRBfd_NtxgEg#event_management_topic-api "Die Event Management Topic Open API bietet einen Endpunkt, mit dem Sie ein Thema über Ihren Nachrichten-Broker senden und in einer Instanz ServiceNow speichern können.") übergebenes Nutzlastobjekt des Themas. Beispiel: { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } Das Schema dieses Objekts muss mit dem übereinstimmen, was in „ <var class="keyword varname">Constants.SCHEMA.CREATE_TOPIC_SCHEMA</var> " in der Skripteinbindung sn_api_notif_mgmt.Constants definiert ist. |
| topicSysId | Zeichenfolge | Sys_id des Themas, das als Teil des Aufrufs „Ereignismanagement-Thema -- Offene API -- POST /sn_api_notif_mgmt/topic" erstellt wurde. Befindet sich in der Thementabelle \[sn_api_notif_mgmt_topic\]. Sie können dem Themenantwortobjekt Informationen aus diesem Datensatz hinzufügen. |
[Tabelle : 11. Parameter]

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

| Typ | Beschreibung |
|-|-|
| Objekt | Transformiertes Endpunkt-Antwortobjekt. Dieses Objekt muss TMF688-konform sein. Beispiel: { "externalId": "ext001", "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "namespace": "telecomEvents", "id": "7ee9850443c3f550461f99612bb8f223" } |
[Tabelle : 12. Ergebnisse]

{#TopAPIUtilOOB-tranCreTopResp_OS__table_kkr_mjr_tzb}  
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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;
      }
    },

Das folgende Codebeispiel zeigt Code zum Überschreiben der Standardfunktionalität dieser Methode.

    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 - validTopicAttributes(Object topicObject, Array Details) {#ariaid-title8}

Überprüft, ob die Kombination aus Themenname, Header-Abfrage, Inhaltsabfrage und Namespace, die in der Nutzlast des Ereignismanagement-Themen-Open-API -Endpunkts übergeben wird, eindeutig ist.
Der Endpunkt verwendet diese Attributkombinationen, um zu bestimmen, ob das Thema derzeit in der Tabelle „Thema" \[sn_api_notif_mgmt_topic\] vorhanden ist.

Wenn Sie den Validierungsprozess ändern möchten, müssen Sie diese Methode in der Skripteinbindung TopicAPIUtils überschreiben.
{#TopAPIUtilOOB-valTopAtts_O_A__table_i1s_zqr_tzb__entry__3}{#TopAPIUtilOOB-valTopAtts_O_A__TopicAPIUtilsOOB-topicObject-entry}

| Name | Typ | Beschreibung |
|-|-|-|
| topicObject | Objekt | An den Endpunkt [Ereignismanagement-Thema -- Offene API](https://servicenow-prod.fluidtopics.net/QVI2gmm8bySRBfd_NtxgEg#event_management_topic-api "Die Event Management Topic Open API bietet einen Endpunkt, mit dem Sie ein Thema über Ihren Nachrichten-Broker senden und in einer Instanz ServiceNow speichern können.") übergebenes Nutzlastobjekt des Themas. Beispiel: { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } Das Schema dieses Objekts muss mit dem übereinstimmen, was in „ <var class="keyword varname">Constants.SCHEMA.CREATE_TOPIC_SCHEMA</var> " in der Skripteinbindung sn_api_notif_mgmt.Constants definiert ist. |
| details | Array | Warnmeldungen, die in der Endpunktantwort [Ereignismanagement-Thema -- Offene API](https://servicenow-prod.fluidtopics.net/QVI2gmm8bySRBfd_NtxgEg#event_management_topic-api "Die Event Management Topic Open API bietet einen Endpunkt, mit dem Sie ein Thema über Ihren Nachrichten-Broker senden und in einer Instanz ServiceNow speichern können.") zurückgegeben werden sollen, wenn die Methode auf ein Problem auf der Ebene „Warnung" stößt. Mit diesem Parameter können Sie anwenderdefinierte Warnmeldungen zu Ihrer Implementierung dieses Endpunkts hinzufügen. Wenn keine zusätzlichen Warnmeldungen angezeigt werden, müssen Sie ein leeres Array übergeben. |
[Tabelle : 13. Parameter]

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

| Typ | Beschreibung |
|-|-|
| Boolean | Kennzeichnung, die angibt, ob die Kombination aus Themenname, Header-Abfrage, Inhaltsabfrage und Namespace, die im Parameter topicObject übergeben wird, eindeutig ist. Gültige Werte: * true: Parameterkombination ist eindeutig. * false: Parameterkombination ist nicht eindeutig. |
[Tabelle : 14. Ergebnisse]

{#TopAPIUtilOOB-valTopAtts_O_A__table_j1s_zqr_tzb}  
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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 - validTopicExternalId(Objekt topicObject, Array-Details) {#ariaid-title9}

Validiert die externe ID des Themas, die im Anforderungstext des Open API-Endpunkts des Ereignismanagement- Themas übergeben wird.
In der Basisimplementierung wird nur überprüft, ob die externe ID nicht leer ist. Wenn Sie den Validierungsprozess für die externe ID des Themas ändern möchten, müssen Sie diese Methode in der Skripteinbindung TopicAPIUtils überschreiben. Die übergebene externe ID wird dem Feld „topic_id" in der Tabelle „Thema" \[sn_api_notif_mgmt_topic\] zugeordnet.
{#TopAPIUtilOOB-valTopExtId_O_A__table_dyg_5mr_tzb__entry__3}{#TopAPIUtilOOB-valTopExtId_O_A__TopicAPIUtilsOOB-topicObject-entry}

| Name | Typ | Beschreibung |
|-|-|-|
| topicObject | Objekt | An den Endpunkt [Ereignismanagement-Thema -- Offene API](https://servicenow-prod.fluidtopics.net/QVI2gmm8bySRBfd_NtxgEg#event_management_topic-api "Die Event Management Topic Open API bietet einen Endpunkt, mit dem Sie ein Thema über Ihren Nachrichten-Broker senden und in einer Instanz ServiceNow speichern können.") übergebenes Nutzlastobjekt des Themas. Beispiel: { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } Das Schema dieses Objekts muss mit dem übereinstimmen, was in „ <var class="keyword varname">Constants.SCHEMA.CREATE_TOPIC_SCHEMA</var> " in der Skripteinbindung sn_api_notif_mgmt.Constants definiert ist. |
| details | Array | Fehler-/Detailmeldungen, die in der Endpunktantwort [Ereignismanagement-Thema -- Offene API](https://servicenow-prod.fluidtopics.net/QVI2gmm8bySRBfd_NtxgEg#event_management_topic-api "Die Event Management Topic Open API bietet einen Endpunkt, mit dem Sie ein Thema über Ihren Nachrichten-Broker senden und in einer Instanz ServiceNow speichern können.") zurückgegeben werden sollen, wenn die Methode auf ein Problem auf der Ebene „Fehler" stößt. Mit diesem Parameter können Sie Ihrer Implementierung dieses Endpunkts anwenderdefinierte Fehlermeldungen hinzufügen. Wenn keine zusätzlichen Fehlermeldungen angezeigt werden, müssen Sie ein leeres Array übergeben. |
[Tabelle : 15. Parameter]

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

| Typ | Beschreibung |
|-|-|
| Boolean | Kennzeichnung, die angibt, ob die im Parameter topicObject übergebene externe ID gültig ist. Gültige Werte: * wahr: Die externe ID ist gültig. * „falsch": Die externe ID ist ungültig. |
[Tabelle : 16. Ergebnisse]

{#TopAPIUtilOOB-valTopExtId_O_A__table_eyg_5mr_tzb}  
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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;
      },


