事象
Get all last events for a specific deviceと説明があるAPIを以下のように利用するも
$ curl -X GET "https://xx.internetofthings.ibmcloud.com/api/v0002/device/types/test/devices/test_1/events" -H "accept: application/json" -H "authorization: Basic XX"
以下のエラーとなる
{"message":"CUDCS0106E: <missing messageId in bundle com.ibm.wiotp.util.httpservice.nls.servicemessages>" ,"exception":{"id":"CUDCS0106E","properties":["xx"]}}
尚、詳細をSwagger経由で確認すると"403 Error: Forbidden"が出ている。
環境情報
- Watson IoT Platform v7.0.28
原因/解決策
設定画面にて"最新イベント・キャッシュ"がオフになっていた。
同設定をアクティブにした結果、APIキーは更新せずとも
$ curl -X GET "https://xx.internetofthings.ibmcloud.com/api/v0002/device/types/test/devices/test_1/events/event_1" -H "accept: application/json" -H "authorization: Basic XX" {"typeId":"test","deviceId":"test_1","eventId":"event_1","format":"json","timestamp":".."payload":"..."}
イベント情報が取得できる。
以下、補足です。
補足
IBM Watson IoT Platformの”一般設定”で同項目を編集しました。
同設定がオフになっている事自体は同じくAPIを叩いて認識していましたが
$ curl -X GET "https://xx.internetofthings.ibmcloud.com/api/v0002/config/lec" -H "accept: application/json" -H "authorization: Basic XX" {"enabled":true,"ttlDays":7}
イベント情報の取得にも必要のようです。
また、CurlにはAPIキーの事前作成が必要でそれらをBasic authorizationとして利用しました。