17 KiB
Supervisor
Supervisor RESTful API
The RESTful API for Home Assistant allows you to control things around around the Supervisor and other components.
On error / Code 400:
{
"result": "error",
"message": ""
}
On success / Code 200:
{
"result": "ok",
"data": {}
}
To access the API you need use an authorization header with a Bearer
token.
The token is available for add-ons and Home Assistant using the
SUPERVISOR_TOKEN
environment variable.
Supervisor
- GET
/supervisor/ping
This API call don't need a token.
- GET
/supervisor/info
Shows the installed add-ons from addons
.
{
"version": "INSTALL_VERSION",
"version_latest": "version_latest",
"arch": "armhf|aarch64|i386|amd64",
"channel": "stable|beta|dev",
"timezone": "TIMEZONE",
"logging": "debug|info|warning|error|critical",
"ip_address": "ip address",
"wait_boot": "int",
"debug": "bool",
"debug_block": "bool",
"addons": [
{
"name": "xy bla",
"slug": "xy",
"description": "description",
"repository": "12345678|null",
"version": "LATEST_VERSION",
"installed": "INSTALL_VERSION",
"icon": "bool",
"logo": "bool",
"state": "started|stopped"
}
],
"addons_repositories": ["REPO_URL"]
}
- POST
/supervisor/update
Optional:
{
"version": "VERSION"
}
- POST
/supervisor/options
{
"channel": "stable|beta|dev",
"timezone": "TIMEZONE",
"wait_boot": "int",
"debug": "bool",
"debug_block": "bool",
"logging": "debug|info|warning|error|critical",
"addons_repositories": ["REPO_URL"]
}
- POST
/supervisor/reload
Reload the add-ons/version.
- GET
/supervisor/logs
Output is the raw Docker log.
- GET
/supervisor/stats
{
"cpu_percent": 0.0,
"memory_usage": 283123,
"memory_limit": 329392,
"memory_percent": 1.4,
"network_tx": 0,
"network_rx": 0,
"blk_read": 0,
"blk_write": 0
}
- GET
/supervisor/repair
Repair overlayfs issue and restore lost images.
Snapshot
- GET
/snapshots
{
"snapshots": [
{
"slug": "SLUG",
"date": "ISO",
"name": "Custom name",
"type": "full|partial",
"protected": "bool"
}
]
}
- POST
/snapshots/reload
- POST
/snapshots/new/upload
return:
{
"slug": ""
}
- POST
/snapshots/new/full
{
"name": "Optional",
"password": "Optional"
}
return:
{
"slug": ""
}
- POST
/snapshots/new/partial
{
"name": "Optional",
"addons": ["ADDON_SLUG"],
"folders": ["FOLDER_NAME"],
"password": "Optional"
}
return:
{
"slug": ""
}
-
POST
/snapshots/reload
-
GET
/snapshots/{slug}/info
{
"slug": "SNAPSHOT ID",
"type": "full|partial",
"name": "custom snapshot name / description",
"date": "ISO",
"size": "SIZE_IN_MB",
"protected": "bool",
"homeassistant": "version",
"addons": [
{
"slug": "ADDON_SLUG",
"name": "NAME",
"version": "INSTALLED_VERSION",
"size": "SIZE_IN_MB"
}
],
"repositories": ["URL"],
"folders": ["NAME"]
}
- POST
/snapshots/{slug}/remove
- GET
/snapshots/{slug}/download
- POST
/snapshots/{slug}/restore/full
{
"password": "Optional"
}
- POST
/snapshots/{slug}/restore/partial
{
"homeassistant": "bool",
"addons": ["ADDON_SLUG"],
"folders": ["FOLDER_NAME"],
"password": "Optional"
}
Host
- POST
/host/reload
- POST
/host/shutdown
- POST
/host/reboot
- GET
/host/info
{
"hostname": "hostname|null",
"features": ["shutdown", "reboot", "hostname", "services", "hassos"],
"operating_system": "HassOS XY|Ubuntu 16.4|null",
"kernel": "4.15.7|null",
"chassis": "specific|null",
"deployment": "stable|beta|dev|null",
"cpe": "xy|null"
}
- GET
/host/logs
Return the host log messages (dmesg).
- POST
/host/options
{
"hostname": ""
}
- POST
/host/reload
Services
- GET
/host/services
{
"services": [
{
"name": "xy.service",
"description": "XY ...",
"state": "active|"
}
]
}
-
POST
/host/service/{unit}/stop
-
POST
/host/service/{unit}/start
-
POST
/host/service/{unit}/reload
HassOS
- GET
/os/info
{
"version": "2.3",
"version_latest": "2.4",
"board": "ova|rpi",
"boot": "rauc boot slot"
}
- POST
/os/update
{
"version": "optional"
}
- POST
/os/config/sync
Load host configurations from an USB stick.
Hardware
- GET
/hardware/info
{
"serial": ["/dev/xy"],
"input": ["Input device name"],
"disk": ["/dev/sdax"],
"gpio": ["gpiochip0", "gpiochip100"],
"audio": {
"CARD_ID": {
"name": "xy",
"type": "microphone",
"devices": [
"chan_id": "channel ID",
"chan_type": "type of device"
]
}
}
}
- GET
/hardware/audio
{
"audio": {
"input": {
"0,0": "Mic"
},
"output": {
"1,0": "Jack",
"1,1": "HDMI"
}
}
}
- POST
/hardware/trigger
Trigger an UDEV reload.
Home Assistant
- GET
/core/info
{
"version": "INSTALL_VERSION",
"version_latest": "version_latest",
"arch": "arch",
"machine": "Image machine type",
"ip_address": "ip address",
"image": "str",
"boot": "bool",
"port": 8123,
"ssl": "bool",
"watchdog": "bool",
"wait_boot": 600,
"audio_input": "null|profile",
"audio_output": "null|profile"
}
- POST
/core/update
Optional:
{
"version": "VERSION"
}
- GET
/core/logs
Output is the raw Docker log.
-
POST
/core/restart
-
POST
/core/check
-
POST
/core/start
-
POST
/core/stop
-
POST
/core/rebuild
-
POST
/core/options
{
"image": "Optional|null",
"version_latest": "Optional for custom image|null",
"port": "port for access core",
"ssl": "bool",
"refresh_token": "",
"watchdog": "bool",
"wait_boot": 600,
"audio_input": "null|profile",
"audio_output": "null|profile"
}
Image with null
and version_latest
with null
reset this options.
- POST/GET
/core/api
Proxy to the Home Assistant Core instance.
- GET
/core/websocket
Proxy to Home Assistant Core websocket.
- GET
/core/stats
{
"cpu_percent": 0.0,
"memory_usage": 283123,
"memory_limit": 329392,
"memory_percent": 1.4,
"network_tx": 0,
"network_rx": 0,
"blk_read": 0,
"blk_write": 0
}
RESTful for API add-ons
If an add-on will call itself, you can use /addons/self/...
.
- GET
/addons
Get all available add-ons.
{
"addons": [
{
"name": "xy bla",
"slug": "xy",
"description": "description",
"advanced": "bool",
"stage": "stable|experimental|deprecated",
"repository": "core|local|REP_ID",
"version": "version_latest",
"installed": "none|INSTALL_VERSION",
"detached": "bool",
"available": "bool",
"build": "bool",
"url": "null|url",
"icon": "bool",
"logo": "bool"
}
],
"repositories": [
{
"slug": "12345678",
"name": "Repitory Name|unknown",
"source": "URL_OF_REPOSITORY",
"url": "WEBSITE|REPOSITORY",
"maintainer": "BLA BLU <fla@dld.ch>|unknown"
}
]
}
- POST
/addons/reload
- GET
/addons/{addon}/info
{
"name": "xy bla",
"slug": "xdssd_xybla",
"hostname": "xdssd-xybla",
"dns": [],
"description": "description",
"long_description": "null|markdown",
"auto_update": "bool",
"url": "null|url of addon",
"detached": "bool",
"available": "bool",
"advanced": "bool",
"stage": "stable|experimental|deprecated",
"arch": ["armhf", "aarch64", "i386", "amd64"],
"machine": "[raspberrypi2, tinker]",
"homeassistant": "null|min Home Assistant Core version",
"repository": "12345678|null",
"version": "null|VERSION_INSTALLED",
"version_latest": "version_latest",
"state": "none|started|stopped",
"boot": "auto|manual",
"build": "bool",
"options": "{}",
"schema": "{}|null",
"network": "{}|null",
"network_description": "{}|null",
"host_network": "bool",
"host_pid": "bool",
"host_ipc": "bool",
"host_dbus": "bool",
"privileged": ["NET_ADMIN", "SYS_ADMIN"],
"apparmor": "disable|default|profile",
"devices": ["/dev/xy"],
"udev": "bool",
"auto_uart": "bool",
"icon": "bool",
"logo": "bool",
"changelog": "bool",
"documentation": "bool",
"hassio_api": "bool",
"hassio_role": "default|homeassistant|manager|admin",
"homeassistant_api": "bool",
"auth_api": "bool",
"full_access": "bool",
"protected": "bool",
"rating": "1-6",
"stdin": "bool",
"webui": "null|http(s)://[HOST]:port/xy/zx",
"gpio": "bool",
"kernel_modules": "bool",
"devicetree": "bool",
"docker_api": "bool",
"video": "bool",
"audio": "bool",
"audio_input": "null|0,0",
"audio_output": "null|0,0",
"services_role": "['service:access']",
"discovery": "['service']",
"ip_address": "ip address",
"ingress": "bool",
"ingress_entry": "null|/api/hassio_ingress/slug",
"ingress_url": "null|/api/hassio_ingress/slug/entry.html",
"ingress_port": "null|int",
"ingress_panel": "null|bool"
}
- GET
/addons/{addon}/icon
- GET
/addons/{addon}/logo
- GET
/addons/{addon}/changelog
- GET
/addons/{addon}/documentation
- POST
/addons/{addon}/options
{
"boot": "auto|manual",
"auto_update": "bool",
"network": {
"CONTAINER": "port|[ip, port]"
},
"options": {},
"audio_output": "null|0,0",
"audio_input": "null|0,0",
"ingress_panel": "bool"
}
Reset custom network, audio and options, set it to null
.
- POST
/addons/{addon}/security
This function is not callable by itself.
{
"protected": "bool"
}
- POST
/addons/{addon}/start
- POST
/addons/{addon}/stop
- POST
/addons/{addon}/install
- POST
/addons/{addon}/uninstall
- POST
/addons/{addon}/update
- GET
/addons/{addon}/logs
Output is the raw Docker log.
- POST
/addons/{addon}/restart
- POST
/addons/{addon}/rebuild
Only supported for local build add-ons.
- POST
/addons/{addon}/stdin
Write data to add-on stdin.
- GET
/addons/{addon}/stats
{
"cpu_percent": 0.0,
"memory_usage": 283123,
"memory_limit": 329392,
"memory_percent": 1.4,
"network_tx": 0,
"network_rx": 0,
"blk_read": 0,
"blk_write": 0
}
ingress
- POST
/ingress/session
Create a new session for access to the ingress service.
{
"session": "token"
}
- GET
/ingress/panels
Return a list of enabled panels.
{
"panels": {
"addon_slug": {
"enable": "boolean",
"icon": "mdi:...",
"title": "title",
"admin": "boolean"
}
}
}
- VIEW
/ingress/{token}
Ingress WebUI for this add-on. The add-on need support for the Home Assistant authentication system. Needs an ingress session as cookie.
discovery
- GET
/discovery
{
"discovery": [
{
"addon": "slug",
"service": "name",
"uuid": "uuid",
"config": {}
}
],
"services": {
"ozw": ["core_zwave"]
}
}
- GET
/discovery/{UUID}
{
"addon": "slug",
"service": "name",
"uuid": "uuid",
"config": {}
}
- POST
/discovery
{
"service": "name",
"config": {}
}
return:
{
"uuid": "uuid"
}
- DEL
/discovery/{UUID}
Services
- GET
/services
{
"services": [
{
"slug": "name",
"available": "bool",
"providers": "list"
}
]
}
MQTT
- GET
/services/mqtt
{
"addon": "name",
"host": "xy",
"port": "8883",
"ssl": "bool",
"username": "optional",
"password": "optional",
"protocol": "3.1.1"
}
- POST
/services/mqtt
{
"host": "xy",
"port": "8883",
"ssl": "bool|optional",
"username": "optional",
"password": "optional",
"protocol": "3.1.1"
}
- DEL
/services/mqtt
MySQL
- GET
/services/mysql
{
"addon": "name",
"host": "xy",
"port": "8883",
"username": "optional",
"password": "optional"
}
- POST
/services/mysql
{
"host": "xy",
"port": "8883",
"username": "optional",
"password": "optional"
}
- DEL
/services/mysql
Misc
- GET
/info
{
"supervisor": "version",
"homeassistant": "version",
"hassos": "null|version",
"docker": "version",
"hostname": "name",
"machine": "type",
"arch": "arch",
"supported_arch": ["arch1", "arch2"],
"channel": "stable|beta|dev",
"logging": "debug|info|warning|error|critical",
"timezone": "Europe/Zurich"
}
DNS
- GET
/dns/info
{
"host": "ip-address",
"version": "1",
"version_latest": "2",
"servers": ["dns://8.8.8.8"],
"locals": ["dns://xy"]
}
- POST
/dns/options
{
"servers": ["dns://8.8.8.8"]
}
- POST
/dns/update
{
"version": "VERSION"
}
-
POST
/dns/restart
-
POST
/dns/reset
-
GET
/dns/logs
-
GET
/dns/stats
{
"cpu_percent": 0.0,
"memory_usage": 283123,
"memory_limit": 329392,
"memory_percent": 1.4,
"network_tx": 0,
"network_rx": 0,
"blk_read": 0,
"blk_write": 0
}
CLI
- GET
/cli/info
{
"version": "1",
"version_latest": "2"
}
- POST
/cli/update
{
"version": "VERSION"
}
- GET
/cli/stats
{
"cpu_percent": 0.0,
"memory_usage": 283123,
"memory_limit": 329392,
"memory_percent": 1.4,
"network_tx": 0,
"network_rx": 0,
"blk_read": 0,
"blk_write": 0
}
Multicast
- GET
/multicast/info
{
"version": "1",
"version_latest": "2"
}
- POST
/multicast/update
{
"version": "VERSION"
}
-
POST
/multicast/restart
-
GET
/multicast/logs
-
GET
/multicast/stats
{
"cpu_percent": 0.0,
"memory_usage": 283123,
"memory_limit": 329392,
"memory_percent": 1.4,
"network_tx": 0,
"network_rx": 0,
"blk_read": 0,
"blk_write": 0
}
Audio
- GET
/audio/info
{
"host": "ip-address",
"version": "1",
"latest_version": "2",
"audio": {
"card": [
{
"name": "...",
"index": 1,
"driver": "...",
"profiles": [
{
"name": "...",
"description": "...",
"active": false
}
]
}
],
"input": [
{
"name": "...",
"index": 0,
"description": "...",
"volume": 0.3,
"mute": false,
"default": false,
"card": "null|int",
"applications": [
{
"name": "...",
"index": 0,
"stream_index": 0,
"stream_type": "INPUT",
"volume": 0.3,
"mute": false,
"addon": ""
}
]
}
],
"output": [
{
"name": "...",
"index": 0,
"description": "...",
"volume": 0.3,
"mute": false,
"default": false,
"card": "null|int",
"applications": [
{
"name": "...",
"index": 0,
"stream_index": 0,
"stream_type": "OUTPUT",
"volume": 0.3,
"mute": false,
"addon": ""
}
]
}
],
"application": [
{
"name": "...",
"index": 0,
"stream_index": 0,
"stream_type": "OUTPUT",
"volume": 0.3,
"mute": false,
"addon": ""
}
]
}
}
- POST
/audio/update
{
"version": "VERSION"
}
-
POST
/audio/restart
-
POST
/audio/reload
-
GET
/audio/logs
-
POST
/audio/volume/input
{
"index": "...",
"volume": 0.5
}
- POST
/audio/volume/output
{
"index": "...",
"volume": 0.5
}
- POST
/audio/volume/{output|input}/application
{
"index": "...",
"volume": 0.5
}
- POST
/audio/mute/input
{
"index": "...",
"active": false
}
- POST
/audio/mute/output
{
"index": "...",
"active": false
}
- POST
/audio/mute/{output|input}/application
{
"index": "...",
"active": false
}
- POST
/audio/default/input
{
"name": "..."
}
- POST
/audio/default/output
{
"name": "..."
}
- POST
/audio/profile
{
"card": "...",
"name": "..."
}
- GET
/audio/stats
{
"cpu_percent": 0.0,
"memory_usage": 283123,
"memory_limit": 329392,
"memory_percent": 1.4,
"network_tx": 0,
"network_rx": 0,
"blk_read": 0,
"blk_write": 0
}
Authentication/SSO API
You can use the user system from Home Assistant. The auth system can be handled with the Supervisor.
/auth
is accepting POST calls.
We support:
- JSON:
{ "user|name": "...", "password": "..." }
application/x-www-form-urlencoded
:user|name=...&password=...
- Basic Authentication
- POST
/auth/reset
{
"username": "xy",
"password": "new-password"
}