{
    "$schema": "http://redfish.dmtf.org/schemas/v1/redfish-schema.v1_1_0.json",
    "title": "#AccountService.v1_0_2.AccountService",
    "$ref": "#/definitions/AccountService",
    "definitions": {
        "AccountService": {
            "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"
                },
                "Description": {
                    "anyOf": [
                        {"$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Description"},
                        {"type": "null"}
                    ]
                },
                "Name": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Name"
                },
                "Status": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Status"
                },
                "ServiceEnabled": {
                    "type": [
                        "boolean",
                        "null"
                    ],
                    "description": "This indicates whether this service is enabled.",
                    "longDescription": "The value of this property shall be a boolean indicating whether this service is enabled."
                },
                "AuthFailureLoggingThreshold": {
                    "type": "number",
                    "minimum": 0,
                    "readonly": false,
                    "description": "This is the number of authorization failures that need to occur before the failure attempt is logged to the manager log.",
                    "longDescription": "This property shall reference the threshold for when an authorization failure is logged.  This represents a modulo function value, thus the failure shall be logged every nth occurrence where n represents the value of this property."
                },
                "MinPasswordLength": {
                    "type": "number",
                    "minimum": 0,
                    "readonly": true,
                    "description": "This is the minimum password length for this service.",
                    "longDescription": "This property shall reference the minimum password length that the implementation will allow a password to be set to."
                },
                "MaxPasswordLength": {
                    "type": "number",
                    "minimum": 0,
                    "readonly": true,
                    "description": "This is the maximum password length for this service.",
                    "longDescription": "This property shall reference the maximum password length that the implementation will allow a password to be set to."
                },
                "AccountLockoutThreshold": {
                    "type": [
                        "number",
                        "null"
                    ],
                    "minimum": 0,
                    "readonly": false,
                    "description": "The number of failed login attempts before a user account is locked for a specified duration. (0=never locked)",
                    "longDescription": "This property shall reference the threshold of failed login attempts at which point the user's account is locked.  If set to 0, no lockout shall ever occur."
                },
                "AccountLockoutDuration": {
                    "type": [
                        "number",
                        "null"
                    ],
                    "minimum": 0,
                    "readonly": false,
                    "description": "The time in seconds an account is locked after the account lockout threshold is met. Must be >= AccountLockoutResetAfter. If set to 0, no lockout will occur.",
                    "longDescription": "This property shall reference the period of time in seconds that an account is locked after the number of failed login attempts reaches the threshold referenced by AccountLockoutThreshold, within the window of time referenced by AccountLockoutCounterResetAfter.  The value shall be greater than or equal to the value of AccountLockoutResetAfter.  If set to 0, no lockout shall occur."
                },
                "AccountLockoutCounterResetAfter": {
                    "type": "number",
                    "minimum": 0,
                    "readonly": false,
                    "description": "The interval of time in seconds since the last failed login attempt at which point the lockout threshold counter for the account is reset to zero. Must be less than or equal to AccountLockoutDuration",
                    "longDescription": "This property shall reference the threshold of time in seconds from the last failed login attempt at which point the AccountLockoutThreshold counter (that counts number of failed login attempts) is reset back to zero (at which point AccountLockoutThreshold failures would be required before the account is locked).  This value shall be less than or equal to AccountLockoutDuration. The threshold counter also resets to zero after each successful login."
                },
                "Accounts": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/ManagerAccountCollection.json#/definitions/ManagerAccountCollection",
                    "readonly": true,
                    "description": "Link to a collection of Manager Accounts",
                    "longDescription": "This property shall contain the link to a collection of type ManagerAccountCollection."
                },
                "Roles": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/RoleCollection.json#/definitions/RoleCollection",
                    "readonly": true,
                    "description": "Link to a collection of Roles",
                    "longDescription": "This property shall contain the link to a collection of type RoleCollection."
                }
            },
            "required": [
                "Id",
                "Name"
            ],
            "description": "Account Service contains properties common to all user accounts, such as password requirements, and control features such as account lockout.  It also contains links to the collections of Manager Accounts and Roles.",
            "longDescription": "This resource shall be used to represent a management account service for 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"
}
