xref: /openbmc/bmcweb/features/redfish/schema/dmtf/json-schema/StorageController.v1_9_1.json (revision d125652e8a30dfeaad88bbfa5b1e04a80610469c)
1*d125652eSGunnar Mills{
2*d125652eSGunnar Mills    "$id": "http://redfish.dmtf.org/schemas/v1/StorageController.v1_9_1.json",
3*d125652eSGunnar Mills    "$ref": "#/definitions/StorageController",
4*d125652eSGunnar Mills    "$schema": "http://redfish.dmtf.org/schemas/v1/redfish-schema-v1.json",
5*d125652eSGunnar Mills    "copyright": "Copyright 2014-2025 DMTF. For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright",
6*d125652eSGunnar Mills    "definitions": {
7*d125652eSGunnar Mills        "ANAAccessState": {
8*d125652eSGunnar Mills            "enum": [
9*d125652eSGunnar Mills                "Optimized",
10*d125652eSGunnar Mills                "NonOptimized",
11*d125652eSGunnar Mills                "Inaccessible",
12*d125652eSGunnar Mills                "PersistentLoss"
13*d125652eSGunnar Mills            ],
14*d125652eSGunnar Mills            "enumDescriptions": {
15*d125652eSGunnar Mills                "Inaccessible": "Namespaces in this group are inaccessible.  Commands are not able to access user data of namespaces in the ANA group.",
16*d125652eSGunnar Mills                "NonOptimized": "Commands processed by a controller that reports this state for an ANA group provide non-optimized access characteristics, such as lower performance or non-optimal use of subsystem resources, to any namespace in the ANA group.",
17*d125652eSGunnar Mills                "Optimized": "Commands processed by a controller provide optimized access to any namespace in the ANA group.",
18*d125652eSGunnar Mills                "PersistentLoss": "The group is persistently inaccessible.  Commands are persistently not able to access user data of namespaces in the ANA group."
19*d125652eSGunnar Mills            },
20*d125652eSGunnar Mills            "type": "string"
21*d125652eSGunnar Mills        },
22*d125652eSGunnar Mills        "ANACharacteristics": {
23*d125652eSGunnar Mills            "additionalProperties": false,
24*d125652eSGunnar Mills            "description": "The ANA characteristics and volume information for a storage controller.",
25*d125652eSGunnar Mills            "longDescription": "This type shall contain the ANA characteristics and volume information for a storage controller.",
26*d125652eSGunnar Mills            "patternProperties": {
27*d125652eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
28*d125652eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
29*d125652eSGunnar Mills                    "type": [
30*d125652eSGunnar Mills                        "array",
31*d125652eSGunnar Mills                        "boolean",
32*d125652eSGunnar Mills                        "integer",
33*d125652eSGunnar Mills                        "number",
34*d125652eSGunnar Mills                        "null",
35*d125652eSGunnar Mills                        "object",
36*d125652eSGunnar Mills                        "string"
37*d125652eSGunnar Mills                    ]
38*d125652eSGunnar Mills                }
39*d125652eSGunnar Mills            },
40*d125652eSGunnar Mills            "properties": {
41*d125652eSGunnar Mills                "AccessState": {
42*d125652eSGunnar Mills                    "anyOf": [
43*d125652eSGunnar Mills                        {
44*d125652eSGunnar Mills                            "$ref": "#/definitions/ANAAccessState"
45*d125652eSGunnar Mills                        },
46*d125652eSGunnar Mills                        {
47*d125652eSGunnar Mills                            "type": "null"
48*d125652eSGunnar Mills                        }
49*d125652eSGunnar Mills                    ],
50*d125652eSGunnar Mills                    "description": "Reported ANA access state.",
51*d125652eSGunnar Mills                    "longDescription": "This property shall contain the reported ANA access state.",
52*d125652eSGunnar Mills                    "readonly": true
53*d125652eSGunnar Mills                },
54*d125652eSGunnar Mills                "Volume": {
55*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/swordfish/v1/Volume.json#/definitions/Volume",
56*d125652eSGunnar Mills                    "description": "The specified volume.",
57*d125652eSGunnar Mills                    "longDescription": "This property shall contain a link to a resource of type `Volume`.",
58*d125652eSGunnar Mills                    "readonly": true
59*d125652eSGunnar Mills                }
60*d125652eSGunnar Mills            },
61*d125652eSGunnar Mills            "type": "object"
62*d125652eSGunnar Mills        },
63*d125652eSGunnar Mills        "Actions": {
64*d125652eSGunnar Mills            "additionalProperties": false,
65*d125652eSGunnar Mills            "description": "The available actions for this resource.",
66*d125652eSGunnar Mills            "longDescription": "This type shall contain the available actions for this resource.",
67*d125652eSGunnar Mills            "patternProperties": {
68*d125652eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
69*d125652eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
70*d125652eSGunnar Mills                    "type": [
71*d125652eSGunnar Mills                        "array",
72*d125652eSGunnar Mills                        "boolean",
73*d125652eSGunnar Mills                        "integer",
74*d125652eSGunnar Mills                        "number",
75*d125652eSGunnar Mills                        "null",
76*d125652eSGunnar Mills                        "object",
77*d125652eSGunnar Mills                        "string"
78*d125652eSGunnar Mills                    ]
79*d125652eSGunnar Mills                }
80*d125652eSGunnar Mills            },
81*d125652eSGunnar Mills            "properties": {
82*d125652eSGunnar Mills                "#StorageController.AttachNamespaces": {
83*d125652eSGunnar Mills                    "$ref": "#/definitions/AttachNamespaces"
84*d125652eSGunnar Mills                },
85*d125652eSGunnar Mills                "#StorageController.DetachNamespaces": {
86*d125652eSGunnar Mills                    "$ref": "#/definitions/DetachNamespaces"
87*d125652eSGunnar Mills                },
88*d125652eSGunnar Mills                "#StorageController.SecurityReceive": {
89*d125652eSGunnar Mills                    "$ref": "#/definitions/SecurityReceive"
90*d125652eSGunnar Mills                },
91*d125652eSGunnar Mills                "#StorageController.SecuritySend": {
92*d125652eSGunnar Mills                    "$ref": "#/definitions/SecuritySend"
93*d125652eSGunnar Mills                },
94*d125652eSGunnar Mills                "Oem": {
95*d125652eSGunnar Mills                    "$ref": "#/definitions/OemActions",
96*d125652eSGunnar Mills                    "description": "The available OEM-specific actions for this resource.",
97*d125652eSGunnar Mills                    "longDescription": "This property shall contain the available OEM-specific actions for this resource."
98*d125652eSGunnar Mills                }
99*d125652eSGunnar Mills            },
100*d125652eSGunnar Mills            "type": "object"
101*d125652eSGunnar Mills        },
102*d125652eSGunnar Mills        "AttachDetachNamespacesResponse": {
103*d125652eSGunnar Mills            "additionalProperties": false,
104*d125652eSGunnar Mills            "description": "The response body for the `AttachNamespaces` and `DetachNamespaces` actions.",
105*d125652eSGunnar Mills            "longDescription": "This type shall contain the properties found in the response body for the `AttachNamespaces` and `DetachNamespaces` actions.",
106*d125652eSGunnar Mills            "patternProperties": {
107*d125652eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
108*d125652eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
109*d125652eSGunnar Mills                    "type": [
110*d125652eSGunnar Mills                        "array",
111*d125652eSGunnar Mills                        "boolean",
112*d125652eSGunnar Mills                        "integer",
113*d125652eSGunnar Mills                        "number",
114*d125652eSGunnar Mills                        "null",
115*d125652eSGunnar Mills                        "object",
116*d125652eSGunnar Mills                        "string"
117*d125652eSGunnar Mills                    ]
118*d125652eSGunnar Mills                }
119*d125652eSGunnar Mills            },
120*d125652eSGunnar Mills            "properties": {
121*d125652eSGunnar Mills                "AttachedVolumes": {
122*d125652eSGunnar Mills                    "description": "An array of links to volumes that are attached to this controller instance.",
123*d125652eSGunnar Mills                    "items": {
124*d125652eSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/swordfish/v1/Volume.json#/definitions/Volume"
125*d125652eSGunnar Mills                    },
126*d125652eSGunnar Mills                    "longDescription": "This property shall contain an array of links to resources of type `Volume` that are attached to this instance of storage controller.",
127*d125652eSGunnar Mills                    "readonly": true,
128*d125652eSGunnar Mills                    "type": "array",
129*d125652eSGunnar Mills                    "versionAdded": "v1_7_0"
130*d125652eSGunnar Mills                },
131*d125652eSGunnar Mills                "AttachedVolumes@odata.count": {
132*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
133*d125652eSGunnar Mills                }
134*d125652eSGunnar Mills            },
135*d125652eSGunnar Mills            "required": [
136*d125652eSGunnar Mills                "AttachedVolumes"
137*d125652eSGunnar Mills            ],
138*d125652eSGunnar Mills            "type": "object"
139*d125652eSGunnar Mills        },
140*d125652eSGunnar Mills        "AttachNamespaces": {
141*d125652eSGunnar Mills            "actionResponse": {
142*d125652eSGunnar Mills                "$ref": "#/definitions/AttachDetachNamespacesResponse"
143*d125652eSGunnar Mills            },
144*d125652eSGunnar Mills            "additionalProperties": false,
145*d125652eSGunnar Mills            "description": "This action attaches referenced namespaces to the storage controller.  Attached namespaces are added to the `AttachedVolumes` property in `Links`.",
146*d125652eSGunnar Mills            "longDescription": "This action shall attach referenced namespaces to the storage controller.  Services shall add the attached namespaces to the `AttachedVolumes` property in `Links`.",
147*d125652eSGunnar Mills            "parameters": {
148*d125652eSGunnar Mills                "Namespaces": {
149*d125652eSGunnar Mills                    "description": "The namespaces to attach to the storage controller.",
150*d125652eSGunnar Mills                    "items": {
151*d125652eSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/swordfish/v1/Volume.json#/definitions/Volume"
152*d125652eSGunnar Mills                    },
153*d125652eSGunnar Mills                    "longDescription": "This parameter shall contain an array of links to resources of type `Volume` that represent the namespaces to attach to the storage controller.",
154*d125652eSGunnar Mills                    "requiredParameter": true,
155*d125652eSGunnar Mills                    "type": "array"
156*d125652eSGunnar Mills                }
157*d125652eSGunnar Mills            },
158*d125652eSGunnar Mills            "patternProperties": {
159*d125652eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
160*d125652eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
161*d125652eSGunnar Mills                    "type": [
162*d125652eSGunnar Mills                        "array",
163*d125652eSGunnar Mills                        "boolean",
164*d125652eSGunnar Mills                        "integer",
165*d125652eSGunnar Mills                        "number",
166*d125652eSGunnar Mills                        "null",
167*d125652eSGunnar Mills                        "object",
168*d125652eSGunnar Mills                        "string"
169*d125652eSGunnar Mills                    ]
170*d125652eSGunnar Mills                }
171*d125652eSGunnar Mills            },
172*d125652eSGunnar Mills            "properties": {
173*d125652eSGunnar Mills                "target": {
174*d125652eSGunnar Mills                    "description": "Link to invoke action",
175*d125652eSGunnar Mills                    "format": "uri-reference",
176*d125652eSGunnar Mills                    "type": "string"
177*d125652eSGunnar Mills                },
178*d125652eSGunnar Mills                "title": {
179*d125652eSGunnar Mills                    "description": "Friendly action name",
180*d125652eSGunnar Mills                    "type": "string"
181*d125652eSGunnar Mills                }
182*d125652eSGunnar Mills            },
183*d125652eSGunnar Mills            "type": "object",
184*d125652eSGunnar Mills            "versionAdded": "v1_7_0"
185*d125652eSGunnar Mills        },
186*d125652eSGunnar Mills        "CacheSummary": {
187*d125652eSGunnar Mills            "additionalProperties": false,
188*d125652eSGunnar Mills            "description": "This type describes the cache memory of the storage controller in general detail.",
189*d125652eSGunnar Mills            "longDescription": "This type shall contain properties that describe the cache memory for a storage controller.",
190*d125652eSGunnar Mills            "patternProperties": {
191*d125652eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
192*d125652eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
193*d125652eSGunnar Mills                    "type": [
194*d125652eSGunnar Mills                        "array",
195*d125652eSGunnar Mills                        "boolean",
196*d125652eSGunnar Mills                        "integer",
197*d125652eSGunnar Mills                        "number",
198*d125652eSGunnar Mills                        "null",
199*d125652eSGunnar Mills                        "object",
200*d125652eSGunnar Mills                        "string"
201*d125652eSGunnar Mills                    ]
202*d125652eSGunnar Mills                }
203*d125652eSGunnar Mills            },
204*d125652eSGunnar Mills            "properties": {
205*d125652eSGunnar Mills                "PersistentCacheSizeMiB": {
206*d125652eSGunnar Mills                    "description": "The portion of the cache memory that is persistent, measured in MiB.",
207*d125652eSGunnar Mills                    "longDescription": "This property shall contain the amount of cache memory that is persistent as measured in mebibytes.  This size shall be less than or equal to the `TotalCacheSizeMiB`.",
208*d125652eSGunnar Mills                    "minimum": 0,
209*d125652eSGunnar Mills                    "readonly": true,
210*d125652eSGunnar Mills                    "type": [
211*d125652eSGunnar Mills                        "integer",
212*d125652eSGunnar Mills                        "null"
213*d125652eSGunnar Mills                    ],
214*d125652eSGunnar Mills                    "units": "MiBy"
215*d125652eSGunnar Mills                },
216*d125652eSGunnar Mills                "Status": {
217*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Status",
218*d125652eSGunnar Mills                    "description": "The status and health of the resource and its subordinate or dependent resources.",
219*d125652eSGunnar Mills                    "longDescription": "This property shall contain any status or health properties of the resource."
220*d125652eSGunnar Mills                },
221*d125652eSGunnar Mills                "TotalCacheSizeMiB": {
222*d125652eSGunnar Mills                    "description": "The total configured cache memory, measured in MiB.",
223*d125652eSGunnar Mills                    "longDescription": "This property shall contain the amount of configured cache memory as measured in mebibytes.",
224*d125652eSGunnar Mills                    "minimum": 0,
225*d125652eSGunnar Mills                    "readonly": true,
226*d125652eSGunnar Mills                    "type": [
227*d125652eSGunnar Mills                        "integer",
228*d125652eSGunnar Mills                        "null"
229*d125652eSGunnar Mills                    ],
230*d125652eSGunnar Mills                    "units": "MiBy"
231*d125652eSGunnar Mills                }
232*d125652eSGunnar Mills            },
233*d125652eSGunnar Mills            "required": [
234*d125652eSGunnar Mills                "TotalCacheSizeMiB"
235*d125652eSGunnar Mills            ],
236*d125652eSGunnar Mills            "type": "object"
237*d125652eSGunnar Mills        },
238*d125652eSGunnar Mills        "DetachNamespaces": {
239*d125652eSGunnar Mills            "actionResponse": {
240*d125652eSGunnar Mills                "$ref": "#/definitions/AttachDetachNamespacesResponse"
241*d125652eSGunnar Mills            },
242*d125652eSGunnar Mills            "additionalProperties": false,
243*d125652eSGunnar Mills            "description": "This action detaches referenced namespaces from the storage controller.  Detached namespaces are removed from the `AttachedVolumes` property in `Links`.",
244*d125652eSGunnar Mills            "longDescription": "This action shall detach referenced namespaces from the storage controller.  Services shall remove the detached namespaces from the `AttachedVolumes` property in `Links`.",
245*d125652eSGunnar Mills            "parameters": {
246*d125652eSGunnar Mills                "Namespaces": {
247*d125652eSGunnar Mills                    "description": "The namespaces to detach from the storage controller.",
248*d125652eSGunnar Mills                    "items": {
249*d125652eSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/swordfish/v1/Volume.json#/definitions/Volume"
250*d125652eSGunnar Mills                    },
251*d125652eSGunnar Mills                    "longDescription": "This parameter shall contain an array of links to resources of type `Volume` that represent the namespaces to detach from the storage controller.",
252*d125652eSGunnar Mills                    "requiredParameter": true,
253*d125652eSGunnar Mills                    "type": "array"
254*d125652eSGunnar Mills                }
255*d125652eSGunnar Mills            },
256*d125652eSGunnar Mills            "patternProperties": {
257*d125652eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
258*d125652eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
259*d125652eSGunnar Mills                    "type": [
260*d125652eSGunnar Mills                        "array",
261*d125652eSGunnar Mills                        "boolean",
262*d125652eSGunnar Mills                        "integer",
263*d125652eSGunnar Mills                        "number",
264*d125652eSGunnar Mills                        "null",
265*d125652eSGunnar Mills                        "object",
266*d125652eSGunnar Mills                        "string"
267*d125652eSGunnar Mills                    ]
268*d125652eSGunnar Mills                }
269*d125652eSGunnar Mills            },
270*d125652eSGunnar Mills            "properties": {
271*d125652eSGunnar Mills                "target": {
272*d125652eSGunnar Mills                    "description": "Link to invoke action",
273*d125652eSGunnar Mills                    "format": "uri-reference",
274*d125652eSGunnar Mills                    "type": "string"
275*d125652eSGunnar Mills                },
276*d125652eSGunnar Mills                "title": {
277*d125652eSGunnar Mills                    "description": "Friendly action name",
278*d125652eSGunnar Mills                    "type": "string"
279*d125652eSGunnar Mills                }
280*d125652eSGunnar Mills            },
281*d125652eSGunnar Mills            "type": "object",
282*d125652eSGunnar Mills            "versionAdded": "v1_7_0"
283*d125652eSGunnar Mills        },
284*d125652eSGunnar Mills        "Links": {
285*d125652eSGunnar Mills            "additionalProperties": false,
286*d125652eSGunnar Mills            "description": "The links to other resources that are related to this resource.",
287*d125652eSGunnar Mills            "longDescription": "This Redfish Specification-described type shall contain links to resources that are related to but are not contained by, or subordinate to, this resource.",
288*d125652eSGunnar Mills            "patternProperties": {
289*d125652eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
290*d125652eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
291*d125652eSGunnar Mills                    "type": [
292*d125652eSGunnar Mills                        "array",
293*d125652eSGunnar Mills                        "boolean",
294*d125652eSGunnar Mills                        "integer",
295*d125652eSGunnar Mills                        "number",
296*d125652eSGunnar Mills                        "null",
297*d125652eSGunnar Mills                        "object",
298*d125652eSGunnar Mills                        "string"
299*d125652eSGunnar Mills                    ]
300*d125652eSGunnar Mills                }
301*d125652eSGunnar Mills            },
302*d125652eSGunnar Mills            "properties": {
303*d125652eSGunnar Mills                "AttachedVolumes": {
304*d125652eSGunnar Mills                    "description": "An array of links to volumes that are attached to this controller instance.",
305*d125652eSGunnar Mills                    "items": {
306*d125652eSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/swordfish/v1/Volume.json#/definitions/Volume"
307*d125652eSGunnar Mills                    },
308*d125652eSGunnar Mills                    "longDescription": "This property shall contain an array of links to resources of type `Volume` that are attached to this instance of storage controller.",
309*d125652eSGunnar Mills                    "readonly": true,
310*d125652eSGunnar Mills                    "type": "array"
311*d125652eSGunnar Mills                },
312*d125652eSGunnar Mills                "AttachedVolumes@odata.count": {
313*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
314*d125652eSGunnar Mills                },
315*d125652eSGunnar Mills                "Batteries": {
316*d125652eSGunnar Mills                    "description": "The batteries that provide power to this storage controller during a power-loss event.",
317*d125652eSGunnar Mills                    "items": {
318*d125652eSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/Battery.json#/definitions/Battery"
319*d125652eSGunnar Mills                    },
320*d125652eSGunnar Mills                    "longDescription": "This property shall contain an array of links to resources of type `Battery` that represent the batteries that provide power to this storage controller during a power-loss event, such as with battery-backed RAID controllers.  This property shall not be present if the batteries power the containing chassis as a whole rather than the individual storage controller.",
321*d125652eSGunnar Mills                    "readonly": true,
322*d125652eSGunnar Mills                    "type": "array",
323*d125652eSGunnar Mills                    "versionAdded": "v1_6_0"
324*d125652eSGunnar Mills                },
325*d125652eSGunnar Mills                "Batteries@odata.count": {
326*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
327*d125652eSGunnar Mills                },
328*d125652eSGunnar Mills                "Endpoints": {
329*d125652eSGunnar Mills                    "description": "An array of links to the endpoints that connect to this controller.",
330*d125652eSGunnar Mills                    "items": {
331*d125652eSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/Endpoint.json#/definitions/Endpoint"
332*d125652eSGunnar Mills                    },
333*d125652eSGunnar Mills                    "longDescription": "This property shall contain an array of links to resources of type `Endpoint` with which this controller is associated.",
334*d125652eSGunnar Mills                    "readonly": true,
335*d125652eSGunnar Mills                    "type": "array"
336*d125652eSGunnar Mills                },
337*d125652eSGunnar Mills                "Endpoints@odata.count": {
338*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
339*d125652eSGunnar Mills                },
340*d125652eSGunnar Mills                "NVMeDiscoveredSubsystems": {
341*d125652eSGunnar Mills                    "description": "The NVMe subsystems discovered by this discovery controller.",
342*d125652eSGunnar Mills                    "items": {
343*d125652eSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/Storage.json#/definitions/Storage"
344*d125652eSGunnar Mills                    },
345*d125652eSGunnar Mills                    "longDescription": "This property shall contain an array of links to resources of type `Storage` that represent the NVMe subsystems discovered by this discovery controller.  This property shall only be present if `ControllerType` in `NVMeControllerProperties` contains `Discovery`.",
346*d125652eSGunnar Mills                    "readonly": true,
347*d125652eSGunnar Mills                    "type": "array",
348*d125652eSGunnar Mills                    "versionAdded": "v1_7_0"
349*d125652eSGunnar Mills                },
350*d125652eSGunnar Mills                "NVMeDiscoveredSubsystems@odata.count": {
351*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
352*d125652eSGunnar Mills                },
353*d125652eSGunnar Mills                "NetworkDeviceFunctions": {
354*d125652eSGunnar Mills                    "description": "The network device functions that provide connectivity to this controller.",
355*d125652eSGunnar Mills                    "items": {
356*d125652eSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/NetworkDeviceFunction.json#/definitions/NetworkDeviceFunction"
357*d125652eSGunnar Mills                    },
358*d125652eSGunnar Mills                    "longDescription": "This property shall contain an array of links to resources of type `NetworkDeviceFunction` that represent the devices that provide connectivity to this controller.",
359*d125652eSGunnar Mills                    "readonly": true,
360*d125652eSGunnar Mills                    "type": "array",
361*d125652eSGunnar Mills                    "versionAdded": "v1_3_0"
362*d125652eSGunnar Mills                },
363*d125652eSGunnar Mills                "NetworkDeviceFunctions@odata.count": {
364*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
365*d125652eSGunnar Mills                },
366*d125652eSGunnar Mills                "Oem": {
367*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
368*d125652eSGunnar Mills                    "description": "The OEM extension property.",
369*d125652eSGunnar Mills                    "longDescription": "This property shall contain the OEM extensions.  All values for properties contained in this object shall conform to the Redfish Specification-described requirements."
370*d125652eSGunnar Mills                },
371*d125652eSGunnar Mills                "PCIeFunctions": {
372*d125652eSGunnar Mills                    "description": "An array of links to the PCIe functions that the storage controller produces.",
373*d125652eSGunnar Mills                    "items": {
374*d125652eSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/PCIeFunction.json#/definitions/PCIeFunction"
375*d125652eSGunnar Mills                    },
376*d125652eSGunnar Mills                    "longDescription": "This property shall contain an array of links to resources of type `PCIeFunction` that represent the PCIe functions associated with this resource.",
377*d125652eSGunnar Mills                    "readonly": true,
378*d125652eSGunnar Mills                    "type": "array"
379*d125652eSGunnar Mills                },
380*d125652eSGunnar Mills                "PCIeFunctions@odata.count": {
381*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
382*d125652eSGunnar Mills                }
383*d125652eSGunnar Mills            },
384*d125652eSGunnar Mills            "type": "object"
385*d125652eSGunnar Mills        },
386*d125652eSGunnar Mills        "NVMeControllerAttributes": {
387*d125652eSGunnar Mills            "additionalProperties": false,
388*d125652eSGunnar Mills            "description": "The NVMe controller attributes for a storage controller.",
389*d125652eSGunnar Mills            "longDescription": "This type shall contain NVMe controller attributes for a storage controller.",
390*d125652eSGunnar Mills            "patternProperties": {
391*d125652eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
392*d125652eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
393*d125652eSGunnar Mills                    "type": [
394*d125652eSGunnar Mills                        "array",
395*d125652eSGunnar Mills                        "boolean",
396*d125652eSGunnar Mills                        "integer",
397*d125652eSGunnar Mills                        "number",
398*d125652eSGunnar Mills                        "null",
399*d125652eSGunnar Mills                        "object",
400*d125652eSGunnar Mills                        "string"
401*d125652eSGunnar Mills                    ]
402*d125652eSGunnar Mills                }
403*d125652eSGunnar Mills            },
404*d125652eSGunnar Mills            "properties": {
405*d125652eSGunnar Mills                "ReportsNamespaceGranularity": {
406*d125652eSGunnar Mills                    "description": "Indicates whether or not the controller supports reporting of Namespace Granularity.",
407*d125652eSGunnar Mills                    "longDescription": "This property shall indicate whether or not the controller supports reporting of Namespace Granularity.",
408*d125652eSGunnar Mills                    "readonly": true,
409*d125652eSGunnar Mills                    "type": [
410*d125652eSGunnar Mills                        "boolean",
411*d125652eSGunnar Mills                        "null"
412*d125652eSGunnar Mills                    ]
413*d125652eSGunnar Mills                },
414*d125652eSGunnar Mills                "ReportsUUIDList": {
415*d125652eSGunnar Mills                    "description": "Indicates whether or not the controller supports reporting of a UUID list.",
416*d125652eSGunnar Mills                    "longDescription": "This property shall indicate whether or not the controller supports reporting of a UUID list.",
417*d125652eSGunnar Mills                    "readonly": true,
418*d125652eSGunnar Mills                    "type": [
419*d125652eSGunnar Mills                        "boolean",
420*d125652eSGunnar Mills                        "null"
421*d125652eSGunnar Mills                    ]
422*d125652eSGunnar Mills                },
423*d125652eSGunnar Mills                "Supports128BitHostId": {
424*d125652eSGunnar Mills                    "description": "Indicates whether or not the controller supports a 128-bit Host Identifier.",
425*d125652eSGunnar Mills                    "longDescription": "This property shall indicate whether or not the controller supports a 128-bit Host Identifier.",
426*d125652eSGunnar Mills                    "readonly": true,
427*d125652eSGunnar Mills                    "type": [
428*d125652eSGunnar Mills                        "boolean",
429*d125652eSGunnar Mills                        "null"
430*d125652eSGunnar Mills                    ]
431*d125652eSGunnar Mills                },
432*d125652eSGunnar Mills                "SupportsEnduranceGroups": {
433*d125652eSGunnar Mills                    "description": "Indicates whether or not the controller supports Endurance Groups.",
434*d125652eSGunnar Mills                    "longDescription": "This property shall indicate whether or not the controller supports Endurance Groups.",
435*d125652eSGunnar Mills                    "readonly": true,
436*d125652eSGunnar Mills                    "type": [
437*d125652eSGunnar Mills                        "boolean",
438*d125652eSGunnar Mills                        "null"
439*d125652eSGunnar Mills                    ]
440*d125652eSGunnar Mills                },
441*d125652eSGunnar Mills                "SupportsExceedingPowerOfNonOperationalState": {
442*d125652eSGunnar Mills                    "description": "Indicates whether or not the controller supports exceeding Power of Non-Operational State in order to execute controller-initiated background operations in a non-operational power state.",
443*d125652eSGunnar Mills                    "longDescription": "This property shall indicate whether or not the controller supports exceeding Power of Non-Operational State in order to execute controller-initiated background operations in a non-operational power state.",
444*d125652eSGunnar Mills                    "readonly": true,
445*d125652eSGunnar Mills                    "type": [
446*d125652eSGunnar Mills                        "boolean",
447*d125652eSGunnar Mills                        "null"
448*d125652eSGunnar Mills                    ]
449*d125652eSGunnar Mills                },
450*d125652eSGunnar Mills                "SupportsNVMSets": {
451*d125652eSGunnar Mills                    "description": "Indicates whether or not the controller supports NVM Sets.",
452*d125652eSGunnar Mills                    "longDescription": "This property shall indicate whether or not the controller supports NVM Sets.",
453*d125652eSGunnar Mills                    "readonly": true,
454*d125652eSGunnar Mills                    "type": [
455*d125652eSGunnar Mills                        "boolean",
456*d125652eSGunnar Mills                        "null"
457*d125652eSGunnar Mills                    ]
458*d125652eSGunnar Mills                },
459*d125652eSGunnar Mills                "SupportsPredictableLatencyMode": {
460*d125652eSGunnar Mills                    "description": "Indicates whether or not the controller supports Predictable Latency Mode.",
461*d125652eSGunnar Mills                    "longDescription": "This property shall indicate whether or not the controller supports Predictable Latency Mode.",
462*d125652eSGunnar Mills                    "readonly": true,
463*d125652eSGunnar Mills                    "type": [
464*d125652eSGunnar Mills                        "boolean",
465*d125652eSGunnar Mills                        "null"
466*d125652eSGunnar Mills                    ]
467*d125652eSGunnar Mills                },
468*d125652eSGunnar Mills                "SupportsReadRecoveryLevels": {
469*d125652eSGunnar Mills                    "description": "Indicates whether or not the controller supports Read Recovery Levels.",
470*d125652eSGunnar Mills                    "longDescription": "This property shall indicate whether or not the controller supports Read Recovery Levels.",
471*d125652eSGunnar Mills                    "readonly": true,
472*d125652eSGunnar Mills                    "type": [
473*d125652eSGunnar Mills                        "boolean",
474*d125652eSGunnar Mills                        "null"
475*d125652eSGunnar Mills                    ]
476*d125652eSGunnar Mills                },
477*d125652eSGunnar Mills                "SupportsReservations": {
478*d125652eSGunnar Mills                    "description": "Indicates if the controller supports reservations.",
479*d125652eSGunnar Mills                    "longDescription": "This property shall indicate if the controller supports reservations.",
480*d125652eSGunnar Mills                    "readonly": true,
481*d125652eSGunnar Mills                    "type": [
482*d125652eSGunnar Mills                        "boolean",
483*d125652eSGunnar Mills                        "null"
484*d125652eSGunnar Mills                    ],
485*d125652eSGunnar Mills                    "versionAdded": "v1_2_0"
486*d125652eSGunnar Mills                },
487*d125652eSGunnar Mills                "SupportsSQAssociations": {
488*d125652eSGunnar Mills                    "description": "Indicates whether or not the controller supports SQ Associations.",
489*d125652eSGunnar Mills                    "longDescription": "This property shall indicate whether or not the controller supports SQ Associations.",
490*d125652eSGunnar Mills                    "readonly": true,
491*d125652eSGunnar Mills                    "type": [
492*d125652eSGunnar Mills                        "boolean",
493*d125652eSGunnar Mills                        "null"
494*d125652eSGunnar Mills                    ]
495*d125652eSGunnar Mills                },
496*d125652eSGunnar Mills                "SupportsTrafficBasedKeepAlive": {
497*d125652eSGunnar Mills                    "description": "Indicates whether or not the controller supports restarting the Keep Alive Timer if traffic is processed from an admin command or I/O during a Keep Alive Timeout interval.",
498*d125652eSGunnar Mills                    "longDescription": "This property shall indicate whether or not the controller supports restarting the Keep Alive Timer if traffic is processed from an admin command or I/O during a Keep Alive Timeout interval.",
499*d125652eSGunnar Mills                    "readonly": true,
500*d125652eSGunnar Mills                    "type": [
501*d125652eSGunnar Mills                        "boolean",
502*d125652eSGunnar Mills                        "null"
503*d125652eSGunnar Mills                    ]
504*d125652eSGunnar Mills                }
505*d125652eSGunnar Mills            },
506*d125652eSGunnar Mills            "type": "object"
507*d125652eSGunnar Mills        },
508*d125652eSGunnar Mills        "NVMeControllerProperties": {
509*d125652eSGunnar Mills            "additionalProperties": false,
510*d125652eSGunnar Mills            "description": "NVMe-related properties for a storage controller.",
511*d125652eSGunnar Mills            "longDescription": "This type shall contain NVMe-related properties for a storage controller.",
512*d125652eSGunnar Mills            "patternProperties": {
513*d125652eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
514*d125652eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
515*d125652eSGunnar Mills                    "type": [
516*d125652eSGunnar Mills                        "array",
517*d125652eSGunnar Mills                        "boolean",
518*d125652eSGunnar Mills                        "integer",
519*d125652eSGunnar Mills                        "number",
520*d125652eSGunnar Mills                        "null",
521*d125652eSGunnar Mills                        "object",
522*d125652eSGunnar Mills                        "string"
523*d125652eSGunnar Mills                    ]
524*d125652eSGunnar Mills                }
525*d125652eSGunnar Mills            },
526*d125652eSGunnar Mills            "properties": {
527*d125652eSGunnar Mills                "ANACharacteristics": {
528*d125652eSGunnar Mills                    "description": "The ANA characteristics and volume information.",
529*d125652eSGunnar Mills                    "items": {
530*d125652eSGunnar Mills                        "anyOf": [
531*d125652eSGunnar Mills                            {
532*d125652eSGunnar Mills                                "$ref": "#/definitions/ANACharacteristics"
533*d125652eSGunnar Mills                            },
534*d125652eSGunnar Mills                            {
535*d125652eSGunnar Mills                                "type": "null"
536*d125652eSGunnar Mills                            }
537*d125652eSGunnar Mills                        ]
538*d125652eSGunnar Mills                    },
539*d125652eSGunnar Mills                    "longDescription": "This property shall contain the ANA characteristics and volume information.",
540*d125652eSGunnar Mills                    "type": "array"
541*d125652eSGunnar Mills                },
542*d125652eSGunnar Mills                "AllocatedCompletionQueues": {
543*d125652eSGunnar Mills                    "description": "The number of I/O completion queues allocated to this NVMe I/O controller.",
544*d125652eSGunnar Mills                    "longDescription": "This property shall contain the number of I/O completion queues allocated to this NVMe I/O controller.",
545*d125652eSGunnar Mills                    "readonly": true,
546*d125652eSGunnar Mills                    "type": [
547*d125652eSGunnar Mills                        "integer",
548*d125652eSGunnar Mills                        "null"
549*d125652eSGunnar Mills                    ],
550*d125652eSGunnar Mills                    "versionAdded": "v1_4_0"
551*d125652eSGunnar Mills                },
552*d125652eSGunnar Mills                "AllocatedSubmissionQueues": {
553*d125652eSGunnar Mills                    "description": "The number of I/O submission queues allocated to this NVMe I/O controller.",
554*d125652eSGunnar Mills                    "longDescription": "This property shall contain the number of I/O submission queues allocated to this NVMe I/O controller.",
555*d125652eSGunnar Mills                    "readonly": true,
556*d125652eSGunnar Mills                    "type": [
557*d125652eSGunnar Mills                        "integer",
558*d125652eSGunnar Mills                        "null"
559*d125652eSGunnar Mills                    ],
560*d125652eSGunnar Mills                    "versionAdded": "v1_4_0"
561*d125652eSGunnar Mills                },
562*d125652eSGunnar Mills                "ControllerType": {
563*d125652eSGunnar Mills                    "anyOf": [
564*d125652eSGunnar Mills                        {
565*d125652eSGunnar Mills                            "$ref": "#/definitions/NVMeControllerType"
566*d125652eSGunnar Mills                        },
567*d125652eSGunnar Mills                        {
568*d125652eSGunnar Mills                            "type": "null"
569*d125652eSGunnar Mills                        }
570*d125652eSGunnar Mills                    ],
571*d125652eSGunnar Mills                    "description": "The type of NVMe controller.",
572*d125652eSGunnar Mills                    "longDescription": "This property shall contain the type of NVMe controller.",
573*d125652eSGunnar Mills                    "readonly": true
574*d125652eSGunnar Mills                },
575*d125652eSGunnar Mills                "DiscoveryTransportServiceId": {
576*d125652eSGunnar Mills                    "description": "The NVMe discovery transport service identifier for the discovery controller.",
577*d125652eSGunnar Mills                    "longDescription": "This property shall contain the NVMe discovery transport service identifier for the discovery controller.  This property shall only be present if `ControllerType` contains `Discovery`.  For NVMe/TCP, the default value should be `8009`.",
578*d125652eSGunnar Mills                    "readonly": true,
579*d125652eSGunnar Mills                    "type": [
580*d125652eSGunnar Mills                        "integer",
581*d125652eSGunnar Mills                        "null"
582*d125652eSGunnar Mills                    ],
583*d125652eSGunnar Mills                    "versionAdded": "v1_9_0"
584*d125652eSGunnar Mills                },
585*d125652eSGunnar Mills                "MaxAttachedNamespaces": {
586*d125652eSGunnar Mills                    "description": "The maximum number of attached namespaces allowed by this NVMe I/O controller.",
587*d125652eSGunnar Mills                    "longDescription": "This property shall contain the maximum number of attached namespaces allowed by this NVMe I/O controller.",
588*d125652eSGunnar Mills                    "minimum": 0,
589*d125652eSGunnar Mills                    "readonly": true,
590*d125652eSGunnar Mills                    "type": [
591*d125652eSGunnar Mills                        "integer",
592*d125652eSGunnar Mills                        "null"
593*d125652eSGunnar Mills                    ],
594*d125652eSGunnar Mills                    "versionAdded": "v1_8_0"
595*d125652eSGunnar Mills                },
596*d125652eSGunnar Mills                "MaxQueueSize": {
597*d125652eSGunnar Mills                    "description": "The maximum individual queue size that an NVMe I/O controller supports.",
598*d125652eSGunnar Mills                    "longDescription": "This property shall contain the maximum individual queue entry size supported per queue.  This is a zero-based value, where the minimum value is one, indicating two entries.  For PCIe, this applies to both submission and completion queues.  For NVMe-oF, this applies only to submission queues.",
599*d125652eSGunnar Mills                    "readonly": true,
600*d125652eSGunnar Mills                    "type": [
601*d125652eSGunnar Mills                        "integer",
602*d125652eSGunnar Mills                        "null"
603*d125652eSGunnar Mills                    ]
604*d125652eSGunnar Mills                },
605*d125652eSGunnar Mills                "NVMeControllerAttributes": {
606*d125652eSGunnar Mills                    "anyOf": [
607*d125652eSGunnar Mills                        {
608*d125652eSGunnar Mills                            "$ref": "#/definitions/NVMeControllerAttributes"
609*d125652eSGunnar Mills                        },
610*d125652eSGunnar Mills                        {
611*d125652eSGunnar Mills                            "type": "null"
612*d125652eSGunnar Mills                        }
613*d125652eSGunnar Mills                    ],
614*d125652eSGunnar Mills                    "description": "The NVMe controller attributes.",
615*d125652eSGunnar Mills                    "longDescription": "This property shall contain NVMe controller attributes."
616*d125652eSGunnar Mills                },
617*d125652eSGunnar Mills                "NVMeSMARTCriticalWarnings": {
618*d125652eSGunnar Mills                    "anyOf": [
619*d125652eSGunnar Mills                        {
620*d125652eSGunnar Mills                            "$ref": "#/definitions/NVMeSMARTCriticalWarnings"
621*d125652eSGunnar Mills                        },
622*d125652eSGunnar Mills                        {
623*d125652eSGunnar Mills                            "type": "null"
624*d125652eSGunnar Mills                        }
625*d125652eSGunnar Mills                    ],
626*d125652eSGunnar Mills                    "description": "The NVMe SMART Critical Warnings for this storage controller.  This property contains possible triggers for the predictive drive failure warning for the corresponding drive.",
627*d125652eSGunnar Mills                    "longDescription": "This property shall contain the NVMe SMART Critical Warnings for this storage controller.  This property can contain possible triggers for the predictive drive failure warning for the corresponding drive."
628*d125652eSGunnar Mills                },
629*d125652eSGunnar Mills                "NVMeVersion": {
630*d125652eSGunnar Mills                    "description": "The version of the NVMe Base Specification supported.",
631*d125652eSGunnar Mills                    "longDescription": "This property shall contain the version of the NVMe Base Specification supported.",
632*d125652eSGunnar Mills                    "readonly": true,
633*d125652eSGunnar Mills                    "type": [
634*d125652eSGunnar Mills                        "string",
635*d125652eSGunnar Mills                        "null"
636*d125652eSGunnar Mills                    ]
637*d125652eSGunnar Mills                }
638*d125652eSGunnar Mills            },
639*d125652eSGunnar Mills            "type": "object"
640*d125652eSGunnar Mills        },
641*d125652eSGunnar Mills        "NVMeControllerType": {
642*d125652eSGunnar Mills            "enum": [
643*d125652eSGunnar Mills                "Admin",
644*d125652eSGunnar Mills                "Discovery",
645*d125652eSGunnar Mills                "IO"
646*d125652eSGunnar Mills            ],
647*d125652eSGunnar Mills            "enumDescriptions": {
648*d125652eSGunnar Mills                "Admin": "The NVMe controller is an admin controller.",
649*d125652eSGunnar Mills                "Discovery": "The NVMe controller is a discovery controller.",
650*d125652eSGunnar Mills                "IO": "The NVMe controller is an I/O controller."
651*d125652eSGunnar Mills            },
652*d125652eSGunnar Mills            "type": "string"
653*d125652eSGunnar Mills        },
654*d125652eSGunnar Mills        "NVMeSMARTCriticalWarnings": {
655*d125652eSGunnar Mills            "additionalProperties": false,
656*d125652eSGunnar Mills            "description": "The NVMe SMART Critical Warnings for a storage controller.",
657*d125652eSGunnar Mills            "longDescription": "This type shall contain the NVMe SMART Critical Warnings for a storage controller.",
658*d125652eSGunnar Mills            "patternProperties": {
659*d125652eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
660*d125652eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
661*d125652eSGunnar Mills                    "type": [
662*d125652eSGunnar Mills                        "array",
663*d125652eSGunnar Mills                        "boolean",
664*d125652eSGunnar Mills                        "integer",
665*d125652eSGunnar Mills                        "number",
666*d125652eSGunnar Mills                        "null",
667*d125652eSGunnar Mills                        "object",
668*d125652eSGunnar Mills                        "string"
669*d125652eSGunnar Mills                    ]
670*d125652eSGunnar Mills                }
671*d125652eSGunnar Mills            },
672*d125652eSGunnar Mills            "properties": {
673*d125652eSGunnar Mills                "MediaInReadOnly": {
674*d125652eSGunnar Mills                    "description": "Indicates the media has been placed in read-only mode.",
675*d125652eSGunnar Mills                    "longDescription": "This property shall indicate the media has been placed in read-only mode.  This is not set when the read-only condition of the media is a result of a change in the write protection state of a namespace.",
676*d125652eSGunnar Mills                    "readonly": true,
677*d125652eSGunnar Mills                    "type": [
678*d125652eSGunnar Mills                        "boolean",
679*d125652eSGunnar Mills                        "null"
680*d125652eSGunnar Mills                    ]
681*d125652eSGunnar Mills                },
682*d125652eSGunnar Mills                "OverallSubsystemDegraded": {
683*d125652eSGunnar Mills                    "description": "Indicates that the NVM subsystem reliability has been compromised.",
684*d125652eSGunnar Mills                    "longDescription": "This property shall indicate that the NVM subsystem reliability has been compromised.",
685*d125652eSGunnar Mills                    "readonly": true,
686*d125652eSGunnar Mills                    "type": [
687*d125652eSGunnar Mills                        "boolean",
688*d125652eSGunnar Mills                        "null"
689*d125652eSGunnar Mills                    ]
690*d125652eSGunnar Mills                },
691*d125652eSGunnar Mills                "PMRUnreliable": {
692*d125652eSGunnar Mills                    "description": "The Persistent Memory Region has become unreliable.",
693*d125652eSGunnar Mills                    "longDescription": "This property shall indicate that the Persistent Memory Region has become unreliable.  PCIe memory reads can return invalid data or generate poisoned PCIe TLP(s).  Persistent Memory Region memory writes might not update memory or might update memory with undefined data.  The Persistent Memory Region might also have become non-persistent.",
694*d125652eSGunnar Mills                    "readonly": true,
695*d125652eSGunnar Mills                    "type": [
696*d125652eSGunnar Mills                        "boolean",
697*d125652eSGunnar Mills                        "null"
698*d125652eSGunnar Mills                    ]
699*d125652eSGunnar Mills                },
700*d125652eSGunnar Mills                "PowerBackupFailed": {
701*d125652eSGunnar Mills                    "description": "Indicates that the volatile memory backup device has failed.",
702*d125652eSGunnar Mills                    "longDescription": "This property shall indicate that the volatile memory backup device has failed.",
703*d125652eSGunnar Mills                    "readonly": true,
704*d125652eSGunnar Mills                    "type": [
705*d125652eSGunnar Mills                        "boolean",
706*d125652eSGunnar Mills                        "null"
707*d125652eSGunnar Mills                    ]
708*d125652eSGunnar Mills                },
709*d125652eSGunnar Mills                "SpareCapacityWornOut": {
710*d125652eSGunnar Mills                    "description": "Indicates that the available spare capacity has fallen below the threshold.",
711*d125652eSGunnar Mills                    "longDescription": "This property shall indicate that the available spare capacity has fallen below the threshold.",
712*d125652eSGunnar Mills                    "readonly": true,
713*d125652eSGunnar Mills                    "type": [
714*d125652eSGunnar Mills                        "boolean",
715*d125652eSGunnar Mills                        "null"
716*d125652eSGunnar Mills                    ]
717*d125652eSGunnar Mills                }
718*d125652eSGunnar Mills            },
719*d125652eSGunnar Mills            "type": "object"
720*d125652eSGunnar Mills        },
721*d125652eSGunnar Mills        "OemActions": {
722*d125652eSGunnar Mills            "additionalProperties": true,
723*d125652eSGunnar Mills            "description": "The available OEM-specific actions for this resource.",
724*d125652eSGunnar Mills            "longDescription": "This type shall contain the available OEM-specific actions for this resource.",
725*d125652eSGunnar Mills            "patternProperties": {
726*d125652eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
727*d125652eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
728*d125652eSGunnar Mills                    "type": [
729*d125652eSGunnar Mills                        "array",
730*d125652eSGunnar Mills                        "boolean",
731*d125652eSGunnar Mills                        "integer",
732*d125652eSGunnar Mills                        "number",
733*d125652eSGunnar Mills                        "null",
734*d125652eSGunnar Mills                        "object",
735*d125652eSGunnar Mills                        "string"
736*d125652eSGunnar Mills                    ]
737*d125652eSGunnar Mills                }
738*d125652eSGunnar Mills            },
739*d125652eSGunnar Mills            "properties": {},
740*d125652eSGunnar Mills            "type": "object"
741*d125652eSGunnar Mills        },
742*d125652eSGunnar Mills        "Rates": {
743*d125652eSGunnar Mills            "additionalProperties": false,
744*d125652eSGunnar Mills            "description": "This type describes the various controller rates used for processes such as volume rebuild or consistency checks.",
745*d125652eSGunnar Mills            "longDescription": "This type shall contain all the rate settings available on the controller.",
746*d125652eSGunnar Mills            "patternProperties": {
747*d125652eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
748*d125652eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
749*d125652eSGunnar Mills                    "type": [
750*d125652eSGunnar Mills                        "array",
751*d125652eSGunnar Mills                        "boolean",
752*d125652eSGunnar Mills                        "integer",
753*d125652eSGunnar Mills                        "number",
754*d125652eSGunnar Mills                        "null",
755*d125652eSGunnar Mills                        "object",
756*d125652eSGunnar Mills                        "string"
757*d125652eSGunnar Mills                    ]
758*d125652eSGunnar Mills                }
759*d125652eSGunnar Mills            },
760*d125652eSGunnar Mills            "properties": {
761*d125652eSGunnar Mills                "ConsistencyCheckRatePercent": {
762*d125652eSGunnar Mills                    "description": "The percentage of controller resources used for performing a data consistency check on volumes.",
763*d125652eSGunnar Mills                    "longDescription": "This property shall contain the percentage, `0` to `100`, of controller resources used for checking data consistency on volumes.",
764*d125652eSGunnar Mills                    "maximum": 100,
765*d125652eSGunnar Mills                    "minimum": 0,
766*d125652eSGunnar Mills                    "readonly": false,
767*d125652eSGunnar Mills                    "type": [
768*d125652eSGunnar Mills                        "integer",
769*d125652eSGunnar Mills                        "null"
770*d125652eSGunnar Mills                    ],
771*d125652eSGunnar Mills                    "units": "%"
772*d125652eSGunnar Mills                },
773*d125652eSGunnar Mills                "RebuildRatePercent": {
774*d125652eSGunnar Mills                    "description": "The percentage of controller resources used for rebuilding/repairing volumes.",
775*d125652eSGunnar Mills                    "longDescription": "This property shall contain the percentage, `0` to `100`, of controller resources used for rebuilding volumes.",
776*d125652eSGunnar Mills                    "maximum": 100,
777*d125652eSGunnar Mills                    "minimum": 0,
778*d125652eSGunnar Mills                    "readonly": false,
779*d125652eSGunnar Mills                    "type": [
780*d125652eSGunnar Mills                        "integer",
781*d125652eSGunnar Mills                        "null"
782*d125652eSGunnar Mills                    ],
783*d125652eSGunnar Mills                    "units": "%"
784*d125652eSGunnar Mills                },
785*d125652eSGunnar Mills                "TransformationRatePercent": {
786*d125652eSGunnar Mills                    "description": "The percentage of controller resources used for transforming volumes from one configuration to another.",
787*d125652eSGunnar Mills                    "longDescription": "This property shall contain the percentage, `0` to `100`, of controller resources used for transforming volumes.",
788*d125652eSGunnar Mills                    "maximum": 100,
789*d125652eSGunnar Mills                    "minimum": 0,
790*d125652eSGunnar Mills                    "readonly": false,
791*d125652eSGunnar Mills                    "type": [
792*d125652eSGunnar Mills                        "integer",
793*d125652eSGunnar Mills                        "null"
794*d125652eSGunnar Mills                    ],
795*d125652eSGunnar Mills                    "units": "%"
796*d125652eSGunnar Mills                }
797*d125652eSGunnar Mills            },
798*d125652eSGunnar Mills            "type": "object"
799*d125652eSGunnar Mills        },
800*d125652eSGunnar Mills        "SecurityReceive": {
801*d125652eSGunnar Mills            "actionResponse": {
802*d125652eSGunnar Mills                "$ref": "#/definitions/SecurityReceiveResponse"
803*d125652eSGunnar Mills            },
804*d125652eSGunnar Mills            "additionalProperties": false,
805*d125652eSGunnar Mills            "description": "This action transfers security protocol data from the controller.  The data transferred from the controller contains the status and data result of one or more `SecuritySend` action requests that were previously submitted to the controller.",
806*d125652eSGunnar Mills            "longDescription": "This action shall transfer security protocol data from the controller.  The contents of the request are specified by the 'SECURITY PROTOCOL IN command' section of the SPC-5 Specification.",
807*d125652eSGunnar Mills            "parameters": {
808*d125652eSGunnar Mills                "AllocationLength": {
809*d125652eSGunnar Mills                    "description": "Allocated size for received data.",
810*d125652eSGunnar Mills                    "longDescription": "This parameter shall contain the allocated size of the received data, which imposes a maximum length of the data.  The response may contain padding to meet this length.",
811*d125652eSGunnar Mills                    "requiredParameter": true,
812*d125652eSGunnar Mills                    "type": "integer"
813*d125652eSGunnar Mills                },
814*d125652eSGunnar Mills                "SecurityProtocol": {
815*d125652eSGunnar Mills                    "description": "The security protocol number.",
816*d125652eSGunnar Mills                    "longDescription": "This parameter shall contain the numeric identifier of the security protocol, as defined by the 'SECURITY PROTOCOL field in SECURITY PROTOCOL IN command' table of the SPC-5 Specification, and possibly extended by transport-specific standards.  Services shall only accept the values `0`, `1`, or `2`.",
817*d125652eSGunnar Mills                    "requiredParameter": true,
818*d125652eSGunnar Mills                    "type": "integer"
819*d125652eSGunnar Mills                },
820*d125652eSGunnar Mills                "SecurityProtocolSpecific": {
821*d125652eSGunnar Mills                    "description": "The security protocol-specific parameter.",
822*d125652eSGunnar Mills                    "longDescription": "This parameter shall contain the security protocol-specific data for the transfer operation.  The value is defined by the protocol specified by the SecurityProtocolSpecific parameter.",
823*d125652eSGunnar Mills                    "requiredParameter": true,
824*d125652eSGunnar Mills                    "type": "integer"
825*d125652eSGunnar Mills                }
826*d125652eSGunnar Mills            },
827*d125652eSGunnar Mills            "patternProperties": {
828*d125652eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
829*d125652eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
830*d125652eSGunnar Mills                    "type": [
831*d125652eSGunnar Mills                        "array",
832*d125652eSGunnar Mills                        "boolean",
833*d125652eSGunnar Mills                        "integer",
834*d125652eSGunnar Mills                        "number",
835*d125652eSGunnar Mills                        "null",
836*d125652eSGunnar Mills                        "object",
837*d125652eSGunnar Mills                        "string"
838*d125652eSGunnar Mills                    ]
839*d125652eSGunnar Mills                }
840*d125652eSGunnar Mills            },
841*d125652eSGunnar Mills            "properties": {
842*d125652eSGunnar Mills                "target": {
843*d125652eSGunnar Mills                    "description": "Link to invoke action",
844*d125652eSGunnar Mills                    "format": "uri-reference",
845*d125652eSGunnar Mills                    "type": "string"
846*d125652eSGunnar Mills                },
847*d125652eSGunnar Mills                "title": {
848*d125652eSGunnar Mills                    "description": "Friendly action name",
849*d125652eSGunnar Mills                    "type": "string"
850*d125652eSGunnar Mills                }
851*d125652eSGunnar Mills            },
852*d125652eSGunnar Mills            "type": "object",
853*d125652eSGunnar Mills            "versionAdded": "v1_7_0"
854*d125652eSGunnar Mills        },
855*d125652eSGunnar Mills        "SecurityReceiveResponse": {
856*d125652eSGunnar Mills            "additionalProperties": false,
857*d125652eSGunnar Mills            "description": "The security data transferred from a controller.",
858*d125652eSGunnar Mills            "longDescription": "This object shall contain the security data transferred from a controller.",
859*d125652eSGunnar Mills            "patternProperties": {
860*d125652eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
861*d125652eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
862*d125652eSGunnar Mills                    "type": [
863*d125652eSGunnar Mills                        "array",
864*d125652eSGunnar Mills                        "boolean",
865*d125652eSGunnar Mills                        "integer",
866*d125652eSGunnar Mills                        "number",
867*d125652eSGunnar Mills                        "null",
868*d125652eSGunnar Mills                        "object",
869*d125652eSGunnar Mills                        "string"
870*d125652eSGunnar Mills                    ]
871*d125652eSGunnar Mills                }
872*d125652eSGunnar Mills            },
873*d125652eSGunnar Mills            "properties": {
874*d125652eSGunnar Mills                "Data": {
875*d125652eSGunnar Mills                    "description": "The Base64-encoded security protocol data.",
876*d125652eSGunnar Mills                    "longDescription": "This property shall contain a Base64-encoded string, with padding characters, of the security protocol data transferred from a controller.",
877*d125652eSGunnar Mills                    "readonly": true,
878*d125652eSGunnar Mills                    "type": "string",
879*d125652eSGunnar Mills                    "versionAdded": "v1_7_0"
880*d125652eSGunnar Mills                }
881*d125652eSGunnar Mills            },
882*d125652eSGunnar Mills            "type": "object"
883*d125652eSGunnar Mills        },
884*d125652eSGunnar Mills        "SecuritySend": {
885*d125652eSGunnar Mills            "additionalProperties": false,
886*d125652eSGunnar Mills            "description": "This action transfers security protocol data to the controller.  The data transferred to the controller contains security protocol-specific commands to be performed by the controller.",
887*d125652eSGunnar Mills            "longDescription": "This action shall transfer security protocol data to the controller.  The contents of the request are specified by the 'SECURITY PROTOCOL OUT command' section of the SPC-5 Specification.",
888*d125652eSGunnar Mills            "parameters": {
889*d125652eSGunnar Mills                "Data": {
890*d125652eSGunnar Mills                    "description": "The data to transfer.",
891*d125652eSGunnar Mills                    "longDescription": "This parameter shall contain a Base64-encoded string, with padding characters, of the security protocol data to transfer.",
892*d125652eSGunnar Mills                    "requiredParameter": true,
893*d125652eSGunnar Mills                    "type": "string"
894*d125652eSGunnar Mills                },
895*d125652eSGunnar Mills                "SecurityProtocol": {
896*d125652eSGunnar Mills                    "description": "The security protocol number.",
897*d125652eSGunnar Mills                    "longDescription": "This parameter shall contain the numeric identifier of the security protocol, as defined by the 'SECURITY PROTOCOL field in SECURITY PROTOCOL OUT command' table of the SPC-5 Specification, and possibly extended by transport-specific standards.  Services shall only accept the values `1` or `2`.",
898*d125652eSGunnar Mills                    "requiredParameter": true,
899*d125652eSGunnar Mills                    "type": "integer"
900*d125652eSGunnar Mills                },
901*d125652eSGunnar Mills                "SecurityProtocolSpecific": {
902*d125652eSGunnar Mills                    "description": "The security protocol-specific parameter.",
903*d125652eSGunnar Mills                    "longDescription": "This parameter shall contain the security protocol-specific data for the transfer operation.  The value is defined by the protocol specified by the SecurityProtocolSpecific parameter.",
904*d125652eSGunnar Mills                    "requiredParameter": true,
905*d125652eSGunnar Mills                    "type": "integer"
906*d125652eSGunnar Mills                }
907*d125652eSGunnar Mills            },
908*d125652eSGunnar Mills            "patternProperties": {
909*d125652eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
910*d125652eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
911*d125652eSGunnar Mills                    "type": [
912*d125652eSGunnar Mills                        "array",
913*d125652eSGunnar Mills                        "boolean",
914*d125652eSGunnar Mills                        "integer",
915*d125652eSGunnar Mills                        "number",
916*d125652eSGunnar Mills                        "null",
917*d125652eSGunnar Mills                        "object",
918*d125652eSGunnar Mills                        "string"
919*d125652eSGunnar Mills                    ]
920*d125652eSGunnar Mills                }
921*d125652eSGunnar Mills            },
922*d125652eSGunnar Mills            "properties": {
923*d125652eSGunnar Mills                "target": {
924*d125652eSGunnar Mills                    "description": "Link to invoke action",
925*d125652eSGunnar Mills                    "format": "uri-reference",
926*d125652eSGunnar Mills                    "type": "string"
927*d125652eSGunnar Mills                },
928*d125652eSGunnar Mills                "title": {
929*d125652eSGunnar Mills                    "description": "Friendly action name",
930*d125652eSGunnar Mills                    "type": "string"
931*d125652eSGunnar Mills                }
932*d125652eSGunnar Mills            },
933*d125652eSGunnar Mills            "type": "object",
934*d125652eSGunnar Mills            "versionAdded": "v1_7_0"
935*d125652eSGunnar Mills        },
936*d125652eSGunnar Mills        "StorageController": {
937*d125652eSGunnar Mills            "additionalProperties": false,
938*d125652eSGunnar Mills            "description": "The `StorageController` schema describes a storage controller and its properties.  A storage controller represents a physical or virtual storage device that produces volumes.",
939*d125652eSGunnar Mills            "longDescription": "This resource shall represent a storage controller in the Redfish Specification.",
940*d125652eSGunnar Mills            "patternProperties": {
941*d125652eSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
942*d125652eSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
943*d125652eSGunnar Mills                    "type": [
944*d125652eSGunnar Mills                        "array",
945*d125652eSGunnar Mills                        "boolean",
946*d125652eSGunnar Mills                        "integer",
947*d125652eSGunnar Mills                        "number",
948*d125652eSGunnar Mills                        "null",
949*d125652eSGunnar Mills                        "object",
950*d125652eSGunnar Mills                        "string"
951*d125652eSGunnar Mills                    ]
952*d125652eSGunnar Mills                }
953*d125652eSGunnar Mills            },
954*d125652eSGunnar Mills            "properties": {
955*d125652eSGunnar Mills                "@odata.context": {
956*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/context"
957*d125652eSGunnar Mills                },
958*d125652eSGunnar Mills                "@odata.etag": {
959*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/etag"
960*d125652eSGunnar Mills                },
961*d125652eSGunnar Mills                "@odata.id": {
962*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/id"
963*d125652eSGunnar Mills                },
964*d125652eSGunnar Mills                "@odata.type": {
965*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/type"
966*d125652eSGunnar Mills                },
967*d125652eSGunnar Mills                "Actions": {
968*d125652eSGunnar Mills                    "$ref": "#/definitions/Actions",
969*d125652eSGunnar Mills                    "description": "The available actions for this resource.",
970*d125652eSGunnar Mills                    "longDescription": "This property shall contain the available actions for this resource."
971*d125652eSGunnar Mills                },
972*d125652eSGunnar Mills                "Assembly": {
973*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Assembly.json#/definitions/Assembly",
974*d125652eSGunnar Mills                    "description": "The link to the assembly associated with this storage controller.",
975*d125652eSGunnar Mills                    "longDescription": "This property shall contain a link to a resource of type `Assembly`.",
976*d125652eSGunnar Mills                    "readonly": true
977*d125652eSGunnar Mills                },
978*d125652eSGunnar Mills                "AssetTag": {
979*d125652eSGunnar Mills                    "description": "The user-assigned asset tag for this storage controller.",
980*d125652eSGunnar Mills                    "longDescription": "This property shall track the storage controller for inventory purposes.",
981*d125652eSGunnar Mills                    "readonly": false,
982*d125652eSGunnar Mills                    "type": [
983*d125652eSGunnar Mills                        "string",
984*d125652eSGunnar Mills                        "null"
985*d125652eSGunnar Mills                    ]
986*d125652eSGunnar Mills                },
987*d125652eSGunnar Mills                "CacheSummary": {
988*d125652eSGunnar Mills                    "$ref": "#/definitions/CacheSummary",
989*d125652eSGunnar Mills                    "description": "The cache memory of the storage controller in general detail.",
990*d125652eSGunnar Mills                    "longDescription": "This property shall contain properties that describe the cache memory for this resource."
991*d125652eSGunnar Mills                },
992*d125652eSGunnar Mills                "Certificates": {
993*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/CertificateCollection.json#/definitions/CertificateCollection",
994*d125652eSGunnar Mills                    "description": "The link to a collection of certificates for device identity and attestation.",
995*d125652eSGunnar Mills                    "longDescription": "This property shall contain a link to a resource collection of type `CertificateCollection` that contains certificates for device identity and attestation.",
996*d125652eSGunnar Mills                    "readonly": true,
997*d125652eSGunnar Mills                    "versionAdded": "v1_1_0"
998*d125652eSGunnar Mills                },
999*d125652eSGunnar Mills                "ControllerRates": {
1000*d125652eSGunnar Mills                    "$ref": "#/definitions/Rates",
1001*d125652eSGunnar Mills                    "description": "This property describes the various controller rates used for processes such as volume rebuild or consistency checks.",
1002*d125652eSGunnar Mills                    "longDescription": "This object shall contain all the rate settings available on the controller."
1003*d125652eSGunnar Mills                },
1004*d125652eSGunnar Mills                "Description": {
1005*d125652eSGunnar Mills                    "anyOf": [
1006*d125652eSGunnar Mills                        {
1007*d125652eSGunnar Mills                            "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Description"
1008*d125652eSGunnar Mills                        },
1009*d125652eSGunnar Mills                        {
1010*d125652eSGunnar Mills                            "type": "null"
1011*d125652eSGunnar Mills                        }
1012*d125652eSGunnar Mills                    ],
1013*d125652eSGunnar Mills                    "readonly": true
1014*d125652eSGunnar Mills                },
1015*d125652eSGunnar Mills                "EnvironmentMetrics": {
1016*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/EnvironmentMetrics.json#/definitions/EnvironmentMetrics",
1017*d125652eSGunnar Mills                    "description": "The link to the environment metrics for this storage controller.",
1018*d125652eSGunnar Mills                    "longDescription": "This property shall contain a link to a resource of type `EnvironmentMetrics` that represents the environment metrics for this storage controller.",
1019*d125652eSGunnar Mills                    "readonly": true,
1020*d125652eSGunnar Mills                    "versionAdded": "v1_2_0"
1021*d125652eSGunnar Mills                },
1022*d125652eSGunnar Mills                "FirmwareVersion": {
1023*d125652eSGunnar Mills                    "description": "The firmware version of this storage controller.",
1024*d125652eSGunnar Mills                    "longDescription": "This property shall contain the firmware version as defined by the manufacturer for the associated storage controller.",
1025*d125652eSGunnar Mills                    "readonly": true,
1026*d125652eSGunnar Mills                    "type": [
1027*d125652eSGunnar Mills                        "string",
1028*d125652eSGunnar Mills                        "null"
1029*d125652eSGunnar Mills                    ]
1030*d125652eSGunnar Mills                },
1031*d125652eSGunnar Mills                "Id": {
1032*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Id",
1033*d125652eSGunnar Mills                    "readonly": true
1034*d125652eSGunnar Mills                },
1035*d125652eSGunnar Mills                "Identifiers": {
1036*d125652eSGunnar Mills                    "description": "The durable names for the storage controller.",
1037*d125652eSGunnar Mills                    "items": {
1038*d125652eSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Identifier"
1039*d125652eSGunnar Mills                    },
1040*d125652eSGunnar Mills                    "longDescription": "This property shall contain a list of all known durable names for the associated storage controller.",
1041*d125652eSGunnar Mills                    "type": "array"
1042*d125652eSGunnar Mills                },
1043*d125652eSGunnar Mills                "Links": {
1044*d125652eSGunnar Mills                    "$ref": "#/definitions/Links",
1045*d125652eSGunnar Mills                    "description": "The links to other resources that are related to this resource.",
1046*d125652eSGunnar Mills                    "longDescription": "This property shall contain links to resources that are related to but are not contained by, or subordinate to, this resource."
1047*d125652eSGunnar Mills                },
1048*d125652eSGunnar Mills                "Location": {
1049*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Location",
1050*d125652eSGunnar Mills                    "description": "The location of the storage controller.",
1051*d125652eSGunnar Mills                    "longDescription": "This property shall contain the location information of the associated storage controller."
1052*d125652eSGunnar Mills                },
1053*d125652eSGunnar Mills                "Manufacturer": {
1054*d125652eSGunnar Mills                    "description": "The manufacturer of this storage controller.",
1055*d125652eSGunnar Mills                    "longDescription": "This property shall contain the name of the organization responsible for producing the storage controller.  This organization may be the entity from which the storage controller is purchased, but this is not necessarily true.",
1056*d125652eSGunnar Mills                    "readonly": true,
1057*d125652eSGunnar Mills                    "type": [
1058*d125652eSGunnar Mills                        "string",
1059*d125652eSGunnar Mills                        "null"
1060*d125652eSGunnar Mills                    ]
1061*d125652eSGunnar Mills                },
1062*d125652eSGunnar Mills                "Measurements": {
1063*d125652eSGunnar Mills                    "deprecated": "This property has been deprecated in favor of the `ComponentIntegrity` resource.",
1064*d125652eSGunnar Mills                    "description": "An array of DSP0274-defined measurement blocks.",
1065*d125652eSGunnar Mills                    "items": {
1066*d125652eSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/SoftwareInventory.json#/definitions/MeasurementBlock"
1067*d125652eSGunnar Mills                    },
1068*d125652eSGunnar Mills                    "longDescription": "This property shall contain an array of DSP0274-defined measurement blocks.",
1069*d125652eSGunnar Mills                    "type": "array",
1070*d125652eSGunnar Mills                    "versionAdded": "v1_1_0",
1071*d125652eSGunnar Mills                    "versionDeprecated": "v1_5_0"
1072*d125652eSGunnar Mills                },
1073*d125652eSGunnar Mills                "Metrics": {
1074*d125652eSGunnar Mills                    "anyOf": [
1075*d125652eSGunnar Mills                        {
1076*d125652eSGunnar Mills                            "$ref": "http://redfish.dmtf.org/schemas/v1/StorageControllerMetrics.json#/definitions/StorageControllerMetrics"
1077*d125652eSGunnar Mills                        },
1078*d125652eSGunnar Mills                        {
1079*d125652eSGunnar Mills                            "type": "null"
1080*d125652eSGunnar Mills                        }
1081*d125652eSGunnar Mills                    ],
1082*d125652eSGunnar Mills                    "description": "The link to the metrics associated with this storage controller.",
1083*d125652eSGunnar Mills                    "longDescription": "This property shall contain a link to the metrics associated with this storage controller.",
1084*d125652eSGunnar Mills                    "readonly": true,
1085*d125652eSGunnar Mills                    "versionAdded": "v1_7_0"
1086*d125652eSGunnar Mills                },
1087*d125652eSGunnar Mills                "Model": {
1088*d125652eSGunnar Mills                    "description": "The model number for the storage controller.",
1089*d125652eSGunnar Mills                    "longDescription": "This property shall contain the name by which the manufacturer generally refers to the storage controller.",
1090*d125652eSGunnar Mills                    "readonly": true,
1091*d125652eSGunnar Mills                    "type": [
1092*d125652eSGunnar Mills                        "string",
1093*d125652eSGunnar Mills                        "null"
1094*d125652eSGunnar Mills                    ]
1095*d125652eSGunnar Mills                },
1096*d125652eSGunnar Mills                "NVMeControllerProperties": {
1097*d125652eSGunnar Mills                    "$ref": "#/definitions/NVMeControllerProperties",
1098*d125652eSGunnar Mills                    "description": "The NVMe-related properties for this storage controller.",
1099*d125652eSGunnar Mills                    "longDescription": "This property shall contain NVMe-related properties for this storage controller."
1100*d125652eSGunnar Mills                },
1101*d125652eSGunnar Mills                "Name": {
1102*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Name",
1103*d125652eSGunnar Mills                    "readonly": true
1104*d125652eSGunnar Mills                },
1105*d125652eSGunnar Mills                "Oem": {
1106*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
1107*d125652eSGunnar Mills                    "description": "The OEM extension property.",
1108*d125652eSGunnar 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."
1109*d125652eSGunnar Mills                },
1110*d125652eSGunnar Mills                "PCIeInterface": {
1111*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/PCIeDevice.json#/definitions/PCIeInterface",
1112*d125652eSGunnar Mills                    "description": "The PCIe interface details for this controller.",
1113*d125652eSGunnar Mills                    "longDescription": "This property shall contain details on the PCIe interface that connects this PCIe-based controller to its host."
1114*d125652eSGunnar Mills                },
1115*d125652eSGunnar Mills                "PartNumber": {
1116*d125652eSGunnar Mills                    "description": "The part number for this storage controller.",
1117*d125652eSGunnar Mills                    "longDescription": "This property shall contain a part number assigned by the organization that is responsible for producing or manufacturing the storage controller.",
1118*d125652eSGunnar Mills                    "readonly": true,
1119*d125652eSGunnar Mills                    "type": [
1120*d125652eSGunnar Mills                        "string",
1121*d125652eSGunnar Mills                        "null"
1122*d125652eSGunnar Mills                    ]
1123*d125652eSGunnar Mills                },
1124*d125652eSGunnar Mills                "Ports": {
1125*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/PortCollection.json#/definitions/PortCollection",
1126*d125652eSGunnar Mills                    "description": "The link to the collection of ports that exist on the storage controller.",
1127*d125652eSGunnar Mills                    "longDescription": "This property shall contain a link to a resource collection of type `PortCollection`.",
1128*d125652eSGunnar Mills                    "readonly": true
1129*d125652eSGunnar Mills                },
1130*d125652eSGunnar Mills                "SKU": {
1131*d125652eSGunnar Mills                    "description": "The SKU for this storage controller.",
1132*d125652eSGunnar Mills                    "longDescription": "This property shall contain the stock-keeping unit number for this storage controller.",
1133*d125652eSGunnar Mills                    "readonly": true,
1134*d125652eSGunnar Mills                    "type": [
1135*d125652eSGunnar Mills                        "string",
1136*d125652eSGunnar Mills                        "null"
1137*d125652eSGunnar Mills                    ]
1138*d125652eSGunnar Mills                },
1139*d125652eSGunnar Mills                "SerialNumber": {
1140*d125652eSGunnar Mills                    "description": "The serial number for this storage controller.",
1141*d125652eSGunnar Mills                    "longDescription": "This property shall contain a manufacturer-allocated number that identifies the storage controller.",
1142*d125652eSGunnar Mills                    "readonly": true,
1143*d125652eSGunnar Mills                    "type": [
1144*d125652eSGunnar Mills                        "string",
1145*d125652eSGunnar Mills                        "null"
1146*d125652eSGunnar Mills                    ]
1147*d125652eSGunnar Mills                },
1148*d125652eSGunnar Mills                "SpeedGbps": {
1149*d125652eSGunnar Mills                    "description": "The maximum speed of the storage controller's device interface.",
1150*d125652eSGunnar Mills                    "longDescription": "This property shall represent the maximum supported speed of the storage bus interface, in Gbit/s.  The specified interface connects the controller to the storage devices, not the controller to a host.  For example, SAS bus not PCIe host bus.",
1151*d125652eSGunnar Mills                    "minimum": 0,
1152*d125652eSGunnar Mills                    "readonly": true,
1153*d125652eSGunnar Mills                    "type": [
1154*d125652eSGunnar Mills                        "number",
1155*d125652eSGunnar Mills                        "null"
1156*d125652eSGunnar Mills                    ],
1157*d125652eSGunnar Mills                    "units": "Gbit/s"
1158*d125652eSGunnar Mills                },
1159*d125652eSGunnar Mills                "Status": {
1160*d125652eSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Status",
1161*d125652eSGunnar Mills                    "description": "The status and health of the resource and its subordinate or dependent resources.",
1162*d125652eSGunnar Mills                    "longDescription": "This property shall contain any status or health properties of the resource."
1163*d125652eSGunnar Mills                },
1164*d125652eSGunnar Mills                "SupportedControllerProtocols": {
1165*d125652eSGunnar Mills                    "description": "The supported set of protocols for communicating with this storage controller.",
1166*d125652eSGunnar Mills                    "items": {
1167*d125652eSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/Protocol.json#/definitions/Protocol"
1168*d125652eSGunnar Mills                    },
1169*d125652eSGunnar Mills                    "longDescription": "This property shall contain the supported set of protocols for communicating with this storage controller.",
1170*d125652eSGunnar Mills                    "readonly": true,
1171*d125652eSGunnar Mills                    "type": "array"
1172*d125652eSGunnar Mills                },
1173*d125652eSGunnar Mills                "SupportedDeviceProtocols": {
1174*d125652eSGunnar Mills                    "description": "The protocols that the storage controller can use to communicate with attached devices.",
1175*d125652eSGunnar Mills                    "items": {
1176*d125652eSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/Protocol.json#/definitions/Protocol"
1177*d125652eSGunnar Mills                    },
1178*d125652eSGunnar Mills                    "longDescription": "This property shall contain the set of protocols this storage controller can use to communicate with attached devices.",
1179*d125652eSGunnar Mills                    "readonly": true,
1180*d125652eSGunnar Mills                    "type": "array"
1181*d125652eSGunnar Mills                },
1182*d125652eSGunnar Mills                "SupportedRAIDTypes": {
1183*d125652eSGunnar Mills                    "description": "The set of RAID types supported by the storage controller.",
1184*d125652eSGunnar Mills                    "items": {
1185*d125652eSGunnar Mills                        "anyOf": [
1186*d125652eSGunnar Mills                            {
1187*d125652eSGunnar Mills                                "$ref": "http://redfish.dmtf.org/schemas/swordfish/v1/Volume.json#/definitions/RAIDType"
1188*d125652eSGunnar Mills                            },
1189*d125652eSGunnar Mills                            {
1190*d125652eSGunnar Mills                                "type": "null"
1191*d125652eSGunnar Mills                            }
1192*d125652eSGunnar Mills                        ]
1193*d125652eSGunnar Mills                    },
1194*d125652eSGunnar Mills                    "longDescription": "This property shall contain an array of all the RAID types supported by this controller.",
1195*d125652eSGunnar Mills                    "readonly": true,
1196*d125652eSGunnar Mills                    "type": "array"
1197*d125652eSGunnar Mills                }
1198*d125652eSGunnar Mills            },
1199*d125652eSGunnar Mills            "required": [
1200*d125652eSGunnar Mills                "@odata.id",
1201*d125652eSGunnar Mills                "@odata.type",
1202*d125652eSGunnar Mills                "Id",
1203*d125652eSGunnar Mills                "Name"
1204*d125652eSGunnar Mills            ],
1205*d125652eSGunnar Mills            "type": "object"
1206*d125652eSGunnar Mills        }
1207*d125652eSGunnar Mills    },
1208*d125652eSGunnar Mills    "language": "en",
1209*d125652eSGunnar Mills    "owningEntity": "DMTF",
1210*d125652eSGunnar Mills    "release": "2024.4",
1211*d125652eSGunnar Mills    "title": "#StorageController.v1_9_1.StorageController"
1212*d125652eSGunnar Mills}