TopicAPIUtilsOOB - 범위 지정됨

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 31분
  • TopicAPIUtilsOOB 스크립트 포함은 이벤트 관리 주제 오픈 API 엔드포인트를 처리할 때 사용되는 메서드를 제공합니다.

    이벤트 관리 주제 오픈 API의 기본 기능을 변경하려면 TopicAPIUtils 스크립트 포함에서 이 스크립트 포함에 포함된 기능을 재정의해야 합니다.

    이 스크립트 포함은 sn_api_notif_mgmt 네임스페이스에서 실행되며 sn_api_notif_mgmt.event_mgmt_integration 역할이 필요합니다.

    TopicAPIUtilsOOB - createTopicHelper(객체 topicObject, 배열 경고)

    이벤트 관리 주제 오픈 API - POST /sn_api_notif_mgmt/topic 엔드포인트에 전달된 정보를 주제 [sn_api_notif_mgmt_topic] 테이블에 삽입합니다.

    이 삽입 프로세스를 수정하려면 TopicAPIUtils 스크립트 포함에서 이 메서드를 재정의해야 합니다.

    표 1. 매개변수
    이름 유형 설명
    주제객체 객체 엔드포인트에 전달된 주제 페이로드 객체입니다 이벤트 관리 주제 개방형 API .
    예:
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    이 객체의 스키마는 sn_api_notif_mgmt에 있는 Constants.SCHEMA.CREATE_TOPIC_SCHEMA 정의된 스키마와 일치해야 합니다 . 상수 스크립트 포함

    경고 배열 메서드에서 "경고" 수준의 문제가 발생하는 경우 엔드포인트 응답에 이벤트 관리 주제 개방형 API 반환할 경고 메시지입니다.

    이 매개변수를 사용하면 이 엔드포인트의 구현에 사용자 지정 경고 메시지를 추가할 수 있습니다.

    추가 경고 메시지가 없으면 빈 배열을 전달해야 합니다.

    표 2. 반환
    유형 설명
    객체 응답 객체입니다.
    {
      "contentQuery": "String",
      "eventType": "String",
      "externalId": "String",
      "headerQuery": "String",
      "id": "String",
      "name": "String"
    }

    이러한 매개 변수에 대한 자세한 내용은 에 대한 이벤트 관리 주제 오픈 - POST /sn_api_notif_mgmt/topic반환 결과를 참조하십시오.

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

    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()

    이벤트 관리 주제 오픈 API - POST /sn_api_notif_mgmt/topic 엔드포인트에서 사용하는 페이로드에 대해 정의된 스키마를 반환하여 주제 페이로드를 확인합니다.

    토픽 페이로드의 스키마를 사용자 지정하려면 sn_api_notif_mgmt에 있는 기본 페이로드 스키마인 Constants.SCHEMA를 재정의해야 합니다 . 상수 스크립트 포함 이 스키마의 기본값은 다음과 같습니다.
    CREATE_TOPIC_SCHEMA: "{
      \"title\":\"Topic\",
      \"type\":\"object\",
      \"properties\":{
        \"name\":{
          \"type\":\"string\"
        },
        \"contentQuery\":{
          \"type\":\"string\"
        },
        \"headerQuery\":{
          \"type\":\"string\"
        },
        \"namespace\":{
          \"type\":\"string\"
        }
      },
      \"required\":[\"name\"]
    }"
    표 3. 매개변수
    이름 유형 설명
    없음
    표 4. 반환
    유형 설명
    문자열 이벤트 관리 주제 오픈 API에 대한 스키마 - POST /sn_api_notif_mgmt/주제 엔드포인트 페이로드입니다. 이 스키마를 사용하여 메서드를 사용하여 엔드포인트에 전달된 스키마의 유효성을 검사합니다 TopicAPIUtilsOOB - isValidCreateTopicPayload(객체 topicObject, 문자열 스키마, 배열 경고) .

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

    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, 문자열 스키마, 배열 경고)

    이벤트 관리 주제 오픈 API - POST /sn_api_notif_mgmt/topic 엔드포인트에 전달된 페이로드를 확인합니다. 이 유효성 검사는 요청 본문과 스키마에서 수행됩니다.

    페이로드에 대한 확인 프로세스를 수정하려면 TopicAPIUtils 스크립트 포함에서 이 메서드를 재정의해야 합니다.

    표 5. 매개변수
    이름 유형 설명
    주제객체 객체 엔드포인트에 전달된 주제 페이로드 객체입니다 이벤트 관리 주제 개방형 API .
    예:
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    이 객체의 스키마는 sn_api_notif_mgmt에 있는 Constants.SCHEMA.CREATE_TOPIC_SCHEMA 정의된 스키마와 일치해야 합니다 . 상수 스크립트 포함

    스키마 문자열 주제 페이로드를 확인하는 데 사용할 스키마입니다. TopicAPIUtilsOOB - getCreateTopicSchema() 메서드를 사용하여 이 스키마를 가져옵니다.
    경고 배열 메서드에서 "경고" 수준의 문제가 발생하는 경우 엔드포인트 응답에 이벤트 관리 주제 개방형 API 반환할 경고 메시지입니다.

    이 매개변수를 사용하면 이 엔드포인트의 구현에 사용자 지정 경고 메시지를 추가할 수 있습니다.

    추가 경고 메시지가 없으면 빈 배열을 전달해야 합니다.

    표 6. 반환
    유형 설명
    부울 매개변수에 topicObject 전달된 페이로드가 스키마 및 요청 본문 확인을 통과했는지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 페이로드가 유효합니다.
    • false: 페이로드가 잘못되었습니다.

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

    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, 배열 경고)

    이벤트 관리 주제 오픈 API - POST /sn_api_notif_mgmt/topic 엔드포인트 호출에 대한 응답을 생성하고 반환합니다.

    이벤트 관리 주제 오픈 API - POST /sn_api_notif_mgmt/topic 엔드포인트에서 반환된 응답 객체를 사용자 지정하려면 TopicAPIUtils 스크립트 포함에서 이 메서드를 재정의해야 합니다.

    표 7. 매개변수
    이름 유형 설명
    주제객체 객체 엔드포인트에 전달된 주제 페이로드 객체입니다 이벤트 관리 주제 개방형 API .
    예:
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    이 객체의 스키마는 sn_api_notif_mgmt에 있는 Constants.SCHEMA.CREATE_TOPIC_SCHEMA 정의된 스키마와 일치해야 합니다 . 상수 스크립트 포함

    주제SysId 문자열 이벤트 관리 주제 오픈 API - POST /sn_api_notif_mgmt/topic 호출의 일부로 작성된 주제 Sys_id입니다.

    테이블: 주제 [sn_api_notif_mgmt_topic]

    경고 배열 메서드에서 "경고" 수준의 문제가 발생하는 경우 엔드포인트 응답에 이벤트 관리 주제 개방형 API 반환할 경고 메시지입니다.

    이 매개변수를 사용하면 이 엔드포인트의 구현에 사용자 지정 경고 메시지를 추가할 수 있습니다.

    추가 경고 메시지가 없으면 빈 배열을 전달해야 합니다.

    표 8. 반환
    유형 설명
    객체 엔드포인트 응답 객체입니다.
    예:
    
    {
      "externalId": "ext001",
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "namespace": "telecomEvents",
      "id": "7ee9850443c3f550461f99612bb8f223"
    }

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

     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)

    이벤트 관리 주제 열기 API 엔드포인트의 요청을 처리합니다.

    이 메서드는 데이터 삽입, 스키마 유효성 검사, 요청 본문 유효성 검사 및 응답 오케스트레이션에 필요한 도우미 메서드를 호출합니다. 요청의 기본 처리를 사용자 지정해야 하는 경우 이 메서드를 재정의합니다 이벤트 관리 주제 오픈 - POST /sn_api_notif_mgmt/topic . 그렇지 않으면 개별 도우미 메서드를 재정의합니다.

    표 9. 매개변수
    이름 유형 설명
    주제객체 객체 엔드포인트에 전달된 주제 페이로드 객체입니다 이벤트 관리 주제 개방형 API .
    예:
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    이 객체의 스키마는 sn_api_notif_mgmt에 있는 Constants.SCHEMA.CREATE_TOPIC_SCHEMA 정의된 스키마와 일치해야 합니다 . 상수 스크립트 포함

    표 10. 반환
    유형 설명
    객체 엔드포인트 응답 객체입니다.
    예:
    
    {
      "externalId": "ext001",
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "namespace": "telecomEvents",
      "id": "7ee9850443c3f550461f99612bb8f223"
    }

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

    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)

    이벤트 관리 주제 오픈 API - POST /sn_api_notif_mgmt/topic 엔드포인트에 반환된 응답 객체에 사용자 지정 데이터를 추가하는 기능을 제공합니다.

    이 응답 객체를 사용자 지정하려면 TopicAPIUtils 스크립트 포함에서 이 메서드를 재정의하십시오.

    표 11. 매개변수
    이름 유형 설명
    주제객체 객체 엔드포인트에 전달된 주제 페이로드 객체입니다 이벤트 관리 주제 개방형 API .
    예:
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    이 객체의 스키마는 sn_api_notif_mgmt에 있는 Constants.SCHEMA.CREATE_TOPIC_SCHEMA 정의된 스키마와 일치해야 합니다 . 상수 스크립트 포함

    주제SysId 문자열 이벤트 관리 주제 오픈 API - POST /sn_api_notif_mgmt/topic 호출의 일부로 작성된 주제 Sys_id입니다. 이 기록의 정보를 주제 응답 객체에 추가할 수 있습니다.

    테이블: 주제 [sn_api_notif_mgmt_topic]

    표 12. 반환
    유형 설명
    객체 변환된 엔드포인트 응답 객체입니다. 이 객체는 TMF688 규격이어야 합니다.
    예:
    
    {
      "externalId": "ext001",
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "namespace": "telecomEvents",
      "id": "7ee9850443c3f550461f99612bb8f223"
    }

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

    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, 배열 상세 정보)

    이벤트 관리 주제 오픈 API 엔드포인트 페이로드에 전달된 주제 이름, 헤더-쿼리, 컨텐츠-쿼리 및 네임스페이스 조합이 고유한지 확인합니다.

    엔드포인트는 이 속성 조합을 사용하여 주제가 현재 주제 [sn_api_notif_mgmt_topic] 테이블에 있는지 여부를 확인합니다.

    유효성 검사 프로세스를 수정하려면 TopicAPIUtils 스크립트 포함에서 이 메서드를 재정의해야 합니다.

    표 13. 매개변수
    이름 유형 설명
    주제객체 객체 엔드포인트에 전달된 주제 페이로드 객체입니다 이벤트 관리 주제 개방형 API .
    예:
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    이 객체의 스키마는 sn_api_notif_mgmt에 있는 Constants.SCHEMA.CREATE_TOPIC_SCHEMA 정의된 스키마와 일치해야 합니다 . 상수 스크립트 포함

    상세 정보 배열 메서드에서 "경고" 수준의 문제가 발생하는 경우 엔드포인트 응답에 이벤트 관리 주제 개방형 API 반환할 경고 메시지입니다.

    이 매개변수를 사용하면 이 엔드포인트의 구현에 사용자 지정 경고 메시지를 추가할 수 있습니다.

    추가 경고 메시지가 없으면 빈 배열을 전달해야 합니다.

    표 14. 반환
    유형 설명
    부울 매개변수에 전달된 주제 이름, 헤더-쿼리, 컨텐츠-쿼리 및 네임스페이스 조합이 고유한지 여부를 나타내는 플래그입니다 topicObject .
    유효한 값은 다음과 같습니다.
    • true: 매개변수 조합이 고유합니다.
    • false: 매개변수 조합이 고유하지 않습니다.

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

    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, 배열 상세 정보)

    이벤트 관리 토픽 오픈 API 엔드포인트의 요청 본문에 전달된 토픽 외부 ID의 유효성을 확인합니다.

    기본 구현에서는 외부 ID가 비어 있지 않은지만 확인합니다. 주제 외부 ID에 대한 확인 프로세스를 수정하려면 TopicAPIUtils 스크립트 포함에서 이 메서드를 재정의해야 합니다. 전달된 외부 ID는 주제 [sn_api_notif_mgmt_topic] 테이블의 topic_id 필드에 매핑됩니다.

    표 15. 매개변수
    이름 유형 설명
    주제객체 객체 엔드포인트에 전달된 주제 페이로드 객체입니다 이벤트 관리 주제 개방형 API .
    예:
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    이 객체의 스키마는 sn_api_notif_mgmt에 있는 Constants.SCHEMA.CREATE_TOPIC_SCHEMA 정의된 스키마와 일치해야 합니다 . 상수 스크립트 포함

    상세 정보 배열 메서드에서 "오류" 수준의 문제가 발생하는 경우 엔드포인트 응답에 이벤트 관리 주제 개방형 API 반환할 오류/세부 정보 메시지입니다.

    이 매개변수를 사용하면 이 엔드포인트의 구현에 사용자 지정 오류 메시지를 추가할 수 있습니다.

    추가 오류 메시지가 없으면 빈 배열을 전달해야 합니다.

    표 16. 반환
    유형 설명
    부울 매개변수에 전달된 외부 ID가 유효한지 여부를 나타내는 플래그입니다 topicObject .
    유효한 값은 다음과 같습니다.
    • true: 외부 ID가 유효합니다.
    • false: 외부 ID가 잘못되었습니다.

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

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