APIリファレンス (V2.0.0)
ここでは、ServwatchのREST APIを使う上での基本的な決まりを解説します。
用語の説明
デバイス
デバイスはServwatchの監視対象ホストの最小単位です。
基本的にデバイスはServwatchエージェントにより自動登録されますが、手動登録することも可能です。
いずれの場合もデバイス作成後はメトリクスをストアするチャネルにマップする必要が生じます。
手動登録
例:管理コンソールから手動でデバイスIDを登録した場合自動登録(オートプロビジョニング)
例:エージェントがServwatchにデバイスを自動登録した場合
デバイスの内容はdevice serviceにより取得することができます。
チャネル
Channel(チャネル)はデバイスからのデータを蓄積する論理チャネルです。
チャネルIDは常に整数値で指定されます。
チャネルはスキーマレスなJSONオブジェクトを格納可能な時系列データベースです。
チャネルの内容はchannel serviceにより取得することができます。
メトリクス
メトリクスはデバイス(サーバ)が送信した各種パフォーマンスデータです。(例:CPU idle)
データフォーマートはJSONオブジェクト形式で記述する必要があります。
NOTE
文字列はUTF-8でエンコードされている必要があります。
メトリクスはデバイスにマップされたチャネルID毎にストアされます。
メトリクスはStream serviceにより取得することができます。
APIについて
デバイス(サーバ)とServmetry間はMQTTプロトコルにより通信を行い、アプリケーションとServmetry間はHTTP(S)プロトコルを利用します。
REST API(HTTP/HTTPSプロトコル)はアプリケーションから呼び出され、デバイスの管理やメトリクスの読み取りを行います。
APIは用途により、以下が用意されています。
Device service:デバイスの管理・チャネルマップ・アクティベーション
Channel service:メトリクス格納チャネルの管理
Stream service:メトリクスの参照
Event service:イベント処理(しきい値の設定・外部システムへの通知)の設定
User service:ユーザ情報(メールアドレス・トークン情報etc)の参照・設定
APIのバージョニング
APIバージョンはエンドポイントURIに規定されています。(e.g. https://m.thingscale.io/v2/<SERVICE_NAME>)
現在のAPIバージョン・リリースノートはRelease Noteを参照してください。
セキュリティ
全てのServwatchとの通信はhttps(HTTP over TLS)により行われます。
これはServwatchとデバイス、アプリケーション間の通信が暗号化されて行われる事を保証します。
HTTP/MQTTデバイスコネクタは非力なデバイス(ゲートウェイ含む)のために非暗号化接続も利用可能です。
HTTP/HTTPS(MQTT/MQTTS)接続は長所と短所を含みますが、お使いの環境に応じて最適な方法をセキュリティ上のトレードオフも考慮して選択してください。
通信経路上のセキュリティを確保するためにHTTPS/MQTTSによる暗号化接続を強く推奨します。
プロトコル | セキュリティ | デバイスに要求されるシステムリソース |
---|---|---|
HTTP/MQTT | 脆弱(非暗号化接続) | 低い |
HTTPS/MQTTS | 堅牢(暗号化接続 - 第3者による中間攻撃を防ぐ) | 高い(より多くのメモリとCPU時間を必要とします。) |
トークン
トークンはユーザ毎に割り当てられたREST API/デバイスコネクタの認証キーです。
APIトークンを利用する全てのケースにおいて、HTTPS(TLS)接続を利用されることを強く推奨します。
APIトークン
全てのRESTful API操作においてAPIトークンが使用されます。デバイストークン
デバイスからプラットフォームへのデータ送信時(HTTP/MQTTデバイスコネクタ利用時)のみ利用されます。
NOTE
デバイストークンはデバイス単位ではなくユーザ単位に割り当てられます。これはデバイス配布時の設定タスク(デバイス毎のトークンの埋め込み作業)を簡略化するためです。
fig.2 トークン概略
トークンの役割:
トークンタイプ: | REST API | HTTP/MQTTデバイスコネクタ |
---|---|---|
APIトークン | 必要 | - |
デバイストークン | - | 必要 |
データフォーマットと日付の取り扱い
全てのAPIリクエストとレスポンスはJSONペイロードにて通知されます。
HTTP/MQTTデバイスコネクタはURLエンコード形式のペイロードを利用します。
全てのタイムスタンプはUTC時間に対しての相対時間としてISO8601:2004形式として表記されます。
Sample
e.g. Stream response(TZ="Asia/Tokyo")
{"_id":"54d3fc256807f4a616acbb33","value":11.1,"value2":47.9,"value3":null,"value4":null,"at":"2015-02-06T08:26:29+0900"}
e.g. Device list response(TZ="Asia/Tokyo")
{
"device_id": "1085266243",
"description": "sensirion sht-25",
"enable": "true",
"mapped_ch": 0,
"device_type": "Xbee Pro2",
"location": "Niigata,Japan",
"manufacturer": "Sensincs,llc",
"activate_at": "2015-01-13T16:58:00+09:00"
}
APIレートリミット
API/HTTPデバイスコネクタ使用時は同一IPアドレスからの秒間あたりのAPIリクエスト数に応じてレートリミット(流量制御)が適用されます。
(MQTTデバイスコネクタにはレートリミットは適用されません)
現在のレートリミット上限は以下の通りです。
REST API
20 リクエスト/秒デバイスコネクタ(HTTP利用時のみ)
1 リクエスト/秒
On this page:
© 2014-2022 SENSINICS,LLC