Gateway Management Solution Based on Intel IoT Platform

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual August 2015 Document Number: 332845-001US You may not use or facilita...
Author: Victor Bradford
0 downloads 2 Views 2MB Size
Gateway Management Solution Based on Intel® IoT Platform API Reference Manual August 2015

Document Number: 332845-001US

You may not use or facilitate the use of this document in connection with any infringement or other legal analysis concerning Intel products described herein. You agree to grant Intel a non-exclusive, royalty-free license to any patent claim thereafter drafted which includes subject matter disclosed herein No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document. All information provided here is subject to change without notice. Contact your Intel representative to obtain the latest Intel product specifications and roadmaps. The products described may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request. Copies of documents which have an order number and are referenced in this document may be obtained by calling 1-800-548-4725 or by visiting: http://www.intel.com/design/literature.htm. Intel technologies’ features and benefits depend on system configuration and may require enabled hardware, software or service activation. Learn more at http://www.intel.com/ or from the OEM or retailer. No computer system can be absolutely secure. Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries. *Other names and brands may be claimed as the property of others. Copyright © 2015, Intel Corporation. All rights reserved.

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 2

August 2015 Document Number: 332845-001US

Contents 1.0

Introduction ............................................................................................................................................ 5 1.1

2.0

Reference Documents ................................................................................................................................ 5

Definitions and Architecture ......................................................................................................... 6 2.1 2.2

Architecture ....................................................................................................................................................... 6 Communication Encryption ..................................................................................................................... 6

3.0

Device API Definition ........................................................................................................................ 7

4.0

Management API Definition ........................................................................................................ 21 4.1 4.2 4.3 4.4 4.5

5.0

User Management .......................................................................................................................................21 Project Information API...........................................................................................................................30 Device Information API ...........................................................................................................................37 Data Management API .............................................................................................................................54 Log Management API ................................................................................................................................65

Error Code Range ............................................................................................................................... 69

Appendix A ................................................................................................................................ API List

Tables Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.

Reference Documents ................................................................................................................................ 5 Control APIs in REST Paths .................................................................................................................... 7 Control API Interface Details ................................................................................................................. 8 Use Roles...........................................................................................................................................................21 User Management API in Restful Paths ........................................................................................21 User Management API Details ............................................................................................................22 Project Information Management API ...........................................................................................31 Project Information Management API Details .........................................................................31 Device Information Management API ...........................................................................................37 Device Management API Details .......................................................................................................38 Data Management API .............................................................................................................................54 Data Management API Details............................................................................................................55 Log Management APIs .............................................................................................................................65 Log Management API Details ..............................................................................................................66 Error Code Ranges ......................................................................................................................................69 API List................................................................................................................................................................70

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 3

70

Revision History Date

Revision

August 2015

1.0

Description Initial release.

§

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 4

August 2015 Document Number: 332845-001US

Introduction

1.0

Introduction This document defines the Application Programming Interface (API) between the cloud backend and the frontend management interface. In addition to the platform management portal, the frontend also includes system like data visualization. The document also defines the communication requirements between backend of the system and gateway device.

1.1 Table 1.

Reference Documents Reference Documents Document

Document No./Location

The JSON Data Interchange Standard

ECMA-404

§

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 5

Definitions and Architecture

2.0

Definitions and Architecture

2.1

Architecture In the system, the API system acts as the backend that exports functions by HTTP POST invocation. The frontend is a UI module that handles all human interactions. MQTT Broker is adopted for the communication between the backend system and the edge gateways. The API calls for the edge gateways are named device APIs. The API calls for platform and data management are named management APIs. These two categories of APIs bridge the frontend systems and the backend.

2.2

Communication Encryption The API includes the authentication for user messages. However, it is required to adopt the transportation layer encryption for additional security. The API can be wrapped as a JAVA class interface. §

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 6

August 2015 Document Number: 332845-001US

Device API Definition

3.0

Device API Definition The device APIs include two categories of APIs: One is the control API for gateways via the MQTT broker, and the other is the data APIs for gateway submitting data and other information. The frontend management portal can call the control APIs to manage individual gateway device. The control APIs are applied to the gateway device even though they are proxied by the MQTT Broker. Such APIs include operations to the gateway configuration, applications, and base platform. Because control APIs need to be transmitted over the network, executed by the gateway, and then collected the returned value, there are uncontrollable latency on the network and variance in gateway execution time. Thus control APIs are all defined as bi-stage APIs, where the stage-1 API call returns an API query code and its timeout value if successful accepted. The caller has to call the API status query API (getAPIStatus as the stage-2 API call) with the query code after the timeout value to obtain the control API return value. If the API has not finished execution, a new API query code and timeout value is returned for the next status query. The following are the control APIs in REST paths.

Table 2.

Control APIs in REST Paths Index

API Method and Path

Functionality

A.1

POST dev/ctl/getVer

Get gateway version.

A.2

POST dev/ctl/getcfg

Get gateway configuration.

A.3

POST dev/ctl/setcfg

Set gateway configuration.

A.4

POST dev/ctl/ping

Get the gateway online status.

A.5

POST dev/ctl/updatefirmware

Update gateway firmware.

A.6

POST dev/ctl/system

Execute customized system command

A.7

POST dev/ctl/getapplist

Get list of applications on gateway

A.8

POST dev/ctl/startapp

Start one application

A.9

POST dev/ctl/stopapp

Stop one application

A.10

POST dev/ctl/installapp

Install one application

A.11

POST dev/ctl/reboot

Restart the gateway

A.12

POST dev/ctl/filec2d

Transfer a file from cloud to device

A.13

POST dev/ctl/filed2c

Transfer a file from device to cloud

A.14

POST dev/ctl/rpccall

Call device RPC

A.15

POST dev/ctl/getapistatus

Get API execution status

August 2015 Document Number: 332845-001US

Priority

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 7

Device API Definition

Index

API Method and Path

Functionality

Priority

A.16

POST dev/ctl/listcfg

List gateway configuration

A.17

POST dev/ctl/preparelog

Gateway put log into a local file

A.18

POST dev/ctl/filestats

Return information of local file

The following are the API interface details in JAVA language syntax. Both parameters and return values are defined as JSON message. Table 3.

Control API Interface Details Index

API Details

Note

A.15

String getAPIstatus(String json_str); Functionality: get API execution result. Params:JSON data structure { “method”:”dev/ctl/getapistatus”, “api_qid”:”QID”, //ASCII query code from the stage-1 control API call. “auth_token”:”xxx” //token to represent the calling user. } Return value is also JSON message. If the API completes execution, { “retcode”:”0”,

//API return code, 0 if successful,

//code >10000 indicates errors ……

// Json structure varies based on API.

} If the stage-1 control API is still executing, { “retcode”:”1”, “api_qid”:”QID”,

//API in progress code == 1. //API query ID (QID),

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 8

August 2015 Document Number: 332845-001US

Device API Definition

Index

API Details

Note

“time_out”:”100”,

//Timeout value in millisecond.

} A.1

String getVer(String json_str); Params: JSON string { “method”:”dev/ctl/getVer”, “device”:”id”, //device ID that uniquely identifying the gateway // in format of “/dev/ctl/[project_id]/[gateway_id]/” // in which project_id is defined by project API, // gateway_id is returned by gateway mngt API, // both are ASCII strings. “auth_token”:”xxx” } Return: JSON STRING { “retcode”: “1”,

//Return 1 if successful, otherwise >10000

“api_qid”:”QID”;

//ASCII API QID

“timeout”:”1000”; //Timeout value in milliseconds. } getAPIStatus returns the following JSON structure: { “retcode”:”0”,

// 0 if successful, or >10000 in case of errors.

"ver": “1.0”

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 9

Device API Definition

Index

API Details

Note

}

A.2

String getCfg(String json_str); Params: { “method”:”dev/ctl/getcfg”, “device”:”id”,

// For format, refer A.1.

“auth_token”:”xxx”, “path”:”config_path”, //the path that maps to a module/app. “name”:”config_name” //the name of the configuration entry. } Return: Same as getVer(); getAPIStatus() returns the following JSON structure: { “retcode”:”0”,

// 0 if successful, or >10000 in case of errors.

“value”:value //the value of the config.(int/string/json) } A.3

String setCfg(String json_str); Params: { “method”:”dev/ctl/setcfg”, “device”:”id”,

// For format, refer A.1.

“auth_token”:”xxx”, “path”:”config_path”, //the path that maps to a module/app.

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 10

August 2015 Document Number: 332845-001US

Device API Definition

Index

API Details

Note

“name”:”config_name”, //the name of the configuration entry. “value”:value

//the new value of the configuration entry.

} Return: Same as getVer(); getAPIStatus returns the following JSON structure: { “retcode":”0”,

// 0 if successful, or >10000 in case of errors.

} A.4

String Ping(String json_str); Params: { “method”:”dev/ctl/ping”, “device”:”id”,

// For format, refer A.1.

“auth_token”:”xxx” } Return: Same as getVer(); getAPIStatus returns the following JSON structure: { “retcode":”0”,

// 0 if successful, or >10000 in case of errors.

“data”:”pong” } A.5

String updateFirmware(String json_str); Params: {

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 11

Device API Definition

Index

API Details

Note

“method”:”dev/ctl/updatefirmware”, “device”:”id”,

// For format, refer A.1.

“auth_token”:”xxx”, “srcaddr”:”url”, // firmware address, remotely or locally. “version”:”1.1” // New firmware version. } Return: Same as getVer(); getAPIStatus returns the following JSON structure: { “retcode":”0”,

// 0 if successful, or >10000 in case of errors.

“data”:”Execution result” } A.6

String system(String json_str); Params: { “method”:”dev/ctl/system”, “device”:”id”,

// For format, refer A.1.

“auth_token”:”xxx”, “cmd”:”system cmd” //the command to be executed } Return: Same as getVer(); getAPIStatus returns the following JSON structure: { “retcode":”0”,

// 0 if successful, or >10000 in case of errors.

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 12

August 2015 Document Number: 332845-001US

Device API Definition

Index

API Details

Note

“data”:”Execution result” //ASCII string. } A.7

String getAppList(String json_str); Params: { “method”:”dev/ctl/getapplist”, “device”:”id”,

// For format, refer A.1.

“auth_token”:”xxx” } Return: Same as getVer(). getAPIStatus returns the following JSON structure: { “retcode":”0”,

// 0 if successful, or >10000 in case of errors.

“apps”:{ { “appname”: “appname”, ”version”:”1.0”, “status”:”running”} , { “appname”: “appname”, ”version”:”1.0”, “status”:”stopped”} } } A.8

String startApp(String json_str); Params: { “method”:”dev/ctl/startapp”, “device”:”id”,

// For format, refer A.1.

“auth_token”:”xxx”,

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 13

Device API Definition

Index

API Details

Note

“name”:”appname”,

// APP name with full path

“params”:”parameter list”, // App params encoded in base64 } Return: Same as getVer(); getAPIStatus returns the following JSON structure: { “retcode":”0”,

// 0 if successful, or >10000 in case of errors.

“data”:”Execution result” //ASCII string. } A.9

String stopApp(String json_str); Params: { “method”:”dev/ctl/stopapp”, “device”:”id”,

// For format, refer A.1.

“auth_token”:”xxx”, “name”:”appname” // Name of the app } Return: Same as getVer(); getAPIStatus returns the following JSON structure: { “retcode":”0”,

// 0 if successful, or >10000 in case of errors.

“data”:”Execution result” //ASCII string. } A.10

String installApp(String json_str);

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 14

August 2015 Document Number: 332845-001US

Device API Definition

Index

API Details

Note

Params: { “method”:”dev/ctl/installapp”, “device”:”id”,

// For format, refer A.1.

“auth_token”:”xxx”, “apppath”:”url” // Location of the app. } Return: Same as getVer(); getAPIStatus returns the following JSON structure: { “retcode":”0”,

// 0 if successful, or >10000 in case of errors.

“data”:”Execution result” } A.11

String reboot(String json_str); Params: { “method”:”dev/ctl/reboot”, “device”:”id”,

// For format, refer A.1.

“auth_token”:”xxx” } Return: Same as getVer(); getAPIStatus returns the following JSON structure: { “retcode":”0”,

August 2015 Document Number: 332845-001US

// 0 if successful, or >10000 in case of errors.

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 15

Device API Definition

Index

API Details

Note

“data”:”Execution result” } A.12

String fileC2D(String json_str); Params: { “method”:”dev/ctl/filec2d”, “device”:”id”,

// For format, refer A.1.

“auth_token”:”xxx”, “src”:”path_name or filecontent” //base64 format, 512KB max. “dest”:”path_name” // destination in the gateway file system. } Return: Same as getVer(); getAPIStatus returns the following JSON structure: { “retcode":”0”,

// 0 if successful, or >10000 in case of errors.

“data”:”Execution result” } A.13

String fileD2C(String json_str); Params: { “method”:”dev/ctl/filed2c”, “device”:”id”,

// For format, refer A.1.

“auth_token”:”xxx”, “src”:”path_name” // the device file path.

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 16

August 2015 Document Number: 332845-001US

Device API Definition

Index

API Details

Note

“dest”:”path_name” // cloud URL (currently unused). } Return: Same as getVer(); getAPIStatus returns the following JSON structure: { “retcode":”0”, “data”:”File content” //base64 format } A.14

String rpcCall(String json_ptr); Params: { “method”:”dev/ctl/rpccall”, “device”:”id”,

// For format, refer A.1.

“auth_token”:”xxx”, “cmd”:“string” // the RPC information. } The cmd consists of three components, “path”, “method”, and json code, separated by one “space” character. If the json code has space characters, they are still treats as part of the json code component. Example of json code includes (one line is one example): “abc” 1.234 {“abc”:1}

deviceSame as getVer(); Return: Same as getVer();

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 17

Device API Definition

Index

API Details

Note

getAPIStatus returns the following JSON structure: { “retcode":”0”, “data”:”Execution result” } A.16

String listCfg(String json_str); Params: { “method”:”dev/ctl/listcfg”, “device”:”id”,

// For format, refer A.1.

“auth_token”:”xxx”, “path”:”config_path”, //path that maps to a module/app, could be “*” } Return: Same as getVer(); getAPIStatus returns the following JSON structure: { “retcode”:”0”,

// 0 if successful, or >10000 in case of errors.

“configs”:[ //the list of the config. {“path”:path, “name”:name, “data_type”:type, “description”:value} {“path”:path, “name”:name, “data_type”:type, “description”:value} {“path”:path, “name”:name, “data_type”:type, “description”:value} ] } A.17

String prepareLog(String json_str);

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 18

August 2015 Document Number: 332845-001US

Device API Definition

Index

API Details

Note

Params: { “method”:”dev/ctl/preparelog”, “device”:”id”,

// For format, refer A.1.

“auth_token”:”xxx”, “time_from”:”time”, “time_to”:”time”, “tag”:value

// start time in epoch time (float format) // end time in epoch time (float format)

// tag filter, could be “*”

} Return: Same as getVer(); getAPIStatus returns the following JSON structure: { “retcode”:”0”,

// 0 if successful, or >10000 in case of errors.

“name”:”filename”,

// the path and name of the file.

“compress”:protocol, //compress method of the file, // support “bz2”, “gz”, “none”. “size”:size

//file size after compression.

} A.18

String fileStats(String json_str); Params: { “method”:”dev/ctl/filestats”, “device”:”id”,

// For format, refer A.1.

“auth_token”:”xxx”,

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 19

Device API Definition

Index

API Details

Note

"filename": “filename”, } Return: Same as getVer(); getAPIStatus returns the following JSON structure: { “retcode”:”0”,

// 0 if successful, or >10000 in case of errors.

“size”:filesize

// size of the file.

}

§

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 20

August 2015 Document Number: 332845-001US

Management API Definition

4.0

Management API Definition For security, all management APIs require user authentication. All access to the cloud platforms should present an “auth_token”. The system and project administrator obtain the token with a password, and the API user gets the token via public key based authentication. The token is used in all API calls to the backend, until it is expired or removed by the logout API. Management APIs also use JSON as the format for parameters and return values. Because management APIs happen between cloud backend and the web front with limited latency, bi-stage is not used here.

4.1

User Management The cloud management platform defines a number of use roles.

Table 4.

Use Roles User Type

Role Descriptions

System admin

Super user, read/write to all data. Key functions are creating projects, adding project admin accounts, and access platform logs.

Project admin

The main operator of the project management: maintaining project information and associated metadata; device control; query and export data and events.

API user

Limited access right: read the metadata from project; access stats, raw data, and alert/event logs.

User management includes creating and modifying user information, together with user authentication and session management. Table 5.

User Management API in Restful Paths Index

API Method and Path

Functionality

1.1

POST admin/user/adduser

Add user with certain roles.

1.2

POST admin/user/updateuser

Modify user information

1.3

POST admin/user/getusrinfo

Get user information

August 2015 Document Number: 332845-001US

Priority

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 21

Management API Definition

Index

API Method and Path

Functionality

Priority

1.4

POST admin/user/setpass

Set user password

1.5a

POST admin/user/userlogin1

The login interface for all users.

1.5b

POST admin/user/userlogin2

User login with password

1.6

POST admin/user/userlogout

The login interface for all users.

1.7

POST admin/tokens/listtokens

List all active tokens.

2

1.8

POST admin/tokens/deltoken

Delete one token

2

1.9

POST admin/user/setapikey

Set the public key for API user

1.10

POST admin/user/apilogin2

API user login with keys

The following are the API details in JAVA language syntax. Table 6.

User Management API Details Index

API Details

Note

1.1

String addUser(String json_str); Params: Json_str string (auth_token and username are required): { “method”:”admin/user/adduser”, “auth_token”:”token”, //User token obtained via login API. “username”:”user_name”, “role”:”project_id,admin”, //or“project_id,api”, //“system,admin” (require platform privilege) }

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 22

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

Return: { “retcode”:”0” // 0 if successful, or >10000 in case of errors. } 1.2

String updateUser(String json_str); Params: Json_str string (auth_token and username are required): { “method”:”admin/user/updateuser”, “auth_token”:”token”,

//User token.

“username”:”user_name”, “role”:”system,admin”, // or ”project_id,admin”, “project_id,api”, // “project_id,ops” (currently unused) “active”:”true”

// whether the user account is activated.

} Return: { “retcode”:”0” // 0 if successful, or >10000 in case of errors. } 1.3

String getUserInfo(String json_str); Params: { “method”:”admin/user/getuserinfo”, “auth_token”:”sid”,

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 23

Management API Definition

Index

API Details

Note

“username”:”user_name”, } Return: no password will be returned. { “username”:”user_name”, “role”:”system,admin”, “createtime”:time, “updatetime”:time,

// epoch time, float format.

“active”:”true” } 1.4

String setPass(String json_str); Params: { “method”:”admin/user/setpass”, “auth_token”:”sid”, // User token, or token of admins “algorithm”:”SHA256”, //Currently SHA256, may add other algorithms later. “username”:”user_name”, “passhash”:”user_password” // submit the password, so SSL is required // this is for server to check strength. } Return: { “retcode”:”0”

// 0 if successful, or >10000 in case of errors.

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 24

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

} 1.5a

String userLogin1(String json_str); Params: { “method”:”admin/user/userlogin1”, “username”:”user_name”, } Return: { “retcode”:”0”, “login_id”:”xxx”,

// login id representing this login request,

//can contain all login information //so server can be stateless. “allowed_ops”:”pass”, //Allowed next step process //”pass” for password login, use userlogin2 //”key” for key-based login, use apilogin2 “algorithm”:” SHA256”,

//Algorithm is SHA256

//or RSA (pub/prv) “challenge”:”xxx”,

//challenge string, only for “key” mode.

"alternatives": [...] // All possible methods. } 1.5b

String userLogin2(String json_str); Params: {

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 25

Management API Definition

Index

API Details

Note

“method”:”admin/user/userlogin2”, “login_id”:”xxx”,

// login id generated by the server

“response”:”xxx”

//Hash value calculated with user password.

} Return: { “retcode”:”0”,

// 0 if successful, or >10000 in case of errors.

“auth_token”:”xxx” // user token to be used in later API calls. } 1.6

String userLogout(String json_str); Params: { “method”:”admin/user/userlogout”, “auth_token”:”xxx” } Return: { “retcode”:”0”,

// 0 if successful, or >10000 in case of errors.

} 1.7

String listTokens(String json_str); Params: { “method”:”admin/tokens/listtokens”, “auth_token”:”xxx”

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 26

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

} Return: { “retcode”:”0”,

// 0 if successful, or >10000 in case of errors.

“sessions”:[ {“auth_token”:”xxx”, “uname”:”name”, “ip”:user_ip, “time”:”lasttime”} {“auth_token”:”xxx”, “uname”:”name”, “ip”:user_ip, “time”:”lasttime”} {“auth_token”:”xxx”, “uname”:”name”, “ip”:user_ip, “time”:”lasttime”} ] } 1.8

String delToken(String json_str); Params: { “method”:”admin/tokens/deltoken”, “auth_token”:”xxx”, “delete_token”:”xxx”

//token to be deleted.

} Return: { “retcode”:”0”,

// 0 if successful, or >10000 in case of errors.

} 1.9

String setApiKey(String json_str); Params: {

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 27

Management API Definition

Index

API Details

Note

“method”:”admin/user/setapikey”, “auth_token”:”sid”, // User token, or token of admins “algorithm”:”RSA”, // currently only support RSA. “username”:”user_name”, “userkey”:”public_key” // Public key of the user, prv key is kept by user // Prv key should never be transmitted. } Return: { “retcode”:”0”

// 0 if successful, or >10000 in case of errors.

} 1.10

String apiLogin2(String json_str); Params: { “method”:”admin/user/apilogin2”, “login_id”:”xxx”, “response”:”xxx” “crand”: “xxx”

// login id representing this login request //Signature of the login_id with user prv key. // A client generated random string,

// less than 256 char in length. } Return: { “retcode”:”0”,

// 0 if successful, or >10000 in case of errors.

“auth_token”:”xxx” // user token to be used in later API calls. Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 28

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

} Login process example: 1) When a user inputs username and password on the web page, the web page calls POST /v1/admin/user/userLogin1 HTTP/1.1 Content-type: text/plain Host: localhost { “username”: “root”, } 2) Server encodes the information of the Login, such as user_name, ip, and time, into the login id, and returns it HTTP/1.1 200 OK Content-type: text/plain { “retcode”: 0, “login_id”: “ajldfjsadgjowierjoiwerowiejrsjlkjlkdjglksdjflsdf”, “allowed_ops”:”PASS” “algorithm”:”SHA256”, } 3) The algorithm can be the following: SHA256(user_password)

POST /v1/admin/user/userLogin2 HTTP/1.1 Content-type: text/plain Host: localhost

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 29

Management API Definition

{ “login_id”: “ajldfjsadgjowierjoiwerowiejrsjlkjlkdjglksdjflsdf”, “response”:”xxx” } 4) The server uses the information in the login_id to verify the correctness of the response. If correct, generate an auth_token for the user. The auth_token could contain user role, time, user IP, or server signature. HTTP/1.1 200 OK Content-type: text/plain { “retcode”: 0, “auth_token”: “ajl9079wierjoiwerowiejrsjlkjlkdjglksdjflsdf”, } For API login, the response is the following: Sign_SHA256_RSA(privateKey, username+challenge+crand) For example, if the username is “api0123”, the challenge from server is “abcdef”, the client randomly generates “9876”, and the response is verified by the following: String message = “api0123abcdef9876”; Signature sign = Signature.getInstance("SHA256WithRSA"); sign.initVerify(publicKey); sign.update(message.getBytes()); sign.verify(response);

4.2

Project Information API The project information management API manages project information and the status of gateways in this project.

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 30

August 2015 Document Number: 332845-001US

Management API Definition

Table 7.

Project Information Management API Index

API Method and Path

Functionality

Priority

2.1

POST admin/project/addproject

Create a new project (platform admin only)

2.2

POST admin/project/updateproject

Update project information

2.3

POST admin/project/getprojectinfo

Get project information.

2.4

POST admin/project/deleteproject

Delete a project (platform admin only)

2.5

POST admin/project/listprojects

List all projects in the platform

2.6

POST admin/project/listdevinproject

List matched device in a project

2.7

POST admin/project/getprojectstats

Return project stats data.

2

2.8

POST admin/project/listprojectusers

List all users in a project

2

The following are the API details in JAVA language syntax. Table 8.

Project Information Management API Details Index

API Details

Note

2.1

String addProject(String json_str); Params: Json_str structure: { “method”:”admin/project/addproject”, “auth_token”:”token”,

// User token

“name”:”project name”, // Name of the project “vendor”:”vendor name”, // Vendor name

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 31

Management API Definition

Index

API Details

Note

“info”:”project information”, //Short description of the project “tag”:”test, energy”,

//Project tags.

} Return: { “retcode”:”0”

// 0 if successful, or >10000 in case of errors.

“project_id”:”id” // Project ID assigned by the system } 2.2

String updateProject(String json_str); Params: Json_str structure: (token and project_id are required, the others are options, and note that “vendor” field cannot be changed) { “method”:”admin/project/updateproject”, “auth_token”:”token”, “project_id”:”id”,

// User token

// Project ID assigned by the system

“name”:”project name”, // Name of the project “info”:”project information”, // Short description of the project “tag”:”test, energy”,

//Project tags

} Return: { “retcode”:”0” // 0 if successful, or >10000 in case of errors. } 2.3

String getProjectInfo(String json_str);

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 32

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

Params: Json_str structure: { “method”:”admin/project/getprojectinfo”, “auth_token”:”xxx”, “project_id”:”id” // Project ID assigned by the system } Return: Json_str structure: { “retcode”:”0”,

// 0 if successful, or >10000 in case of errors.

“project_id”:”id”,

// ASCII string

“name”:”project name”, // Name of the project “vendor”:”vendor name”, “info”:”project information”, “createtime”:”time”, number)

//Project creation time in epoch (float

“updatetime”:”time”, //Project update time in epoch (float number) “tag”:”test, energy” } 2.4

String deleteProject (String json_str); Params: Json_str structure: {

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 33

Management API Definition

Index

API Details

Note

“method”:”admin/project/deleteproject”, “auth_token”:”xxx”, “project_id”:”id” // Project ID assigned by the system } Return: Json_str structure: { “retcode”:”0”,

// 0 if successful, or >10000 in case of errors.

} 2.5

String listProjects (String json_str); Params: Json_str structure: { “method”:”admin/project/listprojects”, “auth_token”:”xxx” } Return: Json_str structure: { “retcode”:”0”, “projects”:[

// 0 if successful, or >10000 in case of errors. // Deleted projects are not included.

{“id”:”id1”, “name”:”project1” }, {“id”:”id2”, “name”:”project2” }, {“id”:”id3”, “name”:”project3” }

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 34

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

] } 2.6

String listDevinProject (String json_str); Params: Json_str structure: { “method”:”admin/project/listdevinproject”, “auth_token”:”xxx”, “project_id”:”id”, // Project ID assigned by the system “filter”:””,

//Device filters, currently is empty to match all.

} Return: Json_str structure: { “retcode”:”0”, “total”:100,

// 0 if successful, or >10000 in case of errors. // Number of devices matched and returned.

“gateways”: [ { “gateway_id”:id, “name”:gw_name, “status”:status}, { “gateway_id”:id, “name”:gw_name, “status”:status}, { “gateway_id”:id, “name”:gw_name, “status”:status} ] } 2.7

String getProjectStats(String json_str);

TBD

Params:

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 35

Management API Definition

Index

API Details

Note

Json_str structure: { “method”:”admin/project/getprojectstats”, “auth_token”:”xxx”, “project_id”:”id” // Project ID assigned by the system } Return: Json_str structure: { “retcode”:”0”,

// 0 if successful, or >10000 in case of errors.

“activedevcounts”:100, // The number of active devices. “offlinedevcounts”:100, // the number of offline devices. “alarmstarttime”: time, // UTC time where alarmcounts start. “alarmcounts”:[“n1”, “n2”, “n3”, …, “n72”] //number of alarms in each hour. // hours are UTC time for 0:00 clock from two // days ago to 24:00 today. // For remaining hours today, these numbers // will be 0. “stats”:””

//other stats.

} 2.8

String listProjectUsers(String json_str); Params: Json_str structure:

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 36

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

{ “method”:”admin/project/listprojectusers”, “auth_token”:”xxx”, “project_id”:”id” // Project ID assigned by the system } Return: Json_str structure: { “retcode”:”0”,

// 0 if successful, or >10000 in case of errors.

“users”:[ {“username”:name, “role”:”project_id,admin”}, {“username”:name, “role”:”project_id,ops”}, {“username”:name, “role”:”project_id,api”} ] }

4.3

Device Information API The device information management API maintains the information (metadata) about devices, such as device information, the data points in a device, and the groups in the project.

Table 9.

Device Information Management API Index

API Method and Path

Functionality

3.1

POST admin/dev/adddev

Add a new device entry.

3.2

POST admin/dev/updatedev

Update device information.

August 2015 Document Number: 332845-001US

Priority

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 37

Management API Definition

Index

API Method and Path

Functionality

3.3

POST admin/dev/getdevinfo

Get device information.

3.4

POST admin/dev/deletedev

Delete a device entry.

3.5

POST admin/dev/adddatapoint

Add a data point to a device

3.6

POST admin/dev/updatedatapoint

Remove data point from device

3.7

POST admin/dev/deletedatapoint

Update data point information

3.8

POST admin/dev/getdatapointinfo

Get data point information

3.9

POST admin/dev/listdatapoints

List data point in a project

3.10

POST admin/group/addgroup

Add a group in this project.

3.11

POST admin/group/updategroup

Update group information

3.12

POST admin/group/getgroupinfo

Get group information

3.13

POST admin/group/deletegroup

Delete a group.

3.14

POST admin/group/listgroups

List groups in the project.

3.15

POST admin/project/listdevbygroup

List devices by group

3.16

POST admin/dev/listdatapointbygroup

List data point by group

3.17

POST admin/group/listgrouppath

List hierarchy path of a group

3.18

POST admin/dev/getdevkey

Get the device key of a device

Priority

2

The following are the API details in JAVA language syntax. Table 10. Device Management API Details Index

API Details

3.1

String addDev(String json_str);

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 38

Note

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

Params: Json_str structure: { “method”:”admin/dev/adddev”, “auth_token”:”token”, “project_id”:”id”, “device_hw_id”:”id”,

// User token

// Project ID. // Hardware ID of a device, can be its

//serial number or MAC address. “tag”:”china, rockontrol”, //Device tags “name”:”device name”, //Name of the device. “vendor”:”intel”,

// Device vendor.

“systeminfo”:”x86, linux”, // Software system information of the device “groupids”:[id1, id2],

// Group IDs this device is associated with

“location”:”address”

// User defined location information

// Recommendations: lng:110.2,lat: 48.1 // or gcj02:xxxx // or bd09ll:xxxx // or addrd: 100 Main street, Beijing } Return: { “retcode”:”0” // 0 if successful, or >10000 in case of errors. “gateway_id”:”id”,

// the device ID assigned to this device

}

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 39

Management API Definition

Index

API Details

Note

3.2

String updateDev(String json_str); Params: Json_str structure: token, project_id, and gateway_id are required. { “method”:”admin/dev/updatedev”, “auth_token”:”token”,

// User token

“project_id”:”id”,

// Project ID.

“gateway_id”:”id”,

// Device ID

“device_hw_id”:”id”,

// the following are the same as the ones in

// AddDev API. “tag”:”china, rockontrol”, “name”:”device name”, “vendor”:”intel”, “systeminfo”:”x86, linux”, “groupids”:[id1, id2], “location”:”address”, } Return: { “retcode”:”0”

// 0 if successful, or >10000 in case of errors.

} 3.3

String getDevInfo(String json_str); Params: Json_str structure:

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 40

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

{ “method”:”admin/dev/getdevinfo”, “auth_token”:”token”,

// User token

“project_id”:”id”,

// Project ID

“gateway_id”:”id”,

// Device ID

} Return: Json_str structure: { “retcode”:”0”, “project_id”:”id”,

// Project ID

“gateway_id”:”id”,

// Device ID

“device_hw_id”:”id”,

// the following are the same as the ones in

// AddDev API. “tag”:”china, rockontrol”, “name”:”device name”, “vendor”:”intel”, “systeminfo”:”x86, linux”, “groupids”:[id1, id2], “location”:”address”, “createtime”:time, “updatetime”:”time”,

// Device creation time from epoch (float) //Device update time from epoch (float)

} 3.4

String deleteDev(String json_str);

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 41

Management API Definition

Index

API Details

Note

Params: Json_str structure: { “method”:”admin/dev/deletedev”, “auth_token”:”token”,

// User token

“project_id”:”id”, “gateway_id”:”id”, } Return: Json_str structure: { “retcode”:”0” } 3.5

String addDataPoint(String json_str); Params: Json_str structure: { “method”:”admin/dev/adddatapoint”, “auth_token”:”token”,

// User token

“project_id”:”id”, “gateway_id”:”id”, “name”:”datapoint”, “datatype”:”float”, “dataunit”:”kw”,

// Name of the data point // Data type of this data point // Data unit, could be the following

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 42

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

// Kwh/raw Kilowatt hour // Va/raw

A phase voltage

// Vb/raw

B phase voltage

// Vc/raw

C phase voltage

// activePower/raw Active power // Celsius/raw Temperature // t/raw

Ton

// Kpa/raw

Pressure

// m3/raw

Current

“description”:”default”, // User defined description “groupid”:[group_id1,…] // Groups the data point is associated with “tag”:””

// Data point tags

“userdata”:url,

// User data, could be URL

} Return: Json_str structure: { “retcode”:”0”, “datapoint_id”:”id”

// Platform assigned data point ID.

} 3.6

String updateDataPoint(String json_str); Params: Json_str structure: token,project_id,gateway_id, datapoint_id are required. {

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 43

Management API Definition

Index

API Details

Note

“method”:”admin/dev/updatedatapoint”, “auth_token”:”token”,

// User token

“project_id”:”id”, “gateway_id”:”id”, “datapoint_id”:”id”

// Data point ID

“name”:”datapoint”,

// The following are the same as the ones

// in AddDataPoint API. “datatype”:”float”, “dataunit”:”kw”, “description”:”default”, “groupid”:[group_id1, ] “tag”:””, “userdata”:url, } Return: Json_str structure: { “retcode”:”0” } 3.7

String deleteDataPoint(String json_str); Params: Json_str structure: { “method”:”admin/dev/deletedatapoint”,

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 44

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

“auth_token”:”token”,

Note

// User token

“project_id”:”id”, “gateway_id”:”id”, “datapoint_id”:”id”,

// Data point ID

} Return: Json_str structure: { “retcode”:”0” } 3.8

String getDataPointInfo(String json_str); Params: Json_str structure: token,project_id,gateway_id, datapoint_id are required { “method”:”admin/dev/getdatapointinfo”, “auth_token”:”token”,

// User token

“project_id”:”id”, “gateway_id”:”id”, “datapoint_id”:”id”

// Data point ID

} Return: Json_str structure: { “retcode”:”0”,

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 45

Management API Definition

Index

API Details

Note

“datapoint_id”:”id”

// Data point ID

“name”:”Temperature 1”, // Name of the data point “datatype”:”float”,

// The following are the same as the ones

// in AddDataPoint API. “dataunit”:”kw”, “description”:”default”, “tag”:””, “userdata”:url, “groupid”:[group_id1,] “createtime”:time,

// Data point creation time in epoch (float)

“updatetime”:time,

// Data point update time in epoch (float)

“deleted”:false

// whether data point has been deleted.

} 3.9

String listDataPoints(String json_str); Params: Json_str structure: { “method”:”admin/dev/listdatapoints”, “auth_token”:”xxx”, “project_id”:”id”, // Project ID assigned by the system “gateway_id”:”id”,

// Device ID, could be * for wild card

} Return: Json_str structure: Deleted data points will not be included.

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 46

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

{ “retcode”:”0”,

// 0 if successful, or >10000 in case of errors.

“datapoints”: [ {“gateway_id”:gid, “id”: id1, “name”:name1, “userdata”:userdata }, {“gateway_id”:gid, “id”: id2, “name”:name2, “userdata”:userdata }, {“gateway_id”:gid, “id”: id3, “name”:name3, “userdata”:userdata } ] } 3.10

String addGroup(String json_str); Params: Json_str structure: { “method”:”admin/group/addgroup”, “auth_token”:”token”, “project_id”:”id”,

// User token

// Project ID

“name”:”South Bldg 1”, // Group name, can also be “meter 1” “type”:”zone”,

// Group type, only two types “zone”,”meter”.

“parentgroupid”:”groupid”, // Parent group, 0 if empty. // parent group must share the same type “descriptions”:”Building”, // Description of the group. “userdata”:”customized”, // User defined data, such as barcode. “tags”:”meters, dev”

// User defined tags

} Return:

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 47

Management API Definition

Index

API Details

Note

{ “retcode”:”0”,

// 0 if successful, or >10000 in case of errors.

“group_id”:”id”

// Platform assigned group ID

} 3.11

String updateGroup(String json_str); Params: Json_str structure: token, project_id, gateway_id are required. { “method”:”admin/group/updategroup”, “auth_token”:”token”,

// User token

“project_id”:”id”,

// Project ID

“group_id”:”id”,

// Group ID

“name”:”South Bldg 1”, // The following are the same as the ones // defined in AddGroup API. “type”:”zone”, “parentgroupid”:”groupid”, “descriptions”:”Building”, “userdata”:”customized”, “tags”:”meters, dev” } Return: { “retcode”:”0” // 0 if successful, or >10000 in case of errors. }

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 48

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

3.12

String getGroupInfo(String json_str); Params: Json_str structure: { “method”:”admin/group/getgroupinfo”, “auth_token”:”token”,

// User token

“project_id”:”id”,

// Project ID

“group_id”:”id”,

// Group ID

} Return: Json_str structure: { “retcode”:”0”, “project_id”:”id”,

// Project ID

“group_id”:”id”,

// Group ID

“name”:”South Bldg 1”, // The following are the same as the ones // defined in AddGroup API. “type”:”zone”, “parentgroupid”:”groupid”, “descriptions”:”Building”, “userdata”:”customized”, “tags”:”meters, dev” “childrengroupids”:[id1, id2], // Groups belong to this group. // read-only, updated by the system.

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 49

Management API Definition

Index

API Details

Note

“createtime”:time,

// Group creation time in epoch (float)

“updatetime”:”time”,

// Group update time in epoch (float)

} 3.13

String deleteGroup(String json_str); Params: Json_str structure: { “method”:”admin/group/deletegroup”, “auth_token”:”token”,

// User token

“project_id”:”id”,

// Project ID

“group_id”:”id”,

// Group ID

} Return: Json_str structure: { “retcode”:”0” } 3.14

String listGroups(String json_str); Params: Json_str structure: { “method”:”admin/group/listgroups”, “auth_token”:”token”, “project_id”:”id”,

// User token

// Project ID

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 50

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

“group_id”:”id1”, “type”:”meter”,

// List all groups related to id1, * for wild card // Group type, * for wild card

} Return: Json_str structure: { “retcode”:”0”, “groups”:[ {“id”:”id1”, “name”:”name1”, “type”:”zone”, “parentid”:”0”}, {“id”:”id2”, “name”:”name1”, “type”:”zone”, “parentid”:”id1”}, {“id”:”id3”, “name”:”name1”, “type”:”zone”, “parentid”:”id1”} ] } 3.15

String listDevByGroup(String json_str); Params: Json_str structure: { “method”:”admin/project/listdevbygroup”, “auth_token”:”token”,

// User token

“project_id”:”id”,

// Project ID

“group_id”:”id1”,

// List device in id1 including child groups.

// only applicable to “zone” groups. } Return:

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 51

Management API Definition

Index

API Details

Note

Json_str structure: { “retcode”:”0”, “gateways”:[ { “gateway_id”:id, “name”:gw_name, “status”:status}, { “gateway_id”:id, “name”:gw_name, “status”:status}, { “gateway_id”:id, “name”:gw_name, “status”:status} ] } 3.16

String listDataPointByGroup(String json_str); Params: Json_str structure: { “method”:”admin/dev/listdatapointbygroup”, “auth_token”:”token”,

// User token

“project_id”:”id”,

// Project ID

“group_id”:”id1”,

// List all the datapoints in group id1.

} Return: Json_str structure: { “retcode”:”0”, “datapoints”: [ {“gateway_id”:gid, “id”: id1, “name”:name1, “userdata”:userdata},

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 52

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

{“gateway_id”:gid, “id”: id2, “name”:name2, “userdata”:userdata }, {“gateway_id”:gid, “id”: id3, “name”:name3, “userdata”:userdata } ] } 3.17

String listGroupPath(String json_str); Params: Json_str structure: { “method”:”admin/group/listgrouppath”, “auth_token”:”token”, “project_id”:”id”, “group_id”:”gid1”,

// User token

// Project ID // the start group ID

} Return: Json_str structure: { “retcode”:”0”, “path”: [ {“id”: gid1, “name”:name1 }, {“id”: parentid1, “name”:name2 }, {“id”: grandparentid2, “name”:name3 }, {“id”: rootid, “name”:rootname } ] }

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 53

Management API Definition

Index

API Details

Note

3.18

String getDevKey(String json_str); Params: Json_str structure: { “method”:”admin/dev/getdevkey”, “auth_token”:”token”, “project_id”:”id”,

// User token

// Project ID

“gateway_id”:”dev1”,

// Device ID

} Return: Json_str structure: { “retcode”:”0”, “devkey”:”xxx”

// Device key, could be 256 AES key.

}

4.4

Data Management API The data management APIs provide the interface to query and export data. The data could be raw data collected from sensor, or aggregated statistics data (stats data). Stats data can be based on data from a number of data points from the same or different devices. This set of API also includes the management of stats data metadata. Because the export data calls may take time to complete, they are implemented as bi-stage APIs.

Table 11. Data Management API Index

API Method and Path

Functionality

4.1

POST data/rawdataquery

Query raw data by filters.

4.2

POST data/rawdataexport

Export raw data.

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 54

Priority

2

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Method and Path

Functionality

Priority

4.3

POST data/getexportstatus

Get the data export status.

4.4

POST data/statsdataquery

Query stats data by rules.

2

4.5

POST data/statsdataexport

Export stats data.

2

4.6

POST data/alarmdataquery

Query alarm data.

4.7

POST data/alarmdataexport

Export alarm data.

2

4.8

POST alm/pollalarm

Poll alarm.

2

The following are the API details in JAVA language syntax. Table 12. Data Management API Details Index

API Details

Note

4.1

String rawDataQuery(String json_str); Params: Json_str structure: { “method”:”data/rawdataquery”, “auth_token”:”token”,

// User token

“maxdatapoints”:”1000”, // Max number of data point to be returned, // 0 means unlimited. “time_from”:”time”,

// start time in epoch time (float format)

“time_to”:”time”,

// end time in epoch time (float format)

“project_id”:”id1”,

// Project filter, based on id.

“gateway_id”: “*”,

// Gateway ID filter, * for wild card

“datapoint_id”:”*”,

// Datapoint ID filter, * for wild card

“skip”:”100”,

August 2015 Document Number: 332845-001US

// Skip the first N number of record in result

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 55

Management API Definition

Index

API Details

Note

// e.g., skip=100 starts from the 101st record. “order”:”asc/desc”

// Order by time, default ascend order.

} } Return: { “retcode”:”0”

// 0 if successful, or >10000 in case of errors.

"maxpoints": 100, // The total number of records matched. // independent of maxdatapoint and skip value "from": t1, "to": t2, "metadata": [ {"datapoint": "path", “name”:”name”, “userdata”:uri, “datatype”:type, “dataunit”:unit} {"datapoint": "path", “name”:”name”, “userdata”:uri, “datatype”:type, “dataunit”:unit} {"datapoint": "path", “name”:”name”, “userdata”:uri, “datatype”:type, “dataunit”:unit} ], “dataseries”:[ {"datapoint": "path1", “time”:t1, “value”:189} {"datapoint": "path1", “time”:t2, “value”:192} {"datapoint": "path2", “time”:t3, “value”:189} {"datapoint": "path2", “time”:t4, “value”:196} ] } Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 56

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

Notes: There are system reserved data points, prefixed with sys_*. These data points belong to gateways. The current data points include: sys_online, sys_c0, sys_c1, …, sys_c9. These data points are reserved by gateway systems to send system level data to the backend. With the rawdataquery API, the caller can specify these data points and retrieve the data. The sys_online records the on/off status of the gateway, 0 represents offline, 1 represents online. Three will be at least one datapoint per day at the beginning of the day. These system level data points cannot be managed by data point management APIs. They will not appear in the data point list API either. 4.2

String rawDataExport (String json_str); Params: Json_str structure: { “method”:”data/rawdataexport”, “auth_token”:”token”, “output”:”csv”, “time_from”:”time”,

// User token

// Could be ”csv” or “zipcsv” // Start time in epoch (float number)

“time_to”:”time”,

// End time in epoch (float number)

“project_id”:”id1”,

// Project filter

“gateway_id”: “*”,

// Gateway filter, * for wild card

“datapoint_id”:””

// data point filter, * for wild card.

} Return: (Note that this is a bi-stage API) JSON STRING {

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 57

Management API Definition

Index

API Details

Note

“retcode”: “1”,

//1 if successful, or >10000 in case of errors.

“api_qid”:”QID”;

// API query ID in ASCII format

“timeout”:”1000”;

// timeout value for stage-2 call (milliseconds)

} Notes: See 4.1. getExportStatus returns the following JSON structure: { “retcode”:”0”,

//>10000 in case of errors.

"data": “URL”

// URL where the export file can be downloaded.

} 4.3

String getExportStatus(String json_str); Function: query the status and result of data export call, similar to getAPIStatus Params: JSON structure { “method”:”data/getexportstatus”, “api_qid”:”QID”,

//API query ID from the stage-1 API call.

“auth_token”:”xxx” // user token } Return value is also in JSON format, in case of API finished execution, { “retcode”:”0”, “data”:”url”

//API return code, 0 if successful, >10000 for error // URL where exported data can be downloaded

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 58

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

} If the API call is still in progress, return { “retcode”:”1”,

// Code 1 for inprocess.

“api_qid”:”QID”,

// API query QID

“time_out”:”100”,

// Timeout value for next query, in millisecond.

} 4.4

String statsDataQuery(String json_str); Params: Json_str structure: { “method”:”data/statsdataquery”, “auth_token”:”token”,

// User token

“maxdatapoints”:”1000”, // Max number of data point to be returned, // 0 means unlimited. “time_from”:”time”,

// start time in epoch time (float format)

“time_to”:”time”,

// end time in epoch time (float format)

“project_id”:”id1”,

// Project filter, based on id.

“stats_id”:”*”,

// Stats data ID, * for wild card.

“skip”:”100”,

// Skip the first N number of record in result

// e.g., skip=100 starts from the 101st record. “order”:”asc/desc”

// Order by time, default ascend order.

} Return:

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 59

Management API Definition

Index

API Details

Note

{ “retcode”:”0”

// 0 if successful, or >10000 in case of errors.

"maxpoints": 100, "from": t1, "to": t2, "metadata": [ {"statspath": "path", “name”:”name”, “userdata”:uri, “datatype”:type, “dataunit”:unit} {"statspath ": "path", “name”:”name”, “userdata”:uri, “datatype”:type, “dataunit”:unit} {"statspath ": "path", “name”:”name”, “userdata”:uri, “datatype”:type, “dataunit”:unit} ], “dataseries”:[ {"statspath": "path1", “time”:t1, “value”:189} {"statspath": "path1", “time”:t2, “value”:192} {"statspath": "path2", “time”:t3, “value”:189} {"statspath": "path2", “time”:t4, “value”:196} ] } 4.5

String statsDataExport (String json_str); Params: Json_str structure: { “method”:”data/statsdataexport”,

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 60

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

“auth_token”:”token”, “output”:”csv”,

// User token

// could be ”csv”, “zipcsv”

“time_from”:”time”,

// Start time in epoch (float number)

“time_to”:”time”,

// End time in epoch (float number)

“project_id”:”id1”,

// Project filter

“stats_id”:”*”

// Stats data ID, * for wild card

} Return: (Note that this is a bi-stage API) JSON STRING { “retcode”: “1”,

//1 if successful, or >10000 in case of errors.

“api_qid”:”QID”;

// API query ID in ASCII format

“timeout”:”1000”;

// timeout value for stage-2 call (milliseconds)

}

getExportStatus returns the following JSON structure: { “retcode”:”0”,

//>10000 in case of errors.

"data": “URL”

// URL where the export file can be downloaded.

}

4.6

String alarmDataQuery(String json_str); Params: Json_str structure:

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 61

Management API Definition

Index

API Details

Note

{ “method”:”data/alarmdataquery”, “auth_token”:”token”,

// User token

“maxdatapoints”:”1000”, // Max number of data point to be returned, // 0 means unlimited. “time_from”:”time”,

// start time in epoch time (float format)

“time_to”:”time”,

// end time in epoch time (float format)

“project_id”:”id1”,

// Project filter, based on id.

“tag”:”*”,

// Filter based on alarm tag, * for wild card

“skip”:”100”,

// Skip the first N number of record in result

// e.g., skip=100 starts from the 101st record. “order”:”asc/desc”

// Order by time, default ascend order.

} Return: { “retcode”:”0”

// 0 if successful, or >10000 in case of errors.

"maxpoints": 100, "from": t1, "to": t2, “dataseries”:[ {"tag": "tag1", “time”:t1, “value”:msg1, “code”: code, “gateway_id”: id, “alarm_id”: sequence_number}, {"tag": "tag2", “time”:t2, “value”:msg2, “code”: code, “gateway_id”: id, “alarm_id”: sequence_number } ] Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 62

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

} Note: There are specified ranges for the alarm code. Code 2500029999 are for gateway alarm, code 35000-39999 for gateway log code, and code 80000-89999 are free for application to usage. 4.7

String alarmDataExport (String json_str); Params: Json_str structure: { “method”:”data/alarmdataexport”, “auth_token”:”token”, “output”:”csv”,

// User token

// could be ”csv”, “zipcsv”

“time_from”:”time”,

// Start time in epoch (float number)

“time_to”:”time”,

// End time in epoch (float number)

“project_id”:”id1”,

// Project filter

“tag”:”*”

// alarm filter, * for wild card.

} Return: (Note that this is a bi-stage API) JSON STRING { “retcode”: “1”, “api_qid”:”QID”; “timeout”:”1000”;

//1 if successful, or >10000 in case of errors. // API query ID in ASCII format // timeout value for stage-2 call (milliseconds)

}

getExportStatus returns the following JSON structure:

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 63

Management API Definition

Index

API Details

Note

{ “retcode”:”0”,

//>10000 in case of errors.

"data": “URL”

// URL where the export file can be downloaded.

}

4.8

String pollAlarm (String json_str); Params: Json_str structure: { “method”:”alm/pollalarm”, “auth_token”:”token”, “project_id”:”id”

// User token

// project ID

“timeout”:”time”,

// timeout value in milliseconds.

“last_seq”:”seq”

// sequence number from last query, may be ””

} Return: JSON STRING if alarm is found. { “retcode”: “0”, “retry”:”timeout”,

//0 if successful // retry after specified milliseconds.

“gateway_id”:”gw_id”, // gateway ID of the alarm is from. “timestamp”:”time”, // epoch time of the alarm generated time “seq”:”seq number”, // sequence number of this alarm. “code”:”code”,

// alarm code or type of alarm.

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 64

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

“tag”:”tag”,

Note

// user defined tag on this alarm.

“message”:”msg”

// alarm content.

} If no alarm is found, { “retcode”: “2”,

//2 if successful.

“retry”:”timeout”,

// retry after specified milliseconds.

} If error happens, { “retcode”:”code”,

// >10000 error code.

“reason”:”failed reason” }

4.5

Log Management API The log management APIs provide interfaces to query and export system log. This is only available to platform admins.

Table 13. Log Management APIs Index

API Method and Path

Functionality

5.1

POST logs/rawlogquery

Query log data with filter.

5.2

POST logs/rawlogexport

Export raw log data.

5.3

POST logs/getservicestats

Obtain running stats of server.

August 2015 Document Number: 332845-001US

Priority

2

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 65

Management API Definition

The following are the API details in JAVA language syntax. Table 14. Log Management API Details Index

API Details

Note

5.1

String rawLogQuery(String json_str); Params: Json_str structure: { “method”:”logs/rawlogquery”, “auth_token”:”token”,

// User token

“maxdatapoints”:”1000”, // Max number of data point to be returned, // 0 means unlimited. “time_from”:”time”,

// start time in epoch time (float format)

“time_to”:”time”,

// end time in epoch time (float format)

“log_tag”:”Web”,

// Log type filter, * for wild card.

“skip”:”100”,

// Skip the first N number of record in result

// e.g., skip=100 starts from the 101st record. “order”:”asc/desc”

// Order by time, default ascend order.

} Return: { “retcode”:”0”

// 0 if successful, or >10000 in case of errors.

"maxpoints": 100, "from": t1, "to": t2, “entries”:[

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 66

August 2015 Document Number: 332845-001US

Management API Definition

Index

API Details

Note

{"time": t1, “tag”:”Web”, “value”:”user logined.”} {"time": t2, “tag”:”Web”, “value”:”user logined.”} {"time": t3, “tag”:”Web”, “value”:”user logined.”} ] } 5.2

String rawLogExport (String json_str); Params: Json_str structure: { “method”:”logs/rawlogexport”, “auth_token”:”token”, “output”:”csv”,

// User token

// could be ”csv”, “zipcsv”

“time_from”:”time”,

// Start time in epoch (float number)

“time_to”:”time”,

// End time in epoch (float number)

“log_tag”:”Web”,

// Log type filter, * for wild card.

} Return: (Note that this is a bi-stage API) JSON STRING { “retcode”: “1”, “api_qid”:”QID”; “timeout”:”1000”;

//1 if successful, or >10000 in case of errors. // API query ID in ASCII format // timeout value for stage-2 call (milliseconds)

}

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 67

Management API Definition

Index

API Details

Note

API 4.3: getExportStatus returns the following JSON structure: { “retcode”:”0”,

//>10000 in case of errors.

"data": “URL”

// URL where the export file can be downloaded.

}

5.3

String getServiceStats(String json_str); Params: Json_str structure: { “method”:”logs/getservicestats”, “auth_token”:”token”,

// User token

} Return: { “retcode”:”0”

// 0 if successful, or >10000 in case of errors.

"uptime": “value”,

// system uptime in milliseconds.

"log_written": “value”, // number of log entries since last restart "failed_login": “value”, // number of login fails since last restart “gw_cmds”: “value” // number of gateway command since restart. }

§

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 68

August 2015 Document Number: 332845-001US

Error Code Range

5.0

Error Code Range The error codes of the system are pre-allocated in the following ranges.

Table 15. Error Code Ranges Error code

Purpose

Note

0

Reserved for API call return (successful)

1

Reserved for API call return

10000-18999

Reserved for API system error code

19000-19999

Reserved for API SDK return code

20000-24999

Reserved

25000-29999

Allocated for gateway alarms

30000-34999

Reserved

35000-39999

Gateway log code

Usable for integration

80000-89999

Allocated for applications to use

Usable for integration

Usable for integration

§

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 69

API List

Appendix A API List Table 16. API List Index

API Method and Path

Description

Group

A.1

POST dev/ctl/getVer

Get gateway version.

A.2

POST dev/ctl/getcfg

Get gateway configuration.

Device control

A.3

POST dev/ctl/setcfg

Set gateway configuration.

A.4

POST dev/ctl/ping

Get the gateway online status.

A.5

POST dev/ctl/updatefirmware

Update gateway firmware.

A.6

POST dev/ctl/system

Execute customized system command.

A.7

POST dev/ctl/getapplist

Get list of applications on gateway.

A.8

POST dev/ctl/startapp

Start one application.

A.9

POST dev/ctl/stopapp

Stop one application.

A.10

POST dev/ctl/installapp

Install one application.

A.11

POST dev/ctl/reboot

Restart the gateway.

A.12

POST dev/ctl/filec2d

Transfer a file from cloud to device.

A.13

POST dev/ctl/filed2c

Transfer a file from device to cloud.

A.14

POST dev/ctl/rpccall

Call device RPC.

A.15

POST dev/ctl/getapistatus

Get API execution status.

A.16

POST dev/ctl/listcfg

List gateway configuration.

A.17

POST dev/ctl/preparelog

Gateway put log into a local file.

A.18

POST dev/ctl/filestats

Return information of local file.

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 70

August 2015 Document Number: 332845-001US

API List

1.1

POST admin/user/adduser

Add user with certain roles.

1.2

POST admin/user/updateuser

Modify user information.

1.3

POST admin/user/getusrinfo

Get user information.

1.4

POST admin/user/setpass

Set user password.

1.5a

POST admin/user/userlogin1

The login interface for all users.

1.5b

POST admin/user/userlogin2

User login with password.

1.6

POST admin/user/userlogout

The login interface for all users.

1.7

POST admin/tokens/listtokens

List all active tokens.

1.8

POST admin/tokens/deltoken

Delete one token.

1.9

POST admin/user/setapikey

Set the public key for API user.

1.10

POST admin/user/apilogin2

API user login with keys.

2.1

POST admin/project/addproject

Create a new project (platform admin only).

2.2

POST admin/project/updateproject

Update project information.

2.3

POST admin/project/getprojectinfo

Get project information.

2.4

POST admin/project/deleteproject

Delete a project (platform admin only).

2.5

POST admin/project/listprojects

List all projects in the platform.

2.6

POST admin/project/listdevinproject

List matched device in a project.

2.7

POST admin/project/getprojectstats

Return project stats data.

2.8

POST admin/project/listprojectusers

List all users in a project.

3.1

POST admin/dev/adddev

Add a new device entry.

3.2

POST admin/dev/updatedev

Update device information.

August 2015 Document Number: 332845-001US

User mngt

Project mngt

Device mngt

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 71

API List

3.3

POST admin/dev/getdevinfo

Get device information.

3.4

POST admin/dev/deletedev

Delete a device entry.

3.5

POST admin/dev/adddatapoint

Add a data point to a device.

3.6

POST admin/dev/updatedatapoint

Remove data point from device.

3.7

POST admin/dev/deletedatapoint

Update data point information.

3.8

POST admin/dev/getdatapointinfo

Get data point information.

3.9

POST admin/dev/listdatapoints

List data point in a project.

3.10

POST admin/group/addgroup

Add a group in this project.

3.11

POST admin/group/updategroup

Update group information.

3.12

POST admin/group/getgroupinfo

Get group information.

3.13

POST admin/group/deletegroup

Delete a group.

3.14

POST admin/group/listgroups

List groups in the project.

3.15

POST admin/project/listdevbygroup

List devices by group.

3.16

POST admin/dev/listdatapointbygroup

List data point by group.

3.17

POST admin/group/listgrouppath

List hierarchy path of a group.

3.18

POST admin/dev/getdevkey

Get the device key of a device.

4.1

POST data/rawdataquery

Query raw data by filters.

4.2

POST data/rawdataexport

Export raw data.

4.3

POST data/getexportstatus

Get the data export status.

4.4

POST data/statsdataquery

Query stats data by rules.

4.5

POST data/statsdataexport

Export stats data.

4.6

POST data/alarmdataquery

Query alarm data.

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 72

Data mngt

August 2015 Document Number: 332845-001US

API List

4.7

POST data/alarmdataexport

Export alarm data.

4.8

POST alm/pollalarm

Poll alarm.

5.1

POST logs/rawlogquery

Query log data with filter.

5.2

POST logs/rawlogexport

Export raw log data.

5.3

POST logs/getservicestats

Obtain running stats of server.

Log mngt

§

August 2015 Document Number: 332845-001US

Gateway Management Solution Based on Intel® IoT Platform API Reference Manual 73