{
    "$schema": "http://redfish.dmtf.org/schemas/v1/redfish-schema.v1_1_0.json",
    "title": "#MemoryDomain.v1_1_0.MemoryDomain",
    "$ref": "#/definitions/MemoryDomain",
    "definitions": {
        "MemorySet": {
            "type": "object",
            "patternProperties": {
                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message|Privileges)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
                    "type": [
                        "array",
                        "boolean",
                        "number",
                        "null",
                        "object",
                        "string"
                    ],
                    "description": "This property shall specify a valid odata or Redfish property."
                }
            },
            "additionalProperties": true,
            "properties": {
                "MemorySet@odata.count": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata.4.0.0.json#/definitions/count"
                },
                "MemorySet@odata.navigationLink": {
                    "type": "string",
                    "format": "uri"
                },
                "MemorySet": {
                    "type": "array",
                    "items": {
                        "$ref": "http://redfish.dmtf.org/schemas/v1/Memory.json#/definitions/Memory"
                    },
                    "readonly": true,
                    "description": "This is the collection of memory for a particular interleave set.",
                    "longDescription": "The values in this collection shall be links to objects of type Memory."
                }
            }
        },
        "MemoryDomain": {
            "type": "object",
            "patternProperties": {
                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message|Privileges)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
                    "type": [
                        "array",
                        "boolean",
                        "number",
                        "null",
                        "object",
                        "string"
                    ],
                    "description": "This property shall specify a valid odata or Redfish property."
                }
            },
            "additionalProperties": false,
            "properties": {
                "@odata.context": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata.4.0.0.json#/definitions/context"
                },
                "@odata.id": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata.4.0.0.json#/definitions/id"
                },
                "@odata.type": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata.4.0.0.json#/definitions/type"
                },
                "Oem": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
                    "description": "This is the manufacturer/provider specific extension moniker used to divide the Oem object into sections.",
                    "longDescription": "The value of this string shall be of the format for the reserved word *Oem*."
                },
                "Id": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Id",
                    "readonly": true
                },
                "Description": {
                    "anyOf": [
                        {"$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Description"},
                        {"type": "null"}
                    ],
                    "readonly": true
                },
                "Name": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Name",
                    "readonly": true
                },
                "AllowsMemoryChunkCreation": {
                    "type": [
                        "boolean",
                        "null"
                    ],
                    "readonly": true,
                    "description": "Indicates if this Memory Domain supports the creation of Memory Chunks.",
                    "longDescription": "The value of this property shall indicate if this Memory Domain supports the creation of Memory Chunks."
                },
                "AllowsBlockProvisioning": {
                    "type": [
                        "boolean",
                        "null"
                    ],
                    "readonly": true,
                    "description": "Indicates if this Memory Domain supports the provisioning of blocks of memory.",
                    "longDescription": "The value of this property shall indicate if this Memory Domain supports the creation of Blocks of memory."
                },
                "InterleavableMemorySets": {
                    "type": "array",
                    "items": {
                        "anyOf": [
                            {"$ref": "#/definitions/MemorySet"},
                            {"type": "null"}
                        ]
                    },
                    "description": "This is the interleave sets for the memory chunk.",
                    "longDescription": "These properties shall represent the interleave sets for the memory chunk."
                },
                "MemoryChunks": {
                    "anyOf": [
                        {"$ref": "http://redfish.dmtf.org/schemas/v1/MemoryChunksCollection.json#/definitions/MemoryChunksCollection"},
                        {"type": "null"}
                    ],
                    "readonly": true,
                    "description": "A reference to the collection of Memory Chunks associated with this Memory Domain.",
                    "longDescription": "The value of this property shall be a link to a collection of type MemoryChunkCollection."
                },
                "AllowsMirroring": {
                    "type": [
                        "boolean",
                        "null"
                    ],
                    "readonly": true,
                    "description": "Indicates if this Memory Domain supports the creation of Memory Chunks with mirroring enabled.",
                    "longDescription": "The value of this property shall indicate if this Memory Domain supports the creation of Memory Chunks with mirroring enabled."
                },
                "AllowsSparing": {
                    "type": [
                        "boolean",
                        "null"
                    ],
                    "readonly": true,
                    "description": "Indicates if this Memory Domain supports the creation of Memory Chunks with sparing enabled.",
                    "longDescription": "The value of this property shall indicate if this Memory Domain supports the creation of Memory Chunks with sparing enabled."
                }
            },
            "required": [
                "Id",
                "Name"
            ],
            "description": "This is the schema definition of a Memory Domain and its configuration. Memory Domains are used to indicate to the client which Memory (DIMMs) can be grouped together in Memory Chunks to form interleave sets or otherwise grouped together.",
            "longDescription": "This resource shall be used to represent Memory Domains in a Redfish implementation."
        }
    },
    "copyright": "Copyright 2014-2016 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright"
}
