XMOD
XMOD service handles configuration for ShellyX and Powered by Shelly devices.
XMOD.ApplyProductJWSto apply a product configuration JWS token from the developer portal.XMOD.GetProductJWSto obtain the currently-applied product configuration JWS.XMOD.GetInfoto obtain the parsedjwstoken asjson.
Methods
XMOD.ApplyProductJWS
Used to apply a product configuration JWS token obtained from the developer portal.
Request
Properties:
| Property | Type | Description |
|---|---|---|
| string | Product configuration JWS |
Response
On success, an empty (null) response is returned. The module performs a factory reset and reboots into its “new product” mode.
On error, the token is not applied. Possible error codes are:
-107Permission denied: if the module already has a JWS with thefinalflag set.-103Invalid argument: ifjwsis missing, malformed or otherwise invalid.
XMOD.GetProductJWS
Returns the currently-applied product configuration JWS.
Request
This method takes no parameters.
Response
Attributes in the result:
| Property | Type | Description |
|---|---|---|
| string | The applied token. |
On error, the request has failed if the device has never been provisioned. Possible error codes:
-114Unavailable – no JWS has been applied to the device.
XMOD.GetInfo
Returns the parsed jws token as json. Notable properties are:
Request
This method takes no parameters.
Response
Attributes in the result:
| Property | Type | Description | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| string | The application for which the token is intended. | ||||||||||||
| number | The time when the token was issued. | ||||||||||||
| string | A unique identifier assigned to the token. | ||||||||||||
| string | Version | ||||||||||||
| string | Product prefix, used as part of AP SSID, hostname, MQTT Client Id and other system identifiers | ||||||||||||
| string | Product Name | ||||||||||||
| string | Manufacturer Name | ||||||||||||
| string | Product URL | ||||||||||||
| bitfield |
| ||||||||||||
| object | XMOD-specific settings
|
Examples
XMOD.ApplyProductJWS example
- XMOD.ApplyProductJWS HTTP GET Request
- XMOD.ApplyProductJWS Curl Request
- XMOD.ApplyProductJWS Mos Request
http://192.168.33.1/rpc/XMOD.ApplyProductJWS?jws="ewogICAgImFsZyI6IkVTMzg0IiwKICAgICJ0eXAiOiJKV1QiCn0.ewogICAgImF1ZCI6IlhUMSIsCiAgICAiYyI6ewogICAgICAgICJhZGRvbiI6ewogICAgICAgICAgICAic2Vuc29yIjp7CiAgICAgICAgICAgICAgICAicGlucyI6ewogICAgICAgICAgICAgICAgICAgICJvbmVfd2lyZV9pbiI6MAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VwcG9ydGVkIjoiMCIsCiAgICAgICAgICAgICJ0eXBlIjowCiAgICAgICAgfSwKICAgICAgICAidHV5YW1jdSI6ewogICAgICAgICAgICAiZW5hYmxlIjp0cnVlCiAgICAgICAgfQogICAgfSwKICAgICJmIjowLAogICAgImlhdCI6MTcyNzk1NDAxMSwKICAgICJqdGkiOiIwMDAwQzEwMDAwMDMiLAogICAgIm4iOiJXYXRlciBWYWx2ZSIsCiAgICAicCI6IldhdGVyVmFsdmUiLAogICAgInVybCI6IiIsCiAgICAidiI6MSwKICAgICJ4dDEiOnsKICAgICAgICAic3ZjMCI6ewogICAgICAgICAgICAidHlwZSI6InNpbXBsZS13YXRlci12YWx2ZS1jb250cm9sbGVyIgogICAgICAgIH0KICAgIH0KfQ.g5CmtlZ6DU0FDuMsa9gXYU7YNJ-2Xk66Nr9g8UcBpng4sm7xBbTaLbhVlu10iQnGfyccuCuBMz0QKawVPYwQr6Dlj7d1b5qo1Y0SiTyVZOAukVhcRksCuRimO55sDp1K"
curl -X POST -d '{"id":1,"method":"XMOD.ApplyProductJWS","params":{"jws":"ewogICAgImFsZyI6IkVTMzg0IiwKICAgICJ0eXAiOiJKV1QiCn0.ewogICAgImF1ZCI6IlhUMSIsCiAgICAiYyI6ewogICAgICAgICJhZGRvbiI6ewogICAgICAgICAgICAic2Vuc29yIjp7CiAgICAgICAgICAgICAgICAicGlucyI6ewogICAgICAgICAgICAgICAgICAgICJvbmVfd2lyZV9pbiI6MAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VwcG9ydGVkIjoiMCIsCiAgICAgICAgICAgICJ0eXBlIjowCiAgICAgICAgfSwKICAgICAgICAidHV5YW1jdSI6ewogICAgICAgICAgICAiZW5hYmxlIjp0cnVlCiAgICAgICAgfQogICAgfSwKICAgICJmIjowLAogICAgImlhdCI6MTcyNzk1NDAxMSwKICAgICJqdGkiOiIwMDAwQzEwMDAwMDMiLAogICAgIm4iOiJXYXRlciBWYWx2ZSIsCiAgICAicCI6IldhdGVyVmFsdmUiLAogICAgInVybCI6IiIsCiAgICAidiI6MSwKICAgICJ4dDEiOnsKICAgICAgICAic3ZjMCI6ewogICAgICAgICAgICAidHlwZSI6InNpbXBsZS13YXRlci12YWx2ZS1jb250cm9sbGVyIgogICAgICAgIH0KICAgIH0KfQ.g5CmtlZ6DU0FDuMsa9gXYU7YNJ-2Xk66Nr9g8UcBpng4sm7xBbTaLbhVlu10iQnGfyccuCuBMz0QKawVPYwQr6Dlj7d1b5qo1Y0SiTyVZOAukVhcRksCuRimO55sDp1K"}}' http://${SHELLY}/rpc
mos --port ${PORT} call XMOD.ApplyProductJWS '{"jws":"ewogICAgImFsZyI6IkVTMzg0IiwKICAgICJ0eXAiOiJKV1QiCn0.ewogICAgImF1ZCI6IlhUMSIsCiAgICAiYyI6ewogICAgICAgICJhZGRvbiI6ewogICAgICAgICAgICAic2Vuc29yIjp7CiAgICAgICAgICAgICAgICAicGlucyI6ewogICAgICAgICAgICAgICAgICAgICJvbmVfd2lyZV9pbiI6MAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VwcG9ydGVkIjoiMCIsCiAgICAgICAgICAgICJ0eXBlIjowCiAgICAgICAgfSwKICAgICAgICAidHV5YW1jdSI6ewogICAgICAgICAgICAiZW5hYmxlIjp0cnVlCiAgICAgICAgfQogICAgfSwKICAgICJmIjowLAogICAgImlhdCI6MTcyNzk1NDAxMSwKICAgICJqdGkiOiIwMDAwQzEwMDAwMDMiLAogICAgIm4iOiJXYXRlciBWYWx2ZSIsCiAgICAicCI6IldhdGVyVmFsdmUiLAogICAgInVybCI6IiIsCiAgICAidiI6MSwKICAgICJ4dDEiOnsKICAgICAgICAic3ZjMCI6ewogICAgICAgICAgICAidHlwZSI6InNpbXBsZS13YXRlci12YWx2ZS1jb250cm9sbGVyIgogICAgICAgIH0KICAgIH0KfQ.g5CmtlZ6DU0FDuMsa9gXYU7YNJ-2Xk66Nr9g8UcBpng4sm7xBbTaLbhVlu10iQnGfyccuCuBMz0QKawVPYwQr6Dlj7d1b5qo1Y0SiTyVZOAukVhcRksCuRimO55sDp1K"}'
Response
- XMOD.ApplyProductJWS HTTP GET Response
- XMOD.ApplyProductJWS Curl Response
- XMOD.ApplyProductJWS Mos Response
null
{
"id": 1,
"src": "st-802-54320440a210",
"params": null
}
null
XMOD.GetProductJWS example
- XMOD.GetProductJWS HTTP GET Request
- XMOD.GetProductJWS Curl Request
- XMOD.GetProductJWS Mos Request
http://192.168.33.1/rpc/XMOD.GetProductJWS
curl -X POST -d '{"id":1,"method":"XMOD.GetProductJWS"}' http://${SHELLY}/rpc
mos --port ${PORT} call XMOD.GetProductJWS
Response
- XMOD.GetProductJWS HTTP GET Response
- XMOD.GetProductJWS Curl Response
- XMOD.GetProductJWS Mos Response
{
"jwt": "ewogICAgImFsZyI6IkVTMzg0IiwKICAgICJ0eXAiOiJKV1QiCn0.ewogICAgImF1ZCI6IlhUMSIsCiAgICAiYyI6ewogICAgICAgICJhZGRvbiI6ewogICAgICAgICAgICAic2Vuc29yIjp7CiAgICAgICAgICAgICAgICAicGlucyI6ewogICAgICAgICAgICAgICAgICAgICJvbmVfd2lyZV9pbiI6MAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VwcG9ydGVkIjoiMCIsCiAgICAgICAgICAgICJ0eXBlIjowCiAgICAgICAgfSwKICAgICAgICAidHV5YW1jdSI6ewogICAgICAgICAgICAiZW5hYmxlIjp0cnVlCiAgICAgICAgfQogICAgfSwKICAgICJmIjowLAogICAgImlhdCI6MTcyNzk1NDAxMSwKICAgICJqdGkiOiIwMDAwQzEwMDAwMDMiLAogICAgIm4iOiJXYXRlciBWYWx2ZSIsCiAgICAicCI6IldhdGVyVmFsdmUiLAogICAgInVybCI6IiIsCiAgICAidiI6MSwKICAgICJ4dDEiOnsKICAgICAgICAic3ZjMCI6ewogICAgICAgICAgICAidHlwZSI6InNpbXBsZS13YXRlci12YWx2ZS1jb250cm9sbGVyIgogICAgICAgIH0KICAgIH0KfQ.g5CmtlZ6DU0FDuMsa9gXYU7YNJ-2Xk66Nr9g8UcBpng4sm7xBbTaLbhVlu10iQnGfyccuCuBMz0QKawVPYwQr6Dlj7d1b5qo1Y0SiTyVZOAukVhcRksCuRimO55sDp1K"
}
{
"id": 1,
"src": "st-802-54320440a210",
"params": {
"jwt": "ewogICAgImFsZyI6IkVTMzg0IiwKICAgICJ0eXAiOiJKV1QiCn0.ewogICAgImF1ZCI6IlhUMSIsCiAgICAiYyI6ewogICAgICAgICJhZGRvbiI6ewogICAgICAgICAgICAic2Vuc29yIjp7CiAgICAgICAgICAgICAgICAicGlucyI6ewogICAgICAgICAgICAgICAgICAgICJvbmVfd2lyZV9pbiI6MAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VwcG9ydGVkIjoiMCIsCiAgICAgICAgICAgICJ0eXBlIjowCiAgICAgICAgfSwKICAgICAgICAidHV5YW1jdSI6ewogICAgICAgICAgICAiZW5hYmxlIjp0cnVlCiAgICAgICAgfQogICAgfSwKICAgICJmIjowLAogICAgImlhdCI6MTcyNzk1NDAxMSwKICAgICJqdGkiOiIwMDAwQzEwMDAwMDMiLAogICAgIm4iOiJXYXRlciBWYWx2ZSIsCiAgICAicCI6IldhdGVyVmFsdmUiLAogICAgInVybCI6IiIsCiAgICAidiI6MSwKICAgICJ4dDEiOnsKICAgICAgICAic3ZjMCI6ewogICAgICAgICAgICAidHlwZSI6InNpbXBsZS13YXRlci12YWx2ZS1jb250cm9sbGVyIgogICAgICAgIH0KICAgIH0KfQ.g5CmtlZ6DU0FDuMsa9gXYU7YNJ-2Xk66Nr9g8UcBpng4sm7xBbTaLbhVlu10iQnGfyccuCuBMz0QKawVPYwQr6Dlj7d1b5qo1Y0SiTyVZOAukVhcRksCuRimO55sDp1K"
}
}
{
"jwt": "ewogICAgImFsZyI6IkVTMzg0IiwKICAgICJ0eXAiOiJKV1QiCn0.ewogICAgImF1ZCI6IlhUMSIsCiAgICAiYyI6ewogICAgICAgICJhZGRvbiI6ewogICAgICAgICAgICAic2Vuc29yIjp7CiAgICAgICAgICAgICAgICAicGlucyI6ewogICAgICAgICAgICAgICAgICAgICJvbmVfd2lyZV9pbiI6MAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VwcG9ydGVkIjoiMCIsCiAgICAgICAgICAgICJ0eXBlIjowCiAgICAgICAgfSwKICAgICAgICAidHV5YW1jdSI6ewogICAgICAgICAgICAiZW5hYmxlIjp0cnVlCiAgICAgICAgfQogICAgfSwKICAgICJmIjowLAogICAgImlhdCI6MTcyNzk1NDAxMSwKICAgICJqdGkiOiIwMDAwQzEwMDAwMDMiLAogICAgIm4iOiJXYXRlciBWYWx2ZSIsCiAgICAicCI6IldhdGVyVmFsdmUiLAogICAgInVybCI6IiIsCiAgICAidiI6MSwKICAgICJ4dDEiOnsKICAgICAgICAic3ZjMCI6ewogICAgICAgICAgICAidHlwZSI6InNpbXBsZS13YXRlci12YWx2ZS1jb250cm9sbGVyIgogICAgICAgIH0KICAgIH0KfQ.g5CmtlZ6DU0FDuMsa9gXYU7YNJ-2Xk66Nr9g8UcBpng4sm7xBbTaLbhVlu10iQnGfyccuCuBMz0QKawVPYwQr6Dlj7d1b5qo1Y0SiTyVZOAukVhcRksCuRimO55sDp1K"
}
XMOD.GetInfo example
- XMOD.GetInfo HTTP GET Request
- XMOD.GetInfo Curl Request
- XMOD.GetInfo Mos Request
http://192.168.33.1/rpc/XMOD.GetInfo
curl -X POST -d '{"id":1,"method":"XMOD.GetInfo"}' http://${SHELLY}/rpc
mos --port ${PORT} call XMOD.GetInfo
Response
- XMOD.GetInfo HTTP GET Response
- XMOD.GetInfo Curl Response
- XMOD.GetInfo Mos Response
{
"jwt": {
"aud": "XT1",
"iat": 1000000000,
"jti": "000000000000",
"v": 1,
"p": "WaterValve",
"n": "Water Valve",
"m": "",
"url": "",
"f": 0,
"xt1": {
"svc0": {
"type": "water-valve"
}
}
}
}
{
"id": 1,
"src": "st-802-54320440a210",
"params": {
"jwt": {
"aud": "XT1",
"iat": 1000000000,
"jti": "000000000000",
"v": 1,
"p": "WaterValve",
"n": "Water Valve",
"m": "",
"url": "",
"f": 0,
"xt1": {
"svc0": {
"type": "water-valve"
}
}
}
}
}
{
"jwt": {
"aud": "XT1",
"iat": 1000000000,
"jti": "000000000000",
"v": 1,
"p": "WaterValve",
"n": "Water Valve",
"m": "",
"url": "",
"f": 0,
"xt1": {
"svc0": {
"type": "water-valve"
}
}
}
}