# 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: ```json { "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:** 1. Authorization check → 401 2. Entity privilege check → 403 3. URI existence → 404 4. Firmware update lock → 403 5. Method allowed → 405 6. Media type → 415 7. Body format → 400 8. PATCH: ETag header → 428/412 9. 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 cycle - `InventoryData.Messages` — warnings/errors encountered during processing - `ProcessingTime` — milliseconds taken - `LastModifiedTime` — 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 value - `ReadingType` (String) — type of reading - `ReadingUnit` (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.