イベント通知管理オープン API 開発者ガイド
イベント通知管理オープン API を使用して、イベント [em_event] テーブルのイベントレコードを作成、更新、および削除します。
この開発者ガイドでは、 イベント通知管理オープン API を拡張してさまざまなカスタマイズを行う方法について説明します。
イベント通知管理オープン API の拡張
関連するスクリプトインクルードファイルを編集することで、 イベント通知管理オープン API の機能を拡張および変更できます。
- AlarmAPIProcessorOOB:TMFTopicEventAPIUtil スクリプトインクルードの関数をサポートするヘルパー関数が含まれています。AlarmAPIProcessorOOB スクリプトインクルードの詳細については、アラーム管理オープン API 開発者ガイドを参照してください。
- AlarmAPIProcessor:空のスクリプトインクルードファイル。このファイルを更新して、 AlarmAPIProcessorOOB スクリプトインクルードで上書きする関数を定義します。
- JSONSchemaValidation: TMFAlarmAPIConstants スクリプトインクルードで定義されたペイロードのスキーマの妥当性検査を処理する関数が含まれています。このスクリプトインクルードは tmt_core プラグインの下にあります。
- TMFAlarmAPIConstants:定数と必要なパラメーター情報が含まれています。また、 イベント通知管理オープン エンドポイントで渡されるペイロードのスキーマも含まれています。
- TMFTopicEventAPIUtilOOB:イベントを作成、更新、削除するアクション
AlarmCreateNotification、AlarmChangeNotification、AlarmDeleteNotificationを持つ外部トリガー定義フローによってトリガーされる API要求を処理する関数が含まれています。 - TMFTopicEventAPIUtil:空のスクリプトインクルードファイル。このファイルを更新して、 TMFTopicEventAPIUtilOOB スクリプトインクルードで上書きする関数を定義します。
次のセクションでは、これらのスクリプトインクルードファイルを拡張/変更することによって 、イベント通知管理オープン API 処理をカスタマイズできるいくつかの例を示します。
必要なパラメーター
イベント通知管理 API は、JSON スキーマを使用して必要なパラメーターを定義します。この JSON スキーマは、TMFAlarmAPIConstants スクリプトインクルードで定義されています。これらのスキーマを使用して、要求ペイロードが有効かどうかを検証します。これらのスキーマは、スクリプトインクルードでは直接参照されませんが、 TMFTopicEventAPIUtilOOB スクリプトインクルードの次の関数によって返されます。
- getAlarmCreateEventSchema(): イベントを作成するための検証スキーマを返します。
- getAlarmDeleteEventSchema():イベントアラームを削除するための検証スキーマを返します。
- getAlarmChangeEventSchema(): イベント内のフィールドを変更するための検証スキーマを返します。
既存のスキーマを上書きするには、 TMFTopicEventAPIUtilOOB スクリプトインクルードで新しいスキーマを定義し、 TMFTopicEventAPIUtil スクリプトインクルード関数を上書きします。
例:
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\"
]
}";
要求本文の検証
要求本文で追加の検証を実行するには、 TMFTopicEventAPIUtilOOB スクリプトインクルードで次の関数をオーバーライドします。これらの関数は、同じスクリプトインクルード内の指定された関数によって呼び出されます。
- verifyAlarmCreateEventPayload():processAlarmCreateEvent() によって呼び出されます。
- verifyAlarmDeleteEventPayload():processAlarmDeleteEvent() によって呼び出されます。
- verifyAlarmChangeEventPayload():processAlarmChangeEvent() によって呼び出されます。
これらの関数はすべて、既定で success を返します。ヘルパー関数がエラーを返すと、API 操作が停止します。
カスタム検証を適用するには、 TMFTopicEventAPIUtilOOB スクリプトインクルードのヘルパー関数を、 TMFTopicEventAPIUtil スクリプトインクルードの同一の関数名とパラメーターで上書きします。
この例では、カスタム TMFTopicEventAPIUtil スクリプトインクルードの関数が TMFTopicEventAPIUtilOOB スクリプトインクルードのデフォルト関数をオーバーライドして、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’
});要求本文のサブスクリプション検証
API の要求本文のサブスクリプション検証を変更するには、TMFTopicEventAPIUtilOOB スクリプトインクルードの validateSubscription() 関数を上書きする必要があります。この関数は、イベント通知の作成に使用している callbackURL が登録されているかどうかを検証し、発生したコールバックに対して eventType が登録されているかどうかを判断します。この関数は、TMFTopicEventAPIUtilOOB スクリプトインクルードにもある processAlarmCreateEvent()、processAlarmDeleteEvent()、processAlarmChangeEvent() 関数によって呼び出されます。
フィールドマッピング
レコードを作成または更新するとき、 イベント通知管理オープン API は要求本文パラメーターをイベントレコードフィールドにマップします。レコードを取得するとき、API はイベントレコードフィールドを応答オブジェクト属性にマッピングします。
TMFTopicEventAPIUtilOOB スクリプトインクルードには、eventType パラメーターの値に基づいて変更、作成、および削除要求をイベント [em_event] テーブルのレコードにマップする次の関数が含まれています。
- mapAlarmChangeObjectToEvent()
- mapCreateAlarmObjectToEvent()
- mapDeleteAlarmObjectToEvent()