{
    "$schema": "http://redfish.dmtf.org/schemas/v1/redfish-schema.v1_4_0.json",
    "copyright": "Copyright 2014-2018 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright",
    "definitions": {
        "Fan": {
            "additionalProperties": true,
            "description": "OpenBmc oem fan properties.",
            "patternProperties": {
                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
                    "description": "This property shall specify a valid odata or Redfish property.",
                    "type": [
                        "array",
                        "boolean",
                        "number",
                        "null",
                        "object",
                        "string"
                    ]
                }
            },
            "properties": {
                "FanControllers": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/FanControllers"
                        },
                        {
                            "type": "null"
                        }
                    ]
                },
                "FanZones": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/FanZones"
                        },
                        {
                            "type": "null"
                        }
                    ]
                },
                "PidControllers": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/PidControllers"
                        },
                        {
                            "type": "null"
                        }
                    ]
                },
                "StepwiseControllers": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/StepwiseControllers"
                        },
                        {
                            "type": "null"
                        }
                    ]
                }
            },
            "type": "object"
        },
        "FanController": {
            "additionalProperties": false,
            "description": "Configuration data for Fan Controllers.",
            "patternProperties": {
                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
                    "description": "This property shall specify a valid odata or Redfish property.",
                    "type": [
                        "array",
                        "boolean",
                        "number",
                        "null",
                        "object",
                        "string"
                    ]
                }
            },
            "properties": {
                "FFGainCoefficient": {
                    "description": "Feed forward gain coefficent for the PID.",
                    "longDescription": "Feed forward gain coefficent for the PID.",
                    "type": "number"
                },
                "FFOffCoefficient": {
                    "description": "Feed forward offset coefficent for the PID.",
                    "longDescription": "Feed forward offset coefficent for the PID.",
                    "type": "number"
                },
                "ICoefficient": {
                    "description": "Integral Coefficent for the PID.",
                    "longDescription": "Integral Coefficent for the PID.",
                    "type": "number"
                },
                "ILimitMax": {
                    "description": "Integral limit maxiumum for the PID.",
                    "longDescription": "Integral limit maxiumum for the PID.",
                    "type": "number"
                },
                "ILimitMin": {
                    "description": "Integral limit miniumum for the PID.",
                    "longDescription": "Integral limit miniumum for the PID.",
                    "type": "number"
                },
                "Inputs": {
                    "description": "Input sensors to the PID controller.",
                    "items": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "longDescription": "Input sensors to the PID controller.",
                    "type": "array"
                },
                "OutLimitMax": {
                    "description": "Output limit maxiumum for the pwm.",
                    "longDescription": "Output limit maxiumum for the pwm.",
                    "type": "number"
                },
                "OutLimitMin": {
                    "description": "Output limit minimum for the pwm.",
                    "longDescription": "Output limit minimum for the pwm.",
                    "type": "number"
                },
                "Outputs": {
                    "description": "Output sensors to the PID controller.",
                    "items": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "longDescription": "Output sensors to the PID controller.",
                    "type": "array"
                },
                "PCoefficient": {
                    "description": "Polynomial coefficent for the PID.",
                    "longDescription": "Polynomial coefficent for the PID.",
                    "type": "number"
                },
                "SlewNeg": {
                    "description": "Negative slew rate for the PID.",
                    "longDescription": "Negative slew rate for the PID.",
                    "type": "number"
                },
                "SlewPos": {
                    "description": "Positive slew rate for the PID.",
                    "longDescription": "Positive slew rate for the PID.",
                    "type": "number"
                },
                "Zones": {
                    "description": "Contains the Zones that this PID contributes to.",
                    "items": {
                        "$ref": "#/definitions/FanZone"
                    },
                    "readonly": true,
                    "type": "array"
                },
                "Zones@odata.count": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata.v4_0_2.json#/definitions/count"
                }
            },
            "type": "object"
        },
        "FanControllers": {
            "additionalProperties": true,
            "description": "OpenBmc FanControllers.",
            "longDescription": "Container for OpenBmc fan controllers.",
            "patternProperties": {
                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
                    "description": "This property shall specify a valid odata or Redfish property.",
                    "type": [
                        "array",
                        "boolean",
                        "number",
                        "null",
                        "object",
                        "string"
                    ]
                }
            },
            "properties": {},
            "type": "object"
        },
        "FanZone": {
            "additionalProperties": false,
            "description": "Configuration data for Fan Controllers.",
            "patternProperties": {
                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
                    "description": "This property shall specify a valid odata or Redfish property.",
                    "type": [
                        "array",
                        "boolean",
                        "number",
                        "null",
                        "object",
                        "string"
                    ]
                }
            },
            "properties": {
                "Chassis": {
                    "anyOf": [
                        {
                            "$ref": "http://redfish.dmtf.org/schemas/v1/Chassis.json#/definitions/Chassis"
                        },
                        {
                            "type": "null"
                        }
                    ],
                    "description": "The Chassis that enables this Zone.",
                    "readonly": true
                },
                "FailSafePercent": {
                    "description": "If the sensors are in fail-safe mode, this is the percentage to use.",
                    "longDescription": "If the sensors are in fail-safe mode, this is the percentage to use.",
                    "type": "number"
                },
                "MinThermalRpm": {
                    "description": "Minimum thermal RPM that can be set in this Zone.",
                    "longDescription": "Minimum thermal RPM that can be set in this Zone.",
                    "type": "number"
                }
            },
            "type": "object"
        },
        "FanZones": {
            "additionalProperties": true,
            "description": "OpenBmc FanZones.",
            "longDescription": "Container for OpenBmc fan zones.",
            "patternProperties": {
                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
                    "description": "This property shall specify a valid odata or Redfish property.",
                    "type": [
                        "array",
                        "boolean",
                        "number",
                        "null",
                        "object",
                        "string"
                    ]
                }
            },
            "properties": {},
            "type": "object"
        },
        "Oem": {
            "additionalProperties": true,
            "description": "OemManager Oem properties.",
            "patternProperties": {
                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
                    "description": "This property shall specify a valid odata or Redfish property.",
                    "type": [
                        "array",
                        "boolean",
                        "number",
                        "null",
                        "object",
                        "string"
                    ]
                }
            },
            "properties": {
                "OpenBmc": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/OpenBmc"
                        },
                        {
                            "type": "null"
                        }
                    ]
                }
            },
            "type": "object"
        },
        "OpenBmc": {
            "additionalProperties": true,
            "description": "Oem properties for OpenBmc.",
            "patternProperties": {
                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
                    "description": "This property shall specify a valid odata or Redfish property.",
                    "type": [
                        "array",
                        "boolean",
                        "number",
                        "null",
                        "object",
                        "string"
                    ]
                }
            },
            "properties": {
                "Fan": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Fan"
                        },
                        {
                            "type": "null"
                        }
                    ]
                }
            },
            "type": "object"
        },
        "PidController": {
            "additionalProperties": false,
            "description": "Configuration data for Fan Controllers.",
            "patternProperties": {
                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
                    "description": "This property shall specify a valid odata or Redfish property.",
                    "type": [
                        "array",
                        "boolean",
                        "number",
                        "null",
                        "object",
                        "string"
                    ]
                }
            },
            "properties": {
                "FFGainCoefficient": {
                    "description": "Feed forward gain coefficent for the PID.",
                    "longDescription": "Feed forward gain coefficent for the PID.",
                    "type": "number"
                },
                "FFOffCoefficient": {
                    "description": "Feed forward offset coefficent for the PID.",
                    "longDescription": "Feed forward offset coefficent for the PID.",
                    "type": "number"
                },
                "ICoefficient": {
                    "description": "Integral Coefficent for the PID.",
                    "longDescription": "Integral Coefficent for the PID.",
                    "type": "number"
                },
                "ILimitMax": {
                    "description": "Integral limit maxiumum for the PID.",
                    "longDescription": "Integral limit maxiumum for the PID.",
                    "type": "number"
                },
                "ILimitMin": {
                    "description": "Integral limit miniumum for the PID.",
                    "longDescription": "Integral limit miniumum for the PID.",
                    "type": "number"
                },
                "Inputs": {
                    "description": "Input sensors to the PID controller.",
                    "items": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "longDescription": "Input sensors to the PID controller.",
                    "type": "array"
                },
                "OutLimitMax": {
                    "description": "Output limit maxiumum for the pwm.",
                    "longDescription": "Output limit maxiumum for the pwm.",
                    "type": "number"
                },
                "OutLimitMin": {
                    "description": "Output limit minimum for the pwm.",
                    "longDescription": "Output limit minimum for the pwm.",
                    "type": "number"
                },
                "PCoefficient": {
                    "description": "Polynomial coefficent for the PID.",
                    "longDescription": "Polynomial coefficent for the PID.",
                    "type": "number"
                },
                "SlewNeg": {
                    "description": "Negative slew rate for the PID.",
                    "longDescription": "Negative slew rate for the PID.",
                    "type": "number"
                },
                "SlewPos": {
                    "description": "Positive slew rate for the PID.",
                    "longDescription": "Positive slew rate for the PID.",
                    "type": "number"
                },
                "Zones": {
                    "description": "Contains the Zones that this PID contributes to.",
                    "items": {
                        "$ref": "#/definitions/FanZone"
                    },
                    "readonly": true,
                    "type": "array"
                },
                "Zones@odata.count": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata.v4_0_2.json#/definitions/count"
                }
            },
            "type": "object"
        },
        "PidControllers": {
            "additionalProperties": true,
            "description": "OpenBmc PidControllers.",
            "longDescription": "Container for OpenBmc pid controllers.",
            "patternProperties": {
                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
                    "description": "This property shall specify a valid odata or Redfish property.",
                    "type": [
                        "array",
                        "boolean",
                        "number",
                        "null",
                        "object",
                        "string"
                    ]
                }
            },
            "properties": {},
            "type": "object"
        },
        "StepwiseController": {
            "additionalProperties": false,
            "description": "Configuration data for Stepwise Controllers.",
            "patternProperties": {
                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
                    "description": "This property shall specify a valid odata or Redfish property.",
                    "type": [
                        "array",
                        "boolean",
                        "number",
                        "null",
                        "object",
                        "string"
                    ]
                }
            },
            "properties": {
                "Inputs": {
                    "description": "Input sensors to the Stepwise controller.",
                    "items": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "longDescription": "Input sensors to the Stepwise controller.",
                    "type": "array"
                },
                "NegativeHysteresis": {
                    "description": "Negative Hysteresis for the stepwise controller.",
                    "longDescription": "Negative Hysteresis for the stepwise controller.",
                    "type": "number"
                },
                "PositiveHysteresis": {
                    "description": "Positive Hysteresis for the stepwise controller.",
                    "longDescription": "Positive Hysteresis for the stepwise controller.",
                    "type": "number"
                },
                "Steps": {
                    "description": "Temperature vs RPM steps for the stepwise controller.",
                    "items": {
                        "anyOf": [
                            {
                                "$ref": "#/definitions/StepwiseSteps"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "longDescription": "Temperature vs RPM steps for the stepwise controller.",
                    "type": "array"
                },
                "Zones": {
                    "description": "Contains the Zones that this controller contributes to.",
                    "items": {
                        "$ref": "#/definitions/FanZone"
                    },
                    "readonly": true,
                    "type": "array"
                },
                "Zones@odata.count": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata.v4_0_2.json#/definitions/count"
                }
            },
            "type": "object"
        },
        "StepwiseControllers": {
            "additionalProperties": true,
            "description": "OpenBmc StepwiseControllers.",
            "longDescription": "Container for OpenBmc Stepwise controllers.",
            "patternProperties": {
                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
                    "description": "This property shall specify a valid odata or Redfish property.",
                    "type": [
                        "array",
                        "boolean",
                        "number",
                        "null",
                        "object",
                        "string"
                    ]
                }
            },
            "properties": {},
            "type": "object"
        },
        "StepwiseSteps": {
            "additionalProperties": false,
            "patternProperties": {
                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
                    "description": "This property shall specify a valid odata or Redfish property.",
                    "type": [
                        "array",
                        "boolean",
                        "number",
                        "null",
                        "object",
                        "string"
                    ]
                }
            },
            "properties": {
                "Output": {
                    "description": "Fan speed setting for step.",
                    "longDescription": "Fan speed setting for step.",
                    "type": "number"
                },
                "Target": {
                    "description": "Input sensor reading for step.",
                    "longDescription": "Input sensor reading for step.",
                    "type": "number"
                }
            },
            "type": "object"
        }
    },
    "title": "#OemManager"
}