Guia do desenvolvedor da API aberta da Gestão de notificações de evento

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 4 min. de leitura
  • Use a API aberta do Event Notification Management para criar, atualizar e excluir registros de eventos na tabela Eventos [em_event].

    Este guia do desenvolvedor fornece informações sobre como estender a API aberta da Gestão de notificações de eventos para fazer várias personalizações.

    Estendendo a API aberta da Gestão de notificações de evento

    Você pode estender e modificar a funcionalidade da API aberta do Event Notification Management editando os arquivos de inclusão de script associados.

    A seguir estão as inclusões de script que a API aberta do Event Notification Management usa para processar solicitações de notificação de evento passadas para a API:
    • AlarmAPIProcessorOOB: contém funções de ajuda que oferecem suporte a funções na inclusão de script TMFTopicEventAPIUtil. Para obter informações adicionais sobre a inclusão de script AlarmAPIProcessorOOB, consulte o Guia do desenvolvedor da API aberta da Gestão de alarmes.
    • AlarmAPIProcessor: um arquivo de inclusão de script vazio. Atualize este arquivo para definir todas as funções que você deseja substituir na inclusão de script AlarmAPIProcessorOOB.
    • JSONSchemaValidation: contém funções para lidar com a validação de esquemas para a carga definida na inclusão de script TMFAlarmAPIConstants. Esta inclusão de script está no plug-in tmt_core.
    • TMFAlarmAPIConstants: contém constantes e informações de parâmetro necessárias. Ele também contém os esquemas das cargas passadas no endpoint do Event Notification Management Open.
    • TMFTopicEventAPIUtilOOB: contém funções para lidar com solicitações de API que são acionadas por fluxos de definição de gatilho externo que têm as ações AlarmCreateNotification, AlarmChangeNotification, AlarmDeleteNotification que criam, atualizam e excluem eventos.
    • TMFTopicEventAPIUtil: um arquivo de inclusão de script vazio. Atualize este arquivo para definir todas as funções que você deseja substituir na inclusão de script TMFTopicEventAPIUtilOOB.

    As seções a seguir fornecem exemplos de algumas das personalizações que você pode fazer no processamento da API aberta da Gestão de notificações de evento, estendendo/modificando esses arquivos de inclusão de script.

    Parâmetros obrigatórios

    A API Event Notification Management utiliza esquemas JSON para definir os parâmetros necessários. Esses esquemas JSON são definidos na inclusão de script TMFAlarmAPIConstants. Esses esquemas são usados para validar se as cargas da solicitação são válidas. Esses esquemas não são referenciados diretamente nas inclusões de script, mas são retornados pelas seguintes funções na inclusão de script TMFTopicEventAPIUtilOOB :

    • getAlarmCreateEventSchema(): retorna o esquema de validação para criar um evento.
    • getAlarmDeleteEventSchema(): retorna o esquema de validação para excluir um alarme de evento.
    • getAlarmChangeEventSchema(): retorna o esquema de validação para alterar campos em um evento.

    Para substituir os esquemas existentes, defina novos esquemas na inclusão de script TMFTopicEventAPIUtilOOB e substitua as funções de inclusão de script TMFTopicEventAPIUtil.

    Por exemplo:

    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\"
      ]
    }";

    Validação do corpo da solicitação

    Para executar uma validação adicional no corpo da solicitação, substitua as seguintes funções na inclusão de script TMFTopicEventAPIUtilOOB. Essas funções são chamadas pelas funções especificadas na mesma inclusão de script.

    • VerificarAlarmCreateEventPayload(): Chamado por processAlarmCreateEvent().
    • verificaçãoAlarmDeleteEventPayload(): chamado por processAlarmDeleteEvent().
    • VerificarAlarmChangeEventPayload(): Chamado por processAlarmChangeEvent().

    Todas essas funções retornam sucesso por padrão. Se uma função auxiliar retornar um erro, ela interromperá a operação da API.

    Para aplicar validações personalizadas, substitua as funções de ajuda na inclusão de script TMFTopicEventAPIUtilOOB por nomes de função e parâmetros idênticos na inclusão de script TMFTopicEventAPIUtil.

    Neste exemplo, uma função em um script include personalizado TMFTopicEventAPIUtil substitui a função padrão no script include TMFTopicEventAPIUtilOOB para executar a validação no atributo de nome.

    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’
    });

    Solicitar validação de assinatura do corpo

    Para modificar a validação de assinatura do corpo da solicitação para a API, é necessário substituir a função identifySubscription () na inclusão de script TMFTopicEventAPIUtilOOB. Esta função valida se o callbackURL que você está usando para criar a notificação de evento está registrado e determina se o eventType está registrado para o retorno de chamada gerado. Esta função é chamada pelas funções processAlarmCreateEvent(), processAlarmDeleteEvent()e processAlarmChangeEvent() que também estão na inclusão de script TMFTopicEventAPIUtilOOB.

    Mapeamento de campo

    Ao criar ou atualizar registros, a API aberta do Event Notification Management mapeia os parâmetros do corpo da solicitação para os campos de registro de evento. Ao recuperar registros, a API mapeia campos de registro de evento para atributos de objeto de resposta.

    A inclusão de script TMFTopicEventAPIUtilOOB contém as seguintes funções que mapeiam solicitações de mudança, criação e exclusão, com base no valor do parâmetro eventType, para um registro na tabela Evento [em_event].

    • mapAlarmChangeObjectToEvent()
    • mapCreateAlarmObjectToEvent()
    • mapDeleteAlarmObjectToEvent()
    Você pode personalizar os mapeamentos de campo para adicionar e recuperar dados para campos adicionais da tabela Evento [em_event] ou alterar os mapeamentos de campo padrão. Para trabalhar com mapeamentos, crie funções com nomes e parâmetros idênticos em TMFTopicEventAPIUtil para substituir as funções de mapeamento TMFTopicEventAPIUtilOOB.