TopicAPIUtilsOOB : inclus dans le périmètre

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 12 minutes de lecture
  • Le script include TopicAPIUtilsOOB fournit les méthodes utilisées lors du traitement du point de terminaison de l’API ouverte de rubrique Gestion des événements .

    Si vous souhaitez modifier la fonctionnalité par défaut de l’API Event Management Topic Open, vous devez remplacer les fonctions contenues dans ce script include dans le script include TopicAPIUtils .

    Cette API s’exécute dans l’espace de noms sn_api_notif_mgmt et requiert le rôle sn_api_notif_mgmt.event_mgmt_integration.

    TopicAPIUtilsOOB : createTopicHelper(Object topicObject, Array warnings)

    Insère les informations transmises dans le point de terminaison Event Management Topic Open API - POST /sn_api_notif_mgmt/topic dans la table Rubrique [sn_api_notif_mgmt_topic].

    Si vous souhaitez modifier ce processus d’insertion, vous devez remplacer cette méthode dans le script include TopicAPIUtils .

    Tableau 1. Paramètres
    Nom Type Description
    Objet de rubrique Objet Objet de charge utile de rubrique transmis au point de Rubrique Gestion des événements API ouverte terminaison.
    Par exemple :
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    Le schéma de cet objet doit correspondre à ce qui est défini dans Constants.SCHEMA.CREATE_TOPIC_SCHEMA situé dans le sn_api_notif_mgmt. Constantes du script include.

    avertissements Tableau Messages d’avertissement à renvoyer dans la réponse du Rubrique Gestion des événements API ouverte point de terminaison si la méthode rencontre un problème de niveau « avertissement ».

    Ce paramètre vous permet d’ajouter des messages d’avertissement personnalisés à votre implémentation de ce point de terminaison.

    S’il n’y a pas de messages d’avertissement supplémentaires, vous devez transmettre un tableau vide.

    Tableau 2. Renvoie
    Type Description
    Objet Objet de réponse.
    {
      "contentQuery": "String",
      "eventType": "String",
      "externalId": "String",
      "headerQuery": "String",
      "id": "String",
      "name": "String"
    }

    Pour plus d’informations sur ces paramètres, consultez les résultats de retour de Rubrique Gestion des événements ouverte : POST /sn_api_notif_mgmt/rubrique.

    L’exemple de code suivant montre comment appeler cette méthode.

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

    Renvoie le schéma défini pour la charge utile utilisée par l’API ouverte de rubrique Gestion des événements : point de terminaison POST /sn_api_notif_mgmt/rubrique pour valider la charge utile de la rubrique.

    Si vous souhaitez personnaliser le schéma pour la charge utile de la rubrique, vous devez remplacer le schéma de charge utile par défaut, Constants.SCHEMA, situé dans la sn_api_notif_mgmt. Constantes du script include. La valeur par défaut de ce schéma est :
    CREATE_TOPIC_SCHEMA: "{
      \"title\":\"Topic\",
      \"type\":\"object\",
      \"properties\":{
        \"name\":{
          \"type\":\"string\"
        },
        \"contentQuery\":{
          \"type\":\"string\"
        },
        \"headerQuery\":{
          \"type\":\"string\"
        },
        \"namespace\":{
          \"type\":\"string\"
        }
      },
      \"required\":[\"name\"]
    }"
    Tableau 3. Paramètres
    Nom Type Description
    Aucun
    Tableau 4. Renvoie
    Type Description
    Chaîne Schéma pour l’API ouverte de rubrique Gestion des événements - Charge utile du point de terminaison POST /sn_api_notif_mgmt/rubrique . Utilisez ce schéma pour valider le schéma transmis au point de terminaison à l’aide de la TopicAPIUtilsOOB : isValidCreateTopicPayload(Object topicObject, String schema, Array warnings) méthode.

    L’exemple de code suivant montre comment appeler cette méthode.

    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, String schema, Array warnings)

    Valide la charge utile transmise dans l’API ouverte de rubrique Gestion des événements : point de terminaison POST /sn_api_notif_mgmt/rubrique . Cette validation est effectuée sur le corps de la requête et le schéma.

    Si vous souhaitez modifier le processus de validation de la charge utile, vous devez remplacer cette méthode dans le script include TopicAPIUtils .

    Tableau 5. Paramètres
    Nom Type Description
    Objet de rubrique Objet Objet de charge utile de rubrique transmis au point de Rubrique Gestion des événements API ouverte terminaison.
    Par exemple :
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    Le schéma de cet objet doit correspondre à ce qui est défini dans Constants.SCHEMA.CREATE_TOPIC_SCHEMA situé dans le sn_api_notif_mgmt. Constantes du script include.

    Schéma Chaîne Schéma à utiliser pour valider la charge utile de la rubrique. Utilisez la TopicAPIUtilsOOB : getCreateTopicSchema() méthode pour obtenir ce schéma.
    avertissements Tableau Messages d’avertissement à renvoyer dans la réponse du Rubrique Gestion des événements API ouverte point de terminaison si la méthode rencontre un problème de niveau « avertissement ».

    Ce paramètre vous permet d’ajouter des messages d’avertissement personnalisés à votre implémentation de ce point de terminaison.

    S’il n’y a pas de messages d’avertissement supplémentaires, vous devez transmettre un tableau vide.

    Tableau 6. Renvoie
    Type Description
    Booléen Marqueur indiquant si la charge utile transmise dans le topicObject paramètre a réussi les validations de schéma et de corps de la demande.
    Valeurs valides :
    • true : la charge utile est valide.
    • false : la charge utile n’est pas valide.

    L’exemple de code suivant montre comment appeler cette méthode.

    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, Array warnings)

    Génère et renvoie la réponse à un appel de point de terminaison POST /sn_api_notif_mgmt/rubrique de la rubrique Gestion des événements.

    Si vous souhaitez personnaliser l’objet de réponse renvoyé par le point de terminaison Event Management Topic Open API - POST /sn_api_notif_mgmt/rubrique , vous devez remplacer cette méthode dans le script include TopicAPIUtils .

    Tableau 7. Paramètres
    Nom Type Description
    Objet de rubrique Objet Objet de charge utile de rubrique transmis au point de Rubrique Gestion des événements API ouverte terminaison.
    Par exemple :
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    Le schéma de cet objet doit correspondre à ce qui est défini dans Constants.SCHEMA.CREATE_TOPIC_SCHEMA situé dans le sn_api_notif_mgmt. Constantes du script include.

    topicSysId (en anglais seulement) Chaîne Sys_id de la rubrique créée dans le cadre de l’appel API ouverte de rubrique Gestion des événements : POST /sn_api_notif_mgmt/rubrique . Situé dans la table Rubrique [sn_api_notif_mgmt_topic].
    avertissements Tableau Messages d’avertissement à renvoyer dans la réponse du Rubrique Gestion des événements API ouverte point de terminaison si la méthode rencontre un problème de niveau « avertissement ».

    Ce paramètre vous permet d’ajouter des messages d’avertissement personnalisés à votre implémentation de ce point de terminaison.

    S’il n’y a pas de messages d’avertissement supplémentaires, vous devez transmettre un tableau vide.

    Tableau 8. Renvoie
    Type Description
    Objet Objet de réponse du point de terminaison.
    Par exemple :
    
    {
      "externalId": "ext001",
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "namespace": "telecomEvents",
      "id": "7ee9850443c3f550461f99612bb8f223"
    }

    L’exemple de code suivant montre comment appeler cette méthode.

     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)

    Traite la demande faite par le point de terminaison de l’API ouverte de rubrique Gestion des événements .

    Cette méthode appelle les méthodes d’assistance nécessaires pour l’insertion de données, la validation du schéma, la validation du corps de la demande et l’orchestration des réponses. Remplacez cette méthode si vous devez personnaliser le traitement fondamental de la Rubrique Gestion des événements ouverte : POST /sn_api_notif_mgmt/rubrique demande. Sinon, remplacez les méthodes d’assistance individuelles.

    Tableau 9. Paramètres
    Nom Type Description
    Objet de rubrique Objet Objet de charge utile de rubrique transmis au point de Rubrique Gestion des événements API ouverte terminaison.
    Par exemple :
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    Le schéma de cet objet doit correspondre à ce qui est défini dans Constants.SCHEMA.CREATE_TOPIC_SCHEMA situé dans le sn_api_notif_mgmt. Constantes du script include.

    Tableau 10. Renvoie
    Type Description
    Objet Objet de réponse du point de terminaison.
    Par exemple :
    
    {
      "externalId": "ext001",
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "namespace": "telecomEvents",
      "id": "7ee9850443c3f550461f99612bb8f223"
    }

    L’exemple de code suivant montre comment appeler cette méthode.

    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)

    Offre la possibilité d’ajouter des données personnalisées à l’objet de réponse renvoyé au point de terminaison Event Management Topic Open API - POST /sn_api_notif_mgmt/rubrique .

    Pour personnaliser cet objet de réponse, remplacez cette méthode dans le script include TopicAPIUtils .

    Tableau 11. Paramètres
    Nom Type Description
    Objet de rubrique Objet Objet de charge utile de rubrique transmis au point de Rubrique Gestion des événements API ouverte terminaison.
    Par exemple :
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    Le schéma de cet objet doit correspondre à ce qui est défini dans Constants.SCHEMA.CREATE_TOPIC_SCHEMA situé dans le sn_api_notif_mgmt. Constantes du script include.

    topicSysId (en anglais seulement) Chaîne Sys_id de la rubrique créée dans le cadre de l’appel API ouverte de rubrique Gestion des événements : POST /sn_api_notif_mgmt/rubrique . Situé dans la table Rubrique [sn_api_notif_mgmt_topic]. Vous pouvez ajouter des informations à partir de cet enregistrement à l’objet de réponse de la rubrique.
    Tableau 12. Renvoie
    Type Description
    Objet Objet de réponse de point de terminaison transformé. Cet objet doit être conforme à la norme TMF688.
    Par exemple :
    
    {
      "externalId": "ext001",
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "namespace": "telecomEvents",
      "id": "7ee9850443c3f550461f99612bb8f223"
    }

    L’exemple de code suivant montre comment appeler cette méthode.

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

    L’exemple de code suivant montre le code pour remplacer la fonctionnalité par défaut de cette méthode.

    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, Array details)

    Valide si la combinaison de nom de rubrique, de requête d’en-tête, de requête de contenu et d’espace de noms transmise dans la charge utile du point de terminaison de l’API ouverte de rubrique Gestion des événements est unique.

    Le point de terminaison utilise ces combinaisons d’attributs pour déterminer si la rubrique existe actuellement dans la table Rubrique [sn_api_notif_mgmt_topic].

    Si vous souhaitez modifier le processus de validation, vous devez remplacer cette méthode dans le script include TopicAPIUtils .

    Tableau 13. Paramètres
    Nom Type Description
    Objet de rubrique Objet Objet de charge utile de rubrique transmis au point de Rubrique Gestion des événements API ouverte terminaison.
    Par exemple :
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    Le schéma de cet objet doit correspondre à ce qui est défini dans Constants.SCHEMA.CREATE_TOPIC_SCHEMA situé dans le sn_api_notif_mgmt. Constantes du script include.

    Détails Tableau Messages d’avertissement à renvoyer dans la réponse du Rubrique Gestion des événements API ouverte point de terminaison si la méthode rencontre un problème de niveau « avertissement ».

    Ce paramètre vous permet d’ajouter des messages d’avertissement personnalisés à votre implémentation de ce point de terminaison.

    S’il n’y a pas de messages d’avertissement supplémentaires, vous devez transmettre un tableau vide.

    Tableau 14. Renvoie
    Type Description
    Booléen Marqueur indiquant si la combinaison de nom de rubrique, de requête d’en-tête, de requête de contenu et d’espace de noms transmise dans le topicObject paramètre est unique.
    Valeurs valides :
    • true : la combinaison de paramètres est unique.
    • false : la combinaison de paramètres n’est pas unique.

    L’exemple de code suivant montre comment appeler cette méthode.

    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, Array details)

    Valide l’ID externe de rubrique transmis dans le corps de la demande du point de terminaison de l’API ouverte de rubrique Gestion des événements.

    Dans l’implémentation de base, cela valide uniquement que l’ID externe n’est pas vide. Si vous souhaitez modifier le processus de validation de l’ID externe de la rubrique, vous devez remplacer cette méthode dans le script include TopicAPIUtils . L’ID externe transmis est mappé au champ topic_id dans la table Rubrique [sn_api_notif_mgmt_topic].

    Tableau 15. Paramètres
    Nom Type Description
    Objet de rubrique Objet Objet de charge utile de rubrique transmis au point de Rubrique Gestion des événements API ouverte terminaison.
    Par exemple :
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    Le schéma de cet objet doit correspondre à ce qui est défini dans Constants.SCHEMA.CREATE_TOPIC_SCHEMA situé dans le sn_api_notif_mgmt. Constantes du script include.

    Détails Tableau Messages d’erreur/de détail à renvoyer dans la réponse de point Rubrique Gestion des événements API ouverte de terminaison si la méthode rencontre un problème de niveau « erreur ».

    Ce paramètre vous permet d’ajouter des messages d’erreur personnalisés à votre implémentation de ce point de terminaison.

    S’il n’y a pas de messages d’erreur supplémentaires, vous devez transmettre un tableau vide.

    Tableau 16. Renvoie
    Type Description
    Booléen Marqueur indiquant si l’ID externe transmis dans le topicObject paramètre est valide.
    Valeurs valides :
    • true : l’ID externe est valide.
    • false : l’ID externe n’est pas valide.

    L’exemple de code suivant montre comment appeler cette méthode.

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