- Collect hardware event logs (last 7 days) from Systems and Managers/SEL LogServices - Parse AMI raw IPMI dump messages into readable descriptions (Sensor_Type: Event_Type) - Filter out audit/journal/non-hardware log services; only SEL from Managers - MSI ghost GPU filter: exclude processor GPU entries with temperature=0 when host is powered on - Reanimator collected_at uses InventoryData/Status.LastModifiedTime (30-day fallback) - Invalidate Redfish inventory CRC groups before host power-on - Log inventory LastModifiedTime age in collection logs - Drop SecureBoot collection (SecureBootMode, SecureBootDatabases) — not hardware inventory - Add build version to UI footer via template - Add MSI Redfish API reference doc to bible-local/docs/ ADL-032–ADL-035 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
16 KiB
MSI BMC Redfish API Reference
Source: MSI Enterprise Platform Solutions — Redfish BMC User Guide v1.0 (AMI/MegaRAC stack). Spec compliance: DSP0266 1.15.1, DSP8010 2019.2.
This document is trimmed to sections relevant to LOGPile collection and inventory analysis. Auth, LDAP/AD, SMTP, VirtualMedia, Certificates, RADIUS, Composability, and BMC config sections are omitted.
Supported HTTP methods
GET, POST, PATCH, DELETE. Unsupported methods return 405.
PATCH requires an If-Match / ETag precondition header; missing header → 428, mismatch → 412.
1. Core Redfish API endpoints
| Resource | URI | Schema |
|---|---|---|
| Service Root | /redfish/v1/ |
ServiceRoot.v1_7_0 |
| ComputerSystem Collection | /redfish/v1/Systems |
ComputerSystemCollection |
| ComputerSystem | /redfish/v1/Systems/{sys} |
ComputerSystem.v1_16_2 |
| Memory Collection | /redfish/v1/Systems/{sys}/Memory |
MemoryCollection |
| Memory | /redfish/v1/Systems/{sys}/Memory/{mem} |
Memory.v1_19_0 |
| MemoryMetrics | /redfish/v1/Systems/{sys}/Memory/{mem}/MemoryMetrics |
MemoryMetrics.v1_7_0 |
| MemoryDomain Collection | /redfish/v1/Systems/{sys}/MemoryDomain |
MemoryDomainCollection |
| MemoryDomain | /redfish/v1/Systems/{sys}/MemoryDomain/{dom} |
MemoryDomain.v1_2_3 |
| MemoryChunks Collection | /redfish/v1/Systems/{sys}/MemoryDomain/{dom}/MemoryChunks |
MemoryChunksCollection |
| MemoryChunks | /redfish/v1/Systems/{sys}/MemoryDomain/{dom}/MemoryChunks/{chunk} |
MemoryChunks.v1_4_0 |
| Processor Collection | /redfish/v1/Systems/{sys}/Processors |
ProcessorCollection |
| Processor | /redfish/v1/Systems/{sys}/Processors/{proc} |
Processor.v1_15_0 |
| SubProcessors Collection | /redfish/v1/Systems/{sys}/Processors/{proc}/SubProcessors |
ProcessorCollection |
| SubProcessor | /redfish/v1/Systems/{sys}/Processors/{proc}/SubProcessors/{sub} |
Processor.v1_15_0 |
| ProcessorMetrics | /redfish/v1/Systems/{sys}/Processors/{proc}/ProcessorMetrics |
ProcessorMetrics.v1_4_0 |
| Bios | /redfish/v1/Systems/{sys}/Bios |
Bios.v1_2_0 |
| SimpleStorage Collection | /redfish/v1/Systems/{sys}/SimpleStorage |
SimpleStorageCollection |
| SimpleStorage | /redfish/v1/Systems/{sys}/SimpleStorage/{ss} |
SimpleStorage.v1_3_0 |
| Storage Collection | /redfish/v1/Systems/{sys}/Storage |
StorageCollection |
| Storage | /redfish/v1/Systems/{sys}/Storage/{stor} |
Storage.v1_9_0 |
| StorageController Collection | /redfish/v1/Systems/{sys}/Storage/{stor}/Controllers |
StorageControllerCollection |
| StorageController | /redfish/v1/Systems/{sys}/Storage/{stor}/Controllers/{ctrl} |
StorageController.v1_0_0 |
| Drive | /redfish/v1/Systems/{sys}/Storage/{stor}/Drives/{drv} |
Drive.v1_13_0 |
| Volume Collection | /redfish/v1/Systems/{sys}/Storage/{stor}/Volumes |
VolumeCollection |
| Volume | /redfish/v1/Systems/{sys}/Storage/{stor}/Volumes/{vol} |
Volume.v1_5_0 |
| NetworkInterface Collection | /redfish/v1/Systems/{sys}/NetworkInterfaces |
NetworkInterfaceCollection |
| NetworkInterface | /redfish/v1/Systems/{sys}/NetworkInterfaces/{nic} |
NetworkInterface.v1_2_0 |
| EthernetInterface (System) | /redfish/v1/Systems/{sys}/EthernetInterfaces/{eth} |
EthernetInterface.v1_6_2 |
| GraphicsController Collection | /redfish/v1/Systems/{sys}/GraphicsControllers |
GraphicsControllerCollection |
| GraphicsController | /redfish/v1/Systems/{sys}/GraphicsControllers/{gpu} |
GraphicsController.v1_0_0 |
| USBController Collection | /redfish/v1/Systems/{sys}/USBControllers |
USBControllerCollection |
| USBController | /redfish/v1/Systems/{sys}/USBControllers/{usb} |
USBController.v1_0_0 |
| SecureBoot | /redfish/v1/Systems/{sys}/SecureBoot |
SecureBoot.v1_1_0 |
| LogService Collection (System) | /redfish/v1/Systems/{sys}/LogServices |
LogServiceCollection |
| LogService (System) | /redfish/v1/Systems/{sys}/LogServices/{log} |
LogService.v1_1_3 |
| LogEntry Collection | /redfish/v1/Systems/{sys}/LogServices/{log}/Entries |
LogEntryCollection |
| LogEntry | /redfish/v1/Systems/{sys}/LogServices/{log}/Entries/{entry} |
LogEntry.v1_12_0 |
| Chassis Collection | /redfish/v1/Chassis |
ChassisCollection |
| Chassis | /redfish/v1/Chassis/{ch} |
Chassis.v1_15_0 |
| Power | /redfish/v1/Chassis/{ch}/Power |
Power.v1_5_4 |
| PowerSubSystem | /redfish/v1/Chassis/{ch}/PowerSubSystem |
PowerSubsystem.v1_1_0 |
| PowerSupplies Collection | /redfish/v1/Chassis/{ch}/PowerSubSystem/PowerSupplies |
PowerSupplyCollection |
| PowerSupply | /redfish/v1/Chassis/{ch}/PowerSubSystem/PowerSupplies/{psu} |
PowerSupply.v1_3_0 |
| PowerSupplyMetrics | /redfish/v1/Chassis/{ch}/PowerSubSystem/PowerSupplies/{psu}/Metrics |
PowerSupplyMetrics.v1_0_1 |
| Thermal | /redfish/v1/Chassis/{ch}/Thermal |
Thermal.v1_5_3 |
| ThermalSubSystem | /redfish/v1/Chassis/{ch}/ThermalSubSystem |
ThermalSubsystem.v1_0_0 |
| ThermalMetrics | /redfish/v1/Chassis/{ch}/ThermalSubSystem/ThermalMetrics |
ThermalMetrics.v1_0_1 |
| Fans Collection | /redfish/v1/Chassis/{ch}/ThermalSubSystem/Fans |
FanCollection |
| Fan | /redfish/v1/Chassis/{ch}/ThermalSubSystem/Fans/{fan} |
Fan.v1_1_1 |
| Sensor Collection | /redfish/v1/Chassis/{ch}/Sensors |
SensorCollection |
| Sensor | /redfish/v1/Chassis/{ch}/Sensors/{sen} |
Sensor.v1_0_2 |
| PCIeDevice Collection | /redfish/v1/Chassis/{ch}/PCIeDevices |
PCIeDeviceCollection |
| PCIeDevice | /redfish/v1/Chassis/{ch}/PCIeDevices/{dev} |
PCIeDevice.v1_9_0 |
| PCIeFunction Collection | /redfish/v1/Chassis/{ch}/PCIeDevices/{dev}/PCIeFunctions |
PCIeFunctionCollection |
| PCIeFunction | /redfish/v1/Chassis/{ch}/PCIeDevices/{dev}/PCIeFunctions/{fn} |
PCIeFunction.v1_2_3 |
| PCIeSlots | /redfish/v1/Chassis/{ch}/PCIeSlots |
PCIeSlots.v1_5_0 |
| NetworkAdapter Collection | /redfish/v1/Chassis/{ch}/NetworkAdapters |
NetworkAdapterCollection |
| NetworkAdapter | /redfish/v1/Chassis/{ch}/NetworkAdapters/{na} |
NetworkAdapter.v1_8_0 |
| NetworkDeviceFunction Collection | /redfish/v1/Chassis/{ch}/NetworkAdapters/{na}/NetworkDeviceFunctions |
NetworkDeviceFunctionCollection |
| NetworkDeviceFunction | /redfish/v1/Chassis/{ch}/NetworkAdapters/{na}/NetworkDeviceFunctions/{fn} |
NetworkDeviceFunction.v1_5_0 |
| Assembly | /redfish/v1/Chassis/{ch}/Assembly |
Assembly.v1_2_2 |
| Assembly (Drive) | /redfish/v1/Systems/{sys}/Storage/{stor}/Drives/{drv}/Assembly |
Assembly.v1_2_2 |
| Assembly (Processor) | /redfish/v1/Systems/{sys}/Processors/{proc}/Assembly |
Assembly.v1_2_2 |
| Assembly (Memory) | /redfish/v1/Systems/{sys}/Memory/{mem}/Assembly |
Assembly.v1_2_2 |
| Assembly (NetworkAdapter) | /redfish/v1/Chassis/{ch}/NetworkAdapters/{na}/Assembly |
Assembly.v1_2_2 |
| Assembly (PCIeDevice) | /redfish/v1/Chassis/{ch}/PCIeDevices/{dev}/Assembly |
Assembly.v1_2_2 |
| MediaController Collection | /redfish/v1/Chassis/{ch}/MediaControllers |
MediaControllerCollection |
| MediaController | /redfish/v1/Chassis/{ch}/MediaControllers/{mc} |
MediaController.v1_1_0 |
| LogService Collection (Chassis) | /redfish/v1/Chassis/{ch}/LogServices |
LogServiceCollection |
| LogService (Chassis) | /redfish/v1/Chassis/{ch}/LogServices/{log} |
LogService.v1_1_3 |
| Manager Collection | /redfish/v1/Managers |
ManagerCollection |
| Manager | /redfish/v1/Managers/{mgr} |
Manager.v1_13_0 |
| EthernetInterface (Manager) | /redfish/v1/Managers/{mgr}/EthernetInterfaces/{eth} |
EthernetInterface.v1_6_2 |
| LogService Collection (Manager) | /redfish/v1/Managers/{mgr}/LogServices |
LogServiceCollection |
| LogService (Manager) | /redfish/v1/Managers/{mgr}/LogServices/{log} |
LogService.v1_1_3 |
| UpdateService | /redfish/v1/UpdateService |
UpdateService.v1_6_0 |
| TaskService | /redfish/v1/TasksService |
TaskService.v1_1_4 |
| Task Collection | /redfish/v1/TaskService/Tasks |
TaskCollection |
| Task | /redfish/v1/TaskService/Tasks/{task} |
Task.v1_4_2 |
2. Telemetry API endpoints
| Resource | URI | Schema |
|---|---|---|
| TelemetryService | /redfish/v1/TelemetryService |
TelemetryService.v1_2_1 |
| MetricDefinition Collection | /redfish/v1/TelemetryService/MetricDefinitions |
MetricDefinitionCollection |
| MetricDefinition | /redfish/v1/TelemetryService/MetricDefinitions/{md} |
MetricDefinition.v1_0_3 |
| MetricReportDefinition Collection | /redfish/v1/TelemetryService/MetricReportDefinitions |
MetricReportDefinitionCollection |
| MetricReportDefinition | /redfish/v1/TelemetryService/MetricReportDefinitions/{mrd} |
MetricReportDefinition.v1_3_0 |
| MetricReport Collection | /redfish/v1/TelemetryService/MetricReports |
MetricReportCollection |
| MetricReport | /redfish/v1/TelemetryService/MetricReports/{mr} |
MetricReport.v1_2_0 |
| Telemetry LogService | /redfish/v1/TelemetryService/LogService |
LogService.v1_1_3 |
| Telemetry LogEntry Collection | /redfish/v1/TelemetryService/LogService/Entries |
LogEntryCollection |
3. Processor / NIC sub-resources (GPU-relevant)
| Resource | URI |
|---|---|
| Processor (NetworkAdapter) | /redfish/v1/Chassis/{ch}/NetworkAdapters/{na}/Processors/{proc} |
| AccelerationFunction Collection | /redfish/v1/Systems/{sys}/Processors/{proc}/AccelerationFunctions |
| AccelerationFunction | /redfish/v1/Systems/{sys}/Processors/{proc}/AccelerationFunctions/{fn} |
| Port Collection (NetworkAdapter) | /redfish/v1/Chassis/{ch}/NetworkAdapters/{na}/Ports |
| Port (GraphicsController) | /redfish/v1/Systems/{sys}/GraphicsControllers/{gpu}/Ports/{port} |
| OperatingConfig Collection | /redfish/v1/Systems/{sys}/Processors/{proc}/OperatingConfigs |
| OperatingConfig | /redfish/v1/Systems/{sys}/Processors/{proc}/OperatingConfigs/{cfg} |
4. Error response format
On error, the service returns an HTTP status code and a JSON body with a single error property:
{
"error": {
"code": "Base.1.12.0.ActionParameterMissing",
"message": "...",
"@Message.ExtendedInfo": [
{
"@odata.type": "#Message.v1_0_8.Message",
"MessageId": "Base.1.12.0.ActionParameterMissing",
"Message": "...",
"MessageArgs": [],
"Severity": "Warning",
"Resolution": "..."
}
]
}
}
Common status codes:
| Code | Meaning |
|---|---|
| 200 | OK with body |
| 201 | Created |
| 204 | Success, no body |
| 400 | Bad request / validation error |
| 401 | Unauthorized |
| 403 | Forbidden / firmware update in progress |
| 404 | Resource not found |
| 405 | Method not allowed |
| 412 | ETag precondition failed (PATCH) |
| 415 | Unsupported media type |
| 428 | Missing precondition header (PATCH) |
| 501 | Not implemented |
Request validation sequence:
- Authorization check → 401
- Entity privilege check → 403
- URI existence → 404
- Firmware update lock → 403
- Method allowed → 405
- Media type → 415
- Body format → 400
- PATCH: ETag header → 428/412
- Property validation → 400
5. OEM: Inventory refresh (AMI/MSI-specific)
5.1 InventoryCrc — force component re-inventory
GET/POST/DELETE /redfish/v1/Systems/{sys}/Oem/Ami/Inventory/Crc
The GroupCrcList field lists current CRC checksums per component group. When a group's CRC
changes (host sends new inventory) or is explicitly zeroed out via POST, the BMC discards its
cached inventory and re-reads that group from the host.
CRC groups:
| Group | Covers |
|---|---|
CPU |
Processors, ProcessorMetrics |
DIMM |
Memory, MemoryDomains, MemoryChunks, MemoryMetrics |
PCIE |
Storage, PCIeDevices, NetworkInterfaces, NetworkAdapters |
CERTIFICATES |
Boot Certificates |
SECURBOOT |
SecureBoot data |
POST — invalidate selected groups (force re-inventory):
POST /redfish/v1/Systems/{sys}/Oem/Ami/Inventory/Crc
Content-Type: application/json
{
"GroupCrcList": [
{ "CPU": 0 },
{ "DIMM": 0 },
{ "PCIE": 0 }
]
}
Setting a group's value to 0 signals the BMC to invalidate and repopulate that group on next
host inventory push (typically at next boot or host-interface inventory cycle).
DELETE — remove all CRC records entirely.
Note: Inventory data is populated by the host via the Redfish Host Interface (in-band), not by the BMC itself. Zeroing a CRC group does not immediately re-read hardware — it marks the group as stale so the next host-side inventory push will be accepted. A cold reboot is the most reliable trigger.
5.2 InventoryData Status — monitor inventory processing
GET /redfish/v1/Oem/Ami/InventoryData/Status
Available only after the host has posted an inventory file. Shows current processing state.
Status enum:
| Value | Meaning |
|---|---|
BootInProgress |
Host is booting |
Queued |
Processing task queued |
In-Progress |
Processing running in background |
Ready / Completed |
Processing finished successfully |
Failed |
Processing failed |
Response also includes:
InventoryData.DeletedModules— array of groups updated in this population cycleInventoryData.Messages— warnings/errors encountered during processingProcessingTime— milliseconds takenLastModifiedTime— ISO 8601 timestamp of last successful update
5.3 Systems OEM properties — Inventory reference
GET /redfish/v1/Systems/{sys} → Oem.Ami contains:
| Property | Notes |
|---|---|
Inventory |
Reference to InventoryCrc URI + current GroupCrc data |
RedfishVersion |
BIOS Redfish version (populated via Host Interface) |
RtpVersion |
BIOS RTP version (populated via Host Interface) |
ManagerBootConfiguration.ManagerBootMode |
PATCH to trigger soft reset: SoftReset / ResetTimeout / None |
6. OEM: Component state actions
6.1 Memory enable/disable
POST /redfish/v1/Systems/{sys}/Memory/{mem}/Actions/AmiBios.ChangeState
Content-Type: application/json
{ "State": "Disabled" }
Response: 204.
6.2 PCIeFunction enable/disable
POST /redfish/v1/Chassis/{ch}/PCIeDevices/{dev}/PCIeFunctions/{fn}/Actions/AmiBios.ChangeState
Content-Type: application/json
{ "State": "Disabled" }
Response: 204.
7. OEM: Storage sensor readings
GET /redfish/v1/Systems/{sys}/Storage/{stor} → Oem.Ami.StorageControllerSensors
Array of sensor objects per storage controller instance. Each entry exposes:
Reading(Number) — current sensor valueReadingType(String) — type of readingReadingUnit(String) — unit
8. OEM: Power and Thermal OwnerLUN
Both GET /redfish/v1/Chassis/{ch}/Power and GET /redfish/v1/Chassis/{ch}/Thermal expose
Oem.Ami.OwnerLUN (Number, read-only) — the IPMI LUN associated with each
temperature/fan/voltage sensor entry. Useful for correlating Redfish sensor readings with IPMI
SDR records.
9. UpdateService
GET /redfish/v1/UpdateService → Oem.Ami.BMC.DualImageConfiguration:
| Property | Description |
|---|---|
ActiveImage |
Currently active BMC image slot |
BootImage |
Image slot BMC boots from |
FirmwareImage1Name / FirmwareImage1Version |
First image slot name + version |
FirmwareImage2Name / FirmwareImage2Version |
Second image slot name + version |
Standard SimpleUpdate action available at /redfish/v1/UpdateService/Actions/UpdateService.SimpleUpdate.
10. Inventory refresh summary
| Approach | Trigger | Latency | Scope |
|---|---|---|---|
| Host reboot | Physical/soft reset | Minutes | All groups |
POST InventoryCrc (groups = 0) |
Explicit API call | Next host inventory push | Selected groups |
Firmware update (SimpleUpdate) |
Explicit API call | Minutes + reboot | Full platform |
| Sensor/telemetry reads | Always live on GET | Immediate | Sensors only |
Key constraint: InventoryCrc POST marks groups stale but does not re-read hardware
directly. Actual inventory data flows from the host to BMC via the Redfish Host Interface
in-band channel, typically during POST/boot. For immediate inventory refresh without a full
reboot, a soft reset via ManagerBootMode: SoftReset PATCH may be sufficient on some
configurations.