xref: /openbmc/bmcweb/features/redfish/schema/dmtf/json-schema/StorageControllerMetrics.v1_0_3.json (revision f2a8e57ede74a8252100b2281e3f4d170aa69391)
1*f2a8e57eSGunnar Mills{
2*f2a8e57eSGunnar Mills    "$id": "http://redfish.dmtf.org/schemas/v1/StorageControllerMetrics.v1_0_3.json",
3*f2a8e57eSGunnar Mills    "$ref": "#/definitions/StorageControllerMetrics",
4*f2a8e57eSGunnar Mills    "$schema": "http://redfish.dmtf.org/schemas/v1/redfish-schema-v1.json",
5*f2a8e57eSGunnar Mills    "copyright": "Copyright 2014-2024 DMTF. For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright",
6*f2a8e57eSGunnar Mills    "definitions": {
7*f2a8e57eSGunnar Mills        "Actions": {
8*f2a8e57eSGunnar Mills            "additionalProperties": false,
9*f2a8e57eSGunnar Mills            "description": "The available actions for this resource.",
10*f2a8e57eSGunnar Mills            "longDescription": "This type shall contain the available actions for this resource.",
11*f2a8e57eSGunnar Mills            "patternProperties": {
12*f2a8e57eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
13*f2a8e57eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
14*f2a8e57eSGunnar Mills                    "type": [
15*f2a8e57eSGunnar Mills                        "array",
16*f2a8e57eSGunnar Mills                        "boolean",
17*f2a8e57eSGunnar Mills                        "integer",
18*f2a8e57eSGunnar Mills                        "number",
19*f2a8e57eSGunnar Mills                        "null",
20*f2a8e57eSGunnar Mills                        "object",
21*f2a8e57eSGunnar Mills                        "string"
22*f2a8e57eSGunnar Mills                    ]
23*f2a8e57eSGunnar Mills                }
24*f2a8e57eSGunnar Mills            },
25*f2a8e57eSGunnar Mills            "properties": {
26*f2a8e57eSGunnar Mills                "Oem": {
27*f2a8e57eSGunnar Mills                    "$ref": "#/definitions/OemActions",
28*f2a8e57eSGunnar Mills                    "description": "The available OEM-specific actions for this resource.",
29*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the available OEM-specific actions for this resource."
30*f2a8e57eSGunnar Mills                }
31*f2a8e57eSGunnar Mills            },
32*f2a8e57eSGunnar Mills            "type": "object"
33*f2a8e57eSGunnar Mills        },
34*f2a8e57eSGunnar Mills        "EGCriticalWarningSummary": {
35*f2a8e57eSGunnar Mills            "additionalProperties": false,
36*f2a8e57eSGunnar Mills            "description": "The Endurance Group critical warnings summary.",
37*f2a8e57eSGunnar Mills            "longDescription": "The object shall contain the NVMe-defined 'Endurance Group Critical Warning Summary'.",
38*f2a8e57eSGunnar Mills            "patternProperties": {
39*f2a8e57eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
40*f2a8e57eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
41*f2a8e57eSGunnar Mills                    "type": [
42*f2a8e57eSGunnar Mills                        "array",
43*f2a8e57eSGunnar Mills                        "boolean",
44*f2a8e57eSGunnar Mills                        "integer",
45*f2a8e57eSGunnar Mills                        "number",
46*f2a8e57eSGunnar Mills                        "null",
47*f2a8e57eSGunnar Mills                        "object",
48*f2a8e57eSGunnar Mills                        "string"
49*f2a8e57eSGunnar Mills                    ]
50*f2a8e57eSGunnar Mills                }
51*f2a8e57eSGunnar Mills            },
52*f2a8e57eSGunnar Mills            "properties": {
53*f2a8e57eSGunnar Mills                "NamespacesInReadOnlyMode": {
54*f2a8e57eSGunnar Mills                    "description": "An indication of whether namespaces in one or more Endurance Groups are in read-only mode not as a result of a change in the write protection state of a namespace.",
55*f2a8e57eSGunnar Mills                    "longDescription": "This property shall indicate whether namespaces in one or more Endurance Groups are in read-only mode not as a result of a change in the write protection state of a namespace.",
56*f2a8e57eSGunnar Mills                    "readonly": true,
57*f2a8e57eSGunnar Mills                    "type": [
58*f2a8e57eSGunnar Mills                        "boolean",
59*f2a8e57eSGunnar Mills                        "null"
60*f2a8e57eSGunnar Mills                    ]
61*f2a8e57eSGunnar Mills                },
62*f2a8e57eSGunnar Mills                "ReliabilityDegraded": {
63*f2a8e57eSGunnar Mills                    "description": "An indication of whether the reliability of one or more Endurance Groups is degraded due to significant media-related errors or any internal error that degrades the NVM subsystem reliability.",
64*f2a8e57eSGunnar Mills                    "longDescription": "This property shall indicate whether the reliability of one or more Endurance Groups is degraded due to significant media-related errors or any internal error that degrades the NVM subsystem reliability.",
65*f2a8e57eSGunnar Mills                    "readonly": true,
66*f2a8e57eSGunnar Mills                    "type": [
67*f2a8e57eSGunnar Mills                        "boolean",
68*f2a8e57eSGunnar Mills                        "null"
69*f2a8e57eSGunnar Mills                    ]
70*f2a8e57eSGunnar Mills                },
71*f2a8e57eSGunnar Mills                "SpareCapacityUnderThreshold": {
72*f2a8e57eSGunnar Mills                    "description": "An indication of whether the available spare capacity of one or more Endurance Groups is below the threshold.",
73*f2a8e57eSGunnar Mills                    "longDescription": "This property shall indicate whether the available spare capacity of one or more Endurance Groups is below the threshold.",
74*f2a8e57eSGunnar Mills                    "readonly": true,
75*f2a8e57eSGunnar Mills                    "type": [
76*f2a8e57eSGunnar Mills                        "boolean",
77*f2a8e57eSGunnar Mills                        "null"
78*f2a8e57eSGunnar Mills                    ]
79*f2a8e57eSGunnar Mills                }
80*f2a8e57eSGunnar Mills            },
81*f2a8e57eSGunnar Mills            "type": "object"
82*f2a8e57eSGunnar Mills        },
83*f2a8e57eSGunnar Mills        "NVMeSMARTMetrics": {
84*f2a8e57eSGunnar Mills            "additionalProperties": false,
85*f2a8e57eSGunnar Mills            "description": "The NVMe SMART metrics.",
86*f2a8e57eSGunnar Mills            "longDescription": "This object shall contain the NVMe SMART metrics as defined by the NVMe SMART/Health Information log page.",
87*f2a8e57eSGunnar Mills            "patternProperties": {
88*f2a8e57eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
89*f2a8e57eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
90*f2a8e57eSGunnar Mills                    "type": [
91*f2a8e57eSGunnar Mills                        "array",
92*f2a8e57eSGunnar Mills                        "boolean",
93*f2a8e57eSGunnar Mills                        "integer",
94*f2a8e57eSGunnar Mills                        "number",
95*f2a8e57eSGunnar Mills                        "null",
96*f2a8e57eSGunnar Mills                        "object",
97*f2a8e57eSGunnar Mills                        "string"
98*f2a8e57eSGunnar Mills                    ]
99*f2a8e57eSGunnar Mills                }
100*f2a8e57eSGunnar Mills            },
101*f2a8e57eSGunnar Mills            "properties": {
102*f2a8e57eSGunnar Mills                "AvailableSparePercent": {
103*f2a8e57eSGunnar Mills                    "description": "The normalized percentage of the remaining spare capacity available.",
104*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Available Spare', which represents the normalized percentage, `0` to `100`, of the remaining spare capacity available.",
105*f2a8e57eSGunnar Mills                    "maximum": 100,
106*f2a8e57eSGunnar Mills                    "minimum": 0,
107*f2a8e57eSGunnar Mills                    "readonly": true,
108*f2a8e57eSGunnar Mills                    "type": [
109*f2a8e57eSGunnar Mills                        "number",
110*f2a8e57eSGunnar Mills                        "null"
111*f2a8e57eSGunnar Mills                    ],
112*f2a8e57eSGunnar Mills                    "units": "%"
113*f2a8e57eSGunnar Mills                },
114*f2a8e57eSGunnar Mills                "AvailableSpareThresholdPercent": {
115*f2a8e57eSGunnar Mills                    "description": "The available spare threshold as a normalized percentage.",
116*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Available Spare Threshold' as a percentage, `0` to `100`.  When the available spare falls below this value, an asynchronous event completion may occur.",
117*f2a8e57eSGunnar Mills                    "maximum": 100,
118*f2a8e57eSGunnar Mills                    "minimum": 0,
119*f2a8e57eSGunnar Mills                    "readonly": true,
120*f2a8e57eSGunnar Mills                    "type": [
121*f2a8e57eSGunnar Mills                        "number",
122*f2a8e57eSGunnar Mills                        "null"
123*f2a8e57eSGunnar Mills                    ],
124*f2a8e57eSGunnar Mills                    "units": "%"
125*f2a8e57eSGunnar Mills                },
126*f2a8e57eSGunnar Mills                "CompositeTemperatureCelsius": {
127*f2a8e57eSGunnar Mills                    "description": "The composite temperature (C).",
128*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the composite temperature in degree Celsius units for this storage controller.  Services shall derive this value from the NVMe-defined 'Composite Temperature', which represents a composite temperature in kelvin units of the controller and namespaces associated with that controller.",
129*f2a8e57eSGunnar Mills                    "readonly": true,
130*f2a8e57eSGunnar Mills                    "type": [
131*f2a8e57eSGunnar Mills                        "number",
132*f2a8e57eSGunnar Mills                        "null"
133*f2a8e57eSGunnar Mills                    ],
134*f2a8e57eSGunnar Mills                    "units": "Cel"
135*f2a8e57eSGunnar Mills                },
136*f2a8e57eSGunnar Mills                "ControllerBusyTimeMinutes": {
137*f2a8e57eSGunnar Mills                    "description": "The total time the controller is busy with I/O commands in minutes.",
138*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Controller Busy Time', which represents the total time the controller is busy with I/O commands in minutes.",
139*f2a8e57eSGunnar Mills                    "readonly": true,
140*f2a8e57eSGunnar Mills                    "type": [
141*f2a8e57eSGunnar Mills                        "integer",
142*f2a8e57eSGunnar Mills                        "null"
143*f2a8e57eSGunnar Mills                    ]
144*f2a8e57eSGunnar Mills                },
145*f2a8e57eSGunnar Mills                "CriticalCompositeTempTimeMinutes": {
146*f2a8e57eSGunnar Mills                    "description": "The amount of time in minutes that the controller has been operational and that the composite temperature has been greater than or equal to the critical composite temperature threshold.",
147*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Critical Composite Temperature Time', which represents the amount of time in minutes that the controller has been operational and that the composite temperature has been greater than or equal to the critical composite temperature threshold.",
148*f2a8e57eSGunnar Mills                    "readonly": true,
149*f2a8e57eSGunnar Mills                    "type": [
150*f2a8e57eSGunnar Mills                        "integer",
151*f2a8e57eSGunnar Mills                        "null"
152*f2a8e57eSGunnar Mills                    ]
153*f2a8e57eSGunnar Mills                },
154*f2a8e57eSGunnar Mills                "CriticalWarnings": {
155*f2a8e57eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/StorageController.json#/definitions/NVMeSMARTCriticalWarnings",
156*f2a8e57eSGunnar Mills                    "description": "The NVMe SMART critical warnings.",
157*f2a8e57eSGunnar Mills                    "longDescription": "The property shall contain the NVMe-defined 'Critical Warning'."
158*f2a8e57eSGunnar Mills                },
159*f2a8e57eSGunnar Mills                "DataUnitsRead": {
160*f2a8e57eSGunnar Mills                    "description": "The number of 512 byte data units the host has read from the controller as part of processing a SMART Data Units Read Command in units of one thousand.",
161*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Data Units Read', which represents the number of 512 byte data units the host has read from the controller as part of processing a SMART Data Units Read Command in units of one thousand.",
162*f2a8e57eSGunnar Mills                    "readonly": true,
163*f2a8e57eSGunnar Mills                    "type": [
164*f2a8e57eSGunnar Mills                        "integer",
165*f2a8e57eSGunnar Mills                        "null"
166*f2a8e57eSGunnar Mills                    ]
167*f2a8e57eSGunnar Mills                },
168*f2a8e57eSGunnar Mills                "DataUnitsWritten": {
169*f2a8e57eSGunnar Mills                    "description": "The number of 512 byte data units the host has written to the controller as part of processing a User Data Out Command in units of one thousand.",
170*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Data Units Written', which represents the number of 512 byte data units the host has written to the controller as part of processing a User Data Out Command in units of one thousand.",
171*f2a8e57eSGunnar Mills                    "readonly": true,
172*f2a8e57eSGunnar Mills                    "type": [
173*f2a8e57eSGunnar Mills                        "integer",
174*f2a8e57eSGunnar Mills                        "null"
175*f2a8e57eSGunnar Mills                    ]
176*f2a8e57eSGunnar Mills                },
177*f2a8e57eSGunnar Mills                "EGCriticalWarningSummary": {
178*f2a8e57eSGunnar Mills                    "$ref": "#/definitions/EGCriticalWarningSummary",
179*f2a8e57eSGunnar Mills                    "description": "The Endurance Group critical warnings summary.",
180*f2a8e57eSGunnar Mills                    "longDescription": "The property shall contain the NVMe-defined 'Endurance Group Critical Warning Summary'."
181*f2a8e57eSGunnar Mills                },
182*f2a8e57eSGunnar Mills                "HostReadCommands": {
183*f2a8e57eSGunnar Mills                    "description": "The number of SMART Host Read Commands completed by the controller.",
184*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Host Read Commands', which represents the number of SMART Host Read Commands completed by the controller.",
185*f2a8e57eSGunnar Mills                    "readonly": true,
186*f2a8e57eSGunnar Mills                    "type": [
187*f2a8e57eSGunnar Mills                        "integer",
188*f2a8e57eSGunnar Mills                        "null"
189*f2a8e57eSGunnar Mills                    ]
190*f2a8e57eSGunnar Mills                },
191*f2a8e57eSGunnar Mills                "HostWriteCommands": {
192*f2a8e57eSGunnar Mills                    "description": "The number of User Data Out Commands completed by the controller.",
193*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Host Write Commands', which represents the number of User Data Out Commands completed by the controller.",
194*f2a8e57eSGunnar Mills                    "readonly": true,
195*f2a8e57eSGunnar Mills                    "type": [
196*f2a8e57eSGunnar Mills                        "integer",
197*f2a8e57eSGunnar Mills                        "null"
198*f2a8e57eSGunnar Mills                    ]
199*f2a8e57eSGunnar Mills                },
200*f2a8e57eSGunnar Mills                "MediaAndDataIntegrityErrors": {
201*f2a8e57eSGunnar Mills                    "description": "The number of occurrences where the controller detected an unrecovered data integrity error.",
202*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Media and Data Integrity Errors', which represents the number of occurrences where the controller detected an unrecovered data integrity error.",
203*f2a8e57eSGunnar Mills                    "readonly": true,
204*f2a8e57eSGunnar Mills                    "type": [
205*f2a8e57eSGunnar Mills                        "integer",
206*f2a8e57eSGunnar Mills                        "null"
207*f2a8e57eSGunnar Mills                    ]
208*f2a8e57eSGunnar Mills                },
209*f2a8e57eSGunnar Mills                "NumberOfErrorInformationLogEntries": {
210*f2a8e57eSGunnar Mills                    "description": "The number of error information log entries over the life of the controller.",
211*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Number of Error Information Log Entries', which represents the number of error information log entries over the life of the controller.",
212*f2a8e57eSGunnar Mills                    "readonly": true,
213*f2a8e57eSGunnar Mills                    "type": [
214*f2a8e57eSGunnar Mills                        "integer",
215*f2a8e57eSGunnar Mills                        "null"
216*f2a8e57eSGunnar Mills                    ]
217*f2a8e57eSGunnar Mills                },
218*f2a8e57eSGunnar Mills                "PercentageUsed": {
219*f2a8e57eSGunnar Mills                    "description": "The percentage of the NVM subsystem life used.",
220*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Percentage Used', which represents a vendor-specific estimate of the percentage of the NVM subsystem life used based on the actual usage and the manufacturer's prediction of NVM life.  A value of `100` indicates that the estimated endurance of the NVM in the NVM subsystem has been consumed, but this may not indicate an NVM subsystem failure.  The value is allowed to exceed `100`.  Percentages greater than `254` shall be represented as `255`.",
221*f2a8e57eSGunnar Mills                    "maximum": 255,
222*f2a8e57eSGunnar Mills                    "minimum": 0,
223*f2a8e57eSGunnar Mills                    "readonly": true,
224*f2a8e57eSGunnar Mills                    "type": [
225*f2a8e57eSGunnar Mills                        "number",
226*f2a8e57eSGunnar Mills                        "null"
227*f2a8e57eSGunnar Mills                    ],
228*f2a8e57eSGunnar Mills                    "units": "%"
229*f2a8e57eSGunnar Mills                },
230*f2a8e57eSGunnar Mills                "PowerCycles": {
231*f2a8e57eSGunnar Mills                    "description": "The number of power cycles.",
232*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Power Cycles', which represents the number of power cycles.",
233*f2a8e57eSGunnar Mills                    "readonly": true,
234*f2a8e57eSGunnar Mills                    "type": [
235*f2a8e57eSGunnar Mills                        "integer",
236*f2a8e57eSGunnar Mills                        "null"
237*f2a8e57eSGunnar Mills                    ]
238*f2a8e57eSGunnar Mills                },
239*f2a8e57eSGunnar Mills                "PowerOnHours": {
240*f2a8e57eSGunnar Mills                    "description": "The number of power-on hours.",
241*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Power On Hours', which represents the number of power-on hours.",
242*f2a8e57eSGunnar Mills                    "readonly": true,
243*f2a8e57eSGunnar Mills                    "type": [
244*f2a8e57eSGunnar Mills                        "number",
245*f2a8e57eSGunnar Mills                        "null"
246*f2a8e57eSGunnar Mills                    ]
247*f2a8e57eSGunnar Mills                },
248*f2a8e57eSGunnar Mills                "TemperatureSensorsCelsius": {
249*f2a8e57eSGunnar Mills                    "description": "The temperature sensor readings in degree Celsius units for this storage controller.",
250*f2a8e57eSGunnar Mills                    "items": {
251*f2a8e57eSGunnar Mills                        "type": [
252*f2a8e57eSGunnar Mills                            "number",
253*f2a8e57eSGunnar Mills                            "null"
254*f2a8e57eSGunnar Mills                        ]
255*f2a8e57eSGunnar Mills                    },
256*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain an array of temperature sensor readings in degree Celsius units for this storage controller.  Services shall derive each array member from the NVMe-defined 'Temperature Sensor' values, which represent a temperature sensor reading in kelvin units.",
257*f2a8e57eSGunnar Mills                    "readonly": true,
258*f2a8e57eSGunnar Mills                    "type": "array",
259*f2a8e57eSGunnar Mills                    "units": "Cel"
260*f2a8e57eSGunnar Mills                },
261*f2a8e57eSGunnar Mills                "ThermalMgmtTemp1TotalTimeSeconds": {
262*f2a8e57eSGunnar Mills                    "description": "The number of seconds the controller transitioned to lower power states or performed vendor-specific thermal-management actions while minimizing the impact on performance in order to attempt to reduce the composite temperature.",
263*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Total Time For Thermal Management Temperature 1', which represents the number of seconds the controller transitioned to lower power states or performed vendor-specific thermal-management actions while minimizing the impact on performance in order to attempt to reduce the composite temperature.",
264*f2a8e57eSGunnar Mills                    "readonly": true,
265*f2a8e57eSGunnar Mills                    "type": [
266*f2a8e57eSGunnar Mills                        "integer",
267*f2a8e57eSGunnar Mills                        "null"
268*f2a8e57eSGunnar Mills                    ]
269*f2a8e57eSGunnar Mills                },
270*f2a8e57eSGunnar Mills                "ThermalMgmtTemp1TransitionCount": {
271*f2a8e57eSGunnar Mills                    "description": "The number of times the controller transitioned to lower power states or performed vendor-specific thermal-management actions while minimizing the impact on performance in order to attempt to reduce the composite temperature.",
272*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Thermal Management Temperature 1 Transition Count', which represents the number of times the controller transitioned to lower power states or performed vendor-specific thermal-management actions while minimizing the impact on performance in order to attempt to reduce the composite temperature.",
273*f2a8e57eSGunnar Mills                    "readonly": true,
274*f2a8e57eSGunnar Mills                    "type": [
275*f2a8e57eSGunnar Mills                        "integer",
276*f2a8e57eSGunnar Mills                        "null"
277*f2a8e57eSGunnar Mills                    ]
278*f2a8e57eSGunnar Mills                },
279*f2a8e57eSGunnar Mills                "ThermalMgmtTemp2TotalTimeSeconds": {
280*f2a8e57eSGunnar Mills                    "description": "The number of seconds the controller transitioned to lower power states or performed vendor-specific thermal-management actions regardless of the impact on performance in order to attempt to reduce the composite temperature.",
281*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Total Time For Thermal Management Temperature 2', which represents the number of seconds the controller transitioned to lower power states or performed vendor-specific thermal-management actions regardless of the impact on performance in order to attempt to reduce the composite temperature.",
282*f2a8e57eSGunnar Mills                    "readonly": true,
283*f2a8e57eSGunnar Mills                    "type": [
284*f2a8e57eSGunnar Mills                        "integer",
285*f2a8e57eSGunnar Mills                        "null"
286*f2a8e57eSGunnar Mills                    ]
287*f2a8e57eSGunnar Mills                },
288*f2a8e57eSGunnar Mills                "ThermalMgmtTemp2TransitionCount": {
289*f2a8e57eSGunnar Mills                    "description": "The number of times the controller transitioned to lower power states or performed vendor-specific thermal-management actions regardless of the impact on performance in order to attempt to reduce the composite temperature.",
290*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Thermal Management Temperature 2 Transition Count', which represents the number of times the controller transitioned to lower power states or performed vendor-specific thermal-management actions regardless of the impact on performance in order to attempt to reduce the composite temperature.",
291*f2a8e57eSGunnar Mills                    "readonly": true,
292*f2a8e57eSGunnar Mills                    "type": [
293*f2a8e57eSGunnar Mills                        "integer",
294*f2a8e57eSGunnar Mills                        "null"
295*f2a8e57eSGunnar Mills                    ]
296*f2a8e57eSGunnar Mills                },
297*f2a8e57eSGunnar Mills                "UnsafeShutdowns": {
298*f2a8e57eSGunnar Mills                    "description": "The number of unsafe shutdowns.",
299*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Unsafe Shutdowns', which represents the number of times when the controller does not report it is safe to power down prior to loss of main power.",
300*f2a8e57eSGunnar Mills                    "readonly": true,
301*f2a8e57eSGunnar Mills                    "type": [
302*f2a8e57eSGunnar Mills                        "integer",
303*f2a8e57eSGunnar Mills                        "null"
304*f2a8e57eSGunnar Mills                    ]
305*f2a8e57eSGunnar Mills                },
306*f2a8e57eSGunnar Mills                "WarningCompositeTempTimeMinutes": {
307*f2a8e57eSGunnar Mills                    "description": "The amount of time in minutes that the controller has been operational and that the composite temperature has been greater than or equal to the warning composite temperature threshold.",
308*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe-defined 'Warning Composite Temperature Time', which represents the amount of time in minutes that the controller has been operational and that the composite temperature has been greater than or equal to the warning composite temperature threshold.",
309*f2a8e57eSGunnar Mills                    "readonly": true,
310*f2a8e57eSGunnar Mills                    "type": [
311*f2a8e57eSGunnar Mills                        "integer",
312*f2a8e57eSGunnar Mills                        "null"
313*f2a8e57eSGunnar Mills                    ]
314*f2a8e57eSGunnar Mills                }
315*f2a8e57eSGunnar Mills            },
316*f2a8e57eSGunnar Mills            "type": "object"
317*f2a8e57eSGunnar Mills        },
318*f2a8e57eSGunnar Mills        "OemActions": {
319*f2a8e57eSGunnar Mills            "additionalProperties": true,
320*f2a8e57eSGunnar Mills            "description": "The available OEM-specific actions for this resource.",
321*f2a8e57eSGunnar Mills            "longDescription": "This type shall contain the available OEM-specific actions for this resource.",
322*f2a8e57eSGunnar Mills            "patternProperties": {
323*f2a8e57eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
324*f2a8e57eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
325*f2a8e57eSGunnar Mills                    "type": [
326*f2a8e57eSGunnar Mills                        "array",
327*f2a8e57eSGunnar Mills                        "boolean",
328*f2a8e57eSGunnar Mills                        "integer",
329*f2a8e57eSGunnar Mills                        "number",
330*f2a8e57eSGunnar Mills                        "null",
331*f2a8e57eSGunnar Mills                        "object",
332*f2a8e57eSGunnar Mills                        "string"
333*f2a8e57eSGunnar Mills                    ]
334*f2a8e57eSGunnar Mills                }
335*f2a8e57eSGunnar Mills            },
336*f2a8e57eSGunnar Mills            "properties": {},
337*f2a8e57eSGunnar Mills            "type": "object"
338*f2a8e57eSGunnar Mills        },
339*f2a8e57eSGunnar Mills        "StorageControllerMetrics": {
340*f2a8e57eSGunnar Mills            "additionalProperties": false,
341*f2a8e57eSGunnar Mills            "description": "The usage and health statistics for a storage controller.",
342*f2a8e57eSGunnar Mills            "longDescription": "The `StorageControllerMetrics` schema shall contain the usage and health statistics for a storage controller in a Redfish implementation.",
343*f2a8e57eSGunnar Mills            "patternProperties": {
344*f2a8e57eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
345*f2a8e57eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
346*f2a8e57eSGunnar Mills                    "type": [
347*f2a8e57eSGunnar Mills                        "array",
348*f2a8e57eSGunnar Mills                        "boolean",
349*f2a8e57eSGunnar Mills                        "integer",
350*f2a8e57eSGunnar Mills                        "number",
351*f2a8e57eSGunnar Mills                        "null",
352*f2a8e57eSGunnar Mills                        "object",
353*f2a8e57eSGunnar Mills                        "string"
354*f2a8e57eSGunnar Mills                    ]
355*f2a8e57eSGunnar Mills                }
356*f2a8e57eSGunnar Mills            },
357*f2a8e57eSGunnar Mills            "properties": {
358*f2a8e57eSGunnar Mills                "@odata.context": {
359*f2a8e57eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/context"
360*f2a8e57eSGunnar Mills                },
361*f2a8e57eSGunnar Mills                "@odata.etag": {
362*f2a8e57eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/etag"
363*f2a8e57eSGunnar Mills                },
364*f2a8e57eSGunnar Mills                "@odata.id": {
365*f2a8e57eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/id"
366*f2a8e57eSGunnar Mills                },
367*f2a8e57eSGunnar Mills                "@odata.type": {
368*f2a8e57eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/type"
369*f2a8e57eSGunnar Mills                },
370*f2a8e57eSGunnar Mills                "Actions": {
371*f2a8e57eSGunnar Mills                    "$ref": "#/definitions/Actions",
372*f2a8e57eSGunnar Mills                    "description": "The available actions for this resource.",
373*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the available actions for this resource."
374*f2a8e57eSGunnar Mills                },
375*f2a8e57eSGunnar Mills                "CorrectableECCErrorCount": {
376*f2a8e57eSGunnar Mills                    "description": "The number of correctable errors for the lifetime of the memory of the storage controller.",
377*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the number of correctable errors for the lifetime of memory of the storage controller.",
378*f2a8e57eSGunnar Mills                    "readonly": true,
379*f2a8e57eSGunnar Mills                    "type": [
380*f2a8e57eSGunnar Mills                        "integer",
381*f2a8e57eSGunnar Mills                        "null"
382*f2a8e57eSGunnar Mills                    ]
383*f2a8e57eSGunnar Mills                },
384*f2a8e57eSGunnar Mills                "CorrectableParityErrorCount": {
385*f2a8e57eSGunnar Mills                    "description": "The number of correctable parity errors for the lifetime of the memory of the storage controller.",
386*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the number of correctable errors for the lifetime of memory of the storage controller.",
387*f2a8e57eSGunnar Mills                    "readonly": true,
388*f2a8e57eSGunnar Mills                    "type": [
389*f2a8e57eSGunnar Mills                        "integer",
390*f2a8e57eSGunnar Mills                        "null"
391*f2a8e57eSGunnar Mills                    ]
392*f2a8e57eSGunnar Mills                },
393*f2a8e57eSGunnar Mills                "Description": {
394*f2a8e57eSGunnar Mills                    "anyOf": [
395*f2a8e57eSGunnar Mills                        {
396*f2a8e57eSGunnar Mills                            "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Description"
397*f2a8e57eSGunnar Mills                        },
398*f2a8e57eSGunnar Mills                        {
399*f2a8e57eSGunnar Mills                            "type": "null"
400*f2a8e57eSGunnar Mills                        }
401*f2a8e57eSGunnar Mills                    ],
402*f2a8e57eSGunnar Mills                    "readonly": true
403*f2a8e57eSGunnar Mills                },
404*f2a8e57eSGunnar Mills                "Id": {
405*f2a8e57eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Id",
406*f2a8e57eSGunnar Mills                    "readonly": true
407*f2a8e57eSGunnar Mills                },
408*f2a8e57eSGunnar Mills                "NVMeSMART": {
409*f2a8e57eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/StorageControllerMetrics.json#/definitions/NVMeSMARTMetrics",
410*f2a8e57eSGunnar Mills                    "description": "The NVMe SMART metrics for this storage controller.",
411*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the NVMe SMART metrics for this storage controller as defined by the NVMe SMART/Health Information log page.  This property shall only be present for NVMe storage controllers."
412*f2a8e57eSGunnar Mills                },
413*f2a8e57eSGunnar Mills                "Name": {
414*f2a8e57eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Name",
415*f2a8e57eSGunnar Mills                    "readonly": true
416*f2a8e57eSGunnar Mills                },
417*f2a8e57eSGunnar Mills                "Oem": {
418*f2a8e57eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
419*f2a8e57eSGunnar Mills                    "description": "The OEM extension property.",
420*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the OEM extensions.  All values for properties that this object contains shall conform to the Redfish Specification-described requirements."
421*f2a8e57eSGunnar Mills                },
422*f2a8e57eSGunnar Mills                "StateChangeCount": {
423*f2a8e57eSGunnar Mills                    "description": "The number of state changes for this storage controller.",
424*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the number of times the `State` property within the `Status` property of the parent `StorageController` resource changed.",
425*f2a8e57eSGunnar Mills                    "readonly": true,
426*f2a8e57eSGunnar Mills                    "type": [
427*f2a8e57eSGunnar Mills                        "integer",
428*f2a8e57eSGunnar Mills                        "null"
429*f2a8e57eSGunnar Mills                    ]
430*f2a8e57eSGunnar Mills                },
431*f2a8e57eSGunnar Mills                "UncorrectableECCErrorCount": {
432*f2a8e57eSGunnar Mills                    "description": "The number of uncorrectable errors for the lifetime of the memory of the storage controller.",
433*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the number of uncorrectable errors for the lifetime of memory of the storage controller.",
434*f2a8e57eSGunnar Mills                    "readonly": true,
435*f2a8e57eSGunnar Mills                    "type": [
436*f2a8e57eSGunnar Mills                        "integer",
437*f2a8e57eSGunnar Mills                        "null"
438*f2a8e57eSGunnar Mills                    ]
439*f2a8e57eSGunnar Mills                },
440*f2a8e57eSGunnar Mills                "UncorrectableParityErrorCount": {
441*f2a8e57eSGunnar Mills                    "description": "The number of uncorrectable parity errors for the lifetime of the memory of the storage controller.",
442*f2a8e57eSGunnar Mills                    "longDescription": "This property shall contain the number of uncorrectable errors for the lifetime of memory of the storage controller.",
443*f2a8e57eSGunnar Mills                    "readonly": true,
444*f2a8e57eSGunnar Mills                    "type": [
445*f2a8e57eSGunnar Mills                        "integer",
446*f2a8e57eSGunnar Mills                        "null"
447*f2a8e57eSGunnar Mills                    ]
448*f2a8e57eSGunnar Mills                }
449*f2a8e57eSGunnar Mills            },
450*f2a8e57eSGunnar Mills            "required": [
451*f2a8e57eSGunnar Mills                "@odata.id",
452*f2a8e57eSGunnar Mills                "@odata.type",
453*f2a8e57eSGunnar Mills                "Id",
454*f2a8e57eSGunnar Mills                "Name"
455*f2a8e57eSGunnar Mills            ],
456*f2a8e57eSGunnar Mills            "type": "object"
457*f2a8e57eSGunnar Mills        }
458*f2a8e57eSGunnar Mills    },
459*f2a8e57eSGunnar Mills    "language": "en",
460*f2a8e57eSGunnar Mills    "owningEntity": "DMTF",
461*f2a8e57eSGunnar Mills    "release": "2023.1",
462*f2a8e57eSGunnar Mills    "title": "#StorageControllerMetrics.v1_0_3.StorageControllerMetrics"
463*f2a8e57eSGunnar Mills}