(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Watson/IoT】curlにて特定デバイスのEvent情報を取得するも403となる

スポンサーリンク

事象

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として利用しました。