向 app 的 stdin 写入数据。
你想传入 addon 的 payload 应作为请求的 body 提供给该 endpoint。
停止一个 app
卸载一个 app
Payload:
更新一个 app
已弃用! 请使用 /store/addons/<addon>/update 代替。
音频
将一个 profile 设为默认输入 profile
Payload:
将一个 profile 设为默认输出 profile
Payload:
返回关于 audio 插件的信息。
Returned data:
Example response:
{
"host": "172.0.0.19",
"version": "1",
"latest_version": "2",
"update_available": true,
"audio": {
"card": [
{
"name": "Awesome card",
"index": 1,
"driver": "Awesome driver",
"profiles": [
{
"name": "Awesome profile",
"description": "My awesome profile",
"active": false
}
]
}
],
"input": [
{
"name": "Awesome device",
"index": 0,
"description": "My awesome device",
"volume": 0.3,
"mute": false,
"default": false,
"card": null,
"applications": [
{
"name": "Awesome application",
"index": 0,
"stream_index": 0,
"stream_type": "INPUT",
"volume": 0.3,
"mute": false,
"addon": "awesome_addon"
}
]
}
],
"output": [
{
"name": "Awesome device",
"index": 0,
"description": "My awesome device",
"volume": 0.3,
"mute": false,
"default": false,
"card": 1,
"applications": [
{
"name": "Awesome application",
"index": 0,
"stream_index": 0,
"stream_type": "INPUT",
"volume": 0.3,
"mute": false,
"addon": "awesome_addon"
}
]
}
],
"application": [
{
"name": "Awesome application",
"index": 0,
"stream_index": 0,
"stream_type": "OUTPUT",
"volume": 0.3,
"mute": false,
"addon": "awesome_addon"
}
]
}
}
通过 Systemd journal 后端获取 audio 插件容器的 logs。
该 endpoint 接受与 /host/logs 相同的 headers 并提供相同的功能。
与 /audio/logs 相同,区别在于它会持续返回新的 log entries。
返回 audio 插件容器最近一次启动的所有 logs。
Range header 被忽略,但可以使用 lines query 参数。
获取与特定 boot 相关的 audio 插件容器 logs。
bootid 参数的解释方式与 /host/logs/boots/<bootid> 中相同,该 endpoint 否则提供与 /host/logs 相同的功能。
与 /audio/logs/boots/<bootid> 相同,区别在于它会持续返回新的 log entries。
静音输入设备
Payload:
对特定 application 静音输入
Payload:
静音输出设备
Payload:
对特定 application 静音输出
Payload:
创建一个 audio profile
Payload:
重新加载 audio 信息
重启 audio 插件
为该 audio 插件返回一个 Stats model。
Example response:
{
"cpu_percent": 14.0,
"memory_usage": 288888,
"memory_limit": 322222,
"memory_percent": 32.4,
"network_tx": 110,
"network_rx": 902,
"blk_read": 12,
"blk_write": 27
}
更新 audio 插件
Payload:
设置输入音量
Payload:
为特定 application 设置输入音量
Payload:
设置输出音量
Payload:
为特定 application 设置输出音量
Payload:
认证
你可以使用 Basic Authentication 对 Home Assistant Core 进行认证。
使用 `X-Supervisor-Token` header 提供 Supervisor authentication token。
请参阅对应的 POST 方法以提供 JSON 或 urlencoded 凭据。
你可以对 Home Assistant Core 进行认证。
你可以以 JSON、urlencoded(使用 `application/x-www-form-urlencoded` header)或使用 basic authentication 的方式 POST 数据。
使用 Basic authentication 时,你可以使用 `X-Supervisor-Token` 作为 Supervisor authentication token。
Payload:
为 Home Assistant Core 用户设置新密码。
Payload:
重置内部 authentication cache,如果你在更改用户密码后需要清除内部 cache,这将非常有用。
列出 Home Assistant 中的所有用户,以帮助凭据恢复。需要一个 admin 级别的 authentication token。
Payload:
备份
返回一个 Backups 列表
Example response:
{
"backups": [
{
"slug": "skuwe823",
"date": "2020-09-30T20:25:34.273Z",
"name": "Awesome backup",
"type": "partial",
"size": 44,
"protected": true,
"location": "MountedBackups",
"compressed": true,
"content": {
"homeassistant": true,
"addons": ["awesome_addon"],
"folders": ["ssl", "media"]
}
}
]
}
返回关于 backup manager 的信息。
Returned data:
Example response:
{
"backups": [
{
"slug": "skuwe823",
"date": "2020-09-30T20:25:34.273Z",
"name": "Awesome backup",
"type": "partial",
"size": 44,
"protected": true,
"compressed": true,
"location": null,
"content": {
"homeassistant": true,
"addons": ["awesome_addon"],
"folders": ["ssl", "media"]
}
}
],
"days_until_stale": 30
}
创建一个 full backup。
Payload:
Example response:
上传一个 backup。
Example response:
{
"slug": "skuwe823",
"job_id": "abc123"
}
Note
如果单独的消息无法准确描述发生了什么,此 API 的错误响应也可能包含 job_id。
调用者应引导用户查看 job 或 supervisor logs,以了解发生了什么。
创建一个 partial backup。
Payload:
你需要在 payload 中至少提供一个 key。
Example response:
{
"slug": "skuwe823",
"job_id": "abc123"
}
Note
如果单独的消息无法准确描述发生了什么,此 API 的错误响应也可能包含 job_id。
调用者应引导用户查看 job 或 supervisor logs,以了解发生了什么。
更新 backup manager 的 options,你需要在 API 调用中至少提供一个 payload key。
Payload:
你需要在 payload 中至少提供一个 key。
从存储中重新加载 backup。
将 Supervisor 置于 freeze 状态,并为外部 backup 准备 Home Assistant 和 addons。
Note
此操作不会执行 backup。它只是为 Home Assistant 和 addons 准备 backup,但预期是用户使用外部工具来执行 backup。例如 KVM 或 Proxmox 的 snapshot 功能。调用者应在完成后调用 /backups/thaw。
Payload:
结束由 /backups/freeze 发起的 freeze,并恢复 Home Assistant 和 addons 的正常行为。
以下载给定 slug 的 backup 文件。
为该 app 返回一个 Backup details model。
移除给定 slug 的 backup 文件。
对给定 slug 的 backup 执行 full restore。
Payload:
Example response:
Note
如果单独的消息无法准确描述发生了什么,此 API 的错误响应也可能包含 job_id。
调用者应引导用户查看 job 或 supervisor logs,以了解发生了什么。
对给定 slug 的 backup 执行 partial restore。
Payload:
你需要在 payload 中至少提供一个 key。
Example response:
Note
如果单独的消息无法准确描述发生了什么,此 API 的错误响应也可能包含 job_id。
调用者应引导用户查看 job 或 supervisor logs,以了解发生了什么。
CLI
返回关于 CLI 插件的信息
Returned data:
Example response:
{
"version": "1",
"version_latest": "2",
"update_available": true
}
为 CLI 插件返回一个 Stats model。
Example response:
{
"cpu_percent": 14.0,
"memory_usage": 288888,
"memory_limit": 322222,
"memory_percent": 32.4,
"network_tx": 110,
"network_rx": 902,
"blk_read": 12,
"blk_write": 27
}
更新 CLI 插件
Payload:
核心
将 GET API 调用代理到 Home Assistant API
将 POST API 调用代理到 Home Assistant API
运行 configuration 检查
返回关于 Home Assistant core 的信息
Returned data:
Example response:
{
"version": "0.117.0",
"version_latest": "0.117.0",
"update_available": true,
"arch": "arch",
"machine": "amd64",
"ip_address": "172.0.0.15",
"image": "homeassistant/home-assistant",
"boot": true,
"port": 80,
"ssl": false,
"watchdog": true,
"wait_boot": 800,
"audio_input": "AMCP32",
"audio_output": "AMCP32"
}
通过 Systemd journal 后端获取 Home Assistant Core 容器的 logs。
该 endpoint 接受与 /host/logs 相同的 headers 并提供相同的功能。
与 /core/logs 相同,区别在于它会持续返回新的 log entries。
返回 Home Assistant Core 容器最近一次启动的所有 logs。
Range header 被忽略,但可以使用 lines query 参数。
获取与特定 boot 相关的 Home Assistant Core 容器 logs。
bootid 参数的解释方式与 /host/logs/boots/<bootid> 中相同,该 endpoint 否则提供与 /host/logs 相同的功能。
与 /core/logs/boots/<bootid> 相同,区别在于它会持续返回新的 log entries。
更新 Home Assistant 的 options,你需要在 API 调用中至少提供一个 payload key。
更新 options 后,你需要调用 `/core/restart`。
Tip
传递 image、refresh_token、audio_input 或 audio_output 且值为 null 可重置该 option。
Payload:
你需要在 payload 中至少提供一个 key。
重建 Home Assistant core 容器
Payload:
重启 Home Assistant core 容器
Payload:
启动 Home Assistant core 容器
为 Home Assistant core 返回一个 Stats model。
Example response:
{
"cpu_percent": 14.0,
"memory_usage": 288888,
"memory_limit": 322222,
"memory_percent": 32.4,
"network_tx": 110,
"network_rx": 902,
"blk_read": 12,
"blk_write": 27
}
停止 Home Assistant core 容器
Payload:
更新 Home Assistant core
Payload:
代理到 Home Assistant Core websocket。
发现
返回关于已启用 discoveries 的信息。
Returned data:
Example response:
{
"discovery": [
{
"addon": "awesome_addon",
"service": "awesome.service",
"uuid": "fh874r-fj9o37yr3-fehsf7o3-fd798",
"config": {}
}
],
"services": {
"awesome": ["awesome_addon"]
}
}
创建一个 discovery service
Payload:
Example response:
获取一个 UUID 的 discovery model。
删除一个特定的 service。
DNS
返回关于 DNS 插件的信息。
Returned data:
Example response:
{
"host": "127.0.0.18",
"version": "1",
"version_latest": "2",
"update_available": true,
"servers": ["dns://8.8.8.8"],
"locals": ["dns://127.0.0.18"],
"mdns": true,
"llmnr": false,
"fallback": true
}
通过 Systemd journal 后端获取 DNS 插件容器的 logs。
该 endpoint 接受与 /host/logs 相同的 headers 并提供相同的功能。
与 /dns/logs 相同,区别在于它会持续返回新的 log entries。
返回 DNS 插件容器最近一次启动的所有 logs。
Range header 被忽略,但可以使用 lines query 参数。
获取与特定 boot 相关的 DNS 插件容器 logs。
bootid 参数的解释方式与 /host/logs/boots/<bootid> 中相同,该 endpoint 否则提供与 /host/logs 相同的功能。
与 /dns/logs/boots/<bootid> 相同,区别在于它会持续返回新的 log entries。
设置 DNS options
Payload:
你需要在 payload 中至少提供一个 key。
重置 DNS configuration。
重启 DNS 插件
为 DNS 插件返回一个 Stats model。
Example response:
{
"cpu_percent": 14.0,
"memory_usage": 288888,
"memory_limit": 322222,
"memory_percent": 32.4,
"network_tx": 110,
"network_rx": 902,
"blk_read": 12,
"blk_write": 27
}
更新 DNS 插件
Payload:
Docker
返回关于 docker 实例的信息。
Returned data:
Example response:
{
"version": "1.0.1",
"enable_ipv6": true,
"storage": "overlay2",
"logging": "journald",
"registries": {}
}
设置 docker options
Payload:
你需要在 payload 中至少提供一个 key。
获取所有已配置的 container registries,返回一个 dict,以 registry hostname 作为 key,包含为对应 registry 配置的 username 字典。
Example response:
{
"registry.example.com": {
"username": "AwesomeUser"
}
}
添加一个新的 container registry。
Payload:
Example payload:
{
"registry.example.com": {
"username": "AwesomeUser",
"password": "MySuperStrongPassword!"
}
}
Note
要登录到默认的 container registry(Docker Hub),请使用 hub.docker.com 作为 registry。
从已配置的 container registries 中删除一个 registry。
安排 Docker storage driver 迁移。该迁移将在下次系统重启时应用。
此 endpoint 允许迁移到以下任一:
overlayfs: Containerd overlayfs driver
overlay2: Docker graph overlay2 driver
Note
此 endpoint 需要 Home Assistant OS 17.0 或更新版本。在较旧版本或非 HAOS 安装中将返回 404 错误。
Payload:
Example payload:
{
"storage_driver": "overlayfs"
}
调用此 endpoint 后,需要重启才能应用迁移。响应会在 resolution center 中创建一个 reboot_required issue。
硬件
获取 hardware 信息。
Example response:
{
"devices": [
{
"name": "ttyACM0",
"sysfs": "/sys/devices/usb/00:01",
"dev_path": "/dev/ttyACM0",
"by_id": "/dev/serial/by-id/usb-Silicon_Labs-RFUSB_9017F723B061A7C01410CFCF-if00-port1",
"subsystem": "tty",
"parent": null,
"attributes": {
"MINOR": "5"
},
"children": [
"/sys/devices/soc/platform/00ef"
]
}
],
"drives": [
{
"vendor": "Generic",
"model": "Flash Disk",
"revision": "8.07",
"serial": "AABBCCDD",
"id": "Generic-Flash-Disk-AABBCCDD",
"size": 8054112256,
"time_detected": "2023-02-15T21:44:22.504878+00:00",
"connection_bus": "usb",
"seat": "seat0",
"removable": true,
"ejectable": true,
"filesystems": [
{
"device": "/dev/sda1",
"id": "by-uuid-1122-1ABA",
"size": 67108864,
"name": "",
"system": false,
"mount_points": []
}
]
}
]
}
Returned data:
获取 audio 设备
Example response:
{
"audio": {
"input": {
"0,0": "Mic"
},
"output": {
"1,0": "Jack",
"1,1": "HDMI"
}
}
}
主机
返回关于 host 的信息。
Returned data
Example response:
{
"agent_version": "1.2.0",
"apparmor_version": "2.13.2",
"chassis": "specific",
"cpe": "xy",
"deployment": "stable",
"disk_total": 32.0,
"disk_used": 30.0,
"disk_free": 2.0,
"features": ["shutdown", "reboot", "hostname", "services", "haos"],
"hostname": "Awesome host",
"llmnr_hostname": "Awesome host",
"kernel": "4.15.7",
"operating_system": "Home Assistant OS",
"boot_timestamp": 1234567788,
"startup_time": 12.345,
"broadcast_llmnr": true,
"broadcast_mdns": false,
"virtualization": "",
"disk_life_time": 10.0,
"timezone": "Europe/Brussels",
"dt_utc": "2025-09-08T12:00:00.000000+00:00",
"dt_synchronized": true,
"use_ntp": true
}
从 host 获取 systemd Journal logs。以纯文本形式返回 log entries,每行一条 log record。
HTTP Request Headers
HTTP Query Parameters
这些是上述 headers 的便捷替代方案,因为 query 参数在开发中和与 Home Assistant proxy 一起使用时更易于使用。你应该只提供其中一种。
示例 query string:
?verbose&lines=100&no_colors
Tip
要获取最后的 log entries,Range 请求 header 支持负值
作为 num_skip。例如,Range: entries=:-9: 返回最后的 10 条 entries。或者
Range: entries=:-200:100 查看从 200 条之前的 100 条 entries。
API 默认返回最后的 100 行。提供一个 Range 值以查看更早的 logs。
Accept header 可以设为 text/x-log 以获取带有附加信息的 logs,例如时间戳和 Systemd unit 名称。如果未指定标识符(即对于 host logs 包含多个
标识符/units 的 logs),此选项将被忽略——这些 logs 始终被标注。
与 /host/logs 相同,区别在于它会持续返回新的 log entries。
返回一个来自 systemd journal 的 syslog identifiers 列表,你可以用它们配合
/host/logs/identifiers/<identifier> 和 /host/logs/boots/<bootid>/identifiers/<identifier> 使用。
从 host 获取与特定 log identifier 相关的 systemd Journal logs。这里有用的一些 identifiers 示例包括
audit - 如果在开发 apparmor profile 时遇到权限问题
NetworkManager - 遇到网络问题时显示 NetworkManager logs
bluetoothd - 遇到蓝牙问题时显示 bluetoothd logs
调用 GET /host/logs/identifiers 将显示 identifier 可能值的全部列表。
否则它提供与 /host/logs 相同的功能。
与 /host/logs/identifiers/<identifier> 相同,区别在于它会持续返回新的 log entries。
返回一个该系统的 boot IDs 字典,你可以用它们配合
/host/logs/boots/<bootid> 和 /host/logs/boots/<bootid>/identifiers/<identifier> 使用。
字典中每项的 key 是 boot 偏移量。0 是当前 boot,
负数表示距当前 boot 往前的 boot 次数。
从 host 获取与特定 boot 相关的 systemd Journal logs。
调用 GET /host/info/boots 查看 boot IDs。或者你也可以提供一个
boot 偏移量:
- 0 - 当前 boot
- 负数 - 从当前 boot 往前计数(-1 是前一次 boot)
- 正数 - 从已知的最后一次 boot 往后计数(1 是已知的最后一次 boot)
否则它提供与 /host/logs 相同的功能。
与 /host/logs/boots/<bootid> 相同,区别在于它会持续返回新的 log entries。
获取特定 log identifier 和特定 boot 的 systemd Journal logs entries。
它是 /host/logs/boots/<bootid> 和 /host/logs/identifiers/<identifier> 的组合。
与 /host/logs/boots/<bootid>/identifiers/<identifier> 相同,区别在于它会持续返回新的 log entries。
设置 host options
Payload:
你需要在 payload 中至少提供一个 key。
重启 host
Payload:
重新加载 host 信息
在 host 上启动一个 service。
在 host 上停止一个 service。
在 host 上重新加载一个 service。
获取关于 host services 的信息。
Returned data:
Example response:
{
"services": [
{
"name": "awesome.service",
"description": "Just an awesome service",
"state": "active"
}
]
}
关闭 host
Payload:
获取以字节为单位的详细磁盘使用情况信息。
disk 选择要测量的对象。使用 default 表示数据磁盘,或使用 mount 名称来测量该 mount。default 始终指向数据磁盘,因此同名 mount 无法通过此 endpoint 访问。
支持可选的 max_depth query 参数,用于控制细分的深度。数据磁盘默认为 1,mount 默认为 0。
数据磁盘将其已知的一级路径报告为 children,max_depth 控制在其中内部继续细分的深度。
Mount 没有这种固定层级,因此它通过遍历目录来测量,并且只有剩余深度超过一级时目录才会列出。因此 max_depth 为 0 或 1 仅返回总计,第一级目录在 2 时出现,再往下的每一级都需要多加一级。
当 mount 列出 children 时,一个 other child 携带遍历未归因到目录的所有内容:直接位于 mount 根部的文件、保留空间以及无法读取的条目。当该余数为正时,节点 children 之和恰好等于其自身的 used_bytes。如果在遍历期间文件系统发生变化,目录总计可能与 used_bytes 不一致;在这种情况下,细分将完全被省略,仅报告总计,因此 children 之和永远不会超过其父节点。
请求不存在的 mount 的使用情况将返回 404。对于不 active 的 mount、unit 仍报告 active 但已实际未挂载的 mount、无法读取的 mount 或 usage probe 在 60 秒内未完成的 mount,将返回 400。该 probe 在超时后仍会继续运行,因此重试请求将加入已在进行的 probe,而不是启动一个新的。
Example response:
{
"id": "root",
"label": "Root",
"total_bytes": 503312781312,
"used_bytes": 430245011456,
"children": [
{
"id": "system",
"label": "System",
"used_bytes": 75660903137
},
{
"id": "addons_data",
"label": "Addons data",
"used_bytes": 42349200762
},
{
"id": "addons_config",
"label": "Addons configuration",
"used_bytes": 5283318814
},
{
"id": "media",
"label": "Media",
"used_bytes": 476680019
},
{
"id": "share",
"label": "Share",
"used_bytes": 37477206419
},
{
"id": "backup",
"label": "Backup",
"used_bytes": 268350699520
},
{
"id": "ssl",
"label": "SSL",
"used_bytes": 202912633
},
{
"id": "homeassistant",
"label": "Home assistant",
"used_bytes": 444090152
}
]
}
Example response for a mount,使用 max_depth=2 请求:
{
"id": "media_nas",
"label": "media_nas",
"total_bytes": 2000398934016,
"used_bytes": 1240247081779,
"children": [
{
"id": "music",
"label": "music",
"used_bytes": 402653184000
},
{
"id": "movies",
"label": "movies",
"used_bytes": 800000000000
},
{
"id": "other",
"label": "Other",
"used_bytes": 37593897779
}
]
}
Ingress
Returned data:
Example response:
{
"panels": {
"addon_slug": {
"enable": true,
"icon": "mdi:awesome-icon",
"title": "Awesome app",
"admin": true
}
}
}
创建一个用于访问 ingress service 的新 session。
Payload:
Returned data:
验证一个 ingress session,并延长其有效期。
Payload:
任务
返回关于被忽略的 job 条件和当前运行或已完成的 jobs 的信息
Returned data:
Example response:
{
"ignore_conditions": [],
"jobs": [{
"name": "backup_manager_full_backup",
"reference": "a01bc3",
"uuid": "123456789",
"progress": 0,
"stage": "addons",
"done": false,
"child_jobs": [],
"extra": null
}]
}
设置 job manager 的 options
Payload:
返回关于当前运行或已完成 job 的信息
Returned data:
参见 Job model
Example response:
{
"name": "backup_manager_full_backup",
"reference": "a01bc3",
"uuid": "123456789",
"progress": 0,
"stage": "addons",
"done": false,
"child_jobs": [],
"extra": null
}
如果客户端不再关心该已完成的 job,则将其从 Supervisor cache 中移除
将 job manager 重置为默认值(停止忽略任何被忽略的 job 条件)
根
返回关于可用更新的信息
Example response:
{
"available_updates": [
{
"panel_path": "/update-available/core",
"update_type": "core",
"version_latest": "321",
},
{
"panel_path": "/update-available/os",
"update_type": "os",
"version_latest": "321",
},
{
"panel_path": "/update-available/supervisor",
"update_type": "supervisor",
"version_latest": "321",
},
{
"name": "Awesome addon",
"icon": "/addons/awesome_addon/icon",
"panel_path": "/update-available/awesome_addon",
"update_type": "addon",
"version_latest": "321",
}
]
}
Returned data:
这将重新加载关于主要组件(OS、Supervisor、Core 和
Plug-ins)的信息。
这将重新加载关于 app repositories 的信息并获取新的 version files。
此 endpoint 目前不推荐使用。请使用 `/reload_updates` 或 `/store/reload`
代替。
返回一个包含来自其他 `/*/info` endpoints 的部分 key 的 dict。
Returned data:
Example response:
{
"supervisor": "300",
"homeassistant": "0.117.0",
"hassos": "5.0",
"docker": "24.17.2",
"hostname": "Awesome Hostname",
"operating_system": "Home Assistant OS",
"features": ["shutdown", "reboot", "hostname", "services", "hassos"],
"machine": "ova",
"arch": "amd64",
"supported_arch": ["amd64"],
"supported": true,
"channel": "stable",
"logging": "info",
"state": "running",
"timezone": "Europe/Brussels"
}
挂载点
返回关于 Supervisor 中配置的 mounts 的信息
Returned data:
Example response:
{
"default_backup_mount": "my_share",
"mounts": [
{
"name": "my_share",
"usage": "media",
"type": "cifs",
"server": "server.local",
"share": "media",
"state": "active",
"read_only": false
}
]
}
设置 mount manager options
Payload:
你需要在 payload 中至少提供一个 key。
在 Supervisor 中添加一个新 mount 并挂载它
Payload:
接受一个 Mount
name 中的值必须是唯一的,且只能由字母、数字和下划线组成。
Example payload:
{
"name": "my_share",
"usage": "media",
"type": "cifs",
"server": "server.local",
"share": "media",
"username": "admin",
"password": "password",
"read_only": false
}
更新 Supervisor 中现有的 mount 并重新挂载它
Payload:
接受一个 Mount。
应省略 name 字段。如果包含,其值必须与现有名称匹配,不能更改。删除并重新添加 mount 以更改名称。
Example payload:
{
"usage": "media",
"type": "nfs",
"server": "server.local",
"path": "/media/camera",
"read_only": true
}
卸载并从 Supervisor 中删除现有的 mount。
卸载并使用相同的配置重新挂载 Supervisor 中现有的 mount。
Multicast
返回关于 multicast 插件的信息
Returned data:
Example response:
{
"version": "1",
"version_latest": "2",
"update_available": true
}
通过 Systemd journal 后端获取 multicast 插件的 logs。
该 endpoint 接受与 /host/logs 相同的 headers 并提供相同的功能。
与 /multicast/logs 相同,区别在于它会持续返回新的 log entries。
返回 multicast 插件容器最近一次启动的所有 logs。
Range header 被忽略,但可以使用 lines query 参数。
获取与特定 boot 相关的 multicast 插件 logs。
bootid 参数的解释方式与 /host/logs/boots/<bootid> 中相同,该 endpoint 否则提供与 /host/logs 相同的功能。
与 /multicast/logs/boots/<bootid> 相同,区别在于它会持续返回新的 log entries。
重启 multicast 插件。
为 multicast 插件返回一个 Stats model。
Example response:
{
"cpu_percent": 14.0,
"memory_usage": 288888,
"memory_limit": 322222,
"memory_percent": 32.4,
"network_tx": 110,
"network_rx": 902,
"blk_read": 12,
"blk_write": 27
}
更新 multicast 插件
Payload:
网络
获取 network 信息。
Returned data:
Example response:
{
"interfaces": [
{
"interface": "eth0",
"type": "ethernet",
"primary": true,
"enabled": true,
"connected": true,
"ipv4": {
"method": "static",
"ip_address": "192.168.1.100/24",
"gateway": "192.168.1.1",
"nameservers": ["192.168.1.1"],
},
"ipv6": null,
"wifi": null,
"vlan": null,
}
],
"docker": {
"interface": "hassio",
"address": "172.30.32.0/23",
"gateway": "172.30.32.1",
"dns": "172.30.32.3"
},
"host_internet": true,
"supervisor_internet": true
}
返回特定 network interface 的 Network interface model。
更新所有 Network interface 数据。
更新 network interface 的设置。
Payload:
ipv6:
ipv4:
wifi:
返回此 Wireless interface 上可用的 Access Points 列表。
此功能仅适用于 Wireless interfaces!
Returned data:
Example response:
{
"accesspoints": [
{
"mode": "infrastructure",
"ssid": "MY_TestWifi",
"mac": "00:00:00:00",
"frequency": 24675,
"signal": 90
}
]
}
在此 network interface 上创建一个新的 VLAN id。
此功能仅适用于 ethernet interfaces!
Payload:
观察者
返回关于 observer 插件的信息
Returned data:
Example response:
{
"host": "172.0.0.17",
"version": "1",
"version_latest": "2",
"update_available": true
}
为 observer 插件返回一个 Stats model。
Example response:
{
"cpu_percent": 14.0,
"memory_usage": 288888,
"memory_limit": 322222,
"memory_percent": 32.4,
"network_tx": 110,
"network_rx": 902,
"blk_read": 12,
"blk_write": 27
}
更新 observer 插件
Payload:
OS
从 USB 闪存驱动器加载 host configurations。
返回关于 OS 的信息。
Returned data:
Example response:
{
"version": "4.3",
"version_latest": "5.0",
"update_available": true,
"board": "ova",
"boot": "slot1",
"data_disk": "BJTD4R-0x123456789",
"boot_slots": {
"A": {
"state": "inactive",
"status": "good",
"version": "10.1"
},
"B": {
"state": "active",
"status": "good",
"version": "10.2"
}
}
}
更新 Home Assistant OS
完成此操作后需要重启才能完成更新。可以通过后续调用 /host/reboot
完成,或者让用户按计划使用 repair 完成。
Payload:
更改 active boot slot,这也会重启设备!
Payload:
获取当前 HAOS swap configuration。在 Supervised 上不可用。
Returned data:
Example response:
{
"swap_size": "2G",
"swappiness": 1
}
设置 HAOS swap configuration。在 Supervised 上不可用。
Payload:
返回新的 data partition 可能的目标。
Returned data:
Example response:
{
"devices": [
"Generic-Flash-Disk-123ABC456",
"SSK-SSK-Storage-ABC123DEF"
],
"disks": [
{
"name": "Generic Flash Disk (123ABC456)",
"vendor": "Generic",
"model": "Flash Disk",
"serial": "123ABC456",
"size": 8054112256,
"id": "Generic-Flash-Disk-123ABC456",
"dev_path": "/dev/sda"
},
{
"name": "SSK SSK Storage (ABC123DEF)",
"vendor": "SSK",
"model": "SSK Storage",
"serial": "ABC123DEF",
"size": 250059350016,
"id": "SSK-SSK-Storage-ABC123DEF",
"dev_path": "/dev/sdb"
}
]
}
将 datadisk 移动到新位置,这也会重启设备!
Payload:
擦除 datadisk 包括所有用户数据和设置,这也会重启设备! 此 API 需要 admin token
此 API 将擦除 addons、Home Assistant 和 Operating System 的所有 config/settings,以及 config、backups、media 等中本地存储的任何数据。机器将在此过程中重启。
重启完成后将下载最新稳定版本的 Home Assistant 和 Supervisor。处理完成后用户将看到 onboarding,就像初始设置时一样。
此擦除还包括 network 设置。因此重启后用户可能需要重新配置这些设置才能再次访问 Home Assistant。
Operating system 版本及其 boot configuration 将被保留。
如果 board 有可以从 Home Assistant 修改的 features 或 settings,则返回关于它的信息。board 的值是 /os/info 返回的 board 字段中的值。
具有以下选项的 boards 记录如下。
如果在 yellow board 上运行,返回其 settings 的当前值。
Returned data:
Example response:
{
"disk_led": true,
"heartbeat_led": true,
"power_led": false
}
如果在 yellow board 上运行,更改其一个或多个 settings。
Payload:
如果在 green board 上运行,返回其 settings 的当前值。
Returned data:
Example response:
{
"activity_led": true,
"power_led": true,
"system_health_led": false
}
如果在 green board 上运行,更改其一个或多个 settings。
Payload:
返回 Raspberry Pi firmware 信息。在 Raspberry Pi 4 / 5 和 OS Agent 版本至少为 1.9.0 的 Home Assistant Yellow 上可用。报告的版本涵盖捆绑的 firmware payload(bootloader EEPROM 和 VL805 USB controller(如果存在))。如果 OS Agent 版本早于 1.9.0 则返回 404,如果运行中的 board 没有 Raspberry Pi firmware 接口则返回 400。
Returned data:
每当 update_blocked 为 true 时,blocked_reason 始终为 unsupported_boot_device。根本原因各不相同(例如 USB/NVMe boot 设备,或禁用了 self-update 的 board)。未来可能会引入更具体的值。
Example response:
{
"current_version": "1765222194",
"latest_version": "1778498402",
"update_available": true,
"update_blocked": false,
"update_pending": false,
"blocked_reason": null
}
应用捆绑的 Raspberry Pi firmware 更新(bootloader EEPROM 和 VL805(如果存在))。成功后,Supervisor 会提出 reboot_required issue;需要重启才能开始运行新 firmware。如果 OS Agent 版本早于 1.9.0 则返回 404,如果运行中的 board 没有 Raspberry Pi firmware 接口或该 board / boot 设备阻止了更新,则返回 400。
分辨率
Returned data:
Example response:
{
"unsupported": ["os"],
"unhealthy": ["docker"],
"issues": [
{
"uuid": "A89924620F9A11EBBDC3C403FC2CA371",
"type": "free_space",
"context": "system",
"reference": null,
"reference_extra": null
}
],
"suggestions": [
{
"uuid": "B9923620C9A11EBBDC3C403FC2CA371",
"type": "clear_backups",
"context": "system",
"reference": null,
"reference_extra": null,
"auto": false
}
],
"checks": [
{
"slug": "free_space",
"enabled": true
}
]
}
应用一个建议的 action
忽略一个建议的 action
获取如果应用可以解决该 issue 的建议。
Returned data:
Example response:
{
"suggestions": [
{
"uuid": "B9923620C9A11EBBDC3C403FC2CA371",
"type": "clear_backups",
"context": "system",
"reference": null,
"reference_extra": null,
"auto": false
}
]
}
忽略一个 issue
执行 healthcheck 并自动修复和通知。
设置此 check 的 options。
Payload:
立即执行特定 check。
服务
Returned data:
Example response:
{
"services": [
{
"slug": "name",
"available": true,
"providers": ["awesome_addon"]
}
]
}
Returned data:
Example response:
{
"addon": "awesome_mqtt",
"host": "172.0.0.17",
"port": "8883",
"ssl": true,
"username": "awesome_user",
"password": "strong_password",
"protocol": "3.1.1"
}
创建一个 service definition
Payload:
删除 service definitions
Returned data:
Example response:
{
"addon": "awesome_mysql",
"host": "172.0.0.17",
"port": "8883",
"username": "awesome_user",
"password": "strong_password"
}
创建一个 service definition
Payload:
删除 service definitions
存储
返回 app store 信息。
Example response:
{ "addons":
[
{
"name": "Awesome app",
"slug": "7kshd7_awesome",
"description": "Awesome description",
"repository": "https://example.com/addons",
"version": "1.0.0",
"installed": "1.0.0",
"icon": false,
"logo": true,
"state": "started"
}
],
"repositories": [
{
"slug": "awesom_repository",
"name": "Awesome Repository",
"source": "https://example.com/addons",
"url": "https://example.com/addons",
"maintainer": "Awesome Maintainer"
}
]
}
返回 store apps 列表
Example response:
[
{
"name": "Awesome app",
"slug": "7kshd7_awesome",
"description": "Awesome description",
"repository": "https://example.com/addons",
"version": "1.0.0",
"installed": "1.0.0",
"icon": false,
"logo": true,
"state": "started"
}
]
返回关于 store app 的信息
Example response:
{
"advanced": false,
"apparmor": "default",
"arch": ["armhf", "aarch64", "i386", "amd64"],
"auth_api": true,
"available": true,
"build": false,
"description": "Awesome description",
"detached": false,
"docker_api": false,
"documentation": true,
"full_access": true,
"hassio_api": false,
"hassio_role": "manager",
"homeassistant_api": true,
"homeassistant": "2021.2.0b0",
"host_network": false,
"host_pid": false,
"icon": false,
"ingress": true,
"installed": false,
"logo": true,
"long_description": "lorem ipsum",
"name": "Awesome app",
"rating": 5,
"repository": "core",
"signed": false,
"slug": "7kshd7_awesome",
"stage": "stable",
"update_available": false,
"url": "https://example.com/addons/tree/main/awesome_addon",
"version_latest": "1.0.0",
"version": "1.0.0"
}
从 store 安装一个 app。
Payload:
从 store 更新一个 app。
Payload:
获取 app 的 changelog。
获取 app 的 documentation。
获取 app icon
获取 app logo
如果 app 的最新版本能够安装到当前系统上,则返回 200 成功状态。如果无法安装,则返回 400 错误状态,并附带说明原因的消息。
重新加载关于 app 的存储信息。
返回 store repositories 列表
Example response:
[
{
"slug": "awesom_repository",
"name": "Awesome Repository",
"source": "https://example.com/addons",
"url": "https://example.com/addons",
"maintainer": "Awesome Maintainer"
}
]
向 store 添加一个 addon repository
Payload:
Example payload:
{
"repository": "https://example.com/addons"
}
返回关于 store repository 的信息
Example response:
{
"slug": "awesom_repository",
"name": "Awesome Repository",
"source": "https://example.com/addons",
"url": "https://example.com/addons",
"maintainer": "Awesome Maintainer"
}
从 store 移除一个未使用的 addon repository。
修复/重置 store 中缺失或显示不正确信息的 addon repository。
安全
返回关于 security features 的信息
Returned data:
Example response:
{
"pwned": true,
"force_security": false,
}
Payload:
Supervisor
返回关于 supervisor 的信息
Returned data:
Example response:
{
"version": "246",
"version_latest": "version_latest",
"update_available": true,
"arch": "amd64",
"channel": "dev",
"timezone": "TIMEZONE",
"healthy": true,
"supported": false,
"logging": "debug",
"ip_address": "172.0.0.2",
"wait_boot": 800,
"debug": false,
"debug_block": false,
"diagnostics": null,
"addons_repositories": ["https://example.com/addons"],
"auto_update": true,
"detect_blocking_io": false,
"feature_flags": {
"supervisor_v2_api": false
}
}
通过 Systemd journal 后端获取 Supervisor 容器的 logs。如果
Systemd journal gateway 无法提供 logs,则以原始 Docker container logs 作为回退返回。
该 endpoint 接受与 /host/logs 相同的 headers 并提供相同的功能。
与 /supervisor/logs 相同,区别在于它会持续返回新的 log entries。
返回 Supervisor 容器最近一次启动的所有 logs。
Range header 被忽略,但可以使用 lines query 参数。
获取与特定 boot 相关的 Supervisor 容器 logs。
bootid 参数的解释方式与 /host/logs/boots/<bootid> 中相同,该 endpoint 否则提供与 /host/logs 相同的功能。
与 /supervisor/logs/boots/<bootid> 相同,区别在于它会持续返回新的 log entries。
更新 supervisor 的 options,你需要在 API 调用中至少提供一个 payload key。
更新 options 后,你需要调用 /supervisor/reload。
Payload:
向 supervisor 发送 Ping 以检查它是否能返回响应。
重新加载 supervisor 的部分内容,这将启用新的 options 并检查更新。
重启 supervisor,有助于让 supervisor 恢复健康状态。
修复 docker overlay 问题和丢失的镜像。
为 supervisor 返回一个 Stats model。
Example response:
{
"cpu_percent": 14.0,
"memory_usage": 288888,
"memory_limit": 322222,
"memory_percent": 32.4,
"network_tx": 110,
"network_rx": 902,
"blk_read": 12,
"blk_write": 27
}
更新 supervisor
Payload:
占位符
一些 endpoints 在 endpoint URL 中使用以 <...> 表示的占位符。