Create State

Creates a new state.

Request

HTTP Request

POST /node/api/states

Permissions

manage-configuration

Path parameters

No parameters required.

Body parameters

Body contains the settings of the new state. See the State model for all parameters.

Default values

If the ui.colors.main field isn’t set, it defaults to rgb(40 173 250).

If the priority field isn’t set, it defaults to 0.

Request body

{
    "name": "Custom state",
    "ui": {
        "colors": {
            "main": "#1189d2",
            "shadow": "#ffffff",
            "light": "#cccccc",
            "background": "",
            "svgBackground": [
                "#2e89e1",
                "#9c28cd"
            ]
        }
    },
    "priority": 10
}

Response

Returns the created state. See the State model for more information.

Example

Request

  • Bash

  • JavaScript

  • NodeJS

  • Python

login=<...>
password=<...>
saymon_hostname=<...>
url=https://$saymon_hostname/node/api/states

curl -X POST $url -u $login:$password \
    -H "Content-Type: application/json" \
    -d @- <<EOF
{
    "name": "Test State",
    "ui": {
        "colors": {
            "main": "#1189d2",
            "shadow": "#ffffff",
            "light": "#cccccc",
            "background": "",
            "svgBackground": [
                "#2e89e1",
                "#9c28cd"
            ]
        }
    },
    "priority": 0
}
EOF
let login = <...>
let password = <...>
let saymonHostname = <...>
let path = "/node/api/states";
let auth = "Basic " + btoa(login + ":" + password);

let headers = new Headers();
headers.append("Content-Type", "application/json");
headers.append("Authorization", auth);

let data = JSON.stringify({
    "name": "Test State",
    "ui": {
        "colors": {
            "main": "#1189d2",
            "shadow": "#ffffff",
            "light": "#cccccc",
            "background": "",
            "svgBackground": [
                "#2e89e1",
                "#9c28cd"
            ]
        }
    },
    "priority": 0
});

let requestOptions = {
    method: "POST",
    headers: headers,
    body: data
};

fetch(saymonHostname + path, requestOptions)
    .then(response => response.text())
    .then(result => console.log(result))
    .catch(error => console.log("error", error));
const http = require("http");

let login = <...>
let password = <...>
let saymonHostname = <...>
let path = "/node/api/states";
let auth = "Basic " + Buffer.from(login + ":" + password).toString("base64");

let options = {
    "method": "POST",
    "hostname": saymonHostname,
    "headers": {
        "Authorization": auth,
        "Content-Type": "application/json"
    },
    "path": path
};

let req = http.request(options, function (res) {
    let chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        let body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

let data = JSON.stringify({
    "name": "Test State",
    "ui": {
        "colors": {
            "main": "#1189d2",
            "shadow": "#ffffff",
            "light": "#cccccc",
            "background": "",
            "svgBackground": [
                "#2e89e1",
                "#9c28cd"
            ]
        }
    },
    "priority": 0
});

req.write(data);
req.end();
import requests

login = <...>
password = <...>
saymon_hostname = <...>
url = "https://" + saymon_hostname + "/node/api/states"

body = {
    "name": "Test State",
    "ui": {
        "colors": {
            "main": "#1189d2",
            "shadow": "#ffffff",
            "light": "#cccccc",
            "background": "",
            "svgBackground": [
                "#2e89e1",
                "#9c28cd"
            ]
        }
    },
    "priority": 0
}

response = requests.request("POST", url, json=body, auth=(login, password))
print(response.text)

Response

{
    "id": "631610a396e30e10c6052db0",
    "name": "Test State",
    "ui": {
        "colors": {
            "main": "#1189d2",
            "shadow": "#ffffff",
            "light": "#cccccc",
            "background": "",
            "svgBackground": [
                "#2e89e1",
                "#9c28cd"
            ]
        }
    },
    "priority": 0
}