---
sourceDocument: Referência de API do Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - pt-BR

ft:publication_title :

    - Referência de API do Xanadu

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# TopicAPIUtilsOOB - com escopo

# TopicAPIUtilsOOB - com escopo {#ariaid-title1}

* Versão de lançamento: Xanadu
* 
* Atualizado 1 de ago. de 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 11 min. de leitura

A inclusão de script TopicAPIUtilsOOB fornece métodos que são usados ao processar o endpoint da API aberta do tópico de gestão de eventos.

Se você quiser mudar a funcionalidade padrão da API Aberto do tópico de gestão de eventos, será necessário substituir as funções contidas nesta inclusão de script na inclusão de script `TopicAPIUtils`.

Esta inclusão de script é executada no namespace `sn_api_notif_mgmt` e requer a função sn_api_notif_mgmt.event_mgmt_integration.

## TopicAPIUtilsOOB - createTopicHelper(Object topicObject, avisos de matriz) {#ariaid-title2}

Insere as informações passadas no endpoint de API aberta do tópico Gestão de eventos - POST /sn_api_notif_mgmt/topic na tabela Tópico \[sn_api_notif_mgmt_topic\].
Se você quiser modificar este processo de inserção, será necessário substituir este método na inclusão de script 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}

| Nome | Tipo | Descrição |
|-|-|-|
| topicObject | Objeto | Objeto de carga do tópico passado para o endpoint [API aberta do tópico de gestão de eventos](https://servicenow-prod.fluidtopics.net/garmAJeid_NBWF~FBo5t6g#event_management_topic-api "A API Aberto de tópicos da Gestão de eventos fornece um endpoint que permite enviar um tópico por meio do agente de mensagens e armazená-lo em uma instância ServiceNow."). Por exemplo: { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } O esquema deste objeto deve corresponder ao que está definido em <var class="keyword varname">Constants.SCHEMA.CREATE_TOPIC_SCHEMA</var> localizado na inclusão de script sn_api_notif_mgmt.Constants. |
| warnings | Matriz | Mensagens de aviso a serem retornadas na resposta do endpoint [API aberta do tópico de gestão de eventos](https://servicenow-prod.fluidtopics.net/garmAJeid_NBWF~FBo5t6g#event_management_topic-api "A API Aberto de tópicos da Gestão de eventos fornece um endpoint que permite enviar um tópico por meio do agente de mensagens e armazená-lo em uma instância ServiceNow.") se o método encontrar um problema no nível de "aviso". Este parâmetro permite adicionar mensagens de aviso personalizadas à implementação deste endpoint. Se não houver mensagens de aviso adicionais, você deverá passar uma matriz vazia. |
[Tabela 1. Parâmetros]

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

| Tipo | Descrição |
|-|-|
| Objeto | Objeto de resposta. { "contentQuery": "String", "eventType": "String", "externalId": "String", "headerQuery": "String", "id": "String", "name": "String" } Para obter detalhes sobre esses parâmetros, consulte os resultados retornados para [Tópico de gestão de eventos aberto - POST /sn_api_notif_mgmt/topic](https://servicenow-prod.fluidtopics.net/garmAJeid_NBWF~FBo5t6g#evt_man_top-POST-topic "Cria um novo registro na tabela Tópico [sn_api_notif_mgmt_topic] e salva as informações do tópico passadas nesse registro."). |
[Tabela 2. Retorna]

{#TopAPIUtilOOB-createTopHelp_O_A__table_kkr_mjr_tzb}  
O exemplo de código a seguir mostra como chamar este método.

    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}

Retorna o esquema definido para a carga usada pelo endpoint de API aberta do tópico de gestão de eventos - POST /sn_api_notif_mgmt/topic para validar a carga do tópico.
Se você quiser personalizar o esquema da carga do tópico, será necessário substituir o esquema de carga padrão, <var class="keyword varname">Constants.SCHEMA</var>, localizado na inclusão de script sn_api_notif_mgmt.Constants. Este valor padrão deste esquema é:

    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}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 3. Parâmetros]

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

| Tipo | Descrição |
|-|-|
| Cadeia de caracteres | Esquema da API aberta do tópico da Gestão de eventos - Carga de endpoint do POST /sn_api_notif_mgmt/topic. Use este esquema para validar o esquema passado para o endpoint usando o método [TopicAPIUtilsOOB - isValidCreateTopicPayload(Object topicObject, esquema de cadeia de caracteres, avisos de matriz)](https://servicenow-prod.fluidtopics.net/g4bUwBOJsQYsO6uVHtA7DQ#TopAPIUtilOOB-isValCreTopPay_O "Valida a carga passada para o endpoint de API aberta do tópico de gestão de eventos - POST /sn_api_notif_mgmt/topic. Essa validação é realizada no corpo da solicitação e no esquema."). |
[Tabela 4. Retorna]

{#TopAPIUtilOOB-getCreTopSchema__table_uqw_tnw_tzb}  
O exemplo de código a seguir mostra como chamar este método.

    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, esquema de cadeia de caracteres, avisos de matriz) {#ariaid-title4}

Valida a carga passada para o endpoint de API aberta do tópico de gestão de eventos - POST /sn_api_notif_mgmt/topic. Essa validação é realizada no corpo da solicitação e no esquema.
Se você quiser modificar o processo de validação da carga útil, será necessário substituir este método na inclusão de script TopicAPIUtils.
{#TopAPIUtilOOB-isValCreTopPay_O__table_jkr_mjr_tzb__entry__3}{#TopAPIUtilOOB-isValCreTopPay_O__TopicAPIUtilsOOB-topicObject-entry}

| Nome | Tipo | Descrição |
|-|-|-|
| topicObject | Objeto | Objeto de carga do tópico passado para o endpoint [API aberta do tópico de gestão de eventos](https://servicenow-prod.fluidtopics.net/garmAJeid_NBWF~FBo5t6g#event_management_topic-api "A API Aberto de tópicos da Gestão de eventos fornece um endpoint que permite enviar um tópico por meio do agente de mensagens e armazená-lo em uma instância ServiceNow."). Por exemplo: { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } O esquema deste objeto deve corresponder ao que está definido em <var class="keyword varname">Constants.SCHEMA.CREATE_TOPIC_SCHEMA</var> localizado na inclusão de script sn_api_notif_mgmt.Constants. |
| esquema | Cadeia de caracteres | Esquema a ser usado para validar a carga do tópico. Use o método [TopicAPIUtilsOOB -- getCreateTopicSchema()](https://servicenow-prod.fluidtopics.net/g4bUwBOJsQYsO6uVHtA7DQ#TopAPIUtilOOB-getCreTopSchema "Retorna o esquema definido para a carga usada pelo endpoint de API aberta do tópico de gestão de eventos - POST /sn_api_notif_mgmt/topic para validar a carga do tópico.") para obter este esquema. |
| warnings | Matriz | Mensagens de aviso a serem retornadas na resposta do endpoint [API aberta do tópico de gestão de eventos](https://servicenow-prod.fluidtopics.net/garmAJeid_NBWF~FBo5t6g#event_management_topic-api "A API Aberto de tópicos da Gestão de eventos fornece um endpoint que permite enviar um tópico por meio do agente de mensagens e armazená-lo em uma instância ServiceNow.") se o método encontrar um problema no nível de "aviso". Este parâmetro permite adicionar mensagens de aviso personalizadas à implementação deste endpoint. Se não houver mensagens de aviso adicionais, você deverá passar uma matriz vazia. |
[Tabela 5. Parâmetros]

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

| Tipo | Descrição |
|-|-|
| Booliano | Sinalizador que indica se a carga passada no parâmetro topicObject passou nas validações do esquema e do corpo da solicitação. Valores válidos: * verdadeiro: a carga é válida. * falso: a carga é inválida. |
[Tabela 6. Retorna]

{#TopAPIUtilOOB-isValCreTopPay_O__table_kkr_mjr_tzb}  
O exemplo de código a seguir mostra como chamar este método.

    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(Object topicObject, String topicSysId, Avisos de matriz) {#ariaid-title5}

Gera e retorna a resposta para uma chamada de endpoint de API aberta de tópico de gestão de eventos - POST /sn_api_notif_mgmt/topic.
Se você quiser personalizar o objeto de resposta retornado pelo endpoint de API aberta do tópico de gestão de eventos - POST /sn_api_notif_mgmt/topic, será necessário substituir este método na inclusão de script TopicAPIUtils.
{#TopAPIUtilOOB-prepCreTopResp_OSA__table_jkr_mjr_tzb__entry__3}{#TopAPIUtilOOB-prepCreTopResp_OSA__TopicAPIUtilsOOB-topicObject-entry}

| Nome | Tipo | Descrição |
|-|-|-|
| topicObject | Objeto | Objeto de carga do tópico passado para o endpoint [API aberta do tópico de gestão de eventos](https://servicenow-prod.fluidtopics.net/garmAJeid_NBWF~FBo5t6g#event_management_topic-api "A API Aberto de tópicos da Gestão de eventos fornece um endpoint que permite enviar um tópico por meio do agente de mensagens e armazená-lo em uma instância ServiceNow."). Por exemplo: { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } O esquema deste objeto deve corresponder ao que está definido em <var class="keyword varname">Constants.SCHEMA.CREATE_TOPIC_SCHEMA</var> localizado na inclusão de script sn_api_notif_mgmt.Constants. |
| topicSysId | Cadeia de caracteres | Sys_id do tópico criado como parte da API aberta do tópico da Gestão de eventos - POST /sn_api_notif_mgmt/topic. Localizado na tabela Tópico \[sn_api_notif_mgmt_topic\]. |
| warnings | Matriz | Mensagens de aviso a serem retornadas na resposta do endpoint [API aberta do tópico de gestão de eventos](https://servicenow-prod.fluidtopics.net/garmAJeid_NBWF~FBo5t6g#event_management_topic-api "A API Aberto de tópicos da Gestão de eventos fornece um endpoint que permite enviar um tópico por meio do agente de mensagens e armazená-lo em uma instância ServiceNow.") se o método encontrar um problema no nível de "aviso". Este parâmetro permite adicionar mensagens de aviso personalizadas à implementação deste endpoint. Se não houver mensagens de aviso adicionais, você deverá passar uma matriz vazia. |
[Tabela 7. Parâmetros]

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

| Tipo | Descrição |
|-|-|
| Objeto | Objeto de resposta do endpoint. Por exemplo: { "externalId": "ext001", "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "namespace": "telecomEvents", "id": "7ee9850443c3f550461f99612bb8f223" } |
[Tabela 8. Retorna]

{#TopAPIUtilOOB-prepCreTopResp_OSA__table_kkr_mjr_tzb}  
O exemplo de código a seguir mostra como chamar este método.

     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}

Processa a solicitação feita pelo endpoint da API aberta do tópico de gestão de eventos.
Este método invoca os métodos auxiliares necessários para inserção de dados, validação de esquema, validação de corpo de solicitação e orquestração de resposta. Substitua este método se precisar personalizar o processamento fundamental da solicitação [Tópico de gestão de eventos aberto - POST /sn_api_notif_mgmt/topic](https://servicenow-prod.fluidtopics.net/garmAJeid_NBWF~FBo5t6g#evt_man_top-POST-topic "Cria um novo registro na tabela Tópico [sn_api_notif_mgmt_topic] e salva as informações do tópico passadas nesse registro."). Caso contrário, substitua os métodos auxiliares individuais.
{#TopAPIUtilOOB-processTopicCreation_O__table_s2k_n3k_tzb__entry__3}{#TopAPIUtilOOB-processTopicCreation_O__TopicAPIUtilsOOB-topicObject-entry}

| Nome | Tipo | Descrição |
|-|-|-|
| topicObject | Objeto | Objeto de carga do tópico passado para o endpoint [API aberta do tópico de gestão de eventos](https://servicenow-prod.fluidtopics.net/garmAJeid_NBWF~FBo5t6g#event_management_topic-api "A API Aberto de tópicos da Gestão de eventos fornece um endpoint que permite enviar um tópico por meio do agente de mensagens e armazená-lo em uma instância ServiceNow."). Por exemplo: { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } O esquema deste objeto deve corresponder ao que está definido em <var class="keyword varname">Constants.SCHEMA.CREATE_TOPIC_SCHEMA</var> localizado na inclusão de script sn_api_notif_mgmt.Constants. |
[Tabela 9. Parâmetros]

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

| Tipo | Descrição |
|-|-|
| Objeto | Objeto de resposta do endpoint. Por exemplo: { "externalId": "ext001", "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "namespace": "telecomEvents", "id": "7ee9850443c3f550461f99612bb8f223" } |
[Tabela 10. Retorna]

{#TopAPIUtilOOB-processTopicCreation_O__table_t2k_n3k_tzb}  
O exemplo de código a seguir mostra como chamar este método.

    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}

Fornece a capacidade de adicionar dados personalizados ao objeto de resposta retornado para o endpoint de API aberta do tópico de gestão de eventos - POST /sn_api_notif_mgmt/topic.
Para personalizar este objeto de resposta, substitua este método na inclusão de script TopicAPIUtils.
{#TopAPIUtilOOB-tranCreTopResp_OS__table_jkr_mjr_tzb__entry__3}{#TopAPIUtilOOB-tranCreTopResp_OS__TopicAPIUtilsOOB-topicObject-entry}

| Nome | Tipo | Descrição |
|-|-|-|
| topicObject | Objeto | Objeto de carga do tópico passado para o endpoint [API aberta do tópico de gestão de eventos](https://servicenow-prod.fluidtopics.net/garmAJeid_NBWF~FBo5t6g#event_management_topic-api "A API Aberto de tópicos da Gestão de eventos fornece um endpoint que permite enviar um tópico por meio do agente de mensagens e armazená-lo em uma instância ServiceNow."). Por exemplo: { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } O esquema deste objeto deve corresponder ao que está definido em <var class="keyword varname">Constants.SCHEMA.CREATE_TOPIC_SCHEMA</var> localizado na inclusão de script sn_api_notif_mgmt.Constants. |
| topicSysId | Cadeia de caracteres | Sys_id do tópico criado como parte da API aberta do tópico da Gestão de eventos - POST /sn_api_notif_mgmt/topic. Localizado na tabela Tópico \[sn_api_notif_mgmt_topic\]. Você pode adicionar informações deste registro ao objeto de resposta do tópico. |
[Tabela 11. Parâmetros]

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

| Tipo | Descrição |
|-|-|
| Objeto | Objeto de resposta do endpoint transformado. Este objeto deve ser compatível com TMF688. Por exemplo: { "externalId": "ext001", "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "namespace": "telecomEvents", "id": "7ee9850443c3f550461f99612bb8f223" } |
[Tabela 12. Retorna]

{#TopAPIUtilOOB-tranCreTopResp_OS__table_kkr_mjr_tzb}  
O exemplo de código a seguir mostra como chamar este método.

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

O exemplo de código a seguir mostra o código para substituir a funcionalidade padrão deste método.

    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(Object topicObject, Detalhes da matriz) {#ariaid-title8}

Valida se a combinação de nome do tópico, consulta de cabeçalho, consulta de conteúdo e namespace passada na carga do endpoint da API aberta do tópico de gestão de eventos é exclusiva.
O endpoint usa essas combinações de atributo para determinar se o tópico existe atualmente na tabela Tópico \[sn_api_notif_mgmt_topic\].

Se você quiser modificar o processo de validação, precisará substituir este método na inclusão de script TopicAPIUtils.
{#TopAPIUtilOOB-valTopAtts_O_A__table_i1s_zqr_tzb__entry__3}{#TopAPIUtilOOB-valTopAtts_O_A__TopicAPIUtilsOOB-topicObject-entry}

| Nome | Tipo | Descrição |
|-|-|-|
| topicObject | Objeto | Objeto de carga do tópico passado para o endpoint [API aberta do tópico de gestão de eventos](https://servicenow-prod.fluidtopics.net/garmAJeid_NBWF~FBo5t6g#event_management_topic-api "A API Aberto de tópicos da Gestão de eventos fornece um endpoint que permite enviar um tópico por meio do agente de mensagens e armazená-lo em uma instância ServiceNow."). Por exemplo: { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } O esquema deste objeto deve corresponder ao que está definido em <var class="keyword varname">Constants.SCHEMA.CREATE_TOPIC_SCHEMA</var> localizado na inclusão de script sn_api_notif_mgmt.Constants. |
| detalhes | Matriz | Mensagens de aviso a serem retornadas na resposta do endpoint [API aberta do tópico de gestão de eventos](https://servicenow-prod.fluidtopics.net/garmAJeid_NBWF~FBo5t6g#event_management_topic-api "A API Aberto de tópicos da Gestão de eventos fornece um endpoint que permite enviar um tópico por meio do agente de mensagens e armazená-lo em uma instância ServiceNow.") se o método encontrar um problema no nível de "aviso". Este parâmetro permite adicionar mensagens de aviso personalizadas à implementação deste endpoint. Se não houver mensagens de aviso adicionais, você deverá passar uma matriz vazia. |
[Tabela 13. Parâmetros]

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

| Tipo | Descrição |
|-|-|
| Booliano | Sinalizador que indica se a combinação de nome do tópico, consulta de cabeçalho, consulta de conteúdo e namespace passada no parâmetro topicObject é exclusiva. Valores válidos: * verdadeiro: a combinação de parâmetros é exclusiva. * falso: a combinação de parâmetros não é exclusiva. |
[Tabela 14. Retorna]

{#TopAPIUtilOOB-valTopAtts_O_A__table_j1s_zqr_tzb}  
O exemplo de código a seguir mostra como chamar este método.

    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(Object topicObject, Detalhes da matriz) {#ariaid-title9}

Valida o ID externo do tópico passado no corpo da solicitação do endpoint da API de abertura de tópicos da Gestão de eventos.
Na implementação base, isso valida somente que o ID externo não está vazio. Se você quiser modificar o processo de validação do ID externo do tópico, será necessário substituir este método na inclusão de script TopicAPIUtils. O ID externo aprovado é mapeado para o campo topic_id na tabela Tópico \[sn_api_notif_mgmt_topic\].
{#TopAPIUtilOOB-valTopExtId_O_A__table_dyg_5mr_tzb__entry__3}{#TopAPIUtilOOB-valTopExtId_O_A__TopicAPIUtilsOOB-topicObject-entry}

| Nome | Tipo | Descrição |
|-|-|-|
| topicObject | Objeto | Objeto de carga do tópico passado para o endpoint [API aberta do tópico de gestão de eventos](https://servicenow-prod.fluidtopics.net/garmAJeid_NBWF~FBo5t6g#event_management_topic-api "A API Aberto de tópicos da Gestão de eventos fornece um endpoint que permite enviar um tópico por meio do agente de mensagens e armazená-lo em uma instância ServiceNow."). Por exemplo: { "name": "HighPriorityTroubleTicket", "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent", "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1", "externalId": "ext001", "namespace": "telecomEvents" } O esquema deste objeto deve corresponder ao que está definido em <var class="keyword varname">Constants.SCHEMA.CREATE_TOPIC_SCHEMA</var> localizado na inclusão de script sn_api_notif_mgmt.Constants. |
| detalhes | Matriz | Mensagens de erro/detalhes a serem retornadas na resposta do endpoint [API aberta do tópico de gestão de eventos](https://servicenow-prod.fluidtopics.net/garmAJeid_NBWF~FBo5t6g#event_management_topic-api "A API Aberto de tópicos da Gestão de eventos fornece um endpoint que permite enviar um tópico por meio do agente de mensagens e armazená-lo em uma instância ServiceNow.") se o método encontrar um problema no nível de "erro". Este parâmetro permite adicionar mensagens de erro personalizadas à implementação deste endpoint. Se não houver mensagens de erro adicionais, você deverá passar uma matriz vazia. |
[Tabela 15. Parâmetros]

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

| Tipo | Descrição |
|-|-|
| Booliano | Sinalizador que indica se o ID externo passado no parâmetro topicObject é válido. Valores válidos: * verdadeiro: o ID externo é válido. * falso: o ID externo é inválido. |
[Tabela 16. Retorna]

{#TopAPIUtilOOB-valTopExtId_O_A__table_eyg_5mr_tzb}  
O exemplo de código a seguir mostra como chamar este método.

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


