1c6d7a45dSGunnar Mills{
2c6d7a45dSGunnar Mills    "$id": "http://redfish.dmtf.org/schemas/v1/Storage.v1_19_0.json",
3c6d7a45dSGunnar Mills    "$ref": "#/definitions/Storage",
4c6d7a45dSGunnar Mills    "$schema": "http://redfish.dmtf.org/schemas/v1/redfish-schema-v1.json",
5c6d7a45dSGunnar Mills    "copyright": "Copyright 2014-2025 DMTF. For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright",
6c6d7a45dSGunnar Mills    "definitions": {
7c6d7a45dSGunnar Mills        "Actions": {
8c6d7a45dSGunnar Mills            "additionalProperties": false,
9c6d7a45dSGunnar Mills            "description": "The available actions for this resource.",
10c6d7a45dSGunnar Mills            "longDescription": "This type shall contain the available actions for this resource.",
11c6d7a45dSGunnar Mills            "patternProperties": {
12c6d7a45dSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
13c6d7a45dSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
14c6d7a45dSGunnar Mills                    "type": [
15c6d7a45dSGunnar Mills                        "array",
16c6d7a45dSGunnar Mills                        "boolean",
17c6d7a45dSGunnar Mills                        "integer",
18c6d7a45dSGunnar Mills                        "number",
19c6d7a45dSGunnar Mills                        "null",
20c6d7a45dSGunnar Mills                        "object",
21c6d7a45dSGunnar Mills                        "string"
22c6d7a45dSGunnar Mills                    ]
23c6d7a45dSGunnar Mills                }
24c6d7a45dSGunnar Mills            },
25c6d7a45dSGunnar Mills            "properties": {
26c6d7a45dSGunnar Mills                "#Storage.ImportForeignDrives": {
27c6d7a45dSGunnar Mills                    "$ref": "#/definitions/ImportForeignDrives"
28c6d7a45dSGunnar Mills                },
29c6d7a45dSGunnar Mills                "#Storage.RekeyExternalKey": {
30c6d7a45dSGunnar Mills                    "$ref": "#/definitions/RekeyExternalKey"
31c6d7a45dSGunnar Mills                },
32c6d7a45dSGunnar Mills                "#Storage.ResetToDefaults": {
33c6d7a45dSGunnar Mills                    "$ref": "#/definitions/ResetToDefaults"
34c6d7a45dSGunnar Mills                },
35c6d7a45dSGunnar Mills                "#Storage.SetControllerPassword": {
36c6d7a45dSGunnar Mills                    "$ref": "#/definitions/SetControllerPassword"
37c6d7a45dSGunnar Mills                },
38c6d7a45dSGunnar Mills                "#Storage.SetEncryptionKey": {
39c6d7a45dSGunnar Mills                    "$ref": "#/definitions/SetEncryptionKey"
40c6d7a45dSGunnar Mills                },
41c6d7a45dSGunnar Mills                "Oem": {
42c6d7a45dSGunnar Mills                    "$ref": "#/definitions/OemActions",
43c6d7a45dSGunnar Mills                    "description": "The available OEM-specific actions for this resource.",
44c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the available OEM-specific actions for this resource."
45c6d7a45dSGunnar Mills                }
46c6d7a45dSGunnar Mills            },
47c6d7a45dSGunnar Mills            "type": "object"
48c6d7a45dSGunnar Mills        },
49c6d7a45dSGunnar Mills        "AutoVolumeCreate": {
50c6d7a45dSGunnar Mills            "enum": [
51c6d7a45dSGunnar Mills                "Disabled",
52c6d7a45dSGunnar Mills                "NonRAID",
53c6d7a45dSGunnar Mills                "RAID0",
54c6d7a45dSGunnar Mills                "RAID1"
55c6d7a45dSGunnar Mills            ],
56c6d7a45dSGunnar Mills            "enumDescriptions": {
57c6d7a45dSGunnar Mills                "Disabled": "Do not automatically create volumes.",
58c6d7a45dSGunnar Mills                "NonRAID": "Automatically create non-RAID volumes.",
59c6d7a45dSGunnar Mills                "RAID0": "Automatically create RAID0 volumes.",
60c6d7a45dSGunnar Mills                "RAID1": "Automatically create RAID1 volumes."
61c6d7a45dSGunnar Mills            },
62c6d7a45dSGunnar Mills            "type": "string"
63c6d7a45dSGunnar Mills        },
64c6d7a45dSGunnar Mills        "CacheSummary": {
65c6d7a45dSGunnar Mills            "additionalProperties": false,
66c6d7a45dSGunnar Mills            "description": "This type describes the cache memory of the storage controller in general detail.",
67c6d7a45dSGunnar Mills            "longDescription": "This type shall contain properties that describe the cache memory for a storage controller.",
68c6d7a45dSGunnar Mills            "patternProperties": {
69c6d7a45dSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
70c6d7a45dSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
71c6d7a45dSGunnar Mills                    "type": [
72c6d7a45dSGunnar Mills                        "array",
73c6d7a45dSGunnar Mills                        "boolean",
74c6d7a45dSGunnar Mills                        "integer",
75c6d7a45dSGunnar Mills                        "number",
76c6d7a45dSGunnar Mills                        "null",
77c6d7a45dSGunnar Mills                        "object",
78c6d7a45dSGunnar Mills                        "string"
79c6d7a45dSGunnar Mills                    ]
80c6d7a45dSGunnar Mills                }
81c6d7a45dSGunnar Mills            },
82c6d7a45dSGunnar Mills            "properties": {
83c6d7a45dSGunnar Mills                "PersistentCacheSizeMiB": {
84c6d7a45dSGunnar Mills                    "description": "The portion of the cache memory that is persistent, measured in MiB.",
85c6d7a45dSGunnar 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`.",
86c6d7a45dSGunnar Mills                    "minimum": 0,
87c6d7a45dSGunnar Mills                    "readonly": true,
88c6d7a45dSGunnar Mills                    "type": [
89c6d7a45dSGunnar Mills                        "integer",
90c6d7a45dSGunnar Mills                        "null"
91c6d7a45dSGunnar Mills                    ],
92c6d7a45dSGunnar Mills                    "units": "MiBy",
93c6d7a45dSGunnar Mills                    "versionAdded": "v1_5_0"
94c6d7a45dSGunnar Mills                },
95c6d7a45dSGunnar Mills                "Status": {
96c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Status",
97c6d7a45dSGunnar Mills                    "description": "The status and health of the resource and its subordinate or dependent resources.",
98c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain any status or health properties of the resource.",
99c6d7a45dSGunnar Mills                    "versionAdded": "v1_5_0"
100c6d7a45dSGunnar Mills                },
101c6d7a45dSGunnar Mills                "TotalCacheSizeMiB": {
102c6d7a45dSGunnar Mills                    "description": "The total configured cache memory, measured in MiB.",
103c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the amount of configured cache memory as measured in mebibytes.",
104c6d7a45dSGunnar Mills                    "minimum": 0,
105c6d7a45dSGunnar Mills                    "readonly": true,
106c6d7a45dSGunnar Mills                    "type": [
107c6d7a45dSGunnar Mills                        "integer",
108c6d7a45dSGunnar Mills                        "null"
109c6d7a45dSGunnar Mills                    ],
110c6d7a45dSGunnar Mills                    "units": "MiBy",
111c6d7a45dSGunnar Mills                    "versionAdded": "v1_5_0"
112c6d7a45dSGunnar Mills                }
113c6d7a45dSGunnar Mills            },
114c6d7a45dSGunnar Mills            "required": [
115c6d7a45dSGunnar Mills                "TotalCacheSizeMiB"
116c6d7a45dSGunnar Mills            ],
117c6d7a45dSGunnar Mills            "type": "object"
118c6d7a45dSGunnar Mills        },
119c6d7a45dSGunnar Mills        "ConfigLockOptions": {
120c6d7a45dSGunnar Mills            "enum": [
121c6d7a45dSGunnar Mills                "Unlocked",
122c6d7a45dSGunnar Mills                "Locked",
123c6d7a45dSGunnar Mills                "LockdownUnsupported",
124c6d7a45dSGunnar Mills                "CommandUnsupported"
125c6d7a45dSGunnar Mills            ],
126c6d7a45dSGunnar Mills            "enumDescriptions": {
127c6d7a45dSGunnar Mills                "CommandUnsupported": "The command is not supported, therefore lockdown does not apply.",
128c6d7a45dSGunnar Mills                "LockdownUnsupported": "The command is supported but is not able to be locked.",
129c6d7a45dSGunnar Mills                "Locked": "The command is supported and is currently locked.",
130c6d7a45dSGunnar Mills                "Unlocked": "The command is supported, able to be locked, and is currently unlocked."
131c6d7a45dSGunnar Mills            },
132c6d7a45dSGunnar Mills            "type": "string"
133c6d7a45dSGunnar Mills        },
134c6d7a45dSGunnar Mills        "ConfigurationLock": {
135c6d7a45dSGunnar Mills            "enum": [
136c6d7a45dSGunnar Mills                "Enabled",
137c6d7a45dSGunnar Mills                "Disabled",
138c6d7a45dSGunnar Mills                "Partial"
139c6d7a45dSGunnar Mills            ],
140c6d7a45dSGunnar Mills            "enumDescriptions": {
141c6d7a45dSGunnar Mills                "Disabled": "In-band configuration requests are not locked.",
142c6d7a45dSGunnar Mills                "Enabled": "In-band configuration requests are locked as specified by `TargetConfigurationLockLevel`.",
143c6d7a45dSGunnar Mills                "Partial": "Some in-band configuration requests are not locked while others are locked.  This value is used for status reporting to indicate that the storage subsystem is partially locked and client action is recommended."
144c6d7a45dSGunnar Mills            },
145c6d7a45dSGunnar Mills            "enumLongDescriptions": {
146c6d7a45dSGunnar Mills                "Disabled": "This value shall indicate in-band configuration requests are not locked.",
147c6d7a45dSGunnar Mills                "Enabled": "This value shall indicate in-band configuration requests are locked as specified by `TargetConfigurationLockLevel`.",
148c6d7a45dSGunnar Mills                "Partial": "This value shall indicate some in-band configuration requests are not locked while others are locked."
149c6d7a45dSGunnar Mills            },
150c6d7a45dSGunnar Mills            "type": "string"
151c6d7a45dSGunnar Mills        },
152c6d7a45dSGunnar Mills        "EncryptionMode": {
153c6d7a45dSGunnar Mills            "enum": [
154c6d7a45dSGunnar Mills                "Disabled",
155c6d7a45dSGunnar Mills                "UseExternalKey",
156c6d7a45dSGunnar Mills                "UseLocalKey",
157c6d7a45dSGunnar Mills                "PasswordOnly",
158c6d7a45dSGunnar Mills                "PasswordWithExternalKey",
159c6d7a45dSGunnar Mills                "PasswordWithLocalKey"
160c6d7a45dSGunnar Mills            ],
161c6d7a45dSGunnar Mills            "enumDescriptions": {
162c6d7a45dSGunnar Mills                "Disabled": "Encryption is disabled on the storage subsystem.",
163c6d7a45dSGunnar Mills                "PasswordOnly": "The storage subsystem uses a password, but no keys for encryption.",
164c6d7a45dSGunnar Mills                "PasswordWithExternalKey": "The storage subsystem uses a password and one or more external keys for encryption.",
165c6d7a45dSGunnar Mills                "PasswordWithLocalKey": "The storage subsystem uses a password and a local key for encryption.",
166c6d7a45dSGunnar Mills                "UseExternalKey": "The storage subsystem uses one or more external keys for encryption.",
167c6d7a45dSGunnar Mills                "UseLocalKey": "The storage subsystem uses a local key for encryption."
168c6d7a45dSGunnar Mills            },
169c6d7a45dSGunnar Mills            "enumVersionAdded": {
170c6d7a45dSGunnar Mills                "PasswordOnly": "v1_17_0",
171c6d7a45dSGunnar Mills                "PasswordWithExternalKey": "v1_17_0",
172c6d7a45dSGunnar Mills                "PasswordWithLocalKey": "v1_17_0"
173c6d7a45dSGunnar Mills            },
174c6d7a45dSGunnar Mills            "type": "string"
175c6d7a45dSGunnar Mills        },
176c6d7a45dSGunnar Mills        "HotspareActivationPolicy": {
177c6d7a45dSGunnar Mills            "enum": [
178c6d7a45dSGunnar Mills                "OnDriveFailure",
179c6d7a45dSGunnar Mills                "OnDrivePredictedFailure",
180c6d7a45dSGunnar Mills                "OEM"
181c6d7a45dSGunnar Mills            ],
182c6d7a45dSGunnar Mills            "enumDescriptions": {
183c6d7a45dSGunnar Mills                "OEM": "The hot spare drive will take over for the original drive in an algorithm custom to the OEM.",
184c6d7a45dSGunnar Mills                "OnDriveFailure": "The hot spare drive will take over for the original drive when the original drive has been marked as failed by the storage domain.",
185c6d7a45dSGunnar Mills                "OnDrivePredictedFailure": "The hot spare drive will take over for the original drive when the original drive has been predicted to fail in the future by the storage domain."
186c6d7a45dSGunnar Mills            },
187c6d7a45dSGunnar Mills            "type": "string"
188c6d7a45dSGunnar Mills        },
189c6d7a45dSGunnar Mills        "ImportForeignDrives": {
190c6d7a45dSGunnar Mills            "additionalProperties": false,
191c6d7a45dSGunnar Mills            "description": "This action imports encrypted foreign drives to a host-based storage controller by supplying encryption access credentials.",
192c6d7a45dSGunnar Mills            "longDescription": "This action shall import encrypted foreign drives to a host-based storage controller by supplying encryption access credentials.  Upon successful completion, the `EncryptionStatus` property of the affected `Drive` shall change from `Foreign` to `Unlocked`.",
193c6d7a45dSGunnar Mills            "parameters": {
194c6d7a45dSGunnar Mills                "ControllerPassword": {
195c6d7a45dSGunnar Mills                    "description": "The current controller password.  This parameter is not required if the controller does not currently have a password.",
196c6d7a45dSGunnar Mills                    "longDescription": "This parameter shall contain the current controller password.  Services may reject the action request if this parameter is not provided or the value supplied does not match the current password.",
197c6d7a45dSGunnar Mills                    "type": "string"
198c6d7a45dSGunnar Mills                },
199c6d7a45dSGunnar Mills                "DriveEncryptionKey": {
200c6d7a45dSGunnar Mills                    "description": "The encryption key to unlock the drives.",
201c6d7a45dSGunnar Mills                    "longDescription": "This parameter shall contain the encryption key to unlock the drives.",
202c6d7a45dSGunnar Mills                    "requiredParameter": true,
203c6d7a45dSGunnar Mills                    "type": "string"
204c6d7a45dSGunnar Mills                },
205c6d7a45dSGunnar Mills                "DriveEncryptionKeyIdentifier": {
206c6d7a45dSGunnar Mills                    "description": "An encryption key identifier to filter the drives that are imported.  If not provided, the controller attempts to import all foreign drives.",
207c6d7a45dSGunnar Mills                    "longDescription": "This parameter shall contain an encryption key identifier to filter the drives that are imported.  If this parameter is not provided, the service shall not perform filtering of foreign drives.",
208c6d7a45dSGunnar Mills                    "type": "string"
209c6d7a45dSGunnar Mills                }
210c6d7a45dSGunnar Mills            },
211c6d7a45dSGunnar Mills            "patternProperties": {
212c6d7a45dSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
213c6d7a45dSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
214c6d7a45dSGunnar Mills                    "type": [
215c6d7a45dSGunnar Mills                        "array",
216c6d7a45dSGunnar Mills                        "boolean",
217c6d7a45dSGunnar Mills                        "integer",
218c6d7a45dSGunnar Mills                        "number",
219c6d7a45dSGunnar Mills                        "null",
220c6d7a45dSGunnar Mills                        "object",
221c6d7a45dSGunnar Mills                        "string"
222c6d7a45dSGunnar Mills                    ]
223c6d7a45dSGunnar Mills                }
224c6d7a45dSGunnar Mills            },
225c6d7a45dSGunnar Mills            "properties": {
226c6d7a45dSGunnar Mills                "target": {
227c6d7a45dSGunnar Mills                    "description": "Link to invoke action",
228c6d7a45dSGunnar Mills                    "format": "uri-reference",
229c6d7a45dSGunnar Mills                    "type": "string"
230c6d7a45dSGunnar Mills                },
231c6d7a45dSGunnar Mills                "title": {
232c6d7a45dSGunnar Mills                    "description": "Friendly action name",
233c6d7a45dSGunnar Mills                    "type": "string"
234c6d7a45dSGunnar Mills                }
235c6d7a45dSGunnar Mills            },
236c6d7a45dSGunnar Mills            "type": "object",
237c6d7a45dSGunnar Mills            "versionAdded": "v1_19_0"
238c6d7a45dSGunnar Mills        },
239c6d7a45dSGunnar Mills        "Links": {
240c6d7a45dSGunnar Mills            "additionalProperties": false,
241c6d7a45dSGunnar Mills            "description": "The links to other resources that are related to this resource.",
242c6d7a45dSGunnar 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.",
243c6d7a45dSGunnar Mills            "patternProperties": {
244c6d7a45dSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
245c6d7a45dSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
246c6d7a45dSGunnar Mills                    "type": [
247c6d7a45dSGunnar Mills                        "array",
248c6d7a45dSGunnar Mills                        "boolean",
249c6d7a45dSGunnar Mills                        "integer",
250c6d7a45dSGunnar Mills                        "number",
251c6d7a45dSGunnar Mills                        "null",
252c6d7a45dSGunnar Mills                        "object",
253c6d7a45dSGunnar Mills                        "string"
254c6d7a45dSGunnar Mills                    ]
255c6d7a45dSGunnar Mills                }
256c6d7a45dSGunnar Mills            },
257c6d7a45dSGunnar Mills            "properties": {
258c6d7a45dSGunnar Mills                "BlockSecurityIDUnsupportedDrives": {
259c6d7a45dSGunnar Mills                    "description": "The set of drives in this storage subsystem that do not support blocking of TCG-defined security ID (SID).",
260c6d7a45dSGunnar Mills                    "items": {
261c6d7a45dSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/Drive.json#/definitions/Drive"
262c6d7a45dSGunnar Mills                    },
263c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain an array of links to resources of type `Drive` that represent the drives in this storage subsystem that do not support the TCG-defined 'Block SID' command.  This property should only be present if at least one drive does not support the TCG-defined 'Block SID' command.",
264c6d7a45dSGunnar Mills                    "readonly": true,
265c6d7a45dSGunnar Mills                    "type": "array",
266c6d7a45dSGunnar Mills                    "versionAdded": "v1_18_0"
267c6d7a45dSGunnar Mills                },
268c6d7a45dSGunnar Mills                "BlockSecurityIDUnsupportedDrives@odata.count": {
269c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
270c6d7a45dSGunnar Mills                },
271c6d7a45dSGunnar Mills                "BlockSecurityIDUpdateUnsuccessfulDrives": {
272c6d7a45dSGunnar Mills                    "description": "The set of drives in this storage subsystem for which the most recent attempt to block TCG-defined security ID (SID) failed.",
273c6d7a45dSGunnar Mills                    "items": {
274c6d7a45dSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/Drive.json#/definitions/Drive"
275c6d7a45dSGunnar Mills                    },
276c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain an array of links to resources of type `Drive` that represent the drives in this storage subsystem for which the most recent attempt to block TCG-defined security ID (SID) with the TCG-defined 'Block SID' command failed.  This property should only be present if the most recent attempt to block TCG-defined security ID (SID) with the TCG-defined 'Block SID' command failed for at least one drive.",
277c6d7a45dSGunnar Mills                    "readonly": true,
278c6d7a45dSGunnar Mills                    "type": "array",
279c6d7a45dSGunnar Mills                    "versionAdded": "v1_18_0"
280c6d7a45dSGunnar Mills                },
281c6d7a45dSGunnar Mills                "BlockSecurityIDUpdateUnsuccessfulDrives@odata.count": {
282c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
283c6d7a45dSGunnar Mills                },
284c6d7a45dSGunnar Mills                "Enclosures": {
285c6d7a45dSGunnar Mills                    "description": "An array of links to the chassis to which this storage subsystem is attached.",
286c6d7a45dSGunnar Mills                    "items": {
287c6d7a45dSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/Chassis.json#/definitions/Chassis"
288c6d7a45dSGunnar Mills                    },
289c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain an array of links to resources of type `Chassis` that represent the physical containers attached to this resource.",
290c6d7a45dSGunnar Mills                    "readonly": true,
291c6d7a45dSGunnar Mills                    "type": "array"
292c6d7a45dSGunnar Mills                },
293c6d7a45dSGunnar Mills                "Enclosures@odata.count": {
294c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
295c6d7a45dSGunnar Mills                },
296c6d7a45dSGunnar Mills                "HostingStorageSystems": {
297c6d7a45dSGunnar Mills                    "description": "The storage systems that host this storage subsystem.",
298c6d7a45dSGunnar Mills                    "items": {
299c6d7a45dSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/ComputerSystem.json#/definitions/ComputerSystem"
300c6d7a45dSGunnar Mills                    },
301c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain an array of links to resources of type `ComputerSystem` that represent the storage systems that host this storage subsystem.  The members of this array shall be in the `StorageSystems` resource collection off the service root.",
302c6d7a45dSGunnar Mills                    "readonly": true,
303c6d7a45dSGunnar Mills                    "type": "array",
304c6d7a45dSGunnar Mills                    "versionAdded": "v1_11_0"
305c6d7a45dSGunnar Mills                },
306c6d7a45dSGunnar Mills                "HostingStorageSystems@odata.count": {
307c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
308c6d7a45dSGunnar Mills                },
309c6d7a45dSGunnar Mills                "NVMeoFDiscoverySubsystems": {
310c6d7a45dSGunnar Mills                    "description": "An array of links to the discovery subsystems that discovered this subsystem in an NVMe-oF environment.",
311c6d7a45dSGunnar Mills                    "items": {
312c6d7a45dSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/Storage.json#/definitions/Storage"
313c6d7a45dSGunnar Mills                    },
314c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain an array of links to resources of type `Storage` that represent the discovery subsystems that discovered this subsystem in an NVMe-oF environment.",
315c6d7a45dSGunnar Mills                    "readonly": true,
316c6d7a45dSGunnar Mills                    "type": "array",
317c6d7a45dSGunnar Mills                    "versionAdded": "v1_15_0"
318c6d7a45dSGunnar Mills                },
319c6d7a45dSGunnar Mills                "NVMeoFDiscoverySubsystems@odata.count": {
320c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
321c6d7a45dSGunnar Mills                },
322c6d7a45dSGunnar Mills                "Oem": {
323c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
324c6d7a45dSGunnar Mills                    "description": "The OEM extension property.",
325c6d7a45dSGunnar 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."
326c6d7a45dSGunnar Mills                },
327c6d7a45dSGunnar Mills                "SimpleStorage": {
328c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/SimpleStorage.json#/definitions/SimpleStorage",
329c6d7a45dSGunnar Mills                    "description": "The link to the simple storage instance that corresponds to this storage.",
330c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a link to a resource of type `SimpleStorage` that represents the same storage subsystem as this resource.",
331c6d7a45dSGunnar Mills                    "readonly": true,
332c6d7a45dSGunnar Mills                    "versionAdded": "v1_9_0"
333c6d7a45dSGunnar Mills                },
334c6d7a45dSGunnar Mills                "StorageServices": {
335c6d7a45dSGunnar Mills                    "description": "An array of links to the storage services that connect to this storage subsystem.",
336c6d7a45dSGunnar Mills                    "items": {
337c6d7a45dSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/swordfish/v1/StorageService.json#/definitions/StorageService"
338c6d7a45dSGunnar Mills                    },
339c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain an array of links to resources of type `StorageService` with which this storage subsystem is associated.",
340c6d7a45dSGunnar Mills                    "readonly": true,
341c6d7a45dSGunnar Mills                    "type": "array",
342c6d7a45dSGunnar Mills                    "versionAdded": "v1_9_0"
343c6d7a45dSGunnar Mills                },
344c6d7a45dSGunnar Mills                "StorageServices@odata.count": {
345c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
346c6d7a45dSGunnar Mills                }
347c6d7a45dSGunnar Mills            },
348c6d7a45dSGunnar Mills            "type": "object"
349c6d7a45dSGunnar Mills        },
350c6d7a45dSGunnar Mills        "NVMeConfigurationLockState": {
351c6d7a45dSGunnar Mills            "additionalProperties": false,
352c6d7a45dSGunnar Mills            "description": "The configurable features that are able to be locked on an NVMe subsystem and their current lock state.",
353c6d7a45dSGunnar Mills            "longDescription": "This type shall contain the configurable features that are able to be locked on an NVMe subsystem and their current lock state.",
354c6d7a45dSGunnar Mills            "patternProperties": {
355c6d7a45dSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
356c6d7a45dSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
357c6d7a45dSGunnar Mills                    "type": [
358c6d7a45dSGunnar Mills                        "array",
359c6d7a45dSGunnar Mills                        "boolean",
360c6d7a45dSGunnar Mills                        "integer",
361c6d7a45dSGunnar Mills                        "number",
362c6d7a45dSGunnar Mills                        "null",
363c6d7a45dSGunnar Mills                        "object",
364c6d7a45dSGunnar Mills                        "string"
365c6d7a45dSGunnar Mills                    ]
366c6d7a45dSGunnar Mills                }
367c6d7a45dSGunnar Mills            },
368c6d7a45dSGunnar Mills            "properties": {
369c6d7a45dSGunnar Mills                "FirmwareCommit": {
370c6d7a45dSGunnar Mills                    "anyOf": [
371c6d7a45dSGunnar Mills                        {
372c6d7a45dSGunnar Mills                            "$ref": "#/definitions/ConfigLockOptions"
373c6d7a45dSGunnar Mills                        },
374c6d7a45dSGunnar Mills                        {
375c6d7a45dSGunnar Mills                            "type": "null"
376c6d7a45dSGunnar Mills                        }
377c6d7a45dSGunnar Mills                    ],
378c6d7a45dSGunnar Mills                    "description": "The lock state of the NVMe-defined Firmware Commit command.",
379c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the lock state of the NVMe-defined Firmware Commit command.",
380c6d7a45dSGunnar Mills                    "readonly": true,
381c6d7a45dSGunnar Mills                    "versionAdded": "v1_17_0"
382c6d7a45dSGunnar Mills                },
383c6d7a45dSGunnar Mills                "FirmwareImageDownload": {
384c6d7a45dSGunnar Mills                    "anyOf": [
385c6d7a45dSGunnar Mills                        {
386c6d7a45dSGunnar Mills                            "$ref": "#/definitions/ConfigLockOptions"
387c6d7a45dSGunnar Mills                        },
388c6d7a45dSGunnar Mills                        {
389c6d7a45dSGunnar Mills                            "type": "null"
390c6d7a45dSGunnar Mills                        }
391c6d7a45dSGunnar Mills                    ],
392c6d7a45dSGunnar Mills                    "description": "The lock state of the NVMe-defined Firmware Image Download command.",
393c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the lock state of the NVMe-defined Firmware Image Download command.",
394c6d7a45dSGunnar Mills                    "readonly": true,
395c6d7a45dSGunnar Mills                    "versionAdded": "v1_17_0"
396c6d7a45dSGunnar Mills                },
397c6d7a45dSGunnar Mills                "Lockdown": {
398c6d7a45dSGunnar Mills                    "anyOf": [
399c6d7a45dSGunnar Mills                        {
400c6d7a45dSGunnar Mills                            "$ref": "#/definitions/ConfigLockOptions"
401c6d7a45dSGunnar Mills                        },
402c6d7a45dSGunnar Mills                        {
403c6d7a45dSGunnar Mills                            "type": "null"
404c6d7a45dSGunnar Mills                        }
405c6d7a45dSGunnar Mills                    ],
406c6d7a45dSGunnar Mills                    "description": "The lock state of the NVMe-defined Lockdown command.",
407c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the lock state of the NVMe-defined Lockdown command.",
408c6d7a45dSGunnar Mills                    "readonly": true,
409c6d7a45dSGunnar Mills                    "versionAdded": "v1_17_0"
410c6d7a45dSGunnar Mills                },
411c6d7a45dSGunnar Mills                "SecuritySend": {
412c6d7a45dSGunnar Mills                    "anyOf": [
413c6d7a45dSGunnar Mills                        {
414c6d7a45dSGunnar Mills                            "$ref": "#/definitions/ConfigLockOptions"
415c6d7a45dSGunnar Mills                        },
416c6d7a45dSGunnar Mills                        {
417c6d7a45dSGunnar Mills                            "type": "null"
418c6d7a45dSGunnar Mills                        }
419c6d7a45dSGunnar Mills                    ],
420c6d7a45dSGunnar Mills                    "description": "The lock state of the NVMe-defined Security Send command.",
421c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the lock state of the NVMe-defined Security Send command.",
422c6d7a45dSGunnar Mills                    "readonly": true,
423c6d7a45dSGunnar Mills                    "versionAdded": "v1_17_0"
424c6d7a45dSGunnar Mills                },
425c6d7a45dSGunnar Mills                "VPDWrite": {
426c6d7a45dSGunnar Mills                    "anyOf": [
427c6d7a45dSGunnar Mills                        {
428c6d7a45dSGunnar Mills                            "$ref": "#/definitions/ConfigLockOptions"
429c6d7a45dSGunnar Mills                        },
430c6d7a45dSGunnar Mills                        {
431c6d7a45dSGunnar Mills                            "type": "null"
432c6d7a45dSGunnar Mills                        }
433c6d7a45dSGunnar Mills                    ],
434c6d7a45dSGunnar Mills                    "description": "The lock state of the NVMe-MI-defined VPD Write command.",
435c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the lock state of the NVMe-MI-defined VPD Write command.",
436c6d7a45dSGunnar Mills                    "readonly": true,
437c6d7a45dSGunnar Mills                    "versionAdded": "v1_17_0"
438c6d7a45dSGunnar Mills                }
439c6d7a45dSGunnar Mills            },
440c6d7a45dSGunnar Mills            "type": "object"
441c6d7a45dSGunnar Mills        },
442c6d7a45dSGunnar Mills        "NVMeSubsystemProperties": {
443c6d7a45dSGunnar Mills            "additionalProperties": false,
444c6d7a45dSGunnar Mills            "description": "Information specific to NVMe Subsystems.",
445c6d7a45dSGunnar Mills            "longDescription": "This type shall contain information specific to NVMe Subsystems.",
446c6d7a45dSGunnar Mills            "patternProperties": {
447c6d7a45dSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
448c6d7a45dSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
449c6d7a45dSGunnar Mills                    "type": [
450c6d7a45dSGunnar Mills                        "array",
451c6d7a45dSGunnar Mills                        "boolean",
452c6d7a45dSGunnar Mills                        "integer",
453c6d7a45dSGunnar Mills                        "number",
454c6d7a45dSGunnar Mills                        "null",
455c6d7a45dSGunnar Mills                        "object",
456c6d7a45dSGunnar Mills                        "string"
457c6d7a45dSGunnar Mills                    ]
458c6d7a45dSGunnar Mills                }
459c6d7a45dSGunnar Mills            },
460c6d7a45dSGunnar Mills            "properties": {
461c6d7a45dSGunnar Mills                "ConfigurationLockState": {
462c6d7a45dSGunnar Mills                    "anyOf": [
463c6d7a45dSGunnar Mills                        {
464c6d7a45dSGunnar Mills                            "$ref": "#/definitions/NVMeConfigurationLockState"
465c6d7a45dSGunnar Mills                        },
466c6d7a45dSGunnar Mills                        {
467c6d7a45dSGunnar Mills                            "type": "null"
468c6d7a45dSGunnar Mills                        }
469c6d7a45dSGunnar Mills                    ],
470c6d7a45dSGunnar Mills                    "description": "The configurable features that are able to be locked from in-band usage on an NVMe subsystem and their current lock state.",
471c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the configurable features that are able to be locked from in-band usage on an NVMe subsystem and their current lock state.",
472c6d7a45dSGunnar Mills                    "versionAdded": "v1_17_0"
473c6d7a45dSGunnar Mills                },
474c6d7a45dSGunnar Mills                "MaxNamespacesSupported": {
475c6d7a45dSGunnar Mills                    "description": "The maximum number of namespace attachments supported by this NVMe Subsystem.",
476c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the maximum number of namespace attachments supported by this NVMe Subsystem.  If no maximum is specified, this property should not be implemented.",
477c6d7a45dSGunnar Mills                    "readonly": true,
478c6d7a45dSGunnar Mills                    "type": [
479c6d7a45dSGunnar Mills                        "number",
480c6d7a45dSGunnar Mills                        "null"
481c6d7a45dSGunnar Mills                    ],
482c6d7a45dSGunnar Mills                    "versionAdded": "v1_16_0"
483c6d7a45dSGunnar Mills                },
484c6d7a45dSGunnar Mills                "SharedNamespaceControllerAttachmentSupported": {
485c6d7a45dSGunnar Mills                    "description": "Indicates whether the subsystem supports shared namespace controller attachment, allowing a shared namespace to be attached concurrently to two or more controllers in an NVMe Subsystem.",
486c6d7a45dSGunnar Mills                    "longDescription": "This property shall indicate whether the subsystem supports shared namespace controller attachment, allowing a shared namespace to be attached concurrently to two or more controllers in an NVMe Subsystem.",
487c6d7a45dSGunnar Mills                    "readonly": true,
488c6d7a45dSGunnar Mills                    "type": [
489c6d7a45dSGunnar Mills                        "boolean",
490c6d7a45dSGunnar Mills                        "null"
491c6d7a45dSGunnar Mills                    ],
492c6d7a45dSGunnar Mills                    "versionAdded": "v1_16_0"
493c6d7a45dSGunnar Mills                }
494c6d7a45dSGunnar Mills            },
495c6d7a45dSGunnar Mills            "type": "object"
496c6d7a45dSGunnar Mills        },
497c6d7a45dSGunnar Mills        "OemActions": {
498c6d7a45dSGunnar Mills            "additionalProperties": true,
499c6d7a45dSGunnar Mills            "description": "The available OEM-specific actions for this resource.",
500c6d7a45dSGunnar Mills            "longDescription": "This type shall contain the available OEM-specific actions for this resource.",
501c6d7a45dSGunnar Mills            "patternProperties": {
502c6d7a45dSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
503c6d7a45dSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
504c6d7a45dSGunnar Mills                    "type": [
505c6d7a45dSGunnar Mills                        "array",
506c6d7a45dSGunnar Mills                        "boolean",
507c6d7a45dSGunnar Mills                        "integer",
508c6d7a45dSGunnar Mills                        "number",
509c6d7a45dSGunnar Mills                        "null",
510c6d7a45dSGunnar Mills                        "object",
511c6d7a45dSGunnar Mills                        "string"
512c6d7a45dSGunnar Mills                    ]
513c6d7a45dSGunnar Mills                }
514c6d7a45dSGunnar Mills            },
515c6d7a45dSGunnar Mills            "properties": {},
516c6d7a45dSGunnar Mills            "type": "object"
517c6d7a45dSGunnar Mills        },
518c6d7a45dSGunnar Mills        "Rates": {
519c6d7a45dSGunnar Mills            "additionalProperties": false,
520c6d7a45dSGunnar Mills            "description": "This type describes the various controller rates used for processes such as volume rebuild or consistency checks.",
521c6d7a45dSGunnar Mills            "longDescription": "This type shall contain all the rate settings available on the controller.",
522c6d7a45dSGunnar Mills            "patternProperties": {
523c6d7a45dSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
524c6d7a45dSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
525c6d7a45dSGunnar Mills                    "type": [
526c6d7a45dSGunnar Mills                        "array",
527c6d7a45dSGunnar Mills                        "boolean",
528c6d7a45dSGunnar Mills                        "integer",
529c6d7a45dSGunnar Mills                        "number",
530c6d7a45dSGunnar Mills                        "null",
531c6d7a45dSGunnar Mills                        "object",
532c6d7a45dSGunnar Mills                        "string"
533c6d7a45dSGunnar Mills                    ]
534c6d7a45dSGunnar Mills                }
535c6d7a45dSGunnar Mills            },
536c6d7a45dSGunnar Mills            "properties": {
537c6d7a45dSGunnar Mills                "ConsistencyCheckRatePercent": {
538c6d7a45dSGunnar Mills                    "description": "The percentage of controller resources used for performing a data consistency check on volumes.",
539c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the percentage of controller resources used for checking data consistency on volumes.",
540c6d7a45dSGunnar Mills                    "maximum": 100,
541c6d7a45dSGunnar Mills                    "minimum": 0,
542c6d7a45dSGunnar Mills                    "readonly": false,
543c6d7a45dSGunnar Mills                    "type": [
544c6d7a45dSGunnar Mills                        "integer",
545c6d7a45dSGunnar Mills                        "null"
546c6d7a45dSGunnar Mills                    ],
547c6d7a45dSGunnar Mills                    "versionAdded": "v1_7_0"
548c6d7a45dSGunnar Mills                },
549c6d7a45dSGunnar Mills                "RebuildRatePercent": {
550c6d7a45dSGunnar Mills                    "description": "The percentage of controller resources used for rebuilding/repairing volumes.",
551c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the percentage of controller resources used for rebuilding volumes.",
552c6d7a45dSGunnar Mills                    "maximum": 100,
553c6d7a45dSGunnar Mills                    "minimum": 0,
554c6d7a45dSGunnar Mills                    "readonly": false,
555c6d7a45dSGunnar Mills                    "type": [
556c6d7a45dSGunnar Mills                        "integer",
557c6d7a45dSGunnar Mills                        "null"
558c6d7a45dSGunnar Mills                    ],
559c6d7a45dSGunnar Mills                    "versionAdded": "v1_7_0"
560c6d7a45dSGunnar Mills                },
561c6d7a45dSGunnar Mills                "TransformationRatePercent": {
562c6d7a45dSGunnar Mills                    "description": "The percentage of controller resources used for transforming volumes from one configuration to another.",
563c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the percentage of controller resources used for transforming volumes.",
564c6d7a45dSGunnar Mills                    "maximum": 100,
565c6d7a45dSGunnar Mills                    "minimum": 0,
566c6d7a45dSGunnar Mills                    "readonly": false,
567c6d7a45dSGunnar Mills                    "type": [
568c6d7a45dSGunnar Mills                        "integer",
569c6d7a45dSGunnar Mills                        "null"
570c6d7a45dSGunnar Mills                    ],
571c6d7a45dSGunnar Mills                    "versionAdded": "v1_7_0"
572c6d7a45dSGunnar Mills                }
573c6d7a45dSGunnar Mills            },
574c6d7a45dSGunnar Mills            "type": "object"
575c6d7a45dSGunnar Mills        },
576c6d7a45dSGunnar Mills        "RekeyExternalKey": {
577c6d7a45dSGunnar Mills            "additionalProperties": false,
578c6d7a45dSGunnar Mills            "description": "This action causes the controllers of the storage subsystem to request new encryption keys managed by an external key service.",
579c6d7a45dSGunnar Mills            "longDescription": "This action shall cause the controllers of the storage subsystem to request new encryption keys managed by an external key service.",
580c6d7a45dSGunnar Mills            "parameters": {},
581c6d7a45dSGunnar Mills            "patternProperties": {
582c6d7a45dSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
583c6d7a45dSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
584c6d7a45dSGunnar Mills                    "type": [
585c6d7a45dSGunnar Mills                        "array",
586c6d7a45dSGunnar Mills                        "boolean",
587c6d7a45dSGunnar Mills                        "integer",
588c6d7a45dSGunnar Mills                        "number",
589c6d7a45dSGunnar Mills                        "null",
590c6d7a45dSGunnar Mills                        "object",
591c6d7a45dSGunnar Mills                        "string"
592c6d7a45dSGunnar Mills                    ]
593c6d7a45dSGunnar Mills                }
594c6d7a45dSGunnar Mills            },
595c6d7a45dSGunnar Mills            "properties": {
596c6d7a45dSGunnar Mills                "target": {
597c6d7a45dSGunnar Mills                    "description": "Link to invoke action",
598c6d7a45dSGunnar Mills                    "format": "uri-reference",
599c6d7a45dSGunnar Mills                    "type": "string"
600c6d7a45dSGunnar Mills                },
601c6d7a45dSGunnar Mills                "title": {
602c6d7a45dSGunnar Mills                    "description": "Friendly action name",
603c6d7a45dSGunnar Mills                    "type": "string"
604c6d7a45dSGunnar Mills                }
605c6d7a45dSGunnar Mills            },
606c6d7a45dSGunnar Mills            "type": "object",
607c6d7a45dSGunnar Mills            "versionAdded": "v1_16_0"
608c6d7a45dSGunnar Mills        },
609c6d7a45dSGunnar Mills        "ResetToDefaults": {
610c6d7a45dSGunnar Mills            "additionalProperties": false,
611c6d7a45dSGunnar Mills            "description": "The reset action resets the storage device to factory defaults.  This can cause the loss of data.",
612c6d7a45dSGunnar Mills            "longDescription": "This action shall reset the storage device.  This action can impact other resources.",
613c6d7a45dSGunnar Mills            "parameters": {
614c6d7a45dSGunnar Mills                "ResetType": {
615c6d7a45dSGunnar Mills                    "$ref": "#/definitions/ResetToDefaultsType",
616c6d7a45dSGunnar Mills                    "description": "The type of reset to defaults.",
617c6d7a45dSGunnar Mills                    "longDescription": "This parameter shall contain the type of reset to defaults.",
618c6d7a45dSGunnar Mills                    "requiredParameter": true
619c6d7a45dSGunnar Mills                }
620c6d7a45dSGunnar Mills            },
621c6d7a45dSGunnar Mills            "patternProperties": {
622c6d7a45dSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
623c6d7a45dSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
624c6d7a45dSGunnar Mills                    "type": [
625c6d7a45dSGunnar Mills                        "array",
626c6d7a45dSGunnar Mills                        "boolean",
627c6d7a45dSGunnar Mills                        "integer",
628c6d7a45dSGunnar Mills                        "number",
629c6d7a45dSGunnar Mills                        "null",
630c6d7a45dSGunnar Mills                        "object",
631c6d7a45dSGunnar Mills                        "string"
632c6d7a45dSGunnar Mills                    ]
633c6d7a45dSGunnar Mills                }
634c6d7a45dSGunnar Mills            },
635c6d7a45dSGunnar Mills            "properties": {
636c6d7a45dSGunnar Mills                "target": {
637c6d7a45dSGunnar Mills                    "description": "Link to invoke action",
638c6d7a45dSGunnar Mills                    "format": "uri-reference",
639c6d7a45dSGunnar Mills                    "type": "string"
640c6d7a45dSGunnar Mills                },
641c6d7a45dSGunnar Mills                "title": {
642c6d7a45dSGunnar Mills                    "description": "Friendly action name",
643c6d7a45dSGunnar Mills                    "type": "string"
644c6d7a45dSGunnar Mills                }
645c6d7a45dSGunnar Mills            },
646c6d7a45dSGunnar Mills            "type": "object",
647c6d7a45dSGunnar Mills            "versionAdded": "v1_11_0"
648c6d7a45dSGunnar Mills        },
649c6d7a45dSGunnar Mills        "ResetToDefaultsType": {
650c6d7a45dSGunnar Mills            "enum": [
651c6d7a45dSGunnar Mills                "ResetAll",
652c6d7a45dSGunnar Mills                "PreserveVolumes"
653c6d7a45dSGunnar Mills            ],
654c6d7a45dSGunnar Mills            "enumDescriptions": {
655c6d7a45dSGunnar Mills                "PreserveVolumes": "Reset all settings to factory defaults but preserve the configured volumes on the controllers.",
656c6d7a45dSGunnar Mills                "ResetAll": "Reset all settings to factory defaults and remove all volumes."
657c6d7a45dSGunnar Mills            },
658c6d7a45dSGunnar Mills            "type": "string"
659c6d7a45dSGunnar Mills        },
660c6d7a45dSGunnar Mills        "SetControllerPassword": {
661c6d7a45dSGunnar Mills            "additionalProperties": false,
662c6d7a45dSGunnar Mills            "description": "This action sets the controller boot password for a host-based storage controller.",
663c6d7a45dSGunnar Mills            "longDescription": "This action shall set the controller boot password for a host-based storage controller.",
664c6d7a45dSGunnar Mills            "parameters": {
665c6d7a45dSGunnar Mills                "CurrentPassword": {
666c6d7a45dSGunnar Mills                    "description": "The current controller password.  This parameter is not needed if the controller does not currently have a password.",
667c6d7a45dSGunnar Mills                    "longDescription": "This parameter shall contain the current controller password.  Services may reject the action request if this parameter is not provided or the value supplied does not match the current password.",
668c6d7a45dSGunnar Mills                    "type": "string"
669c6d7a45dSGunnar Mills                },
670c6d7a45dSGunnar Mills                "NewPassword": {
671c6d7a45dSGunnar Mills                    "description": "The new password to set for the controller.",
672c6d7a45dSGunnar Mills                    "longDescription": "This parameter shall contain the new password to set for the controller.",
673c6d7a45dSGunnar Mills                    "requiredParameter": true,
674c6d7a45dSGunnar Mills                    "type": "string"
675c6d7a45dSGunnar Mills                },
676c6d7a45dSGunnar Mills                "SecurityKey": {
677c6d7a45dSGunnar Mills                    "description": "The security key for the controller.  This parameter is not needed if the controller does not have a security key.",
678c6d7a45dSGunnar Mills                    "longDescription": "This parameter shall contain the controller security key.  Services may reject the action request if this parameter is not provided or the value provided does not match the security key for the controller.",
679c6d7a45dSGunnar Mills                    "type": "string"
680c6d7a45dSGunnar Mills                }
681c6d7a45dSGunnar Mills            },
682c6d7a45dSGunnar Mills            "patternProperties": {
683c6d7a45dSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
684c6d7a45dSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
685c6d7a45dSGunnar Mills                    "type": [
686c6d7a45dSGunnar Mills                        "array",
687c6d7a45dSGunnar Mills                        "boolean",
688c6d7a45dSGunnar Mills                        "integer",
689c6d7a45dSGunnar Mills                        "number",
690c6d7a45dSGunnar Mills                        "null",
691c6d7a45dSGunnar Mills                        "object",
692c6d7a45dSGunnar Mills                        "string"
693c6d7a45dSGunnar Mills                    ]
694c6d7a45dSGunnar Mills                }
695c6d7a45dSGunnar Mills            },
696c6d7a45dSGunnar Mills            "properties": {
697c6d7a45dSGunnar Mills                "target": {
698c6d7a45dSGunnar Mills                    "description": "Link to invoke action",
699c6d7a45dSGunnar Mills                    "format": "uri-reference",
700c6d7a45dSGunnar Mills                    "type": "string"
701c6d7a45dSGunnar Mills                },
702c6d7a45dSGunnar Mills                "title": {
703c6d7a45dSGunnar Mills                    "description": "Friendly action name",
704c6d7a45dSGunnar Mills                    "type": "string"
705c6d7a45dSGunnar Mills                }
706c6d7a45dSGunnar Mills            },
707c6d7a45dSGunnar Mills            "type": "object",
708c6d7a45dSGunnar Mills            "versionAdded": "v1_17_0"
709c6d7a45dSGunnar Mills        },
710c6d7a45dSGunnar Mills        "SetEncryptionKey": {
711c6d7a45dSGunnar Mills            "additionalProperties": false,
712c6d7a45dSGunnar Mills            "description": "This action sets the local encryption key for the storage subsystem.",
713c6d7a45dSGunnar Mills            "longDescription": "This action shall set the local encryption key for the storage subsystem.",
714c6d7a45dSGunnar Mills            "parameters": {
715c6d7a45dSGunnar Mills                "CurrentEncryptionKey": {
716c6d7a45dSGunnar Mills                    "description": "The current local encryption key on the storage subsystem.  This parameter is not needed if the controller does not currently have an encryption key.",
717c6d7a45dSGunnar Mills                    "longDescription": "This parameter shall contain the current local encryption key on the storage subsystem.  Services may reject the action request if this parameter is not provided or the value supplied does not match the current encryption key.",
718c6d7a45dSGunnar Mills                    "type": "string",
719c6d7a45dSGunnar Mills                    "versionAdded": "v1_14_0"
720c6d7a45dSGunnar Mills                },
721c6d7a45dSGunnar Mills                "EncryptionKey": {
722c6d7a45dSGunnar Mills                    "description": "The local encryption key to set on the storage subsystem.",
723c6d7a45dSGunnar Mills                    "longDescription": "This parameter shall contain the local encryption key to set on the storage subsystem.",
724c6d7a45dSGunnar Mills                    "requiredParameter": true,
725c6d7a45dSGunnar Mills                    "type": "string"
726c6d7a45dSGunnar Mills                },
727c6d7a45dSGunnar Mills                "EncryptionKeyIdentifier": {
728c6d7a45dSGunnar Mills                    "description": "The local encryption key identifier used by the storage subsystem.",
729c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the local encryption key identifier used by the storage subsystem.",
730c6d7a45dSGunnar Mills                    "type": "string",
731c6d7a45dSGunnar Mills                    "versionAdded": "v1_14_0"
732c6d7a45dSGunnar Mills                }
733c6d7a45dSGunnar Mills            },
734c6d7a45dSGunnar Mills            "patternProperties": {
735c6d7a45dSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
736c6d7a45dSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
737c6d7a45dSGunnar Mills                    "type": [
738c6d7a45dSGunnar Mills                        "array",
739c6d7a45dSGunnar Mills                        "boolean",
740c6d7a45dSGunnar Mills                        "integer",
741c6d7a45dSGunnar Mills                        "number",
742c6d7a45dSGunnar Mills                        "null",
743c6d7a45dSGunnar Mills                        "object",
744c6d7a45dSGunnar Mills                        "string"
745c6d7a45dSGunnar Mills                    ]
746c6d7a45dSGunnar Mills                }
747c6d7a45dSGunnar Mills            },
748c6d7a45dSGunnar Mills            "properties": {
749c6d7a45dSGunnar Mills                "target": {
750c6d7a45dSGunnar Mills                    "description": "Link to invoke action",
751c6d7a45dSGunnar Mills                    "format": "uri-reference",
752c6d7a45dSGunnar Mills                    "type": "string"
753c6d7a45dSGunnar Mills                },
754c6d7a45dSGunnar Mills                "title": {
755c6d7a45dSGunnar Mills                    "description": "Friendly action name",
756c6d7a45dSGunnar Mills                    "type": "string"
757c6d7a45dSGunnar Mills                }
758c6d7a45dSGunnar Mills            },
759c6d7a45dSGunnar Mills            "type": "object"
760c6d7a45dSGunnar Mills        },
761c6d7a45dSGunnar Mills        "Storage": {
762c6d7a45dSGunnar Mills            "additionalProperties": false,
763c6d7a45dSGunnar Mills            "description": "The `Storage` schema defines a storage subsystem and its respective properties.  A storage subsystem represents a set of physical or virtual storage controllers and the resources, such as volumes, that can be accessed from that subsystem.",
764c6d7a45dSGunnar Mills            "longDescription": "This resource shall represent a storage subsystem in the Redfish Specification.",
765c6d7a45dSGunnar Mills            "patternProperties": {
766c6d7a45dSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
767c6d7a45dSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
768c6d7a45dSGunnar Mills                    "type": [
769c6d7a45dSGunnar Mills                        "array",
770c6d7a45dSGunnar Mills                        "boolean",
771c6d7a45dSGunnar Mills                        "integer",
772c6d7a45dSGunnar Mills                        "number",
773c6d7a45dSGunnar Mills                        "null",
774c6d7a45dSGunnar Mills                        "object",
775c6d7a45dSGunnar Mills                        "string"
776c6d7a45dSGunnar Mills                    ]
777c6d7a45dSGunnar Mills                }
778c6d7a45dSGunnar Mills            },
779c6d7a45dSGunnar Mills            "properties": {
780c6d7a45dSGunnar Mills                "@odata.context": {
781c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/context"
782c6d7a45dSGunnar Mills                },
783c6d7a45dSGunnar Mills                "@odata.etag": {
784c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/etag"
785c6d7a45dSGunnar Mills                },
786c6d7a45dSGunnar Mills                "@odata.id": {
787c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/id"
788c6d7a45dSGunnar Mills                },
789c6d7a45dSGunnar Mills                "@odata.type": {
790c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/type"
791c6d7a45dSGunnar Mills                },
792c6d7a45dSGunnar Mills                "Actions": {
793c6d7a45dSGunnar Mills                    "$ref": "#/definitions/Actions",
794c6d7a45dSGunnar Mills                    "description": "The available actions for this resource.",
795c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the available actions for this resource."
796c6d7a45dSGunnar Mills                },
797c6d7a45dSGunnar Mills                "AutoVolumeCreate": {
798c6d7a45dSGunnar Mills                    "anyOf": [
799c6d7a45dSGunnar Mills                        {
800c6d7a45dSGunnar Mills                            "$ref": "#/definitions/AutoVolumeCreate"
801c6d7a45dSGunnar Mills                        },
802c6d7a45dSGunnar Mills                        {
803c6d7a45dSGunnar Mills                            "type": "null"
804c6d7a45dSGunnar Mills                        }
805c6d7a45dSGunnar Mills                    ],
806c6d7a45dSGunnar Mills                    "description": "Indicates if this storage subsystem automatically creates new volumes for unassigned drives.",
807c6d7a45dSGunnar Mills                    "longDescription": "This property shall indicate if volumes are created automatically for each unassigned drive attached to this storage subsystem.",
808c6d7a45dSGunnar Mills                    "readonly": false,
809c6d7a45dSGunnar Mills                    "versionAdded": "v1_15_0"
810c6d7a45dSGunnar Mills                },
811c6d7a45dSGunnar Mills                "BlockSecurityIDPolicy": {
812c6d7a45dSGunnar Mills                    "description": "Indicates if the storage controller sends a command to block establishment of a TCG-defined security ID (SID) during each drive boot sequence for drives that support it.",
813c6d7a45dSGunnar Mills                    "longDescription": "This property shall indicate if the storage controller sends the TCG-defined 'Block SID' command to block establishment of a TCG-defined security ID (SID) during each drive boot sequence for drives that support it.  The value `true` shall indicate the TCG-defined 'Block SID' command is sent to supporting drives during each drive boot sequence.",
814c6d7a45dSGunnar Mills                    "readonly": false,
815c6d7a45dSGunnar Mills                    "type": [
816c6d7a45dSGunnar Mills                        "boolean",
817c6d7a45dSGunnar Mills                        "null"
818c6d7a45dSGunnar Mills                    ],
819c6d7a45dSGunnar Mills                    "versionAdded": "v1_18_0"
820c6d7a45dSGunnar Mills                },
821c6d7a45dSGunnar Mills                "ConfigurationLock": {
822c6d7a45dSGunnar Mills                    "anyOf": [
823c6d7a45dSGunnar Mills                        {
824c6d7a45dSGunnar Mills                            "$ref": "#/definitions/ConfigurationLock"
825c6d7a45dSGunnar Mills                        },
826c6d7a45dSGunnar Mills                        {
827c6d7a45dSGunnar Mills                            "type": "null"
828c6d7a45dSGunnar Mills                        }
829c6d7a45dSGunnar Mills                    ],
830c6d7a45dSGunnar Mills                    "description": "Indicates whether in-band configuration requests to the storage subsystem are locked.  Other properties, such as `ConfigurationLockState`, contain additional information regarding the status of the configuration lock.",
831c6d7a45dSGunnar Mills                    "longDescription": "This property shall indicate whether configuration requests to the storage subsystem are locked.  Services shall reject modification requests that contain the value `Partial`.  Modifying the value of this property may affect the `ConfigurationLock` property in `Drive` resources referenced by the `Drives` property.",
832c6d7a45dSGunnar Mills                    "readonly": false,
833c6d7a45dSGunnar Mills                    "versionAdded": "v1_16_0"
834c6d7a45dSGunnar Mills                },
835c6d7a45dSGunnar Mills                "Connections": {
836c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/ConnectionCollection.json#/definitions/ConnectionCollection",
837c6d7a45dSGunnar Mills                    "description": "The collection of links to the connections that this storage subsystem contains.",
838c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a link to a resource collection of type `ConnectionCollection`.  The members of this collection shall reference Connection resources subordinate to Fabric resources.",
839c6d7a45dSGunnar Mills                    "readonly": true,
840c6d7a45dSGunnar Mills                    "versionAdded": "v1_15_0"
841c6d7a45dSGunnar Mills                },
842c6d7a45dSGunnar Mills                "ConsistencyGroups": {
843c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/swordfish/v1/ConsistencyGroupCollection.json#/definitions/ConsistencyGroupCollection",
844c6d7a45dSGunnar Mills                    "description": "The consistency groups, each of which contains a set of volumes that are treated by an application or set of applications as a single resource, that are managed by this storage subsystem.",
845c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a link to a resource collection of type `ConsistencyGroupCollection`.  The property shall be used when groups of volumes are treated as a single resource by an application or set of applications.",
846c6d7a45dSGunnar Mills                    "readonly": true,
847c6d7a45dSGunnar Mills                    "versionAdded": "v1_8_0"
848c6d7a45dSGunnar Mills                },
849c6d7a45dSGunnar Mills                "Controllers": {
850c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/StorageControllerCollection.json#/definitions/StorageControllerCollection",
851c6d7a45dSGunnar Mills                    "description": "The set of controllers instantiated by this storage subsystem.",
852c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a link to a resource collection of type `StorageControllerCollection` that contains the set of storage controllers allocated to this storage subsystem.",
853c6d7a45dSGunnar Mills                    "readonly": true,
854c6d7a45dSGunnar Mills                    "versionAdded": "v1_9_0"
855c6d7a45dSGunnar Mills                },
856c6d7a45dSGunnar Mills                "Description": {
857c6d7a45dSGunnar Mills                    "anyOf": [
858c6d7a45dSGunnar Mills                        {
859c6d7a45dSGunnar Mills                            "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Description"
860c6d7a45dSGunnar Mills                        },
861c6d7a45dSGunnar Mills                        {
862c6d7a45dSGunnar Mills                            "type": "null"
863c6d7a45dSGunnar Mills                        }
864c6d7a45dSGunnar Mills                    ],
865c6d7a45dSGunnar Mills                    "readonly": true
866c6d7a45dSGunnar Mills                },
867c6d7a45dSGunnar Mills                "Drives": {
868c6d7a45dSGunnar Mills                    "description": "The set of drives attached to the storage controllers that this resource represents.",
869c6d7a45dSGunnar Mills                    "items": {
870c6d7a45dSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/Drive.json#/definitions/Drive"
871c6d7a45dSGunnar Mills                    },
872c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a set of the drives attached to the storage controllers that this resource represents.",
873c6d7a45dSGunnar Mills                    "readonly": true,
874c6d7a45dSGunnar Mills                    "type": "array"
875c6d7a45dSGunnar Mills                },
876c6d7a45dSGunnar Mills                "Drives@odata.count": {
877c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
878c6d7a45dSGunnar Mills                },
879c6d7a45dSGunnar Mills                "EncryptionMode": {
880c6d7a45dSGunnar Mills                    "anyOf": [
881c6d7a45dSGunnar Mills                        {
882c6d7a45dSGunnar Mills                            "$ref": "#/definitions/EncryptionMode"
883c6d7a45dSGunnar Mills                        },
884c6d7a45dSGunnar Mills                        {
885c6d7a45dSGunnar Mills                            "type": "null"
886c6d7a45dSGunnar Mills                        }
887c6d7a45dSGunnar Mills                    ],
888c6d7a45dSGunnar Mills                    "description": "The encryption mode of this storage subsystem.",
889c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the encryption mode of this storage subsystem.",
890c6d7a45dSGunnar Mills                    "readonly": false,
891c6d7a45dSGunnar Mills                    "versionAdded": "v1_14_0"
892c6d7a45dSGunnar Mills                },
893c6d7a45dSGunnar Mills                "EndpointGroups": {
894c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/EndpointGroupCollection.json#/definitions/EndpointGroupCollection",
895c6d7a45dSGunnar Mills                    "description": "All of the endpoint groups, each of which contains a set of endpoints that are used for a common purpose such as an ACL or logical identification, that belong to this storage subsystem.",
896c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a link to a resource collection of type `EndpointGroupCollection`.  This property shall be implemented when atomic control is needed to perform mapping, masking, and zoning operations.",
897c6d7a45dSGunnar Mills                    "readonly": true,
898c6d7a45dSGunnar Mills                    "versionAdded": "v1_8_0"
899c6d7a45dSGunnar Mills                },
900c6d7a45dSGunnar Mills                "FileSystems": {
901c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/swordfish/v1/FileSystemCollection.json#/definitions/FileSystemCollection",
902c6d7a45dSGunnar Mills                    "description": "All file systems that are allocated by this storage subsystem.",
903c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a link to a resource collection of type `FileSystemCollection`.  This property shall be used when file systems are shared or exported by the storage subsystem.",
904c6d7a45dSGunnar Mills                    "readonly": true,
905c6d7a45dSGunnar Mills                    "versionAdded": "v1_8_0"
906c6d7a45dSGunnar Mills                },
907c6d7a45dSGunnar Mills                "HotspareActivationPolicy": {
908c6d7a45dSGunnar Mills                    "anyOf": [
909c6d7a45dSGunnar Mills                        {
910c6d7a45dSGunnar Mills                            "$ref": "#/definitions/HotspareActivationPolicy"
911c6d7a45dSGunnar Mills                        },
912c6d7a45dSGunnar Mills                        {
913c6d7a45dSGunnar Mills                            "type": "null"
914c6d7a45dSGunnar Mills                        }
915c6d7a45dSGunnar Mills                    ],
916c6d7a45dSGunnar Mills                    "description": "The policy under which hot spare drives in this storage domain will activate.",
917c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the policy under which all drives operating as hot spares in this storage domain will activate.",
918c6d7a45dSGunnar Mills                    "readonly": false,
919c6d7a45dSGunnar Mills                    "versionAdded": "v1_14_0"
920c6d7a45dSGunnar Mills                },
921c6d7a45dSGunnar Mills                "Id": {
922c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Id",
923c6d7a45dSGunnar Mills                    "readonly": true
924c6d7a45dSGunnar Mills                },
925c6d7a45dSGunnar Mills                "Identifiers": {
926c6d7a45dSGunnar Mills                    "description": "The durable names for the storage subsystem.",
927c6d7a45dSGunnar Mills                    "items": {
928c6d7a45dSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Identifier"
929c6d7a45dSGunnar Mills                    },
930c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a list of all known durable names for the storage subsystem.",
931c6d7a45dSGunnar Mills                    "type": "array",
932c6d7a45dSGunnar Mills                    "versionAdded": "v1_9_0"
933c6d7a45dSGunnar Mills                },
934c6d7a45dSGunnar Mills                "Links": {
935c6d7a45dSGunnar Mills                    "$ref": "#/definitions/Links",
936c6d7a45dSGunnar Mills                    "description": "The links to other resources that are related to this resource.",
937c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain links to resources that are related to but are not contained by, or subordinate to, this resource."
938c6d7a45dSGunnar Mills                },
939c6d7a45dSGunnar Mills                "LocalEncryptionKeyIdentifier": {
940c6d7a45dSGunnar Mills                    "description": "The local encryption key identifier used by the storage subsystem.",
941c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the local encryption key identifier used by the storage subsystem when `EncryptionMode` contains `UseLocalKey`.",
942c6d7a45dSGunnar Mills                    "readonly": true,
943c6d7a45dSGunnar Mills                    "type": [
944c6d7a45dSGunnar Mills                        "string",
945c6d7a45dSGunnar Mills                        "null"
946c6d7a45dSGunnar Mills                    ],
947c6d7a45dSGunnar Mills                    "versionAdded": "v1_14_0"
948c6d7a45dSGunnar Mills                },
949c6d7a45dSGunnar Mills                "Metrics": {
950c6d7a45dSGunnar Mills                    "anyOf": [
951c6d7a45dSGunnar Mills                        {
952c6d7a45dSGunnar Mills                            "$ref": "http://redfish.dmtf.org/schemas/v1/StorageMetrics.json#/definitions/StorageMetrics"
953c6d7a45dSGunnar Mills                        },
954c6d7a45dSGunnar Mills                        {
955c6d7a45dSGunnar Mills                            "type": "null"
956c6d7a45dSGunnar Mills                        }
957c6d7a45dSGunnar Mills                    ],
958c6d7a45dSGunnar Mills                    "description": "The link to the metrics associated with this storage subsystem.",
959c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a link to a resource of type `StorageMetrics` that represents the metrics associated with this storage subsystem.",
960c6d7a45dSGunnar Mills                    "readonly": true,
961c6d7a45dSGunnar Mills                    "versionAdded": "v1_18_0"
962c6d7a45dSGunnar Mills                },
963c6d7a45dSGunnar Mills                "NVMeSubsystemProperties": {
964c6d7a45dSGunnar Mills                    "anyOf": [
965c6d7a45dSGunnar Mills                        {
966c6d7a45dSGunnar Mills                            "$ref": "#/definitions/NVMeSubsystemProperties"
967c6d7a45dSGunnar Mills                        },
968c6d7a45dSGunnar Mills                        {
969c6d7a45dSGunnar Mills                            "type": "null"
970c6d7a45dSGunnar Mills                        }
971c6d7a45dSGunnar Mills                    ],
972c6d7a45dSGunnar Mills                    "description": "Information specific to NVMe Subsystems.",
973c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain information specific to NVMe Subsystems.  This property shall only be present if this resource represents an NVMe Subsystem.",
974c6d7a45dSGunnar Mills                    "versionAdded": "v1_16_0"
975c6d7a45dSGunnar Mills                },
976c6d7a45dSGunnar Mills                "Name": {
977c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Name",
978c6d7a45dSGunnar Mills                    "readonly": true
979c6d7a45dSGunnar Mills                },
980c6d7a45dSGunnar Mills                "Oem": {
981c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
982c6d7a45dSGunnar Mills                    "description": "The OEM extension property.",
983c6d7a45dSGunnar 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."
984c6d7a45dSGunnar Mills                },
985c6d7a45dSGunnar Mills                "Redundancy": {
986c6d7a45dSGunnar Mills                    "autoExpand": true,
987c6d7a45dSGunnar Mills                    "description": "Redundancy information for the storage subsystem.",
988c6d7a45dSGunnar Mills                    "items": {
989c6d7a45dSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/Redundancy.json#/definitions/Redundancy"
990c6d7a45dSGunnar Mills                    },
991c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain redundancy information for the storage subsystem.",
992c6d7a45dSGunnar Mills                    "type": "array"
993c6d7a45dSGunnar Mills                },
994c6d7a45dSGunnar Mills                "Redundancy@odata.count": {
995c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
996c6d7a45dSGunnar Mills                },
997c6d7a45dSGunnar Mills                "Status": {
998c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Status",
999c6d7a45dSGunnar Mills                    "description": "The status and health of the resource and its subordinate or dependent resources.",
1000c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain any status or health properties of the resource."
1001c6d7a45dSGunnar Mills                },
1002c6d7a45dSGunnar Mills                "StorageControllers": {
1003c6d7a45dSGunnar Mills                    "autoExpand": true,
1004c6d7a45dSGunnar Mills                    "deprecated": "This property has been deprecated in favor of `Controllers` to allow for storage controllers to be represented as their own resources.",
1005c6d7a45dSGunnar Mills                    "description": "The set of storage controllers that this resource represents.",
1006c6d7a45dSGunnar Mills                    "items": {
1007c6d7a45dSGunnar Mills                        "$ref": "#/definitions/StorageController"
1008c6d7a45dSGunnar Mills                    },
1009c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a set of the storage controllers that this resource represents.",
1010c6d7a45dSGunnar Mills                    "readonly": true,
1011c6d7a45dSGunnar Mills                    "type": "array",
1012c6d7a45dSGunnar Mills                    "versionDeprecated": "v1_13_0"
1013c6d7a45dSGunnar Mills                },
1014c6d7a45dSGunnar Mills                "StorageControllers@odata.count": {
1015c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
1016c6d7a45dSGunnar Mills                },
1017c6d7a45dSGunnar Mills                "StorageGroups": {
1018c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/swordfish/v1/StorageGroupCollection.json#/definitions/StorageGroupCollection",
1019c6d7a45dSGunnar Mills                    "deprecated": "This property was deprecated in favor of the `Connections` property.",
1020c6d7a45dSGunnar Mills                    "description": "All of the storage groups, each of which contains a set of volumes and endpoints that are managed as a group for mapping and masking, that belong to this storage subsystem.",
1021c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a link to a resource collection of type `StorageGroupsCollection`.  This property shall be used when implementing mapping and masking.",
1022c6d7a45dSGunnar Mills                    "readonly": true,
1023c6d7a45dSGunnar Mills                    "versionAdded": "v1_8_0",
1024c6d7a45dSGunnar Mills                    "versionDeprecated": "v1_15_0"
1025c6d7a45dSGunnar Mills                },
1026c6d7a45dSGunnar Mills                "StoragePools": {
1027c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/swordfish/v1/StoragePoolCollection.json#/definitions/StoragePoolCollection",
1028c6d7a45dSGunnar Mills                    "description": "The set of all storage pools that are allocated by this storage subsystem.  A storage pool is the set of storage capacity that can be used to produce volumes or other storage pools.",
1029c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a link to a resource collection of type `StoragePoolCollection`.  This property shall be used when an abstraction of media, rather than references to individual media, are used as the storage data source.",
1030c6d7a45dSGunnar Mills                    "readonly": true,
1031c6d7a45dSGunnar Mills                    "versionAdded": "v1_8_0"
1032c6d7a45dSGunnar Mills                },
1033c6d7a45dSGunnar Mills                "TargetConfigurationLockLevel": {
1034c6d7a45dSGunnar Mills                    "anyOf": [
1035c6d7a45dSGunnar Mills                        {
1036c6d7a45dSGunnar Mills                            "$ref": "#/definitions/TargetConfigurationLockLevel"
1037c6d7a45dSGunnar Mills                        },
1038c6d7a45dSGunnar Mills                        {
1039c6d7a45dSGunnar Mills                            "type": "null"
1040c6d7a45dSGunnar Mills                        }
1041c6d7a45dSGunnar Mills                    ],
1042c6d7a45dSGunnar Mills                    "description": "Indicates the target configuration lock level for the drive based upon the state of the `ConfigurationLock` property.  Other properties, such as `ConfigurationLockState`, contain additional information regarding the status of the configuration lock.",
1043c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the target configuration lock level for the drive.  For NVMe subsystems, services shall implement the locking requirements specified by SNIA's Swordfish NVMe Model Overview and Mapping Guide.",
1044c6d7a45dSGunnar Mills                    "readonly": false,
1045c6d7a45dSGunnar Mills                    "versionAdded": "v1_17_0"
1046c6d7a45dSGunnar Mills                },
1047c6d7a45dSGunnar Mills                "Volumes": {
1048c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/swordfish/v1/VolumeCollection.json#/definitions/VolumeCollection",
1049c6d7a45dSGunnar Mills                    "description": "The set of volumes that the storage controllers produce.",
1050c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a link to a resource collection of type `VolumeCollection`.",
1051c6d7a45dSGunnar Mills                    "readonly": true
1052c6d7a45dSGunnar Mills                }
1053c6d7a45dSGunnar Mills            },
1054c6d7a45dSGunnar Mills            "required": [
1055c6d7a45dSGunnar Mills                "@odata.id",
1056c6d7a45dSGunnar Mills                "@odata.type",
1057c6d7a45dSGunnar Mills                "Id",
1058c6d7a45dSGunnar Mills                "Name"
1059c6d7a45dSGunnar Mills            ],
1060c6d7a45dSGunnar Mills            "type": "object"
1061c6d7a45dSGunnar Mills        },
1062c6d7a45dSGunnar Mills        "StorageController": {
1063c6d7a45dSGunnar Mills            "additionalProperties": false,
1064c6d7a45dSGunnar 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.",
1065c6d7a45dSGunnar Mills            "longDescription": "This resource shall represent a storage controller in the Redfish Specification.",
1066c6d7a45dSGunnar Mills            "patternProperties": {
1067c6d7a45dSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
1068c6d7a45dSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
1069c6d7a45dSGunnar Mills                    "type": [
1070c6d7a45dSGunnar Mills                        "array",
1071c6d7a45dSGunnar Mills                        "boolean",
1072c6d7a45dSGunnar Mills                        "integer",
1073c6d7a45dSGunnar Mills                        "number",
1074c6d7a45dSGunnar Mills                        "null",
1075c6d7a45dSGunnar Mills                        "object",
1076c6d7a45dSGunnar Mills                        "string"
1077c6d7a45dSGunnar Mills                    ]
1078c6d7a45dSGunnar Mills                }
1079c6d7a45dSGunnar Mills            },
1080c6d7a45dSGunnar Mills            "properties": {
1081c6d7a45dSGunnar Mills                "@odata.id": {
1082c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/id"
1083c6d7a45dSGunnar Mills                },
1084c6d7a45dSGunnar Mills                "Actions": {
1085c6d7a45dSGunnar Mills                    "$ref": "#/definitions/StorageControllerActions",
1086c6d7a45dSGunnar Mills                    "description": "The available actions for this resource.",
1087c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the available actions for this resource.",
1088c6d7a45dSGunnar Mills                    "versionAdded": "v1_2_0"
1089c6d7a45dSGunnar Mills                },
1090c6d7a45dSGunnar Mills                "Assembly": {
1091c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Assembly.json#/definitions/Assembly",
1092c6d7a45dSGunnar Mills                    "description": "The link to the assembly associated with this storage controller.",
1093c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a link to a resource of type `Assembly`.",
1094c6d7a45dSGunnar Mills                    "readonly": true,
1095c6d7a45dSGunnar Mills                    "versionAdded": "v1_4_0"
1096c6d7a45dSGunnar Mills                },
1097c6d7a45dSGunnar Mills                "AssetTag": {
1098c6d7a45dSGunnar Mills                    "description": "The user-assigned asset tag for this storage controller.",
1099c6d7a45dSGunnar Mills                    "longDescription": "This property shall track the storage controller for inventory purposes.",
1100c6d7a45dSGunnar Mills                    "readonly": false,
1101c6d7a45dSGunnar Mills                    "type": [
1102c6d7a45dSGunnar Mills                        "string",
1103c6d7a45dSGunnar Mills                        "null"
1104c6d7a45dSGunnar Mills                    ]
1105c6d7a45dSGunnar Mills                },
1106c6d7a45dSGunnar Mills                "CacheSummary": {
1107c6d7a45dSGunnar Mills                    "$ref": "#/definitions/CacheSummary",
1108c6d7a45dSGunnar Mills                    "description": "The cache memory of the storage controller in general detail.",
1109c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain properties that describe the cache memory for this resource.",
1110c6d7a45dSGunnar Mills                    "versionAdded": "v1_5_0"
1111c6d7a45dSGunnar Mills                },
1112c6d7a45dSGunnar Mills                "Certificates": {
1113c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/CertificateCollection.json#/definitions/CertificateCollection",
1114c6d7a45dSGunnar Mills                    "description": "The link to a collection of certificates for device identity and attestation.",
1115c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a link to a resource collection of type `CertificateCollection` that contains certificates for device identity and attestation.",
1116c6d7a45dSGunnar Mills                    "readonly": true,
1117c6d7a45dSGunnar Mills                    "versionAdded": "v1_10_0"
1118c6d7a45dSGunnar Mills                },
1119c6d7a45dSGunnar Mills                "ControllerRates": {
1120c6d7a45dSGunnar Mills                    "$ref": "#/definitions/Rates",
1121c6d7a45dSGunnar Mills                    "description": "This property describes the various controller rates used for processes such as volume rebuild or consistency checks.",
1122c6d7a45dSGunnar Mills                    "longDescription": "This object shall contain all the rate settings available on the controller.",
1123c6d7a45dSGunnar Mills                    "versionAdded": "v1_7_0"
1124c6d7a45dSGunnar Mills                },
1125c6d7a45dSGunnar Mills                "FirmwareVersion": {
1126c6d7a45dSGunnar Mills                    "description": "The firmware version of this storage controller.",
1127c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the firmware version as defined by the manufacturer for the associated storage controller.",
1128c6d7a45dSGunnar Mills                    "readonly": true,
1129c6d7a45dSGunnar Mills                    "type": [
1130c6d7a45dSGunnar Mills                        "string",
1131c6d7a45dSGunnar Mills                        "null"
1132c6d7a45dSGunnar Mills                    ]
1133c6d7a45dSGunnar Mills                },
1134c6d7a45dSGunnar Mills                "Identifiers": {
1135c6d7a45dSGunnar Mills                    "description": "The durable names for the storage controller.",
1136c6d7a45dSGunnar Mills                    "items": {
1137c6d7a45dSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Identifier"
1138c6d7a45dSGunnar Mills                    },
1139c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a list of all known durable names for the associated storage controller.",
1140c6d7a45dSGunnar Mills                    "type": "array"
1141c6d7a45dSGunnar Mills                },
1142c6d7a45dSGunnar Mills                "Links": {
1143c6d7a45dSGunnar Mills                    "$ref": "#/definitions/StorageControllerLinks",
1144c6d7a45dSGunnar Mills                    "description": "The links to other resources that are related to this resource.",
1145c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain links to resources that are related to but are not contained by, or subordinate to, this resource.",
1146c6d7a45dSGunnar Mills                    "versionAdded": "v1_1_0"
1147c6d7a45dSGunnar Mills                },
1148c6d7a45dSGunnar Mills                "Location": {
1149c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Location",
1150c6d7a45dSGunnar Mills                    "description": "The location of the storage controller.",
1151c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the location information of the associated storage controller.",
1152c6d7a45dSGunnar Mills                    "versionAdded": "v1_4_0"
1153c6d7a45dSGunnar Mills                },
1154c6d7a45dSGunnar Mills                "Manufacturer": {
1155c6d7a45dSGunnar Mills                    "description": "The manufacturer of this storage controller.",
1156c6d7a45dSGunnar 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.",
1157c6d7a45dSGunnar Mills                    "readonly": true,
1158c6d7a45dSGunnar Mills                    "type": [
1159c6d7a45dSGunnar Mills                        "string",
1160c6d7a45dSGunnar Mills                        "null"
1161c6d7a45dSGunnar Mills                    ]
1162c6d7a45dSGunnar Mills                },
1163c6d7a45dSGunnar Mills                "Measurements": {
1164c6d7a45dSGunnar Mills                    "deprecated": "This property has been deprecated in favor of the `ComponentIntegrity` resource.",
1165c6d7a45dSGunnar Mills                    "description": "An array of DSP0274-defined measurement blocks.",
1166c6d7a45dSGunnar Mills                    "items": {
1167c6d7a45dSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/SoftwareInventory.json#/definitions/MeasurementBlock"
1168c6d7a45dSGunnar Mills                    },
1169c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain an array of DSP0274-defined measurement blocks.",
1170c6d7a45dSGunnar Mills                    "type": "array",
1171c6d7a45dSGunnar Mills                    "versionAdded": "v1_10_0",
1172c6d7a45dSGunnar Mills                    "versionDeprecated": "v1_12_0"
1173c6d7a45dSGunnar Mills                },
1174c6d7a45dSGunnar Mills                "MemberId": {
1175c6d7a45dSGunnar Mills                    "description": "The unique identifier for the member within an array.",
1176c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the unique identifier for this member within an array.  For services supporting Redfish v1.6 or higher, this value shall contain the zero-based array index.",
1177c6d7a45dSGunnar Mills                    "readonly": true,
1178c6d7a45dSGunnar Mills                    "type": "string"
1179c6d7a45dSGunnar Mills                },
1180c6d7a45dSGunnar Mills                "Model": {
1181c6d7a45dSGunnar Mills                    "description": "The model number for the storage controller.",
1182c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the name by which the manufacturer generally refers to the storage controller.",
1183c6d7a45dSGunnar Mills                    "readonly": true,
1184c6d7a45dSGunnar Mills                    "type": [
1185c6d7a45dSGunnar Mills                        "string",
1186c6d7a45dSGunnar Mills                        "null"
1187c6d7a45dSGunnar Mills                    ]
1188c6d7a45dSGunnar Mills                },
1189c6d7a45dSGunnar Mills                "Name": {
1190c6d7a45dSGunnar Mills                    "description": "The name of the storage controller.",
1191c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the name of the storage controller.",
1192c6d7a45dSGunnar Mills                    "readonly": true,
1193c6d7a45dSGunnar Mills                    "type": [
1194c6d7a45dSGunnar Mills                        "string",
1195c6d7a45dSGunnar Mills                        "null"
1196c6d7a45dSGunnar Mills                    ],
1197c6d7a45dSGunnar Mills                    "versionAdded": "v1_3_0"
1198c6d7a45dSGunnar Mills                },
1199c6d7a45dSGunnar Mills                "Oem": {
1200c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
1201c6d7a45dSGunnar Mills                    "description": "The OEM extension property.",
1202c6d7a45dSGunnar 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."
1203c6d7a45dSGunnar Mills                },
1204c6d7a45dSGunnar Mills                "PCIeInterface": {
1205c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/PCIeDevice.json#/definitions/PCIeInterface",
1206c6d7a45dSGunnar Mills                    "description": "The PCIe interface details for this controller.",
1207c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain details on the PCIe interface that connects this PCIe-based controller to its host.",
1208c6d7a45dSGunnar Mills                    "versionAdded": "v1_5_0"
1209c6d7a45dSGunnar Mills                },
1210c6d7a45dSGunnar Mills                "PartNumber": {
1211c6d7a45dSGunnar Mills                    "description": "The part number for this storage controller.",
1212c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a part number assigned by the organization that is responsible for producing or manufacturing the storage controller.",
1213c6d7a45dSGunnar Mills                    "readonly": true,
1214c6d7a45dSGunnar Mills                    "type": [
1215c6d7a45dSGunnar Mills                        "string",
1216c6d7a45dSGunnar Mills                        "null"
1217c6d7a45dSGunnar Mills                    ]
1218c6d7a45dSGunnar Mills                },
1219c6d7a45dSGunnar Mills                "Ports": {
1220c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/PortCollection.json#/definitions/PortCollection",
1221c6d7a45dSGunnar Mills                    "description": "The link to the collection of ports that exist on the storage controller.",
1222c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a link to a resource collection of type `PortCollection`.",
1223c6d7a45dSGunnar Mills                    "readonly": true,
1224c6d7a45dSGunnar Mills                    "versionAdded": "v1_7_0"
1225c6d7a45dSGunnar Mills                },
1226c6d7a45dSGunnar Mills                "SKU": {
1227c6d7a45dSGunnar Mills                    "description": "The SKU for this storage controller.",
1228c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the stock-keeping unit number for this storage controller.",
1229c6d7a45dSGunnar Mills                    "readonly": true,
1230c6d7a45dSGunnar Mills                    "type": [
1231c6d7a45dSGunnar Mills                        "string",
1232c6d7a45dSGunnar Mills                        "null"
1233c6d7a45dSGunnar Mills                    ]
1234c6d7a45dSGunnar Mills                },
1235c6d7a45dSGunnar Mills                "SerialNumber": {
1236c6d7a45dSGunnar Mills                    "description": "The serial number for this storage controller.",
1237c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain a manufacturer-allocated number that identifies the storage controller.",
1238c6d7a45dSGunnar Mills                    "readonly": true,
1239c6d7a45dSGunnar Mills                    "type": [
1240c6d7a45dSGunnar Mills                        "string",
1241c6d7a45dSGunnar Mills                        "null"
1242c6d7a45dSGunnar Mills                    ]
1243c6d7a45dSGunnar Mills                },
1244c6d7a45dSGunnar Mills                "SpeedGbps": {
1245c6d7a45dSGunnar Mills                    "description": "The maximum speed of the storage controller's device interface.",
1246c6d7a45dSGunnar 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.",
1247c6d7a45dSGunnar Mills                    "minimum": 0,
1248c6d7a45dSGunnar Mills                    "readonly": true,
1249c6d7a45dSGunnar Mills                    "type": [
1250c6d7a45dSGunnar Mills                        "number",
1251c6d7a45dSGunnar Mills                        "null"
1252c6d7a45dSGunnar Mills                    ],
1253c6d7a45dSGunnar Mills                    "units": "Gbit/s"
1254c6d7a45dSGunnar Mills                },
1255c6d7a45dSGunnar Mills                "Status": {
1256c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Status",
1257c6d7a45dSGunnar Mills                    "description": "The status and health of the resource and its subordinate or dependent resources.",
1258c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain any status or health properties of the resource."
1259c6d7a45dSGunnar Mills                },
1260c6d7a45dSGunnar Mills                "SupportedControllerProtocols": {
1261c6d7a45dSGunnar Mills                    "description": "The supported set of protocols for communicating with this storage controller.",
1262c6d7a45dSGunnar Mills                    "items": {
1263c6d7a45dSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/Protocol.json#/definitions/Protocol"
1264c6d7a45dSGunnar Mills                    },
1265c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the supported set of protocols for communicating with this storage controller.",
1266c6d7a45dSGunnar Mills                    "readonly": true,
1267c6d7a45dSGunnar Mills                    "type": "array"
1268c6d7a45dSGunnar Mills                },
1269c6d7a45dSGunnar Mills                "SupportedDeviceProtocols": {
1270c6d7a45dSGunnar Mills                    "description": "The protocols that the storage controller can use to communicate with attached devices.",
1271c6d7a45dSGunnar Mills                    "items": {
1272c6d7a45dSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/Protocol.json#/definitions/Protocol"
1273c6d7a45dSGunnar Mills                    },
1274c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the set of protocols this storage controller can use to communicate with attached devices.",
1275c6d7a45dSGunnar Mills                    "readonly": true,
1276c6d7a45dSGunnar Mills                    "type": "array"
1277c6d7a45dSGunnar Mills                },
1278c6d7a45dSGunnar Mills                "SupportedRAIDTypes": {
1279c6d7a45dSGunnar Mills                    "description": "The set of RAID types supported by the storage controller.",
1280c6d7a45dSGunnar Mills                    "items": {
1281c6d7a45dSGunnar Mills                        "anyOf": [
1282c6d7a45dSGunnar Mills                            {
1283c6d7a45dSGunnar Mills                                "$ref": "http://redfish.dmtf.org/schemas/swordfish/v1/Volume.json#/definitions/RAIDType"
1284c6d7a45dSGunnar Mills                            },
1285c6d7a45dSGunnar Mills                            {
1286c6d7a45dSGunnar Mills                                "type": "null"
1287c6d7a45dSGunnar Mills                            }
1288c6d7a45dSGunnar Mills                        ]
1289c6d7a45dSGunnar Mills                    },
1290c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain an array of all the RAID types supported by this controller.",
1291c6d7a45dSGunnar Mills                    "readonly": true,
1292c6d7a45dSGunnar Mills                    "type": "array",
1293c6d7a45dSGunnar Mills                    "versionAdded": "v1_6_0"
1294c6d7a45dSGunnar Mills                }
1295c6d7a45dSGunnar Mills            },
1296c6d7a45dSGunnar Mills            "required": [
1297c6d7a45dSGunnar Mills                "@odata.id",
1298c6d7a45dSGunnar Mills                "MemberId"
1299c6d7a45dSGunnar Mills            ],
1300c6d7a45dSGunnar Mills            "type": "object"
1301c6d7a45dSGunnar Mills        },
1302c6d7a45dSGunnar Mills        "StorageControllerActions": {
1303c6d7a45dSGunnar Mills            "additionalProperties": false,
1304c6d7a45dSGunnar Mills            "description": "The available actions for this resource.",
1305c6d7a45dSGunnar Mills            "longDescription": "This type shall contain the available actions for this resource.",
1306c6d7a45dSGunnar Mills            "patternProperties": {
1307c6d7a45dSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
1308c6d7a45dSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
1309c6d7a45dSGunnar Mills                    "type": [
1310c6d7a45dSGunnar Mills                        "array",
1311c6d7a45dSGunnar Mills                        "boolean",
1312c6d7a45dSGunnar Mills                        "integer",
1313c6d7a45dSGunnar Mills                        "number",
1314c6d7a45dSGunnar Mills                        "null",
1315c6d7a45dSGunnar Mills                        "object",
1316c6d7a45dSGunnar Mills                        "string"
1317c6d7a45dSGunnar Mills                    ]
1318c6d7a45dSGunnar Mills                }
1319c6d7a45dSGunnar Mills            },
1320c6d7a45dSGunnar Mills            "properties": {
1321c6d7a45dSGunnar Mills                "Oem": {
1322c6d7a45dSGunnar Mills                    "$ref": "#/definitions/StorageControllerOemActions",
1323c6d7a45dSGunnar Mills                    "description": "The available OEM-specific actions for this resource.",
1324c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain the available OEM-specific actions for this resource.",
1325c6d7a45dSGunnar Mills                    "versionAdded": "v1_2_0"
1326c6d7a45dSGunnar Mills                }
1327c6d7a45dSGunnar Mills            },
1328c6d7a45dSGunnar Mills            "type": "object"
1329c6d7a45dSGunnar Mills        },
1330c6d7a45dSGunnar Mills        "StorageControllerLinks": {
1331c6d7a45dSGunnar Mills            "additionalProperties": false,
1332c6d7a45dSGunnar Mills            "description": "The links to other resources that are related to this resource.",
1333c6d7a45dSGunnar 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.",
1334c6d7a45dSGunnar Mills            "patternProperties": {
1335c6d7a45dSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
1336c6d7a45dSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
1337c6d7a45dSGunnar Mills                    "type": [
1338c6d7a45dSGunnar Mills                        "array",
1339c6d7a45dSGunnar Mills                        "boolean",
1340c6d7a45dSGunnar Mills                        "integer",
1341c6d7a45dSGunnar Mills                        "number",
1342c6d7a45dSGunnar Mills                        "null",
1343c6d7a45dSGunnar Mills                        "object",
1344c6d7a45dSGunnar Mills                        "string"
1345c6d7a45dSGunnar Mills                    ]
1346c6d7a45dSGunnar Mills                }
1347c6d7a45dSGunnar Mills            },
1348c6d7a45dSGunnar Mills            "properties": {
1349c6d7a45dSGunnar Mills                "Endpoints": {
1350c6d7a45dSGunnar Mills                    "description": "An array of links to the endpoints that connect to this controller.",
1351c6d7a45dSGunnar Mills                    "items": {
1352c6d7a45dSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/Endpoint.json#/definitions/Endpoint"
1353c6d7a45dSGunnar Mills                    },
1354c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain an array of links to resources of type `Endpoint` with which this controller is associated.",
1355c6d7a45dSGunnar Mills                    "type": "array",
1356c6d7a45dSGunnar Mills                    "versionAdded": "v1_1_0"
1357c6d7a45dSGunnar Mills                },
1358c6d7a45dSGunnar Mills                "Endpoints@odata.count": {
1359c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
1360c6d7a45dSGunnar Mills                },
1361c6d7a45dSGunnar Mills                "Oem": {
1362c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
1363c6d7a45dSGunnar Mills                    "description": "The OEM extension property.",
1364c6d7a45dSGunnar 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."
1365c6d7a45dSGunnar Mills                },
1366c6d7a45dSGunnar Mills                "PCIeFunctions": {
1367c6d7a45dSGunnar Mills                    "description": "An array of links to the PCIe functions that the storage controller produces.",
1368c6d7a45dSGunnar Mills                    "items": {
1369c6d7a45dSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/v1/PCIeFunction.json#/definitions/PCIeFunction"
1370c6d7a45dSGunnar Mills                    },
1371c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain an array of links to resources of type `PCIeFunction` that represent the PCIe functions associated with this resource.",
1372c6d7a45dSGunnar Mills                    "type": "array",
1373c6d7a45dSGunnar Mills                    "versionAdded": "v1_7_0"
1374c6d7a45dSGunnar Mills                },
1375c6d7a45dSGunnar Mills                "PCIeFunctions@odata.count": {
1376c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
1377c6d7a45dSGunnar Mills                },
1378c6d7a45dSGunnar Mills                "StorageServices": {
1379c6d7a45dSGunnar Mills                    "deprecated": "This property has been deprecated in favor of `StorageServices` within the `Links` property at the root level.",
1380c6d7a45dSGunnar Mills                    "description": "An array of links to the storage services that connect to this controller.",
1381c6d7a45dSGunnar Mills                    "items": {
1382c6d7a45dSGunnar Mills                        "$ref": "http://redfish.dmtf.org/schemas/swordfish/v1/StorageService.json#/definitions/StorageService"
1383c6d7a45dSGunnar Mills                    },
1384c6d7a45dSGunnar Mills                    "longDescription": "This property shall contain an array of links to resources of type `StorageService` with which this controller is associated.",
1385c6d7a45dSGunnar Mills                    "type": "array",
1386c6d7a45dSGunnar Mills                    "versionAdded": "v1_4_0",
1387c6d7a45dSGunnar Mills                    "versionDeprecated": "v1_9_0"
1388c6d7a45dSGunnar Mills                },
1389c6d7a45dSGunnar Mills                "StorageServices@odata.count": {
1390c6d7a45dSGunnar Mills                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
1391c6d7a45dSGunnar Mills                }
1392c6d7a45dSGunnar Mills            },
1393c6d7a45dSGunnar Mills            "type": "object"
1394c6d7a45dSGunnar Mills        },
1395c6d7a45dSGunnar Mills        "StorageControllerOemActions": {
1396c6d7a45dSGunnar Mills            "additionalProperties": true,
1397c6d7a45dSGunnar Mills            "description": "The available OEM-specific actions for this resource.",
1398c6d7a45dSGunnar Mills            "longDescription": "This type shall contain the available OEM-specific actions for this resource.",
1399c6d7a45dSGunnar Mills            "patternProperties": {
1400c6d7a45dSGunnar Mills                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
1401c6d7a45dSGunnar Mills                    "description": "This property shall specify a valid odata or Redfish property.",
1402c6d7a45dSGunnar Mills                    "type": [
1403c6d7a45dSGunnar Mills                        "array",
1404c6d7a45dSGunnar Mills                        "boolean",
1405c6d7a45dSGunnar Mills                        "integer",
1406c6d7a45dSGunnar Mills                        "number",
1407c6d7a45dSGunnar Mills                        "null",
1408c6d7a45dSGunnar Mills                        "object",
1409c6d7a45dSGunnar Mills                        "string"
1410c6d7a45dSGunnar Mills                    ]
1411c6d7a45dSGunnar Mills                }
1412c6d7a45dSGunnar Mills            },
1413c6d7a45dSGunnar Mills            "properties": {},
1414c6d7a45dSGunnar Mills            "type": "object"
1415c6d7a45dSGunnar Mills        },
1416c6d7a45dSGunnar Mills        "TargetConfigurationLockLevel": {
1417c6d7a45dSGunnar Mills            "enum": [
1418c6d7a45dSGunnar Mills                "Baseline"
1419c6d7a45dSGunnar Mills            ],
1420c6d7a45dSGunnar Mills            "enumDescriptions": {
1421c6d7a45dSGunnar Mills                "Baseline": "The standard configuration lock level, corresponding to applying firmware, updating security keys, and modifying other hardware settings.  It does not include managing the volumes or data within the storage subsystem."
1422c6d7a45dSGunnar Mills            },
1423c6d7a45dSGunnar Mills            "type": "string"
1424c6d7a45dSGunnar Mills        }
1425c6d7a45dSGunnar Mills    },
1426c6d7a45dSGunnar Mills    "language": "en",
1427c6d7a45dSGunnar Mills    "owningEntity": "DMTF",
1428c6d7a45dSGunnar Mills    "release": "2025.2",
1429c6d7a45dSGunnar Mills    "title": "#Storage.v1_19_0.Storage"
1430c6d7a45dSGunnar Mills}