{
    "$schema": "http://redfish.dmtf.org/schemas/v1/redfish-schema.v1_2_0.json",
    "title": "#Switch.v1_0_2.Switch",
    "$ref": "#/definitions/Switch",
    "definitions": {
        "Reset": {
            "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."
                }
            },
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "title": {
                    "type": "string",
                    "description": "Friendly action name"
                },
                "target": {
                    "type": "string",
                    "format": "uri",
                    "description": "Link to invoke action"
                }
            },
            "description": "This action is used to reset this switch.",
            "longDescription": "This defines the name of the custom action supported on this resource."
        },
        "Switch": {
            "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
                },
                "SwitchType": {
                    "anyOf": [
                        {"$ref": "http://redfish.dmtf.org/schemas/v1/Storage.v1_0_0.json#/definitions/Protocol"},
                        {"type": "null"}
                    ],
                    "readonly": true,
                    "description": "The protocol being sent over this switch.",
                    "longDescription": "The value of this property shall contain the type of switch being represented by this simple switch."
                },
                "Status": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Status"
                },
                "Manufacturer": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "readonly": true,
                    "description": "This is the manufacturer of this switch.",
                    "longDescription": "The value of this property shall be the name of the organization responsible for producing the switch. This organization might be the entity from whom the switch is purchased, but this is not necessarily true."
                },
                "Model": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "readonly": true,
                    "description": "The product model number of this switch.",
                    "longDescription": "This property shall indicate the model information as provided by the manufacturer of this switch."
                },
                "SKU": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "readonly": true,
                    "description": "This is the SKU for this switch.",
                    "longDescription": "The value of this property shall be the stock-keeping unit number for this switch."
                },
                "SerialNumber": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "readonly": true,
                    "description": "The serial number for this switch.",
                    "longDescription": "The value of this property shall be a manufacturer-allocated number used to identify the switch."
                },
                "PartNumber": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "readonly": true,
                    "description": "The part number for this switch.",
                    "longDescription": "The value of this property shall be a part number assigned by the organization that is responsible for producing or manufacturing the switch."
                },
                "AssetTag": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "readonly": false,
                    "description": "The user assigned asset tag for this switch.",
                    "longDescription": "The value of this property shall be an identifying string used to track the drive for inventory purposes."
                },
                "DomainID": {
                    "type": [
                        "number",
                        "null"
                    ],
                    "readonly": true,
                    "description": "The Domain ID for this switch.",
                    "longDescription": "The value of this property shall have a scope of uniqueness within the fabric of which the switch is a member."
                },
                "IsManaged": {
                    "type": [
                        "boolean",
                        "null"
                    ],
                    "readonly": false,
                    "description": "This indicates whether the switch is in a managed or unmanaged state.",
                    "longDescription": "The value of this property shall be a boolean indicating whether this switch is in a managed or unmanaged state."
                },
                "TotalSwitchWidth": {
                    "type": [
                        "number",
                        "null"
                    ],
                    "readonly": true,
                    "description": "The total number of lanes, phys, or other physical transport links that this switch contains.",
                    "longDescription": "The value of this property shall be the number of physical transport lanes, phys, or other physical transport links that this switch contains. For PCIe, this shall be lane count."
                },
                "IndicatorLED": {
                    "anyOf": [
                        {"$ref": "http://redfish.dmtf.org/schemas/v1/Resource.v1_1_0.json#/definitions/IndicatorLED"},
                        {"type": "null"}
                    ],
                    "readonly": false,
                    "description": "The state of the indicator LED, used to identify the switch.",
                    "longDescription": "This value of this property shall contain the indicator light state for the indicator light associated with this switch."
                },
                "PowerState": {
                    "anyOf": [
                        {"$ref": "http://redfish.dmtf.org/schemas/v1/Resource.v1_2_0.json#/definitions/PowerState"},
                        {"type": "null"}
                    ],
                    "readonly": true,
                    "description": "This is the current power state of the switch.",
                    "longDescription": "The value of this property shall contain the power state of the switch."
                },
                "Links": {
                    "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": {
                        "Oem": {
                            "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
                            "description": "Oem extension object.",
                            "longDescription": "This object represents the Oem property.  All values for resources described by this schema shall comply to the requirements as described in the Redfish specification."
                        },
                        "Chassis": {
                            "$ref": "http://redfish.dmtf.org/schemas/v1/Chassis.json#/definitions/Chassis",
                            "readonly": true,
                            "description": "A reference to the chassis which contains this switch.",
                            "longDescription": "The value of this property shall be a reference to the resources that this switch is associated with and shall reference a resource of type Chassis."
                        },
                        "ManagedBy@odata.count": {
                            "$ref": "http://redfish.dmtf.org/schemas/v1/odata.4.0.0.json#/definitions/count"
                        },
                        "ManagedBy@odata.navigationLink": {
                            "type": "string",
                            "format": "uri"
                        },
                        "ManagedBy": {
                            "type": "array",
                            "items": {
                                "$ref": "http://redfish.dmtf.org/schemas/v1/Manager.json#/definitions/Manager"
                            },
                            "readonly": true,
                            "description": "An array of references to the managers that manage this switch.",
                            "longDescription": "The value of this property shall be a reference to the resources that this switch is associated with and shall reference a resource of type Manager."
                        }
                    },
                    "description": "Contains references to other resources that are related to this resource.",
                    "longDescription": "The Links property, as described by the Redfish Specification, shall contain references to resources that are related to, but not contained by (subordinate to), this resource."
                },
                "Actions": {
                    "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": {
                        "Oem": {
                            "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": {},
                            "description": "The available OEM specific actions for this resource.",
                            "longDescription": "This type shall contain any additional OEM actions for this resource."
                        },
                        "#Switch.Reset": {
                            "$ref": "#/definitions/Reset"
                        }
                    },
                    "description": "The available actions for this resource.",
                    "longDescription": "The Actions property shall contain the available actions for this resource."
                },
                "Ports": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/PortCollection.json#/definitions/PortCollection",
                    "readonly": true,
                    "description": "A collection of references to the ports for this switch.",
                    "longDescription": "The value of this property shall be a reference to the resources that this switch contains and shall reference a resource of type Port."
                },
                "Redundancy@odata.count": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata.4.0.0.json#/definitions/count"
                },
                "Redundancy@odata.navigationLink": {
                    "type": "string",
                    "format": "uri"
                },
                "Redundancy": {
                    "type": "array",
                    "items": {
                        "$ref": "http://redfish.dmtf.org/schemas/v1/Redundancy.json#/definitions/Redundancy"
                    },
                    "description": "Redundancy information for the switches."
                },
                "LogServices": {
                    "anyOf": [
                        {"$ref": "http://redfish.dmtf.org/schemas/v1/LogServiceCollection.json#/definitions/LogServiceCollection"},
                        {"type": "null"}
                    ],
                    "readonly": true,
                    "description": "A reference to the collection of Log Services associated with this system.",
                    "longDescription": "The value of this property shall be a link to a collection of type LogServiceCollection."
                }
            },
            "required": [
                "Id",
                "Name"
            ],
            "description": "Switch contains properties describing a simple fabric switch.",
            "longDescription": "This resource shall be used to represent a simple switch for a Redfish implementation."
        }
    },
    "copyright": "Copyright 2014-2017 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright"
}
