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