{
    "$id": "NotifyReportRequest",
    "comment": "OCPP 2.0.1 FINAL",
    "definitions": {
        "CustomDataType": {
            "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.",
            "javaType": "CustomData",
            "type": "object",
            "properties": {
                "vendorId": {
                    "type": "string",
                    "maxLength": 255
                }
            },
            "required": ["vendorId"]
        },
        "AttributeEnumType": {
            "description": "Attribute: Actual, MinSet, MaxSet, etc.\r\nDefaults to Actual if absent.\r\n",
            "javaType": "AttributeEnum",
            "type": "string",
            "default": "Actual",
            "additionalProperties": false,
            "enum": ["Actual", "Target", "MinSet", "MaxSet"],
            "tsEnumNames": ["Actual", "Target", "MinSet", "MaxSet"]
        },
        "DataEnumType": {
            "description": "Data type of this variable.\r\n",
            "javaType": "DataEnum",
            "type": "string",
            "additionalProperties": false,
            "enum": [
                "string",
                "decimal",
                "integer",
                "dateTime",
                "boolean",
                "OptionList",
                "SequenceList",
                "MemberList"
            ],
            "tsEnumNames": [
                "string",
                "decimal",
                "integer",
                "dateTime",
                "boolean",
                "OptionList",
                "SequenceList",
                "MemberList"
            ]
        },
        "MutabilityEnumType": {
            "description": "Defines the mutability of this attribute. Default is ReadWrite when omitted.\r\n",
            "javaType": "MutabilityEnum",
            "type": "string",
            "default": "ReadWrite",
            "additionalProperties": false,
            "enum": ["ReadOnly", "WriteOnly", "ReadWrite"],
            "tsEnumNames": ["ReadOnly", "WriteOnly", "ReadWrite"]
        },
        "ComponentType": {
            "description": "A physical or logical component\r\n",
            "javaType": "Component",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "customData": {
                    "$ref": "#/definitions/CustomDataType"
                },
                "evse": {
                    "$ref": "#/definitions/EVSEType"
                },
                "name": {
                    "description": "Name of the component. Name should be taken from the list of standardized component names whenever possible. Case Insensitive. strongly advised to use Camel Case.\r\n",
                    "type": "string",
                    "maxLength": 50
                },
                "instance": {
                    "description": "Name of instance in case the component exists as multiple instances. Case Insensitive. strongly advised to use Camel Case.\r\n",
                    "type": "string",
                    "maxLength": 50
                }
            },
            "required": ["name"]
        },
        "EVSEType": {
            "description": "EVSE\r\nurn:x-oca:ocpp:uid:2:233123\r\nElectric Vehicle Supply Equipment\r\n",
            "javaType": "EVSE",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "customData": {
                    "$ref": "#/definitions/CustomDataType"
                },
                "id": {
                    "description": "Identified_ Object. MRID. Numeric_ Identifier\r\nurn:x-enexis:ecdm:uid:1:569198\r\nEVSE Identifier. This contains a number (&gt; 0) designating an EVSE of the Charging Station.\r\n",
                    "type": "integer"
                },
                "connectorId": {
                    "description": "An id to designate a specific connector (on an EVSE) by connector index number.\r\n",
                    "type": "integer"
                }
            },
            "required": ["id"]
        },
        "ReportDataType": {
            "description": "Class to report components, variables and variable attributes and characteristics.\r\n",
            "javaType": "ReportData",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "customData": {
                    "$ref": "#/definitions/CustomDataType"
                },
                "component": {
                    "$ref": "#/definitions/ComponentType"
                },
                "variable": {
                    "$ref": "#/definitions/VariableType"
                },
                "variableAttribute": {
                    "type": "array",
                    "additionalItems": false,
                    "items": {
                        "$ref": "#/definitions/VariableAttributeType"
                    },
                    "minItems": 1,
                    "maxItems": 4
                },
                "variableCharacteristics": {
                    "$ref": "#/definitions/VariableCharacteristicsType"
                }
            },
            "required": ["component", "variable", "variableAttribute"]
        },
        "VariableAttributeType": {
            "description": "Attribute data of a variable.\r\n",
            "javaType": "VariableAttribute",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "customData": {
                    "$ref": "#/definitions/CustomDataType"
                },
                "type": {
                    "$ref": "#/definitions/AttributeEnumType"
                },
                "value": {
                    "description": "Value of the attribute. May only be omitted when mutability is set to 'WriteOnly'.\r\n\r\nThe Configuration Variable &lt;&lt;configkey-reporting-value-size,ReportingValueSize&gt;&gt; can be used to limit GetVariableResult.attributeValue, VariableAttribute.value and EventData.actualValue. The max size of these values will always remain equal. \r\n",
                    "type": "string",
                    "maxLength": 2500
                },
                "mutability": {
                    "$ref": "#/definitions/MutabilityEnumType"
                },
                "persistent": {
                    "description": "If true, value will be persistent across system reboots or power down. Default when omitted is false.\r\n",
                    "type": "boolean",
                    "default": false
                },
                "constant": {
                    "description": "If true, value that will never be changed by the Charging Station at runtime. Default when omitted is false.\r\n",
                    "type": "boolean",
                    "default": false
                }
            }
        },
        "VariableCharacteristicsType": {
            "description": "Fixed read-only parameters of a variable.\r\n",
            "javaType": "VariableCharacteristics",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "customData": {
                    "$ref": "#/definitions/CustomDataType"
                },
                "unit": {
                    "description": "Unit of the variable. When the transmitted value has a unit, this field SHALL be included.\r\n",
                    "type": "string",
                    "maxLength": 16
                },
                "dataType": {
                    "$ref": "#/definitions/DataEnumType"
                },
                "minLimit": {
                    "description": "Minimum possible value of this variable.\r\n",
                    "type": "number"
                },
                "maxLimit": {
                    "description": "Maximum possible value of this variable. When the datatype of this Variable is String, OptionList, SequenceList or MemberList, this field defines the maximum length of the (CSV) string.\r\n",
                    "type": "number"
                },
                "valuesList": {
                    "description": "Allowed values when variable is Option/Member/SequenceList. \r\n\r\n* OptionList: The (Actual) Variable value must be a single value from the reported (CSV) enumeration list.\r\n\r\n* MemberList: The (Actual) Variable value  may be an (unordered) (sub-)set of the reported (CSV) valid values list.\r\n\r\n* SequenceList: The (Actual) Variable value  may be an ordered (priority, etc)  (sub-)set of the reported (CSV) valid values.\r\n\r\nThis is a comma separated list.\r\n\r\nThe Configuration Variable &lt;&lt;configkey-configuration-value-size,ConfigurationValueSize&gt;&gt; can be used to limit SetVariableData.attributeValue and VariableCharacteristics.valueList. The max size of these values will always remain equal. \r\n\r\n",
                    "type": "string",
                    "maxLength": 1000
                },
                "supportsMonitoring": {
                    "description": "Flag indicating if this variable supports monitoring. \r\n",
                    "type": "boolean"
                }
            },
            "required": ["dataType", "supportsMonitoring"]
        },
        "VariableType": {
            "description": "Reference key to a component-variable.\r\n",
            "javaType": "Variable",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "customData": {
                    "$ref": "#/definitions/CustomDataType"
                },
                "name": {
                    "description": "Name of the variable. Name should be taken from the list of standardized variable names whenever possible. Case Insensitive. strongly advised to use Camel Case.\r\n",
                    "type": "string",
                    "maxLength": 50
                },
                "instance": {
                    "description": "Name of instance in case the variable exists as multiple instances. Case Insensitive. strongly advised to use Camel Case.\r\n",
                    "type": "string",
                    "maxLength": 50
                }
            },
            "required": ["name"]
        }
    },
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "customData": {
            "$ref": "#/definitions/CustomDataType"
        },
        "requestId": {
            "description": "The id of the GetReportRequest  or GetBaseReportRequest that requested this report\r\n",
            "type": "integer"
        },
        "generatedAt": {
            "description": "Timestamp of the moment this message was generated at the Charging Station.\r\n",
            "type": "string",
            "format": "date-time"
        },
        "reportData": {
            "type": "array",
            "additionalItems": false,
            "items": {
                "$ref": "#/definitions/ReportDataType"
            },
            "minItems": 1
        },
        "tbc": {
            "description": "“to be continued” indicator. Indicates whether another part of the report follows in an upcoming notifyReportRequest message. Default value when omitted is false.\r\n\r\n",
            "type": "boolean",
            "default": false
        },
        "seqNo": {
            "description": "Sequence number of this message. First message starts at 0.\r\n",
            "type": "integer"
        }
    },
    "required": ["requestId", "generatedAt", "seqNo"]
}
