Gestion des notifications d’événements Guide du développeur de l’API ouverte

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 4 minutes de lecture
  • Utilisez l’API ouverte Gestion des notifications d’événements pour créer, mettre à jour et supprimer des enregistrements d’événements dans la table Événements [em_event].

    Ce guide du développeur fournit des informations sur la façon d’étendre l’API ouverte Gestion des notifications d’événements pour effectuer diverses personnalisations.

    Extension de l’API ouverte Event Notification Management

    Vous pouvez étendre et modifier la fonctionnalité de l’API ouverte de gestion des notifications d’événements en modifiant ses fichiers de script include associés.

    Voici les includes de script que l’API ouverte Event Notification Management utilise pour traiter les demandes de notification d’événement transmises à l’API :
    • AlarmAPIProcessorOOB : contient des fonctions d’assistance qui prennent en charge les fonctions de l’include de script TMFTopicEventAPIUtil . Pour plus d’informations sur l’include de script AlarmAPIProcessorOOB, consultez .Guide du développeur de l’API ouverte de gestion des alarmes
    • AlarmAPIProcessor : un fichier d’include de script vide. Mettez à jour ce fichier pour définir toutes les fonctions que vous souhaitez remplacer dans l’include de script AlarmAPIProcessorOOB .
    • JSONSchemaValidation : contient des fonctions pour gérer la validation des schémas pour la charge utile définie dans l’include de script TMFAlarmAPIConstants . Cet include de script se trouve sous le module d’extension tmt_core.
    • TMFAlarmAPIConstants : contient les constantes et les informations de paramètres requises. Il contient également les schémas des charges utiles transmises dans le point de terminaison Event Notification Management Open .
    • TMFTopicEventAPIUtilOOB : contient des fonctions pour gérer les demandes d’API qui sont déclenchées par des flux de définition de déclencheur externes qui ont les actions AlarmCreateNotification, AlarmChangeNotification, AlarmDeleteNotification qui créent, mettent à jour et suppriment des événements.
    • TMFTopicEventAPIUtil : un fichier d’include de script vide. Mettez à jour ce fichier pour définir toutes les fonctions que vous souhaitez remplacer dans l’include de script TMFTopicEventAPIUtilOOB .

    Les sections suivantes fournissent des exemples de personnalisations que vous pouvez apporter au traitement de l’API ouverte de gestion des notifications d’événements en étendant/modifiant ces fichiers de script include.

    Paramètres requis

    L’API Event Notification Management utilise des schémas JSON pour définir les paramètres requis. Ces schémas JSON sont définis dans l’include de script TMFAlarmAPIConstants . Ces schémas sont utilisés pour valider si les charges utiles des demandes sont valides. Ces schémas ne sont pas directement référencés dans les includes de script, mais sont renvoyés par les fonctions suivantes dans l’include de script TMFTopicEventAPIUtilOOB :

    • getAlarmCreateEventSchema() : renvoie le schéma de validation pour la création d’un événement.
    • getAlarmDeleteEventSchema() : renvoie le schéma de validation pour la suppression d’une alarme d’événement.
    • getAlarmChangeEventSchema() : renvoie le schéma de validation pour la modification des champs dans un événement.

    Pour remplacer les schémas existants, définissez de nouveaux schémas dans l’include de script de TMFTopicEventAPIUtilOOB et remplacez les fonctions d’include de script TMFTopicEventAPIUtil.

    Par exemple :

    var TMFTopicEventAPIUtil = Class.create();
    TMFTopicEventAPIUtil.prototype = Object.extendsObject(TMFTopicEventAPIUtilOOB, {
    	// Define overriding functions here	
    	// Define getAlarmCreateEventSchema here to override OOTB function in TMFTopicEventAPIUtilOOB
    	getAlarmCreateEventSchema: function() {
    		return JSON.parse(TMFTopicEventAPIUtil.CUSTOMIZED_SCHEMA);
    	},
        type: ‘TMFTopicEventAPIUtil’
    });
    
    // New schema
    TMFTopicEventAPIUtil.CUSTOMIZED_SCHEMA = "{
      \"title\":\"AlarmCreateEvent\",
      \"type\":\"object\",
      \"properties\":{
        \"event\":{
          \"type\":\"object\",
          \"properties\":{
            \"alarm\":{
              \"type\":\"object\",
              \"properties\":{
                \"id\":{
                  \"type\":\"string\"
                },
                \"href\":{
                  \"type\":\"string\"
                },
                \"externalAlarmId\":{
                  \"type\":\"string\"
                },
                \"alarmType\":{
                  \"type\":\"string\"
                },
                \"perceivedSeverity\":{
                  \"type\":\"string\"
                },
                \"probableCause\":{
                  \"type\":\"string\"
                },
                \"alarmedObject\":{
                  \"type\":\"object\",
                  \"properties\":{
                    \"id\":{
                      \"type\":\"string\"
                    },
                    \"href\":{
                      \"type\":\"string\"
                    }
                  },
                  \"required\":[
                    \"id\"
                  ]
                },
                \"crossedThresholdInformation\":{
                  \"type\":\"object\",
                  \"properties\":{
                    \"thresholdId\":{
                      \"type\":\"string\"
                    }
                  },
                  \"required\":[
                    \"thresholdId\"
                  ]
                },
                \"affectedService\":{
                  \"type\":\"array\",
                  \"properties\":{
                    \"id\":{
                      \"type\":\"string\"
                    },
                    \"href\":{
                      \"type\":\"string\"
                    }
                  },
                  \"items\":{
                    \"type\":\"object\",
                    \"required\":[
                      \"id\"
                    ]
                  }
                },
                \"sourceSystemId\":{
                  \"type\":\"string\"
                },
                \"specificProblem\":{
                  \"type\":\"string\"
                }
              },
              \"required\":[
                \"externalAlarmId\",\"alarmType\",\"perceivedSeverity\",\"probableCause\",\"sourceSystemId\",\"alarmedObject\"
              ]
            }
          },
          \"required\":[
            \"alarm\"
          ]
        }
      },
      \"required\":[
        \"event\"
      ]
    }";

    Validation du corps de la demande

    Pour effectuer une validation supplémentaire sur le corps de la demande, remplacez les fonctions suivantes dans l’include de script TMFTopicEventAPIUtilOOB . Ces fonctions sont appelées par les fonctions spécifiées dans le même include de script.

    • verifyAlarmCreateEventPayload() : appelé par processAlarmCreateEvent().
    • verifyAlarmDeleteEventPayload() : appelé par processAlarmDeleteEvent().
    • verifyAlarmChangeEventPayload() : appelé par processAlarmChangeEvent().

    Toutes ces fonctions renvoient la réussite par défaut. Si une fonction d’assistance renvoie une erreur, elle arrête le fonctionnement de l’API.

    Pour appliquer des validations personnalisées, remplacez les fonctions d’assistance dans l’include de script TMFTopicEventAPIUtilOOB par des noms de fonctions et des paramètres identiques dans l’include de script TMFTopicEventAPIUtil .

    Dans cet exemple, une fonction d’un include de script personnalisé TMFTopicEventAPIUtil remplace la fonction par défaut de l’include de script TMFTopicEventAPIUtilOOB pour effectuer la validation de l’attribut name.

    var TMFTopicEventAPIUtil = Class.create();
    TMFTopicEventAPIUtil.prototype = Object.extendsObject(TMFTopicEventAPIUtilOOB, {
    
        // Define overriding functions here
        verifyAlarmCreateEventPayload: function(eventPayload,responseObject){
    
            // Returning error status terminates the POST request
            // Make sure to assign error message and reason
            if (eventPayload.type != "unique") {
                responseObject.setMessage("Failed");
                responseObject.setReason("No reason needed");
                return responseObject.status = “error”;
            }
        },
    	
        type: ‘TMFTopicEventAPIUtil’
    });

    Corps de la demande Validation de l’abonnement

    Pour modifier la validation de l’abonnement au corps de la demande pour l’API, vous devez remplacer la fonction validateSubscription() dans l’include de script TMFTopicEventAPIUtilOOB . Cette fonction valide si l’URL de rappel que vous utilisez pour créer la notification d’événement est enregistrée et détermine si l’URL de eventType rappel est enregistrée pour le rappel déclenché. Cette fonction est appelée par les fonctions processAlarmCreateEvent(),processAlarmDeleteEvent() et processAlarmChangeEvent() qui se trouvent également dans l’include de script TMFTopicEventAPIUtilOOB .

    Mappage de champs

    Lors de la création ou de la mise à jour d’enregistrements, l’API ouverte Event Notification Management mappe les paramètres du corps de la demande aux champs d’enregistrement d’événement. Lors de la récupération des enregistrements, l’API mappe les champs d’enregistrement d’événement aux attributs d’objet de réponse.

    L’include de script Script Include TMFTopicEventAPIUtilOOB contient les fonctions suivantes qui mappent les demandes de changement, de création et de suppression, en fonction de la valeur du eventType paramètre, à un enregistrement dans la table Événement [em_event].

    • mapAlarmChangeObjectToEvent()
    • mapCreateAlarmObjectToEvent()
    • mapDeleteAlarmObjectToEvent()
    Vous pouvez personnaliser les mappages de champs pour ajouter et récupérer des données pour des champs supplémentaires de la table d’événements [em_event] ou modifier les mappages de champs par défaut. Pour utiliser les mappages, créez des fonctions avec des noms et des paramètres identiques dans TMFTopicEventAPIUtil pour remplacer les fonctions de mappage TMFTopicEventAPIUtilOOB .