REST API からのルールの作成
ルールの作成と設定には、 HTTP REST APIというツールを使用できます。 これらのルールを使用して、イベント・ドリブン通知を送信したり、アクションをトリガーしたりします。
HTTP REST API を使用するには、以下の情報を知っておく必要があります。
ツールに登録すると、あなたのアカウントに固有の6文字の識別子である組織IDが与えられます。- API キーと認証トークン。
ダッシュボードを使用して、API キーと認証トークンを生成できます。 API キーおよびトークンについて詳しくは、「API キー接続」を参照してください。 - rule.To 論理インターフェース ID を検索するには、以下の HTTP REST API を使用します。
GET /draft/logicalinterfaces
次の例は、CURL を使用して論理インターフェースに関する情報を取得する方法を示しています。
curl --request GET \
--url https://yourOrgID.{{site.data.keynote.software_base_url}}/api/v0002/draft/logicalinterfaces \
--user '{API Key}:{authorization token}'
この GET メソッドに対する応答の例を以下に示します。
{
"results": [
{
"id": "5846ed076522050001db0e12",
"name": "Thermometer Interface",
"alias": "IThermometer",
"description": "Thermometer Logical Interface",
"schemaId": "5846ec826522050001db0e11",
"version": "draft",
"created": "2017-06-16T15:41:49Z",
"createdBy": "a-8x7nmj-9iqt56kfil",
"updated": "2017-06-16T15:41:49Z",
"updatedBy": "a-8x7nmj-9iqt56kfil",
"refs": {
"schema": "/api/v0002/draft/schemas/5846ec826522050001db0e11",
"rules": "/api/v0002/draft/logicalinterfaces/5846ed076522050001db0e12/rules"
}
}
],
"meta": {
"total_rows": 1
}
}
この例では、論理インターフェース ID は 5846ed076522050001db0e12です。
ルールの構成 - シナリオ
このシナリオでは、シナリオ: 共通論理インターフェースの構成で作成された構成に基づいて、2 つのルールを作成する方法を説明します。
最初のルールは tempRuleMaxと呼ばれ、デバイスの状態の温度プロパティが摂氏44度を超えるような温度イベントをツールが受信したときにトリガーされる。 2つ目のルールは tempRuleMinと呼ばれ、デバイス状態の温度プロパティが摂氏10度未満になる温度イベントをツールが受信したときにトリガーされる。
ただし、ルールの条件では、温度しきい値をハードコーディングしないようにします。ハードコーディングすると、デバイス・インスタンスごとにしきい値を変更できなくなるためです。 その代わりに、温度しきい値はデバイス・メタデータ上のプロパティとして定義され、ルール条件は $instance
変数を使用してこれらのプロパティを参照します。 このシナリオでは、シナリオ: 共通論理インターフェースの構成 の一部として作成された tSensor デバイスを使用します。 このデバイスは、摂氏で測定した温度イベントをパブリッシュします。 以下のメタデータは、tSensor デバイス・インスタンスに関連付けられています。
{
"tempThresholdMax": 44,
"tempThresholdMin": 10
}
ヒント: メタデータは、ダッシュボードの デバイス情報 ページから作成された後、デバイス・インスタンスに追加または更新できます。
2 つのルールを構成する手順:
- ルールに関連付ける論理インターフェースを選択します。 このシナリオでは、ID 5846ed076522050001db0e12 で論理インターフェースを使用しています。
- 以下の API を使用して、論理インターフェースに関連付けられている現行規則を表示します。
GET /draft/logicalinterfaces/5846ed076522050001db0e12/rules
論理インターフェース 5846ed076522050001db0e12に現在関連付けられている規則がないため、空のリストが返されます。 - 次のAPIを使用して、 tempRuleMax 次のAPIを使用して追加します。
POST /draft/logicalinterfaces/5846ed076522050001db0e12/rules
リクエストの本文に、ルール名 、条件パラメータ、 通知戦略パラメータを含めます
この POST メソッドに対する応答の例を以下に示します。{ "name" : "tempRuleMax", "condition" : "$state.temperature > $instance.metadata.tempThresholdMax", "notificationStrategy": { "when": "every-time" } }
デバイスの状態の temperature プロパティーが、 tSensor デバイス・インスタンスのメタデータの tempThresholdMax プロパティーで指定されている値を上回ると、tempRuleMax ルールが起動されます。 この例では、値は摂氏 44 度です。{ "name": "tempRuleMax", "id": "5a71991e59080100328710e9", "logicalInterfaceId": "5846ed076522050001db0e12", "condition": "$state.temperature > $instance.metadata.tempThresholdMax", "notificationStrategy": { "when": "every-time" }, "version": "draft", "created": "2018-01-31T10:23:26Z", "createdBy": "a-7p9t2v-zsrcacabpa", "updated": "2018-01-31T10:23:26Z", "updatedBy": "a-7p9t2v-zsrcacabpa", "refs": { "logicalInterface": "/api/v0002/draft/logicalinterfaces/5846ed076522050001db0e12" } }
- 次のAPIを使用して、 tempRuleMin 次のAPIを使用して追加します。
POST /draft/logicalinterfaces/5846ed076522050001db0e12/rules
リクエストの本文に、ルール名 、条件パラメータ、 通知戦略パラメータを含めます
この POST メソッドに対する応答の例を以下に示します。{ "name" : "tempRuleMin", "condition" : "$state.temperature < $instance.metadata.tempThresholdMin", "notificationStrategy": { "when": "every-time" } }
デバイスの状態の temperature プロパティーが、 tSensor デバイス・インスタンスのメタデータの tempThresholdMin プロパティーで指定されている値を下回ると、tempRuleMin ルールが起動されます。 この例では、値は摂氏 10 度です。{ "name": "tempRuleMin", "id": "5a71991e59080100328710e10", "logicalInterfaceId": "5846ed076522050001db0e12", "condition": "$state.temperature < $instance.metadata.tempThresholdMin", "notificationStrategy": { "when": "every-time" }, "version": "draft", "created": "2018-01-31T10:23:26Z", "createdBy": "a-7p9t2v-zsrcacabpa", "updated": "2018-01-31T10:23:26Z", "updatedBy": "a-7p9t2v-zsrcacabpa", "refs": { "logicalInterface": "/api/v0002/draft/logicalinterfaces/5846ed076522050001db0e12" } }
- activate-configuration 操作を使用して、構成を検証およびアクティブ化します。
ルールを追加した後に構成をアクティブ化する必要があります。これは、ルールを追加するアクションによってドラフト・モデルが変更されるためです。 アクティブ化-構成 操作は、デバイス・タイプまたは論理インターフェースのドラフト・バージョンに対して実行できます。 以下の例は、デバイス・タイプのドラフト・バージョンに対して、アクティブ化-構成 操作が実行される際の PATCH 要求を示しています。
ここで、PATCH 本文のペイロードには、以下の内容が含まれます。PATCH /draft/device/types/{typeId}
{ "operation": "activate-configuration" }
- 以下の API を使用して、アクティブな論理インターフェース上の現行ルールを表示します。
GET /logicalinterfaces/5846ed076522050001db0e12/rules
以下の例は、GET メソッドへの応答を示しています。
APIの使用方法の詳細については、ローカルのAPIドキュメントの[ tool HTTP REST API]を参照してください。 ローカル・ドキュメントへのアクセスについては、 APIを参照のこと。[ { "name": "tempRuleMax", "id": "5a71991e59080100328710e9", "logicalInterfaceId": "5846ed076522050001db0e12", "condition": "$state.temperature > $instance.metadata.tempThresholdMax", "notificationStrategy": { "when": "every-time" }, "version": "active", "created": "2018-01-31T10:23:26Z", "createdBy": "a-7p9t2v-zsrcacabpa", "updated": "2018-01-31T10:23:26Z", "updatedBy": "a-7p9t2v-zsrcacabpa", "refs": { "logicalInterface": "/api/v0002/logicalinterfaces/5846ed076522050001db0e12" } }, { "name": "tempRuleMin", "id": "5a71561e59055500328710e10", "logicalInterfaceId": "5846ed076522050001db0e12", "condition": "$state.temperature < $instance.metadata.tempThresholdMin", "notificationStrategy": { "when": "every-time" }, "version": "active", "created": "2018-01-31T10:23:26Z", "createdBy": "a-7p9t2v-zsrcacabpa", "updated": "2018-01-31T10:23:26Z", "updatedBy": "a-7p9t2v-zsrcacabpa", "refs": { "logicalInterface": "/api/v0002/logicalinterfaces/5846ed076522050001db0e12" } } ]
- ルール通知の取り込み これで、 アクション をセットアップしたり、ルールの出力をコンシュームするように外部アプリケーションを構成したりできます。 詳しくは、 ルール通知のコンシュームを参照してください。