Guia do desenvolvedor da Open API da Gestão de notificações de eventos

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 4 min. de leitura
  • Use a API aberta da Gestão de notificações de eventos 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.

    Como estender a API aberta da Gestão de notificações de eventos

    Você pode estender e modificar a funcionalidade da API aberta da Gestão de notificações de eventos editando os arquivos de inclusão de script associados.

    A seguir estão as inclusões de script que a API aberta da Gestão de notificações de eventos usa para processar solicitações de notificação de eventos 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 Guia do desenvolvedor da Open API para gestão de alarmes.
    • AlarmAPIProcessor: um arquivo de inclusão de script vazio. Atualize este arquivo para definir 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 aberto da Gestão de notificações de eventos.
    • 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 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 eventos, estendendo/modificando esses arquivos de inclusão de script.

    Parâmetros obrigatórios

    A API Gestão de notificações de eventos 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 de 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\"
      ]
    }";

    Solicitar validação do corpo

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

    • verifyAlarmCreateEventPayload(): Chamado por processAlarmCreateEvent().
    • verifyAlarmDeleteEventPayload(): Chamado por processAlarmDeleteEvent().
    • verifyAlarmChangeEventPayload(): 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 de 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 uma inclusão de script TMFTopicEventAPIUtil personalizada substitui a função padrão na inclusão de script TMFTopicEventAPIUtilOOB para executar a validação no atributo 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’
    });

    Solicitar validação de assinatura do corpo

    Para modificar a validação de assinatura do corpo da solicitação para a API, você precisa substituir a função validSubscription () na inclusão de script TMFTopicEventAPIUtilOOB. Esta função valida se o callbackURL que você está usando para criar a notificação de eventos 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 da Gestão de notificações de eventos mapeia os parâmetros do corpo da solicitação para os campos de registro de eventos. 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 no parâmetro eventType, para um registro na tabela Evento [em_event].

    • mapAlarmChangeObjectToEvent()
    • mapCreateAlarmObjectToEvent()
    • mapDeleteAlarmObjectToEvent()
    Você pode personalizar 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.