トリガーの管理

トリガーが登録されると、登録済みのトリガーについて以下の管理機能を利用できます。

トリガーの削除

トリガーを削除する例を以下に挙げます。

curl -v -X DELETE \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "X-Kii-AppID: {APP_ID}" \
  -H "X-Kii-AppKey: {APP_KEY}" \
  "https://api-jp.kii.com/thing-if/apps/{APP_ID}/targets/thing:{THING_ID}/triggers/{TRIGGER_ID}"

Thing または Thing オーナーのアクセストークンを指定してください。また {THING_ID}{TRIGGER_ID} を、それぞれ対象となる Thing の thingID とトリガーの triggerID に差し替えてください。

トリガーの削除に成功すると、Thing Interaction Framework は 204 応答を返します。

トリガーの有効化と無効化

無効化

トリガーは無効化できます。無効化すると、トリガーの条件が満たされてもコマンドは実行されません。

トリガーを無効化する例を以下に挙げます。

curl -v -X PUT \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "X-Kii-AppID: {APP_ID}" \
  -H "X-Kii-AppKey: {APP_KEY}" \
  "https://api-jp.kii.com/thing-if/apps/{APP_ID}/targets/thing:{THING_ID}/triggers/{TRIGGER_ID}/disable"

Thing または Thing オーナーのアクセストークンを指定してください。また {THING_ID}{TRIGGER_ID} を、それぞれ対象となる Thing の thingID とトリガーの triggerID に差し替えてください。

トリガーの無効化に成功すると、Thing Interaction Framework は 204 応答を返します。

有効化

無効化されたトリガーは再度有効化できます。有効化すると、トリガーの条件が満たされると再度コマンドが実行されるようになります。

トリガーを有効化する例を以下に挙げます。

curl -v -X PUT \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "X-Kii-AppID: {APP_ID}" \
  -H "X-Kii-AppKey: {APP_KEY}" \
  "https://api-jp.kii.com/thing-if/apps/{APP_ID}/targets/thing:{THING_ID}/triggers/{TRIGGER_ID}/enable"

Thing または Thing オーナーのアクセストークンを指定してください。また {THING_ID}{TRIGGER_ID} を、それぞれ対象となる Thing の thingID とトリガーの triggerID に差し替えてください。

トリガーの有効化に成功すると、Thing Interaction Framework は 204 応答を返します。

トリガーの更新

コマンドを自動実行するトリガーの更新例を以下に挙げます。

curl -v -X PATCH \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "X-Kii-AppID: {APP_ID}" \
  -H "X-Kii-AppKey: {APP_KEY}" \
  -H "Content-Type: application/json" \
  "https://api-jp.kii.com/thing-if/apps/{APP_ID}/targets/thing:{THING_ID}/triggers/{TRIGGER_ID}" \
  -d '{
    "triggersWhat": "COMMAND",
    "predicate": {
      "eventSource": "STATES",
      "condition": {
        "type": "eq",
        "field": "power",
        "value": true
      },
      "triggersWhen": "CONDITION_FALSE_TO_TRUE"
    },
    "title": "Modified test title",
    "description": "Modified test description",
    "metadata": {
      "color": "red",
      "hex": "#333"
    }
  }'

Thing または Thing オーナーのアクセストークンを指定してください。また {THING_ID}{TRIGGER_ID} を、それぞれ対象となる Thing の thingID とトリガーの triggerID に差し替えてください。

トリガーの更新に成功すると、Thing Interaction Framework は 204 応答を返します。

Server Code を自動実行するトリガーも同様に更新できます。

トリガーの取得

トリガーを取得する例を以下に挙げます。

curl -v -X GET \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "X-Kii-AppID: {APP_ID}" \
  -H "X-Kii-AppKey: {APP_KEY}" \
  "https://api-jp.kii.com/thing-if/apps/{APP_ID}/targets/thing:{THING_ID}/triggers/{TRIGGER_ID}"

Thing または Thing オーナーのアクセストークンを指定してください。また {THING_ID}{TRIGGER_ID} を、それぞれ対象となる Thing の thingID とトリガーの triggerID に差し替えてください。

トリガーは以下のように 200 応答で返されます。

HTTP/1.1 200 OK
Content-Type: application/json
{
  "triggersWhat": "COMMAND",
  "triggerID":"{TRIGGER_ID}",
  "predicate":{
    "eventSource":"STATES",
    "condition":{"field":"power", "type":"eq", "value":true},
    "triggersWhen":"CONDITION_CHANGED"
  },
  "command":{
    "schema":"SmartLight",
    "schemaVersion":1,
    "actions":[
      {"setLightColor": {"lightColor": "333"}}
    ],
    "issuer":"user:{USER_ID}",
    "target":"thing:{THIHG_ID}"
  },
  "title":"Test title",
  "description":"Test description",
  "disabled":false,
  "metadata":{
    "color":"red",
    "hex":"#333"
  }
}

現在トリガーが有効か無効かは disabled フィールドで確認できます。

トリガー一覧の取得

Thing Interaction Framework に登録済みの全てのトリガーを取得する例を以下に挙げます。

curl -v -X GET \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "X-Kii-AppID: {APP_ID}" \
  -H "X-Kii-AppKey: {APP_KEY}" \
  "https://api-jp.kii.com/thing-if/apps/{APP_ID}/targets/thing:{THING_ID}/triggers"

Thing または Thing オーナーのアクセストークンを指定してください。また {THING_ID} を、対象となる Thing の thingID に差し替えてください。

トリガー一覧は、以下のように 200 応答として返されます。

HTTP/1.1 200 OK
Content-Type: application/json
{
  "triggers": [
    {
      "triggersWhat": "COMMAND",
      "triggerID": "{TRIGGER_ID}",
      "predicate": {
        "eventSource": "STATES",
        "condition": {"type": "eq", "field": "power", "value": true},
        "triggersWhen": "CONDITION_CHANGED"
      },
      "command": {
        "schema": "SmartLight",
        "schemaVersion": 1,
        "actions": [
          {"setLightColor": {"lightColor": "333"}}
        ],
        "target": "thing:th.350948a00022-2d68-5e11-232a-001e9c52",
        "issuer": "user:d3d808a00022-2e0a-5e11-132a-00e8a0d9 "
      },
      "title": "Modified test title",
      "description": "Modified test description",
      "disabled": false,
      "metadata": {
        "color": "red",
        "hex": "#333"
      }
    },
    {
      "triggersWhat": "COMMAND",
      "triggerID": "{TRIGGER_ID}",

      ... the trigger detail follows ...
    }
  ]
}

上の例のように、triggers フィールドにトリガーの配列が格納されます。

コマンドの自動実行を行うトリガーと、Server Code の自動実行を行うトリガーの両方が混在状態で取得できます。

ページネーション

登録済みトリガーが多数存在する場合、一回の応答で全てのトリガーを取得できない場合があります。このような場合、ページネーションキー paginationKey を使ってトリガーの取得を行います。

初回の取得では、通常どおり("paginationKey" を指定せずに)GET コマンドを実行します。

curl -v -X GET \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "X-Kii-AppID: {APP_ID}" \
  -H "X-Kii-AppKey: {APP_KEY}" \
  "https://api-jp.kii.com/thing-if/apps/{APP_ID}/targets/thing:{THING_ID}/triggers"

全てのトリガーを一度に返せない場合、Thing Interaction Framework はトリガーの一部とともに "nextPaginationKey" という値を返します。

    ... an array of triggers ...

    }
  ],
  "nextPaginationKey":"XXXYYY"
}

この "nextPaginationKey" の値をクエリパラメータ- paginationKey に指定して GET コマンドを再度実行すると、未取得のトリガーを受け取ることができます。

curl -v -X GET \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "X-Kii-AppID: {APP_ID}" \
  -H "X-Kii-AppKey: {APP_KEY}" \
  "https://api-jp.kii.com/thing-if/apps/{APP_ID}/targets/thing:{THING_ID}/triggers?paginationKey=XXXYYY?bestEffortLimit=100"

上記の例のように bestEffortLimit を指定することで、一度に返されるトリガー数の上限を指定することもできます。

なお、"nextPaginationKey" はページ指定の文字列のように見えますが、独自の値を与えることはできず、常に直前の検索結果で返されたものを指定します。

取得の結果、さらに次の "nextPaginationKey" が返された場合は、同様にこの値を指定して次のトリガー一覧を取得します。取得結果に "nextPaginationKey" が含まれない場合は、全件の取得が完了したことを意味します。