APIリファレンス¶
デバイスアプリケーション・Webアプリケーション向け共通API¶
HTTP REST API¶
ログイン¶
デバイスアプリケーション・Webアプリケーション向けのHTTP REST APIの実行に必要なセッショントークンを取得するためのAPIです。
項目 | 説明 |
---|---|
URI | http://{ホスト名 }:{ポート }/api/1/{テナント名 }/api/broker/login |
HTTPメソッド | POST |
HTTPヘッダ |
|
リクエストボディ | 登録したいデバイスデータを含む以下のJSONデータを送信します。各プロパティの設定は任意です。 username : 接続に用いるデバイスアカウントのIDを指定します。 password : 接続に用いるデバイスアカウントのIDを指定します。 |
レスポンスボディ | 以下の情報を含むJSONが返却されます。 sessionToken : セッショントークン |
備考 | なし |
デバイスの状態取得¶
指定したデバイスIDのDevice Phantomを取得します。
項目 | 説明 |
---|---|
URI | http://{ホスト名}:{ポート}/api/1/{テナント名}/api/broker/devices/{deviceType}/{deviceId} |
HTTPメソッド | GET |
HTTPヘッダ |
|
リクエストボディ | なし |
レスポンスボディ | Device PhantomのJSONデータが返却されます |
備考 | なし |
デバイスの状態削除¶
指定したデバイスIDのDevice Phantomを削除します。
項目 | 説明 |
---|---|
URI | http://{ホスト名}:{ポート}/api/1/{テナント名}/api/broker/devices/{deviceType}/{deviceId} |
HTTPメソッド | DELTE |
HTTPヘッダ |
|
リクエストボディ | なし |
レスポンスボディ | なし |
備考 | なし |
デバイス向けAPI¶
デバイス向けAPIはデバイスがデバイスデータを送信するためのAPIとCAPが保持する最新データをデバイスが取得するためのAPIの2種類があります。各APIはHTTPとMQTTのプロトコルに対応しています。
なお、{}で括った箇所は実行したいAPIの対象に合わせて設定してください。{deviceId}と書かれた箇所は、サービス運用画面で登録したデバイスアカウントのIDを指定します。
HTTP REST API¶
デバイスデータの送信¶
デバイスがCAPにデバイスデータを送信するためのAPIです。
項目 | 説明 |
---|---|
URI | http://{ホスト名}:{ポート}/api/1/{テナント名}/api/broker/devices/{deviceType}/{deviceId}/reported |
HTTPメソッド | PUT |
HTTPヘッダ |
|
リクエストボディ | 登録したいデバイスデータを含む以下のJSONデータを送信します。各プロパティの設定は任意です。 deviceId : デバイスIDを指定します。 attributes.reported : センシングデータを設定します。 metadata.reported : センシングデータのメタデータを設定します。 |
レスポンスボディ | なし |
備考 | なし |
アクチュエーション指示の取得¶
デバイスがアクチュエーション指示を取得するAPIです。アクチュエーション指示がない場合は、発生するまで一定時間待機します。
項目 | 説明 |
---|---|
URI | http://{ホスト名}:{ポート}/api/1/{テナント名}/api/broker/devices/{deviceType}/{deviceId}/event |
HTTPメソッド | GET |
HTTPヘッダ |
|
リクエストボディ | なし |
レスポンスボディ | JSON形式で目標状態値,最後に報告された状態値,状態の設定値とデバイスの最新状態の差分,メタデータなどを受信します。 詳細は「Device Phantomの仕様理解」を参照して下さい |
備考 | 本APIは定期的に呼び出し(ポーリング)して利用することを推奨します。アクチュエーション指示が発生した場合は,HTTP ステータスコード:200 OKと共にアクチュエーション指示が得られます。アクチュエーション指示が発生しない場合,REST APIは一定時間ブロックした後に,HTTP ステータスコード:204 No Contentを返します. |
MQTT API¶
MQTT用のAPIは非同期で処理されるため、APIの呼び出し(処理実行)と結果取得(結果確認)はそれぞれ異なるトピックを用いて実施する必要があります。 APIの呼び出しは対象となるトピックにpublishし、結果の取得は対象となるトピックをsubscribeします。 結果の取得や確認を行う場合は、APIを呼び出す前にsubscribeを実施して、結果の待ち受け状態にしてから、APIのリクエスト送信してください。
デバイスデータの送信¶
デバイスデータの送信 (API呼び出し)¶
デバイスがCAPにデバイスデータを送信するためのAPIです。
項目 | 説明 |
---|---|
トピック | eventhub/v1/{ホスト名}/{deviceType}/{deviceId}/phantom/report |
送信データ | 登録したいデバイスデータを含む以下のJSONデータを送信します。各プロパティの設定は任意です。 deviceId : デバイスIDを指定します。 attributes.reported : センシングデータを設定します。 metadata.reported : センシングデータのメタデータを設定します。 |
デバイスデータ送信の結果取得¶
項目 | 説明 |
---|---|
トピック | 成功/失敗を確認するため、以下のトピック指定でサブスクライブします eventhub/v1/{ホスト名}/{deviceType}/{deviceId}/phantom/report/+ ・IoT Event Hubが受理した場合、以下のトピックにデータが返却されます eventhub/v1/{ホスト名}/{deviceType}/{deviceId}/phantom/report/accepted ・IoT Event Hubが拒否した場合、以下のトピックにデータが返却されます eventhub/v1/{ホスト名}/{deviceType}/{deviceId}/phantom/report/rejected |
受信データ | acceptedの場合、Device PhantomのJSONを受信します rejectedの場合は以下のプロパティを持つJSONを受信します。
|
Device Phantomの取得¶
デバイスデータの取得指示 (API呼び出し)¶
デバイスがDevice Phantomの値の取得するAPIです。
項目 | 説明 |
---|---|
トピック | eventhub/v1/{ホスト名}/{deviceType}/{deviceId}/phantom/get |
送信データ | 空データ |
デバイスデータの取得指示の結果取得¶
項目 | 説明 |
---|---|
トピック | 成功/失敗を確認するため、以下のトピック指定でサブスクライブします eventhub/v1/{ホスト名}/{deviceType}/{deviceId}/phantom/get/+ ・IoT Event Hubが受理した場合、以下のトピックにデータが返却されます eventhub/v1/{ホスト名}/{deviceType}/{deviceId}/phantom/get/accepted ・IoT Event Hubが拒否した場合、以下のトピックにデータが返却されます eventhub/v1/{ホスト名}/{deviceType}/{deviceId}/phantom/get/rejected |
受信データ | acceptedの場合、Device PhantomのJSONを受信します rejectedの場合は以下のプロパティを持つJSONを受信します。
|
Actuationの取得¶
デバイスがCAPからアクチュエーション指示を取得するAPIです。subscribeでアクチュエーション指示のイベント発生を待つため、API呼び出し(publish)は不要です。
項目 | 説明 |
---|---|
トピック | eventhub/v1/{ホスト名}/{ deviceType }/{deviceId}/phantom/actuate |
受信データ | Device PhantomのJSONを受信します |
Web アプリケーション向けAPI¶
Web アプリケーション向けに提供するAPIです。
HTTP REST API¶
期待するデバイス状態の設定¶
WebアプリケーションからCAPへ期待するデバイスの状態の設定を行うAPIです。CAPはデータ受信後にDevice Phantomの登録・更新を行います。
項目 | 説明 |
---|---|
URI | http://{ホスト名}:{ポート}/api/1/{テナント名}/api/broker/devices/{deviceType}/{deviceId}/desired |
HTTPメソッド | PUT |
HTTPヘッダ |
|
リクエストボディ | リクエストボディ 登録したいデバイスデータを含む以下のJSONデータを送信します。各プロパティの設定は任意です。 deviceId : デバイスIDを指定します。 attributes.desired: 期待するデバイスの状態の設定値を設定します。 metadata.desired : 期待するデバイスの状態の設定情報のメタデータを設定します。 |
レスポンスボディ | なし |
備考 | なし |
デバイスIDの一覧取得¶
指定したデバイスタイプに含まれるデバイスIDの一覧を返します。
項目 | 説明 |
---|---|
URI | http://{ホスト名}:{ポート}/api/1/{テナント名}/api/broker/deviceids/{deviceType} |
HTTPメソッド | GET |
HTTPヘッダ |
|
リクエストボディ | なし |
レスポンスボディ | JSON形式.{ "deviceIds": [ "デバイスID0", "デバイスID1", … ] } |
備考 | なし |
デバイス検索¶
条件によるデバイスの検索を行います。
項目 | 説明 |
---|---|
URI | http://{ホスト名}:{ポート}/api/1/{テナント名}/api/broker/devices/query/{deviceType} |
HTTPメソッド | POST |
HTTPヘッダ |
|
リクエストボディ | 文字列 (SQLクエリ) ※を設定します。クエリの仕様については後述の説明を参照ください。 |
レスポンスボディ | JSON形式。クエリ結果の文字列を { "result": ["クエリ結果文字列1", "クエリ結果文字列2", …] } というJSONで返します。 個々のクエリ結果文字列の仕様はIoT Event Hubの仕様を参照して下さい |
備考 | なし |
デバイス検索のクエリについて¶
CAPでは以下の例のようなSQLライクなクエリでの検索が実行可能です。
{
"sql": “select * from <デバイスタイプ名> where <デバイスタイプに登録したailias名> > 条件”
}
"sql": "select * from
、 where
の文字列は固定値です。<>の値はCAPに設定した内容に合わせてください。
クエリでは複数のデバイスタイプを利用した副問い合わせも可能です。
{
“sql”: “select * from <デバイスタイプ名> XX <デバイスタイプ名> XX where XX.<デバイスタイプ XXに登録したailias名> in (select YY.<デバイスタイプ YYに登録したalias名> form <デバイスタイプ名> YY where YY.value < 条件式)”
}
デバイスの状態一括削除¶
指定したデバイスタイプのDevice Phantomを一括削除します。
項目 | 説明 |
---|---|
URI | http://{ホスト名}:{ポート}/api/1/{テナント名}/api/broker/devices/{deviceType} |
HTTPメソッド | DELETE |
HTTPヘッダ |
|
リクエストボディ | なし |
レスポンスボディ | なし |
備考 | なし |
蓄積データのクエリによる取得(同期)¶
蓄積したデータを検索し、返します。
項目 | 説明 |
---|---|
URI | http://{ホスト名}:{ポート}/api/1/{テナント名}/api/storedata/query/{データ保存先名} |
HTTPメソッド | GET |
HTTPヘッダ |
|
クエリパラメータ |
|
リクエストボディ | なし |
レスポンスボディ | クエリ結果の文字列を {"results": ["クエリ結果文字列1", "クエリ結果文字列2", …], "currentTime": "クエリ実行時刻"} という形式のJSONで返します。 |
備考 | なし |
蓄積データのクエリによる更新(同期)¶
蓄積したデータを検索し、指定したJSONで更新します。
項目 | 説明 |
---|---|
URI | http://{ホスト名}:{ポート}/api/1/{テナント名}/api/storedata/query/{データ保存先名} |
HTTPメソッド | PUT |
HTTPヘッダ |
|
クエリパラメータ |
|
リクエストボディ | 更新するJSONデータ (必須) |
レスポンスボディ | なし |
備考 | なし |
蓄積データのクエリによる削除(同期)¶
蓄積したデータを検索し、削除します。
項目 | 説明 |
---|---|
URI | http://{ホスト名}:{ポート}/api/1/{テナント名}/api/storedata/query/{データ保存先名} |
HTTPメソッド | DELETE |
HTTPヘッダ |
|
クエリパラメータ |
|
リクエストボディ | なし |
レスポンスボディ | {"result": "ok", "deletedObjects": <削除されたデータ数>} |
備考 | なし |
蓄積データの取得(非同期)¶
蓄積したデータを検索し、結果を非同期で返します。本APIは以下の流れで使用します。
-
リクエストを送信します。
-
レスポンスボディのstatusUrlプロパティの値のURLにアクセスしてstatusの値を確認し、値が"DONE"になるまで待ちます。
リクエスト受付時のstatusの値は"RUNNING"です。処理が完了するとstatusの値が"DONE"になります。 statusの値が"DONE"になるまでの時間は蓄積データの量やクエリ内容によって変わります。 -
statusの値が"DONE"になっていることを確認後、レスポンスボディのresultUrlプロパティの値のURLにアクセスして検索結果を取得します。
項目 | 説明 |
---|---|
URI | http://{ホスト名}:{ポート}/api/1/{テナント名}/api/storedata/asyncquery/{データ保存先名} |
HTTPメソッド | GET |
HTTPヘッダ |
|
クエリパラメータ |
|
リクエストボディ | なし |
レスポンスボディ | 以下のプロパティを持ったJSON形式。
|
statusUrlのファイル内容 | 以下のプロパティを持ったJSON形式。
|
resultUrlのファイル内容 | {"results": ["クエリ結果文字列1", "クエリ結果文字列2", …], "currentTime": "クエリ実行時刻"} という形式のJSON。 |
備考 | なし |
蓄積データの更新(非同期)¶
蓄積したデータを検索し、結果を非同期で更新します。本APIは以下の流れで使用します。
-
リクエストを送信します。
-
レスポンスボディのstatusUrlプロパティの値のURLにアクセスしてstatusの値を確認し、値が"DONE"になるまで待ちます。\ リクエスト受付時のstatusの値は"RUNNING"です。処理が完了するとstatusの値が"DONE"になります。statusの値が"DONE"になるまでの時間は蓄積データの量やクエリ内容によって変わります。
-
statusの値が"DONE"になっていれば、蓄積データの更新処理は完了しています。
項目 | 説明 |
---|---|
URI | http://{ホスト名}:{ポート}/api/1/{テナント名}/api/storedata/asyncquery/{データ保存先名} |
HTTPメソッド | PUT |
HTTPヘッダ |
|
クエリパラメータ |
|
リクエストボディ | 更新するJSONデータ (必須) |
レスポンスボディ | 以下のプロパティを持ったJSON形式。
|
statusUrlのファイル内容 | 以下のプロパティを持ったJSON形式。
|
備考 | なし |
蓄積データの削除(非同期)¶
蓄積したデータを検索し、結果を非同期で削除します。本APIは以下の流れで使用します。
-
リクエストを送信します。
-
レスポンスボディのstatusUrlプロパティの値のURLにアクセスしてstatusの値を確認し、値が"DONE"になるまで待ちます。 リクエスト受付時のstatusの値は"RUNNING"です。処理が完了するとstatusの値が"DONE"になります。statusの値が"DONE"になるまでの時間は蓄積データの量やクエリ内容によって変わります。
-
statusの値が"DONE"になっていれば、蓄積データの削除処理は完了しています。
項目 | 説明 |
---|---|
URI | http://{ホスト名}:{ポート}/api/1/{テナント名}/api/storedata/asyncquery/{データ保存先名} |
HTTPメソッド | DELETE |
HTTPヘッダ |
|
クエリパラメータ |
|
リクエストボディ | なし |
レスポンスボディ | 以下のプロパティを持ったJSON形式。
|
statusUrlのファイル内容 | 以下のプロパティを持ったJSON形式。
|
備考 | なし |