Skip to content

The board

Generated from the committed OpenAPI document, bmcd 2.28.0. Do not edit this file: just refresh-api rewrites it.

GET /api/bmc/about

Firmware, daemon, kernel and board identity

Legacy form: GET /api/bmc?opt=get&type=about with the same parameters in the query string. That form answers {"response":[{"result":…}]} and puts a refusal's message in result; this path answers the bare result and a refusal as application/problem+json.

response body meaning
200 application/jsonAbout The result.
204 empty Done, with nothing to report.
default application/problem+jsonProblem A refusal, RFC 9457.
200 body (application/json): About
field type required description
api string yes The /api/bmc contract version, not a release of anything.
bmcd_version string yes
board_model string yes From the board's EEPROM. Empty on a board that cannot be read, rather than absent: upstream's shape, and the interface renders the blank.
board_revision string yes
board_serial string or null no None when the EEPROM field is missing or blank after trimming.
build_version string yes The same value as bmcd_version. The web interface reads this key for its "Build version" field and renders vundefined without it, so it is duplicated deliberately rather than left for the client to alias.
buildroot string yes
buildtime string yes
hostname string yes
kernel string yes The running kernel. "unknown" when uname cannot be read; the one field an operator wants after a kernel bump.
version string yes The firmware, from /etc/os-release. "unknown" when it cannot be read -- a string, because an About page with a gap is still worth rendering and this field has never been nullable.
default body (application/problem+json): Problem
field type required description
detail string no
status integer yes
title string yes
type string no

GET /api/bmc/config

Everything configured on this board, as one document

Legacy form: GET /api/bmc?opt=get&type=config with the same parameters in the query string. That form answers {"response":[{"result":…}]} and puts a refusal's message in result; this path answers the bare result and a refusal as application/problem+json.

response body meaning
200 application/jsonConfigExport The result.
204 empty Done, with nothing to report.
default application/problem+jsonProblem A refusal, RFC 9457.
200 body (application/json): ConfigExport
field type required description
exported_at string yes When and from what. Not read back on import; it is what makes a file found on a workstation six months later identifiable.
exported_from ExportOrigin yes
firmware_sources object no
format_version integer (uint32) yes
hostname string or null no
nodes array or null no
ntp_servers array or null no
default body (application/problem+json): Problem
field type required description
detail string no
status integer yes
title string yes
type string no

POST /api/bmc/config

Apply an exported configuration; reports per field

Legacy form: GET /api/bmc?opt=set&type=config with the same parameters in the query string. That form answers {"response":[{"result":…}]} and puts a refusal's message in result; this path answers the bare result and a refusal as application/problem+json.

Request body (application/json)
field type required description
config string no the exported document; a JSON body that is the document itself is accepted as-is
Request body (application/x-www-form-urlencoded)
field type required description
config string no the exported document; a JSON body that is the document itself is accepted as-is
response body meaning
200 application/json — — The result. Its shape is not described in this document.
204 empty Done, with nothing to report.
default application/problem+jsonProblem A refusal, RFC 9457.
default body (application/problem+json): Problem
field type required description
detail string no
status integer yes
title string yes
type string no

GET /api/bmc/health

The board's own condition: uptime, load, memory, NAND, clock

Legacy form: GET /api/bmc?opt=get&type=health with the same parameters in the query string. That form answers {"response":[{"result":…}]} and puts a refusal's message in result; this path answers the bare result and a refusal as application/problem+json.

response body meaning
200 application/jsonHealth The result.
204 empty Done, with nothing to report.
default application/problem+jsonProblem A refusal, RFC 9457.
200 body (application/json): Health
field type required description
clock Clock yes
load Load yes
memory Memory yes
nand Nand yes
uptime_seconds number or null no Seconds since the BMC booted, as /proc/uptime gives it. Not the uptime of any compute module.
default body (application/problem+json): Problem
field type required description
detail string no
status integer yes
title string yes
type string no

GET /api/bmc/hostname

The board's name, live and after the next boot

Legacy form: GET /api/bmc?opt=get&type=hostname with the same parameters in the query string. That form answers {"response":[{"result":…}]} and puts a refusal's message in result; this path answers the bare result and a refusal as application/problem+json.

response body meaning
200 application/jsonHostname The result.
204 empty Done, with nothing to report.
default application/problem+jsonProblem A refusal, RFC 9457.
200 body (application/json): Hostname
field type required description
hostname string or null no What sethostname(2) currently says. None if it cannot be read.
on_next_boot string or null no What /etc/hostname holds. None when the file is absent.
default body (application/problem+json): Problem
field type required description
detail string no
status integer yes
title string yes
type string no

POST /api/bmc/hostname

Rename the board; the metrics instance label changes with it

Legacy form: GET /api/bmc?opt=set&type=hostname with the same parameters in the query string. That form answers {"response":[{"result":…}]} and puts a refusal's message in result; this path answers the bare result and a refusal as application/problem+json.

Request body (application/json)
field type required description
name string no one DNS label: letters, digits, hyphens; no dots
Request body (application/x-www-form-urlencoded)
field type required description
name string no one DNS label: letters, digits, hyphens; no dots
response body meaning
200 application/json — — The result. Its shape is not described in this document.
204 empty Done, with nothing to report.
default application/problem+jsonProblem A refusal, RFC 9457.
default body (application/problem+json): Problem
field type required description
detail string no
status integer yes
title string yes
type string no

GET /api/bmc/info

Storage and interfaces, as the Overview page reads them

Legacy form: GET /api/bmc?opt=get&type=info with the same parameters in the query string. That form answers {"response":[{"result":…}]} and puts a refusal's message in result; this path answers the bare result and a refusal as application/problem+json.

response body meaning
200 application/jsonBoardInfo The result.
204 empty Done, with nothing to report.
default application/problem+jsonProblem A refusal, RFC 9457.
200 body (application/json): BoardInfo
field type required description
ip array of NetInfo yes
storage array of StorageInfo yes
default body (application/problem+json): Problem
field type required description
detail string no
status integer yes
title string yes
type string no

POST /api/bmc/reboot

Reboot the BMC; the compute modules keep running

Legacy form: GET /api/bmc?opt=set&type=reboot with the same parameters in the query string. That form answers {"response":[{"result":…}]} and puts a refusal's message in result; this path answers the bare result and a refusal as application/problem+json.

response body meaning
200 application/json — — The result. Its shape is not described in this document.
204 empty Done, with nothing to report.
default application/problem+jsonProblem A refusal, RFC 9457.
default body (application/problem+json): Problem
field type required description
detail string no
status integer yes
title string yes
type string no

POST /api/bmc/reload

Restart the daemon

Legacy form: GET /api/bmc?opt=set&type=reload with the same parameters in the query string. That form answers {"response":[{"result":…}]} and puts a refusal's message in result; this path answers the bare result and a refusal as application/problem+json.

response body meaning
200 application/json — — The result. Its shape is not described in this document.
204 empty Done, with nothing to report.
default application/problem+jsonProblem A refusal, RFC 9457.
default body (application/problem+json): Problem
field type required description
detail string no
status integer yes
title string yes
type string no