Step 1. Please make sure the gateway is powered on and works properly.
The BLUE indicator is a normal network connection.
The RED indicator is an abnormal network connection.
Step 2. Make sure the gateway and the PC are connected to the same LAN. Then enter the URL http://ihost.local on your browser.
Notice:
If you have several gateways, you can get the corresponding IP address to access the specified gateway in the below two ways.
// Request curl --location --request GET 'http://<ip address>/open-api/v1/rest/bridge/access_token' --header 'Content-Type: application/json' // Response { "error": 401, "data": {}, "message": "link button not pressed" }
// Request curl --location --request GET 'http://<ip address>/open-api/v1/rest/bridge/access_token' --header 'Content-Type: application/json' // Response { "error": 0, "data": { "token": "376310da-7adf-4521-b18c-5e0752cfff8d" }, "message": "success" }
// Request curl --location --request GET 'http://<ip address>/open-api/v1/rest/devices' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer 376310da-7adf-4521-b18c-5e0752cfff8d' // Response { "error": 0, "data": { "device_list": [ { "serial_number": "ABCDEFGHIJK", "name": "device name", "manufacturer": "manufacturer name", "model": "model name", "firmware_version": "1.1.0", "display_category": "switch", "capabilities": [ { "capability": "power", "permission": "readWrite" } ], "protocol": "zigbee", "state": { "power": { "powerState": "on" } }, "tags": { "key": "value" }, "online": true } ] } "message": "success" }
The gateway Web API interface has two access methods (based on IP or domain name), usually the root path is /open-api/v1/rest/< specific function module >
// IP access
http://<IP address>/open-api/v1/rest/bridge
// Domain name access
http://<domain address>/open-api/v1/rest/bridge
// Device capabilities description { "capabilities": [ // Power control { "capability": "power", "permission": "readWrite" }, // Brightness adjustment { "capability": "brightness", "permission": "readWrite"
} ] } // Obtain the status state structure returned by the device list interface { "state":{ "[capability]": { "[capabilityState]":[value] } } } { "state": { "power": { "powerState": "on" }, "brightness": { "brightness": 100 } } } // Modify device state - power off { "state": { "power": { "powerState": "off" } } }
Type | Description |
string | String data type. UTF8 encoded. |
number | Number data type. double-precision 64-bit binary format IEEE 754 |
int | Integral data type. |
object | Object data type. JSON-compliant object |
string[] | Array of string |
int[] | Array of integral |
object[] | Array of object |
bool | Boolean |
date | Time string. String in ISO (ISO 8601 Extended Format) format: YYYY-MM-DDTHH:mm:ss.sssZ. The time zone is always UTC (Coordinated Universal Time), identified by a suffix “Z”. |
Attribute | Type | Optional | Description |
error | int | N | Error code:0: Success400:Parameter error401:Authentication failed500:Server exception |
data | object | N | Response data body |
message | string | N | Response description:When error is equal to 0, the content is successWhen error is not equal to 0, it is a non-empty string, and the content is an error description. |
{
"error": 0,
"data": {
"token": "376310da-7adf-4521-b18c-5e0752cfff8d"
},
"message": "success"
}
{
"error": 400,
"data": {},
"message": "invalid parameters"
}
Type | Description |
Supported sound | – alert1 (Alarm Sound 1) |
Supported deep | – bootComplete (System startup completed) |
Allow users to access token. iHost Version ≥ 1.2.0
● Notice: The token will be cleared after device reset.
● Notice: After obtaining the token, you need to press the button again to successfully obtain a new token.
Request Parameters:
iHost Version< 1.3.0
None
iHost Version ≥ 1.3.0
Attribute | Type | Optional | Description |
app_name | string | Y | Application name description. |
Successful data response:
Attribute | Type | Optional | Description |
token | string | N | The interface access token. It’s valid for a long time, please save it |
Condition: User trigger the < command key > and access this interface within the valid time.
Status Code: 200 OK
{
"error": 0,
"data": {
"token": "376310da-7adf-4521-b18c-5e0752cfff8d"
},
"message": "success"
}
Conditions:The user has not triggered the < command key >, or the valid time has expired.
Status Code: 200 OK
{
"error": 401,
"data": {},
"message": "link button not pressed"
}
iHost Version ≥ 1.2.0
Allow authorized users to obtain the status of gateway through this interface
Request Parameters: none
Successful data response:
Attribute | Type | Optional | Description |
ram_used | int | N | ram usage percent.[0-100] |
cpu_used | int | N | cpu usage percentage. [0-100] |
power_up_time | date | N | The last power-on time |
Conditions: The request parameters are legal, and the user identity verification is passed.
Status Code: 200 OK
{
"error": 0,
"data": {
"ram_used": 40,
"cpu_used": 30,
"power_up_time": "2022-10-12T02:58:09.989Z"
},
"message": "success"
}
iHost Version ≥ 1.2.0
Allow authorized users to set the gateway through this interface
Request parameters:
Attribute | Type | Optional | Description |
volume | int | Y | System volume. [0-100] |
Successful data response:empty Object {}
Conditions: The request parameters are legal, and the user identity verification is passed.
Status Code: 200 OK
{
"error": 0,
"data": {},
"message": "success"
}
iHost Version ≥ 1.3.0
Allow authorized users to get the gateway info through this interface
Request parameters:
Attribute | Type | Optional | Description |
ip | string | N | ip address |
mac | string | N | mac address |
Successful data response:empty Object {}
{
"error": 0,
"data": {
"ip": "192.168.31.25",
"mac": "00:0A:02:0B:03:0C"
},
"message": "success"
}
iHost Version ≥ 1.2.0
Allow authorized user to restart the gateway through this interface
Request parameters: None
Successful data response: empty Object {}
Conditions: The request parameters are legal, and the user identity verification is passed.
Status Code: 200 OK
{
"error": 0,
"data": {},
"message": "success"
}
iHost Version ≥ 1.2.0
Allow authorized users to control the speaker through this interface
Request parameters:
Attribute | Type | Optional | Description |
type | string | N | Optional parameters: 1.play_sound (play the sound) 2.play_beep (play the beep) |
sound | SoundObject | Y (N if type is play_sound.) | The sound. |
beep | BeepObject | Y (N if type is play_beep.) | The beep |
SoundObject Object
Attribute | Type | Optional | Description |
name | string | N | The sound name. The supported values can be checked in [Resource List – Supported sound] |
volume | int | N | The sound volume. [0-100] |
countdown | int | N | The duration for the speaker to play the sound, and it will stop playing automatically after the time is up. Unit: second. [0,1799] |
BeepObject Object
Attribute | Type | Optional | Description |
name | string | N | The deep name. The supported values can be checked in [Resource List – Supported deep] |
volume | int | N | The deep volume. [0-100] |
Successful data response: empty Object {}
Conditions: The request parameters are legal, and the user identity verification is passed.
Status Code: 200 OK
{
"error": 0,
"data": {},
"message": "success"
}
Device Type | Value | iHost Version |
Plug | plug | ≥ 1.2.0 |
Switch | switch | ≥ 1.2.0 |
Light | light | ≥ 1.2.0 |
Curtain | curtain | ≥ 1.2.0 |
Door/Window Sensor | contactSensor | ≥ 1.2.0 |
Motion sensor | motionSensor | ≥ 1.2.0 |
Temperature sensor | temperatureSensor | ≥ 1.2.0 |
Humidity sensor | humiditySensor | ≥ 1.2.0 |
Temperature and humidity sensor | temperatureAndHumiditySensor | ≥ 1.2.0 |
Water leak detector | waterLeakDetector | ≥ 1.2.0 |
Smoke detector | smokeDetector | ≥ 1.2.0 |
Wireless button | button | ≥ 1.2.0 |
Camera | camera | ≥ 1.2.0 |
General sensor | sensor |
Name | Description | Capability&Permission Example | Attribute(Status) | Protocol(Status inquiry&Control command) |
power | Power control iHost Version ≥ 1.2.0 | [ { “capability”: “power”, “permission”: “readWrite” }] | { “powerState”: “on”, //The field powerState indicates the power on/off state, which is required. string type, ”on“ means on, ”off“ means off, ”toggle“ means reverse.} | Turn on:{ “powerState”: “on”}Turn off:{ “powerState”: “off”} |
toggle | Toggle control iHost Version ≥ 1.2.0 | [ // Single toggle example { “capability”: “toggle”, “permission”: “readWrite”, “name”: “1” }, // Multiple toggle example[ { “capability”: “toggle”, “permission”: “readWrite”, “name”: “1” }, { “capability”: “toggle”, “permission”: “readWrite”, “name”: “2” }] | { “toggleState”: “on”, // The field “toggleState” indicates the toggle state of the {name} attribute of {device_id}. Required. String type. “on” means open, “off” means close, “toggle” means reverse.} | toggle format is special{ [capability] :{ [toggle-name]:{ [toggleState]:[value] } }}toggle 1 on, toggle 2 off{ “toggle”: { “1”: { “toggleState”: “on” }, “2”: { “toggleState”: “off” } }} |
brightness | Brightness Control iHost Version ≥ 1.2.0 | [ { “capability”: “brightness”, “permission”: “readWrite” }] | { “brightness”: 100, // The field “brightness” indicates the percentage of brightness. Int type. An integer with a value range of 0~100.} | 0 is the darkest and 100 is the brightest. Set the brightness to 80%. { “brightness”: { “brightness”: 80, }} |
color-temperature | Color temperature control iHost Version ≥ 1.2.0 | [ { “capability”: “color-temperature”, “permission”: “readWrite” }] | { “colorTemperature”: 100, // 字段 “colorTemperature” Indicates the percentage of color temperature. Int type. An integer with a value range of 0~100. 0 means warm light, 50 means neutral light, and 100 means cold light.} | Set the Color temperature to 80%. { “color-temperature”: { “colorTemperature”: 50 }} |
color-rgb | Color control iHost Version ≥ 1.2.0 | [ { “capability”: “color-rgb”, “permission”: “readWrite” }] | { “red”: 255, // The field “red” represents red in the RGB color space. Required. Int type. An integer with a value range of 0~255. “green”: 0, // The field “green” represents green in the RGB color space. Required. Int type. An integer with a value range of 0~255. “blue”: 255, // The field “blue” represents blue in the RGB color space. Required. Int type. An integer with a value range of 0~255.} | Set the color.{ “color-rgb”: { “red”: 255, “green”: 0, “blue”: 255, }} |
percentage | Percentage control iHost Version ≥ 1.2.0 | [ { “capability”: “percentage”, “permission”: “readWrite” }] | { “percentage”: 100, // The field “percentage” represents a percentage of a certain degree, and the field percentageDelta can be selected as one of the two. int type. An integer with a value range of 0~100.} | Set to 40%{ “percentage”: { “percentage”: 40 }} |
motor-control | Motor control iHost Version ≥ 1.2.0 | [ { “capability”: “motor-control”, “permission”: “readWrite” }] | { “motorControl”: “stop”, // The field “motor-control“ indicates the open or close state of the motor。 Required. String type. Optional values, “open” (open), “close” (close), “stop” (stop), “lock” (lock).} | Turn on the motor{ “motor-control”: { “motorControl”: “open” }} |
motor-reverse | Motor reverse iHost Version ≥ 1.2.0 | [ { “capability”: “motor-reverse”, “permission”: “readWrite” }] | { “motorReverse”: true, // The field “motor-reverse” indicates the forward and reverse setting of the motor. Required. boolean type. true means forward rotation, false means reverse rotation.} | Set the motor reverse{ “motor-reverse”: { “motorReverse”: false }} |
startup | Power on state (Power Supply) iHost Version ≥ 1.2.0 | [ { “capability”: “startup”, “permission”: “readWrite” }] | { “startup”: “on” // String type. Required. Optional values, “on” (power on) ,“stay“ (stay power on),”off“ (power off)} | Set the power on state to always stay on when powered on{ “startup”: { “startup”: “on” }} |
startup | Toggle power on state (can use with toggle) iHost Version ≥ 1.2.0 | [ { “capability”: “startup”, “permission”: “readWrite”, “components”: [ //Components that support power on retention. If the device with the toggle sub-channel needs to support power on retention, this field is mandatory. In particular, the toggle capability supports separate power-on retention settings. For details, see the update protocol of toggle. // toggle 1 power on state { “capability”: “toggle”, // String type. Required. Represents the name of the component capability that supports power-on retention. Only “power” and “toggle” are supported. “name”: “1”, // The field “name” indicates the attribute name that can be toggled. Required. String type. Only uppercase and lowercase letters and numbers are allowed. Taking the multi-channel switch as an example, it should be the channel number, that is, 1, 2, 3, 4 } ] }] | { “startup”: “on” // String type. Required. Optional values, “on” (power on) ,“stay“ (stay power on),”off“ (power off)} | When channel 1 power on, the power state is always on{ “toggle”: { “1”: { “startup”: “on” } }} |
camera-stream | Camera stream iHost Version ≥ 1.2.0 | { “capability”: “camera-stream”, // The field “capability” indicates the name of the specific function. Rrequired. String type. camera-stream indicates the video streaming capability of the camera. “permission”: “read”, // The field “permission” indicates the use of specific functions. Required. String type. Optional values: “read” (readable), “write” (writable), “readWrite” (readable and writable)。 “configuration”: { “streamUrl”: “rtsp://<username>:<password>@<hostname>:<port>/streaming/channel01”, //stream url. String type. Required. } } | / | { “camera-stream”: { “configuration”: { “streamUrl”: “rtsp://<username>:<password>@<hostname>:<port>/streaming/channel01”, // stream url. String type. Required. } }} |
motor-clb | Motor calibration detection iHost Version ≥ 1.2.0 | [ { “capability”: “motor-clb”, “permission”: “read” }] | { “motorClb”: “calibration”, // The field “motor-clb” indicates that the motor has been calibrated Required. String type, normal means normal mode (calibrated), calibration means it is being calibrated.} | The motor is being calibrated.{ “motor-clb”: { “motorClb”: “calibration” }} |
detect | State detection iHost Version ≥ 1.2.0 | [ { “capability”: “detect”, “permission”: “read” }] | { “detected”: true, // The field “detected” indicates the current detection result. Required. Boolean type, true indicates that the condition is detected, false indicates that the condition is not detected.} | The current state is the result detected.{ “detect”: { “detected”: true }} |
humidity | Humidity detection iHost Version ≥ 1.2.0 | [ { “capability”: “humidity”, “permission”: “read”, “configuration”: { // Configuration items, optional “range”: { // Percentage range configuration. Optional. Default range [0-100]. “min”: 0, // Minimum value, int type. Required. Range 0-100, must be less than max. “max”: 100 // Maximum value, int type. Required. Range 0-100, must be greater than min. } } }] | { “humidity”: 50, // The field “humidity” indicates the current relative humidity (percentage). Required. Int type. An integer with a value range of 0~100.} | Current humidity is 20{ “humidity”: { “humidity”: 20 }} |
temperature | Temperature detection iHost Version ≥ 1.2.0 | [ { “capability”: “temperature”, “permission”: “read”, “configuration”: { // Configuration items, optional “range”: { // Temperature range configuration. Optional. “min”: -40, // Minimum value, int type. Required. “max”: 80 //Maximum value, int type. Required. } } }] | { “temperature”: 26.5, // The field “temperature” indicates the current temperature. Required. Number type. The unit is Celsius.} | Current temperature is 20 Celsius{“temperature”: {“temperature”: 20}} |
battery | Remaining battery detection iHost Version ≥ 1.2.0 | [{ “capability”: “battery”, “permission”: “read” }] | { “battery”: 95, // The field “battery” indicates the percentage of remaining battery power. Required. Int type. An integer with a value range of -1~100. -1 means that the battery level is unknown.} | Current remaining power is 40.{ “battery”: { “battery”: 40 }} |
press | Press detection iHost Version ≥ 1.2.0 | [ { “capability”: “press”, “permission”: “read” }] | { “press”: “singlePress”, // The field “press” indicates the method of pressing the button. Required. String type. ptional values: “singlePress” (single-click/single short press), “doublePress” (double-click/two consecutive short presses), “longPress” (long press).} | A single click was detected{ “press”: { “press”: “singlePress” }} |
rssi | Wireless signal strength detection iHost Version ≥ 1.2.0 | [ { “capability”: “rssi”, “permission”: “read” }] | { “rssi”: -65, // The field “rssi” indicates the wireless signal strength (received signal strength indication). Required. int type. The unit is dBm, and the optional value is a negative integer.} | { “rssi”: {“rssi”: -65 }} |
configuration Unpublished | Function configuration | [ { “capability”: “configuration”, “permission”: “readWrite” }] | { “deviceConfiguration”: { // Device-related function configuration “defaultReportResolution”: 300, // Default resolution for reading moisture saturation data. Int type. Required. Unit second. “maxReportResolution”: 86400, // Maximum resolution for reading moisture saturation data. Required. Unit second. “minReportResolution”: 60 // Minimum and minimum resolution for reading moisture saturation data. Required. Unit second. }} | { “configuration”: { // Capability-related configuration, optional. “deviceConfiguration”: { “report”: { // Report configuration. Required. “defaultResolution”: 300, // Default resolution for reading moisture saturation data. Int type, mandatory, unit second. “maxResolution”: 86400, // Maximum resolution for reading moisture saturation data, required, unit seconds. “minResolution”: 60 // The minimum and minimum resolution for reading moisture saturation data. Required, unit seconds. } } }} |
system Unpublished | System functions | [ { “capability”: “system”, “permission”: “write” }] | { “restart”: true, // Restart device command. Boolean type. Required. The value is true only.} | { “system”: { // Capability-related configuration. Optional. “restart”: true }} |
moisture Unpublished | Moisture detection | [ { “capability”: “moisture”, “permission”: “read” }] | { “moisture”: 55.5, // The field “moisture” represents the percent moisture saturation. Number type, required. The value range is 0~100. From completely dry to fully saturated (saturation from 0% to 100%).} | / Report the current moisture saturation{ “moisture”: { “moisture”: 55.5 }} |
barometric-pressure Unpublished | Barometric pressure detection | [ { “capability”: “barometric-pressure”, “permission”: “read”, “configuration”: { // Capability configuration. Optional. “range”: { //Air pressure range. Optional. Default range [540-1100] “min”: 540, // Minimum value, int type. Required. Range greater than or equal to 0, Must be less than max. “max”: 1100 // Maximum value, int type, mandatory, range greater than 0, must be greater than min. } } }] | { “barometricPressure”: 50, // Air pressure value, int type. Required. Unit hPa.} | // Report the current barometric pressure{ “barometric-pressure”: { “barometricPressure”: 5000 }} |
wind-speed Unpublished | Wind speed detection | [ { “capability”: “wind-speed”, “permission”: “read”, “configuration”: { // Capability configuration. Optional. “range”: { // Wind speed range. Optional. Default range [0-50] “min”: 0, // minimum value. Number type. Mandatory, range greater than or equal to 0, Must be less than max. “max”: 50 // Maximum value, number type, mandatory, range greater than 0, must be greater than min. } } }] | { “windSpeed”: 5000, //Wind speed value, number type. Required. Unit m/s (meter per second)} | // Report the current wind speed{ “wind-speed”: { “windSpeed”: 50 }} |
wind-direction Unpublished | Wind direction detection | [ { “capability”: “wind-direction”, “permission”: “read” }] | { “windDirection”: 10 // Wind direction. Int type. Required. The units are degrees. Range 0~360 degrees (clockwise).} | // Report the current wind direction{ “wind-direction”: { “windDirection”: 10 //Wind direction. Int type. Required. The units are degrees. Range 0~360 degrees (clockwise). }} |
rainfall Unpublished | Rainfall detection | [ { “capability”: “rainfall”, “permission”: “read”, “configuration”: { // Capability configuration. Optional. “range”: { //Rainfall, optional, default range [0-450] “min”: 0, // minimum value. Number type. Mandatory, range greater than or equal to 0, Must be less than max. “max”: 50 // Maximum value, number type, mandatory, range greater than 0, must be greater than min. } } }] | { “rainfall”:11.11, // Rainfall value. Number type. Required.Unit mm/s (millimeters per hour).} | // Report current precipitation{ “rainfall”: { “rainfall”: 50 }} |
illumination Unpublished | illumination detection | [ { “capability”: “illumination”, “permission”: “read”, “configuration”: { // Capability configuration. Optional. “range”: { //Illumination lux range. Optional. Default range [0,160000] “min”: 0, // minimum value. Number type. Mandatory, range greater than or equal to 0, Must be less than max. “max”: 50 // Maximum value, number type, mandatory, range greater than 0, must be greater than min. } } }] | { “illumination”: 11, // Illumination value. Int type. Required. Unit lux (lux)} | // Report the current illuminance{ “illumination”: { “illumination”: { “value”: 5000, // Illumination value, int type. Required. Default range [0,160000]. “unit”: “lux” //Illumination value. Int type. Required. Unit lux (lux) } }} |
ultraviolet-index Unpublished | UV Index detection | [ { “capability”: “ultraviolet-index”, “permission”: “read”, “configuration”: { // Capability configuration. Optional. “range”: { //UV index range. Optional, default range [0-16] “min”: 0, // minimum value. Number type. Mandatory, range greater than or equal to 0, Must be less than max. “max”: 50 // Maximum value, number type, mandatory, range greater than 0, must be greater than min. } } }] | { “ultravioletIndex”: 11.1 // UV index. Number type. Required.} | // Report current UV index{ “ultraviolet-index”: { “ultravioletIndex”: 5 }} |
co2 Unpublished | co2 detection | [ { “capability”: “co2”, “permission”: “read”, “configuration”: { // Capability configuration. Optional. “range”: { //ppm range, default range [400-10000] “min”: 0, // minimum value. Number type. Mandatory, range greater than or equal to 0, Must be less than max. “max”: 50 // Maximum value, number type, mandatory, range greater than 0, must be greater than min. } } }] | { “co2”: 111, // co2 concentration. Int type. Required. Unit ppm} | // Report current co2 concentration{ “co2”: { “co2”: 500 }} |
electrical-conductivity Unpublished | Electrical conductivity detection | [ { “capability”: “electrical-conductivity”, “permission”: “read”, “configuration”: { // Capability configuration. Optional. “range”: { //electrical conductivity range, default range [0-23] “min”: 0, // minimum value. Number type. Mandatory, range greater than or equal to 0, Must be less than max. “max”: 50 // Maximum value, number type, mandatory, range greater than 0, must be greater than min. } } }] | { “electricalConductivity”: 11.11 // electrical conductivity. Number type. Required. Unit dS/m。} | // Report current electrical conductivity{ “electrical-conductivity”: { “electricalConductivity”: 11.11 // electrical conductivity. Number type. Required. Unit dS/m }} |
{
"toggle": {
'1': 'Chanel1',
'2': 'Chanel2',
'3': 'Chanel3',
'4': 'Chanel4',
},
}
{
"temperature_unit":'c' // c-Celsius; f-Fahrenheit
}
Error Code | Description | iHost Version |
110000 | The sub-device/group corresponding to the id does not exist | ≥1.2.0 |
110001 | The gateway is in the state of discovering zigbee devices | ≥1.2.0 |
110002 | Devices in a group do not have a common capability | ≥1.2.0 |
110003 | Incorrect number of devices | ≥1.2.0 |
110004 | Incorrect number of groups | ≥1.2.0 |
110005 | Device Offline | ≥1.2.0 |
110006 | Failed to update device status | ≥1.2.0 |
110007 | Failed to update group status | ≥1.2.0 |
110008 | The maximum number of groups has been reached. Create up to 50 groups | ≥1.2.0 |
110009 | The IP address of the camera device is incorrect | ≥1.2.0 |
110010 | Camera Device Access Authorization Error | ≥1.2.0 |
110011 | Camera device stream address error | ≥1.2.0 |
110012 | Camera device video encoding is not supported | ≥1.2.0 |
110013 | Device already exists | ≥1.2.0 |
110014 | Camera does not support offline operation | ≥1.2.0 |
110015 | The account password is inconsistent with the account password in the RTSP stream address | ≥1.2.0 |
110016 | The gateway is in the state of discovering onvif cameras | ≥1.2.0 |
110017 | Exceeded the maximum number of cameras added | ≥1.2.0 |
110018 | The path of the ESP camera is wrong | ≥1.2.0 |
110019 | Failed to access the service address of the third-party device | ≥1.3.1 |
iHost Version ≥ 1.2.0
Allow authorized users to enable or disable gateway search for sub-devices through this interface
Request parameters:
Attribute | Type | Optional | Description |
enable | boolean | N | true (Start paring); false (Pause pairing) |
type | string | N | Searching Type: Zigbee |
Successful data response: empty Object {}
Conditions: The request parameters are legal, and the user identity verification is passed.
Status Code: 200 OK
{
"error": 0,
"data": {},
"message": "success"
}
iHost Version ≥ 1.2.0
Allow authorized users to add a single sub-device through this interface.
Request parameters:
Attribute | Type | Optional | Description |
name | string | N | Sub-device name |
display_category | string | N | Device Type. Only support camera。 |
capabilities | CapabilityObject[] | N | Capability list. When display_category = camera, capabilities only include camera-stream capabilities. |
protocol | string | N | Device protocol. RTSP; ESP32-CAM |
manufacturer | string | N | Manufacturer. |
model | string | N | Device model |
firmware_version | string | N | Device firmware version |
CapabilityObject Object
Attribute | Type | Optional | Description |
capability | string | N | Capability name. Only support “camera-stream” |
permission | string | N | Device permission. Only support read. |
configuration | CameraStreamConfigurationObject | Y | Camera stream configuration. |
CameraStreamConfigurationObject Object
Attribute | Type | Optional | Description |
stream_url | string | N | Stream url,<schema>://<hostname>:<port>/<username>:<password>@<service_path>,e.g.: rtsp://admin:123456@192.168.10.115:554/streaming/channel01
schema optional: · rtsp · http (For ESP32-Camera) Note: Some cameras don’t have account numbers and passwords, so you can leave the username and password blank. | |
Successful data response:
Attribute | Type | Optional | Description |
serial_number | string | N | Device unique serial number |
Conditions: The request parameters are legal, and the user identity verification is passed.
Status Code: 200 OK
{
"error": 0,
"data": {
"serial_number": "serial_number"
},
"message": "success"
}
Failure data response: empty Object
Condition:
1. Camera stream address access error (format error, authorization failure, network exception, etc.)
2. Device already exists
3.If a single device fails to add, returns all devices fail to add.
Status Code: 200 OK
Error code:
● 110009 Camera IP address error
● 110010 Camera access authorization error
● 110011 Camera stream address error
● 110012 The Camera video encoding does not support
● 110013 Device already exists
{
"error": 110009,
"data": {},
"message": "camera ip access failed"
}
iHost Version ≥ 1.2.0
Allow authorized users to obtain the list of gateway sub-device through this interface.
Request parameters: none
Successful data response:
Attribute | Type | Optional | Description |
device_list | ResponseDeviceObject[] | N | Device list |
ResponseDeviceObject Object
Attribute | Type | Optional | Description |
serial_number | string | N | Device unique serial number |
third_serial_number | string | “N” when a third-party device is connected, otherwise “Y” | Third-party device unique serial number |
service_address | string | “N” when a third-party device is connected, otherwise “Y” | Third-party service address |
name | string | N | Device name, if it is not renamed, will be displayed by the front end according to the default display rules. |
manufacturer | string | N | Manufacturer |
model | string | N | Device model |
firmware_version | string | N | Firmware version. Can be an empty string. |
hostname | string | Y | Device hostname |
mac_address | string | Y | Device mac address |
app_name iHost Version ≥ 1.3.0 | string | Y | The name of the application to which it belongs. If the app_name is filled in when obtaining the open interface certificate, then all subsequent devices connected through the certificate will be written into this field. |
display_category | string | N | Device category |
capabilities | CapabilityObject[] | N | Device capabilities |
protocol | string | “N” when a third-party device is connected, otherwise “Y” | Device protocol: zigbee, onvif, rtsp, esp32-cam |
state | object | Y | Device state object. For state examples of different capabilities, please check 【Support Device Capabilities】 |
tags | object | Y | JSON format key-value, custom device information. The function is as follows:- Used to store device channels- Used to store temperature units- Custom information for other third-party devices |
online | boolean | N | Online status: True for onlineFalse is offline |
subnet | boolean | Y | Whether it is in the same subnet as the gateway |
CapabilityObject Object
💡Note: Please check the Examples of Supported Device Capabilities for [Supported Device Capabilities].
Attribute | Type | Optional | Description |
capability | string | N | Ability name. For details, check [Supported Device Capabilities] |
permission | string | N | Capability permission. Possible values are “read” (readable), “write” (writable), “readWrite” (readable and writable). |
configuration | object | Y | Capability configuration information. Currently camera-stream is used, check [Supported Device Capabilities] |
name | string | Y | The name field in toggle. The sub-channel number used to identify multi-channel devices. For example, if name is 1, it means channel 1. |
Conditions: The request parameters are legal, and the user identity verification is passed.
Status Code: 200 OK
{ "error": 0, "data":{ "device_list": [ { "serial_number": "ABCDEFGHIJK", "name": "My Device", "manufacturer": "SONOFF", "model": "BASICZBR3", "firmware_version": "1.1.0", "display_category": "switch", "capabilities": [ { "capability": "power", "permission": "readWrite" }, { "capability": "rssi", "permission": "read" } ], "protocol": "zigbee", "state": { "power": { "powerState": "on" } }, "tags": { "key": "value" }, "online": true } ], } "message": "success" }
iHost Version ≥ 1.2.0
Allow authorized users to modify the basic information of sub-device and issue control commands through this interface.
Request parameters:
Attribute | Type | Optional | Description |
name | string | Y | Device name |
tags | object | Y | JSON format key-value, custom device information. |
state | object | Y | Device state object. For state examples of different capabilities, please check [Support Device Capabilities] |
configuration | object | Y | Capability configuration information, currently only the camera_stream capability supports modification. |
Successful data response:
Conditions: The request parameters are legal, and the user identity verification is passed.
Status Code: 200 OK
Error Code:
{
"error": 0,
"data": {},
"message": "success"
}
import axios from 'axios'; const serial_number = 'serial_number'; const access_token = 'access_token'; (async function main() { // turn on device await axios({ url: `http://ihost.local/open-api/v1/rest/devices/${serial_number}`, method: 'PUT', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${access_token}` }, data: { state: { power: { powerState: 'on' } } } }); })()
iHost Version ≥ 1.2.0
Allow authorized users to delete sub-devices through this interface.
Request Parameters: none
Successful data response:
Conditions: The request parameters are legal, and the user identity verification is passed.
Status Code: 200 OK
{
"error": 0,
"data": {},
"message": "success"
}
Sync third-party devices
// Request URL:/open-api/v1/rest/thirdparty/event Method:POST Header: Content-Type: application/json Autorization: Bearer <token> Body: { "event": { "header": { "name": "DiscoveryRequest", "message_id": "Unique identifier, preferably a version 4 UUID", "version": "1" }, "payload": { "endpoints": [ { "third_serial_number": "third_serial_number_1", "name": "my plug", "display_category": "plug", "capabilities": [ { "capability": "power", "permission" "readWrite" } ], "state": { "power": { "powerState": "on" } }, "tags": { "key": "value" }, "manufacturer": "manufacturer name", "model": "model name", "firmware_version": "firmware version", "service_address": "http://192.168.31.14/webhook" } ] } } }
{ "header": { "name": "Response", "message_id": "Unique identifier, preferably a version 4 UUID", "version": "1" }, "payload": { "endpoints": [ { "third_serial_number": "third_serial_number", "serial_number": "serial number" } ] } }
Report device status
URL:/open-api/v1/rest/thirdparty/event Method:POST Header: Content-Type: application/json Autorization: Bearer <token> Body: { "event": { "header": { "name": "DeviceStatesChangeReport", "message_id": "Unique identifier, preferably a version 4 UUID", "version": "1" }, "endpoint": { "serial_number": "serial_number" }, "payload": { "state": { "power": { "powerState": "on" } } } } }
{
"header": {
"name": "Response",
"message_id": "Unique identifier, preferably a version 4 UUID",
"version": "1"
},
"payload": {}
}
Report offline/online
{
"event": {
"header": {
"name": "DeviceStatesChangeReport",
"message_id": "Unique identifier, preferably a version 4 UUID",
"version": "1"
},
"endpoint": {
"serial_number": "serial_number"
},
"payload": {
"online": true
}
}
}
{
"header": {
"name": "Response",
"message_id": "Unique identifier, preferably a version 4 UUID",
"version": "1"
},
"payload": {}
}
Receive the instructions about the gateway control device
URL:<service address> Method:POST Header: Content-Type: application/json B { "directive": { "header": { "name": "UpdateDeviceStates", "message_id": "Unique identifier, preferably a version 4 UUID", "version": "1" }, "endpoint": { "third_serial_number": "third_serial_number", "serial_number": "serial_number" }, "payload": { "state": : { "power": { "powerState": "on" } } } } }
{
"header": {
"name": "Response",
"message_id": "Unique identifier, preferably a version 4 UUID",
"version": "1"
},
"payload": {}
}
Query device
URL:/open-api/v1/rest/devices
Method:GET
Header:
Content-Type: application/json
Autorization: Bearer <token>
Body: 无
{
"error": 0,
"data": {
"device_list": [
{
"serial_number": "serial number",
"third_serial_number": "third_serial_number",
"name": "my plug",
"manufacturer": "manufacturer name",
"model": "model name",
"firmware_version": "firmware version",
"display_category": "plug",
"capabilities": [
{
"capability": "power",
"permission": "readWrite"
}
],
"state": {
"power": {
"powerState": "on"
}
},
"tags": {
"key": "value"
},
"online": true
}
]
},
"message": "success"
}
Allow authorized users to send event requests to the gateway through this interface.
Request Parameters:
Attribute | Type | Optional | Description |
event | EventObject | N | Request event object structure information |
EventObject Object
Attribute | Type | Optional | Description |
header | HeaderObject | N | Request header structure information |
endpoint | EndpointObject | Y | Request endpoint structure informationNote: This field is empty when sync a new device list. |
payload | PayloadObject | N | Request payload structure information |
HeaderObject Object
Attribute | Type | Optional | Description |
name | string | N | Request name. optional parameter: DiscoveryRequest: Sync new devices DeviceStatesChangeReport: Device status update report DeviceOnlineChangeReport: Device online status report |
message_id | string | N | Request message ID, UUID_V4 |
version | string | N | Request protocol version number. Currently fixed at 1 |
EndpointObject Object
Attribute | Type | Optional | Description |
serial_number | string | N | Device unique serial number |
third_serial_number | string | N | Third-party device unique serial number |
tags | object | Y | JSON format key-value, custom device information. [Device Management Function] – [Tags Description] |
PayloadObject Object:
According to the different header.name have different request structure.
Status Code: 200 OK
Response parameters:
Attribute | Type | Optional | Description |
header | HeaderObject | N | Response header structure information |
payload | PayloadObject | N | Response payload structure information |
HeaderObject Object
Attribute | Type | Optional | Description |
name | string | N | Response header name. optional parameters:Response: Successful response ErrorResponse: Error response |
message_id | string | N | Response header message ID, UUID_V4. Pass in the request message header.message_id here*If the request input parameter lacks message_id, this field will be an empty string when responding. |
version | string | N | – Request protocol version number. Currently fixed at 1. |
Successful response–PayloadObject Object:
Depending on the request type, the response structure is different. For details, please refer to the specific request instruction document.
Failure response–PayloadObject Object:
Attribute | Type | Optional | Description |
type | string | N | Error Type: INVALID_PARAMETERS: Parameter error INTERNAL_ERROR :Service internal error |
description | string | N | Error description |
iHost Version ≥ 1.2.0
Request parameters:
EndpointObject Object:
None
PayloadObject Object:
Attribute | Type | Optional | Description |
endpoints | EndpointObject[] | N | Device List |
EndpointObject Object:
Attribute | Type | Optional | Description |
third_serial_number | string | N | Third-party device unique serial number |
name | string | N | Device name |
display_category | string | N | Device Category. See the [Supported Device Type] for details. *Three-party devices don’t support adding cameras now. |
capabilities | CapabilityObject[] | N | Capabilities list |
state | object | N | Initial state information |
manufacturer | string | N | Manufacturer |
model | string | N | Device model |
tags | object | Y | JSON format key-value, custom device information:Be used to store device channelsBe used to store temperature unitsOther third-party custom data |
firmware_version | string | N | Firmware version |
service_address | string | N | Service address. Such as http://192.168.31.14/service_address |
Example of Request :
{
"event": {
"header": {
"name": "DiscoveryRequest",
"message_id": "Unique identifier, preferably a version 4 UUID",
"version": "1"
},
"payload": {
"endpoints": [
{
"third_serial_number": "third_serial_number_1",
"name": "my plug",
"display_category": "plug",
"capabilities": [
{
"capability": "power",
"permission" "readWrite"
}
],
"state": {
"power": {
"powerState": "on"
}
},
"tags": {
"key": "value"
},
"manufacturer": "manufacturer name",
"model": "model name",
"firmware_version": "firmware version",
"service_address": "http://192.168.31.14/service_address"
}
]
}
}
}
Response parameters:
PayloadObject Object:
Attribute | Type | Optional | Description |
endpoints | EndpointObject[] | N | Device list |
EndpointObject Object:
Attribute | Type | Optional | Description |
serial_number | string | N | Device unique serial number |
third_serial_number | string | N | Third-party device unique serial number |
Example of a correct response:
{
"header": {
"name": "Response",
"message_id": "Unique identifier, preferably a version 4 UUID",
"version": "1"
},
"payload": {
"endpoints": [
{
"serial_number": "serial number",
"third_serial_number": "third_serial_number"
}
]
}
}
Example of an error response:
{
"header": {
"name": "ErrorResponse",
"message_id": "Unique identifier, preferably a version 4 UUID",
"version": "1"
},
"payload": {
"type": "INVALID_PARAMETERS",
"description": "webhook cannot be empty"
}
}
iHost Version ≥ 1.2.0
Request parameters:
PayloadObject Object:
Attribute | Type | Optional | Description |
state | object | N | Devicce state, See [Supported device cabilities] for detail |
Example of Request :
{
"event": {
"header": {
"name": "DeviceStatesChangeReport",
"message_id": "Unique identifier, preferably a version 4 UUID",
"version": "1"
},
"endpoint": {
"serial_number": "serial_number"
},
"payload": {
"state": {
"power": {
"powerState": "on"
}
}
}
}
}
Response parameters:
PayloadObject Object: Empty Object
Example of a successful response:
"header": {
"name": "Response",
"message_id": "Unique identifier, preferably a version 4 UUID",
"version": "1"
},
"payload": {}
}
iHost Version ≥ 1.2.0
Request parameters:
PayloadObject Object:
Attribute | Type | Optional | Description |
online | boolean | N | Device online status true: Online false: Offline |
Example of Request :
{
"event": {
"header": {
"name": "DeviceStatesChangeReport",
"message_id": "Unique identifier, preferably a version 4 UUID",
"version": "1"
},
"endpoint": {
"serial_number": "serial_number"
},
"payload": {
"online": true
}
}
}
Response parameters:
PayloadObject Object: Empty Object
Example of a successful response:
{
"header": {
"name": "Response",
"message_id": "Unique identifier, preferably a version 4 UUID",
"version": "1"
},
"payload": {}
}
Gateway sends instructions to the third-party through the device service address interface.
Request parameters:
Attribute | Type | Optional | Description |
directive | DirectiveObject | N | Directive object structure information |
DirectiveObject Object
Attribute | Type | Optional | Description |
header | HeaderObject | N | Request header structure information |
endpoint | EndpointObject | N | Request endpoint structure information |
payload | PayloadObject | N | Request payload structure information |
HeaderObject Object
Attribute | Type | Optional | Description |
name | string | N | Request name. Optional parameters:UpdateDeviceStates: Update device states |
message_id | string | N | Request message ID, UUID_V4 |
version | string | N | Request protocol version number. Currently fixed at 1. |
EndpointObject Object
Attribute | Type | Optional | Description |
serial_number | string | N | Device unique serial number |
third_serial_number | string | N | Third-party device unique serial number |
tags | object | N | JSON format key-value, custom device information. [Device Management Function] – [Tags Description] |
Example of Request :
{
"directive": {
"header": {
"name": "UpdateDeviceStates",
"message_id": "Unique identifier, preferably a version 4 UUID",
"version": "1"
},
"endpoint": {
"serial_number": "serial_number",
"third_serial_number": "third_serial_number",
"tags": {}
},
"payload": {
"state": {
"power": {
"powerState": "on"
}
}
}
}
}
HTTP Status Code: 200 OK
HTTP Response Attribute:
Attribute | Type | Optional | Description |
event | EventObject | N | Response event structure information |
EventObject Object
Attribute | Type | Optional | Description |
header | HeaderObject | N | Request header structure information |
payload | PayloadObject | N | Request payload structure information |
HeaderObject Object
Attribute | Type | Optional | Description |
name | string | N | Response header name. Optional parameter: UpdateDeviceStatesResponse: Update device states response ErrorResponse: Error response |
message_id | string | N | Response header message ID, UUID_V4. Pass in the request message header.message_id here |
version | string | N | Request protocol version number. Currently fixed at 1. |
Successful response–PayloadObject Object:
Depending on the request type, the response structure is different. For details, please refer to the specific request instruction document.
Failure response–PayloadObject Object:
Attribute | Type | Optional | Description |
type | string | N | Error type:- ENDPOINT_UNREACHABLE: Device is unreachable or offline- ENDPOINT_LOW_POWER: Device is in a low battery state and cannot be controlled- INVALID_DIRECTIVE: Command issued by the gateway is abnormal- NO_SUCH_ENDPOINT: Device doesn’t exist- NOT_SUPPORTED_IN_CURRENT_MODE: Current mode is not supported- INTERNAL_ERROR: Service internal error |
Conditions: The request parameters are legal.
Status Code: 200 OK
Response parameters:
{
"event": {
"header": {
"name": "UpdateDeviceStatesResponse",
"message_id": "Unique identifier, preferably a version 4 UUID",
"version": "1"
},
"payload": {}
}
}
{
"event": {
"header": {
"name": "ErrorResponse",
"message_id": "Unique identifier, preferably a version 4 UUID",
"version": "1"
},
"payload": {
"type": "ENDPOINT_UNREACHABLE"
}
}
}
iHost Version ≥ 1.2.0
Request parameters:
PayloadObject Object:
Attribute | Type | Optional | Description |
state | object | N | Devicce state, See [Supported device cabilities] for detail. |
Example of Request :
"directive": {
"header": {
"name": "UpdateDeviceStates",
"message_id": "Unique identifier, preferably a version 4 UUID",
"version": "1"
},
"endpoint": {
"serial_number": "serial_number"
},
"payload": {
"state": : {
"power": {
"powerState": "on"
}
}
}
}
}
Response parameters:
PayloadObject Object:empty Object
Example of Successful Response
{
"header": {
"name": "Response",
"message_id": "Unique identifier, preferably a version 4 UUID",
"version": "1"
},
"payload": {}
}
iHost Version ≥ 1.2.0
Allow authorized users to obtain device debugging logs through this interface.
The content format is:
[ { "message_id": "message_id", //Message ID "ip": "", // Remote IP. Required. "req": { // Request record. "method": "GET", // Request method. Required. "url": "", // Request url. Required. "body": "", // Request body, json string.Required. An empty string is allowed. "header": "" , // Request header, json string. Required. }, "res": { // Response record. "status_code": 200, // Status code. Required. "body": "" , // Response body, json string.Required. An empty string is allowed. "header": "" , // Response header, json string. Required.} } } ]
Response parameters:
Attribute | Type | Optional | Description |
type | string | N | Log type:event_log: Third-party report request logdirective_log: The directive log sent by the gateway |
from_index | int | Y | Start sequence number. Default is 0. An integer in the range [0,3000]. |
start_time | date | Y | Start timestamp, query specific time. If empty, default is 1 minute ago. |
end_time | date | Y | End timestamp, query specific time. If iempty, default is current time. |
limit | int | Y | The limit messages to be pulled, the range is an integer of [1,50]. If empty, default is 50. |
order | string | Y | Sort by time range,DESC: Descending orderASC: Ascending orderDefault is DESC |
Successful Response
Status Code: 200 OK
Response header:
Abnormal response
Status Code:
MDN EventSource interface description:https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events
The gateway supports pushing messages to the client using SSE (Server-sent events). The client can monitor SSE messages after obtaining the access credentials and can parse the content of the push messages according to the development interface event notification protocol after receiving the messages pushed by the gateway. It should be noted that the gateway currently uses the HTTP1.1 protocol, so SSE on the browser side there will be a maximum of no more than 6 connections limit (Specific instructions can be found in the MDN EventSource interface description.)
Request parameters:
Name | Type | Optional | Description |
access_token | string | N | Access Token |
Note:
When requesting an SSE connection, the gateway will check the access_token, and it will return an authentication failure error if it is invalid. { “error”: 401, “data”: {}, “message”: “invalid access_token”}
<Module Name>#<Version>#<Message Type>
For example:
Module Name: device
Version: v1,v2,v3
Message Type: addDevice
Example:
const evtSource = new EventSource("http://ihost.local/open-api/v1/sse/bridge?access_token=xxxxxx"); evtSource.addEventListener('device#v1#addDevice',function (event) { try { const data = JSON.parse(event.data); console.log('data', data); } catch (error) { console.error(`parse error`,error); } }
iHost Version ≥ 1.3.0
Module Name:device
Version:v1
Message Type:addDevice
event.data parameters:
Name | Type | Optional | Description |
payload | ResponseDeviceObjectObject – Interface the same with the Get Device List | N | device information |
Example:
// event.data { "payload": { "serial_number": "ABCDEFGHIJK", "third_serial_number": "third_serial_number", "name": "My device", "manufacturer": "SONOFF", "model": "BASICZBR3", "firmware_version": "1.1.0", "display_category": "switch", "capabilities": [ { "capability": "power", "permission": "readWrite" }, { "capability": "rssi", "permission": "read" } ], "protocol": "zigbee", "state": { "power": { "powerState": "on" } }, "tags": { "key": "value" }, "online": true } }
iHost Version ≥ 1.3.0
Module Name:device
Version:v1
Message Type:updateDeviceState
event.data parameters:
Name | Type | Optional | Description |
endpoint | EndpointObject | N | Device Information |
payload | object。 Structure the same as the device state | N | Device Status Data |
EndpointObject Object:
Parameter | Type | Optional | Description |
serial_number | string | N | Device unique Serial Number |
third_serial_number | string | Y | The unique serial number of the third-party device. For devices connected through open interfaces, this field is required. |
Example
// event.data { "endpoint": { "serial_number": "serial_number", "third_serial_number": "third_serial_number" }, "payload": { "power": { "powerState": "on" }, "brightness": { "brightness": 100 } } }
iHost Version ≥ 1.3.0
Module Name:device
Version:v1
Message Type:updateDeviceInfo
event.data parameters:
Name | Type | Optional | Description |
endpoint | EndpointObject | N | Device Information |
payload | DeviceChangeObject | N | Device Change Data |
EndpointObject Object:
Attribute | Type | Optional | Description |
serial_number | string | N | Device unique Serial Number |
third_serial_number | string | Y | The unique serial number of the third-party device. For devices connected through open interfaces, this field is required. |
DeviceChangeObject Object
Name | Type | Optional | Description |
name | string | N | Device Name |
Example
// event.data
{
"endpoint": {
"serial_number": "serial_number",
"third_serial_number": "third_serial_number"
},
"payload": {
"name": "device name"
}
}
iHost Version ≥ 1.3.0
Module Name:device
Version:v1
Message Type:deleteDevice
event.data parameters:
Name | Type | Optional | Description |
endpoint | EndpointObject | N | Device Information |
EndpointObject Object:
Attribute | Type | Optional | Description |
serial_number | string | N | Device unique Serial Number |
third_serial_number | string | Y | The unique serial number of the third-party device. For devices connected through open interfaces, this field is required. |
Example
// event.data
{
"endpoint": {
"serial_number": "serial_number",
"third_serial_number": "third_serial_number"
}
}
iHost Version ≥ 1.3.0
Module Name:device
Version:v1
Message Type:updateDeviceOnline
event.data parameters:
Name | Type | Optional | Description |
endpoint | EndpointObject | N | Device Information |
payload | DeviceChangeObject | N | Device Change Data |
EndpointObject Object:
Attribute | Type | Optional | Description |
serial_number | string | N | Device unique Serial Number |
third_serial_number | string | Y | The unique serial number of the third-party device. For devices connected through open interfaces, this field is required. |
DeviceChangeObject Object
Name | Type | Optional | Description |
online | boolean | N | Device Online Status |
Example
// event.data
{
"endpoint": {
"serial_number": "serial_number",
"third_serial_number": "third_serial_number"
},
"payload": {
"online": false
}
}
TTS Service Provider: The TTS service engine service provider is responsible for registering the TTS engine on the gateway and providing TTS services
Gateway Server:iHost
【TTS Service Provider】Call the interface to register the TTS engine on the gateway.
【Gateway Open API Client】Call the interface to obtain the list of registered TTS engine service. You can obtain the current list of registered TTS engines (including the ID of the TTS engine allocated by the gateway).
【Gateway Open API Client】Call the interface to obtain the list of a specified TTS engine audio. The gateway will issue a synchronous audio list instruction to the specified TTS Service Provider and return the result.
【Gateway Open API Client】Call the interface to obtain the list of registered TTS engine service. You can obtain the current list of registered TTS engines (including the ID of the TTS engine allocated by the gateway).
【Gateway Open API Client】Call the interface to obtain the list of a specified TTS engine audio. The gateway will issue a synchronous audio list instruction to the specified TTS Service Provider and return the result.
【Gateway Open API Client】Call the interface to obtain the list of registered TTS engine service. You can obtain the current list of registered TTS engines (including the ID of the TTS engine allocated by the gateway).
【Gateway Open API Client】Call the interface to obtain the list of a specified TTS engine audio. The gateway will issue a synchronous audio list instruction to the specified TTS Service Provider and return the result. (including the TTS audio file address)
【Gateway Open API Client】Record the TTS audio file address from the result returned in the previous step, call the play audio file interface, and play it through the gateway.
:/open-api/v1/rest/tts/engines
Method:GET
Header:
Content-Type: application/json
Authorization: Bearer <token>
Request parameters: none
Correct data response:
Attribute | Type | Optional | Description |
---|---|---|---|
engines | EngineObject [] | N | List of registered TTS engines |
EngineObject Structure
Attribute | Attribute | Attribute | Attribute |
---|---|---|---|
id | string | N | Engine ID assigned by gateway |
name | string | N | Name of TS engine service |
Conditions: The request parameters are legal, and the user identity verification is passed.
Status Code: 200 OK
Response Example::
{
"error": 0,
"data": {
"engines": [
{
"id": "engine id",
"name": "engine name"
}
]
},
"message": "success"
}
:/open-api/v1/rest/tts/engine/{id}/audio-list
Method:GET
Header:
Content-Type: application/json
Authorization: Bearer
Request parameters: none
Correct data response:
Attribute | Attribute | Attribute | |
---|---|---|---|
audio_list | AudioObject [] | N |
AudioObject Structure
Attribute | Attribute | Attribute | Attribute |
url | string | N | Audio file URL, for example: https://dl.espressif.cn/dl/audio/gs-16b-2c-44100hz.mp3 |
label | string | Y | Audio file label |
Conditions: The request parameters are legal, and the user identity verification is passed.
Status Code: 200 OK
Error Code:
190000 The engine is running abnormally
Response Example::
{ "error": 0, "data": { "audio_list": [ { "url": "tts audio address", // for example: https://dl.espressif.cn/dl/audio/gs-16b-2c-44100hz.mp3 "label": "tts audio label" } ] }, "message": "success" }
:/open-api/v1/rest/tts/engine/{id}/synthesize
Method:POST
Header:
Content-Type: application/json
Authorization: Bearer
Request Parameters:
Attribute | Attribute | Attribute | Attribute |
---|---|---|---|
text | string | N | Text used to synthesize the audio |
label | string | Y | Audio file label |
language | string | Y | Transparent field. Optional language code for the synthesis speech request. The specific list of supported language codes is provided by the TTS speech engine service provider. Note that the TTS engine service needs to support default language for speech synthesis, which means that if the language is not passed, the default language of the engine will be used for synthesis. |
options | object | Y | Transparent field. It is used to pass the configuration parameters required for synthesis to the TTS speech engine service. |
Correct data response:
Attribute | Attribute | Attribute | Attribute |
---|---|---|---|
audio | AudioObject | N | Audio list |
AudioObject Structure
Attribute | Attribute | Attribute | Attribute |
url | string | N | Audio file URL, for example: https://dl.espressif.cn/dl/audio/gs-16b-2c-44100hz.mp3 |
label | string | Y | Audio file label |
Conditions: The request parameters are legal, and the user identity verification is passed.
Status Code: 200 OK
Error Code:
190000 The engine is running abnormally
{ "error": 0, "data": { "audio": { "url": "tts audio address" // for example, https://dl.espressif.cn/dl/audio/gs-16b-2c-44100hz.mp3 "label": "tts audio label" } }, "message": "success" }
Send request to gateway by TTS Service Provider
:/open-api/v1/rest/thirdparty/event
Method:POST
Header:
Content-Type: application/json
Authorization: Bearer
Request Parameters:
Attribute | Attribute | Attribute | Attribute |
---|---|---|---|
event | EventObject | N | Request Event Object structure Information |
EventObject Object
Attribute | Attribute | Attribute | Attribute |
---|---|---|---|
header | HeaderObject | N | Request header structure information |
payload | PayloadObject | N | Request payload structure information |
HeaderObject Object
Attribute | Attribute | Attribute | Attribute |
name | string | N | Request name. Optional parameter.
|
message_id | string | N | Request message ID, UUID_V4 |
version | string | N | Request protocol version number. Currently fixed at 1 |
PayloadObject Object
Attribute | Attribute | Attribute | Attribute |
---|---|---|---|
service_address | string | N | Service Address. For example, http://<domain name or ip address>/<path> |
name | string | N | Service name |
Request Example:
{ "event": { "header": { "name": "RegisterTTSEngine", "message_id": "Unique identifier, preferably a version 4 UUID", "version": "1" }, "payload": { "service_address": "service_address", "name": "tts service name" } } }
Correct response parameters:
Attribute | Attribute | Attribute | Attribute |
---|---|---|---|
header | HeaderObject | N | Request header structure information |
payload | PayloadObject | N | Request payload structure information |
HeaderObject Object
Attribute | Attribute | Attribute | Attribute |
name | string | N | Response header name. Optional parameter:
|
message_id | string | N | Response header message ID, UUID_V4. Incoming request message here: header.message_id |
version | string | N | Request protocol version number. Currently fixed at 1 |
PayloadObject Object
Attribute | Attribute | Attribute | Attribute |
---|---|---|---|
engine_id | string | N | Engine ID assigned by gateway |
Status Code: 200 OK
Response Example:
Correct Response Example::
{ "header": { "name": "Response", "message_id": "Unique identifier, preferably a version 4 UUID", "version": "1" }, "payload": { "engine_id": "engine id" } }
Abnormal response parameters:
Attribute | Attribute | Attribute | Attribute |
type | string | N | Error Type
|
description | string | N | Error description |
Error Response Example::
{ "header": { "name": "ErrorResponse", "message_id": "Unique identifier, preferably a version 4 UUID", "version": "1" }, "payload": { "type": "INVALID_PARAMETERS", "description": "service_address cannot be empty" } }
Send command to the TTS Service Provider by gateway.
:<service address>
Method:POST
Header:
Request Parameters:
Attribute | Attribute | Attribute | Attribute |
---|---|---|---|
directive | DirectiveObject | N | Instruction object structure information |
DirectiveObject Object
Attribute | Attribute | Attribute | Attribute |
---|---|---|---|
header | HeaderObject | N | Request header structure information |
payload | PayloadObject | N | Request payload structure information |
HeaderObject Object
Attribute | Attribute | Attribute | Attribute |
name | string | N | Request name. Optional parameter:
|
message_id | string | N | Request message ID, UUID_V4 |
version | string | N | Request protocol version number. Currently fixed at 1 |
Request Example:
{ "directive": { "header": { "name": "SyncTTSAudioList", "message_id": "Unique identifier, preferably a version 4 UUID", "version": "1" }, "payload": {} } }
Correct response parameters:
Attribute | Attribute | Attribute | Attribute |
---|---|---|---|
header | HeaderObject | N | Request header structure information |
payload | PayloadObject | N | Request payload structure information |
HeaderObject Object
Attribute | Attribute | Attribute | Attribute |
name | string | N | Response header name. Optional parameter:
|
message_id | string | N | Response header message ID, UUID_V4. Incoming request message here: header.message_id |
version | string | N | Request protocol version number. Currently fixed at 1 |
PayloadObject Object:
Attribute | Attribute | Attribute | Attribute |
---|---|---|---|
audio_list | AudioObject [] | N | TTS Audio list |
AudioObject Structure
Attribute | Attribute | Attribute | Attribute |
url | string | N | Audio file URL, for example: https://dl.espressif.cn/dl/audio/gs-16b-2c-44100hz.mp3 |
label | string | Y | Audio file label |
Status Code: 200 OK
Response Example:
{ "header": { "name": "Response", "message_id": "Unique identifier, preferably a version 4 UUID", "version": "1" }, "payload": { "audio_list": [ { "url": "tts audio url", "label": "tts audio label" } ] } }
Abnormal response parameters:
Attribute | Attribute | Attribute | Attribute |
type | string | N | Error Type
|
description | string | N | Error description |
{ "header": { "name": "ErrorResponse", "message_id": "Unique identifier, preferably a version 4 UUID", "version": "1" }, "payload": { "type": "INVALID_PARAMETERS", "description": "service_address cannot be empty" } }
Send request to gateway by TTS Service Provider
:<service address>
Method:POST
Header:
Request Parameters:
Attribute | Attribute | Attribute | Attribute |
directive | DirectiveObject | N | Instruction object structure information |
DirectiveObject Object
Attribute | Attribute | Attribute | Attribute |
---|---|---|---|
header | HeaderObject | N | Request header structure information |
payload | PayloadObject | N | Request payload structure information |
HeaderObject Object
Attribute | Attribute | Attribute | Attribute |
name | string | N | Request name. Optional parameter:
|
message_id | string | N | Request message ID: UUID_V4 |
version | string | N | Request protocol version number. Currently fixed at 1 |
PayloadObject Object
Attribute | Attribute | Attribute | Attribute |
---|---|---|---|
text | string | N | Text used to synthesize the audio |
label | string | Y | Audio file label |
language | string | Y | Transparent field. Optional language code for the synthesis speech request. The specific list of supported language codes is provided by the TTS speech engine service provider. Note that the TTS engine service needs to support default language for speech synthesis, which means that if the language is not passed, the default language of the engine will be used for synthesis. |
options | object | Y | Transparent field. It is used to pass the configuration parameters required for synthesis to the TTS speech engine service. |
Request Example:
{ "directive": { "header": { "name": "SynthesizeSpeech", "message_id": "Unique identifier, preferably a version 4 UUID", "version": "1" }, "payload": { "text": "Input text to synthesize.", "label": "tts audio label" } } }
Correct response parameters:
Attribute | Attribute | Attribute | Attribute |
---|---|---|---|
header | HeaderObject | N | Request header structure information |
payload | PayloadObject | N | Request payload structure information |
HeaderObject Object
Attribute | Attribute | Attribute | Attribute |
name | string | N | Response header name. Optional parameter:
|
message_id | string | N | Response header message ID, UUID_V4. Incoming request message here: header.message_id |
version | string | N | Request protocol version number. Currently fixed at 1 |
PayloadObject Object
Attribute | Attribute | Attribute | Attribute |
---|---|---|---|
audio | AudioObject | N | TTS Audio |
AudioObject Structure
Attribute | Attribute | Attribute | Attribute |
url | string | N | Audio file URL, for example: https://dl.espressif.cn/dl/audio/gs-16b-2c-44100hz.mp3 |
label | string | Y | Audio file label |
Conditions: The request parameters are legal, and the user identity verification is passed.
Status Code: 200 OK
Response Example::
Correct Response Example::
{ "header": { "name": "Response", "message_id": "Unique identifier, preferably a version 4 UUID", "version": "1" }, "payload": { "audio": { "url": "tts audio url", "label": "tts audio label" } } }
Error Response Example::
{ "header": { "name": "ErrorResponse", "message_id": "Unique identifier, preferably a version 4 UUID", "version": "1" }, "payload": { "type": "INVALID_PARAMETERS", "description": "service_address cannot be empty" } }
:/open-api/v1/rest/media/audio-player
Method:POST
Header:
Content-Type: application/json
Authorization: Bearer
Request Parameters:
Attribute | Attribute | Attribute | Attribute |
audio_url | string | N | Audio URL address |
Correct data response:
Status Code: 200 OK
{ "error": 0, "data": {}, "message": "success" }