{
  "$id": "SetVariableMonitoringResponse",
  "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License",
  "definitions": {
    "MonitorEnumType": {
      "description": "The type of this monitor, e.g. a threshold, delta or periodic monitor. \r\n\r\n",
      "javaType": "MonitorEnum",
      "type": "string",
      "additionalProperties": false,
      "enum": [
        "UpperThreshold",
        "LowerThreshold",
        "Delta",
        "Periodic",
        "PeriodicClockAligned",
        "TargetDelta",
        "TargetDeltaRelative"
      ],
      "tsEnumNames": [
        "UpperThreshold",
        "LowerThreshold",
        "Delta",
        "Periodic",
        "PeriodicClockAligned",
        "TargetDelta",
        "TargetDeltaRelative"
      ]
    },
    "SetMonitoringStatusEnumType": {
      "description": "Status is OK if a value could be returned. Otherwise this will indicate the reason why a value could not be returned.\r\n",
      "javaType": "SetMonitoringStatusEnum",
      "type": "string",
      "additionalProperties": false,
      "enum": [
        "Accepted",
        "UnknownComponent",
        "UnknownVariable",
        "UnsupportedMonitorType",
        "Rejected",
        "Duplicate"
      ],
      "tsEnumNames": [
        "Accepted",
        "UnknownComponent",
        "UnknownVariable",
        "UnsupportedMonitorType",
        "Rejected",
        "Duplicate"
      ]
    },
    "ComponentType": {
      "description": "A physical or logical component\r\n",
      "javaType": "Component",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "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
        },
        "customData": {
          "$ref": "#/definitions/CustomDataType"
        }
      },
      "required": ["name"]
    },
    "EVSEType": {
      "description": "Electric Vehicle Supply Equipment\r\n",
      "javaType": "EVSE",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "id": {
          "description": "EVSE Identifier. This contains a number (&gt; 0) designating an EVSE of the Charging Station.\r\n",
          "type": "integer",
          "minimum": 1,
          "maximum": 2147483647
        },
        "connectorId": {
          "description": "An id to designate a specific connector (on an EVSE) by connector index number.\r\n",
          "type": "integer",
          "minimum": 0,
          "maximum": 2147483647
        },
        "customData": {
          "$ref": "#/definitions/CustomDataType"
        }
      },
      "required": ["id"]
    },
    "SetMonitoringResultType": {
      "description": "Class to hold result of SetVariableMonitoring request.\r\n",
      "javaType": "SetMonitoringResult",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "id": {
          "description": "Id given to the VariableMonitor by the Charging Station. The Id is only returned when status is accepted. Installed VariableMonitors should have unique id's but the id's of removed Installed monitors should have unique id's but the id's of removed monitors MAY be reused.\r\n",
          "type": "integer",
          "minimum": 0
        },
        "statusInfo": {
          "$ref": "#/definitions/StatusInfoType"
        },
        "status": {
          "$ref": "#/definitions/SetMonitoringStatusEnumType"
        },
        "type": {
          "$ref": "#/definitions/MonitorEnumType"
        },
        "component": {
          "$ref": "#/definitions/ComponentType"
        },
        "variable": {
          "$ref": "#/definitions/VariableType"
        },
        "severity": {
          "description": "The severity that will be assigned to an event that is triggered by this monitor. The severity range is 0-9, with 0 as the highest and 9 as the lowest severity level.\r\n\r\nThe severity levels have the following meaning: +\r\n*0-Danger* +\r\nIndicates lives are potentially in danger. Urgent attention is needed and action should be taken immediately. +\r\n*1-Hardware Failure* +\r\nIndicates that the Charging Station is unable to continue regular operations due to Hardware issues. Action is required. +\r\n*2-System Failure* +\r\nIndicates that the Charging Station is unable to continue regular operations due to software or minor hardware issues. Action is required. +\r\n*3-Critical* +\r\nIndicates a critical error. Action is required. +\r\n*4-Error* +\r\nIndicates a non-urgent error. Action is required. +\r\n*5-Alert* +\r\nIndicates an alert event. Default severity for any type of monitoring event.  +\r\n*6-Warning* +\r\nIndicates a warning event. Action may be required. +\r\n*7-Notice* +\r\nIndicates an unusual event. No immediate action is required. +\r\n*8-Informational* +\r\nIndicates a regular operational event. May be used for reporting, measuring throughput, etc. No action is required. +\r\n*9-Debug* +\r\nIndicates information useful to developers for debugging, not useful during operations.\r\n\r\n",
          "type": "integer",
          "minimum": 0,
          "maximum": 9
        },
        "customData": {
          "$ref": "#/definitions/CustomDataType"
        }
      },
      "required": ["status", "type", "severity", "component", "variable"]
    },
    "StatusInfoType": {
      "description": "Element providing more information about the status.\r\n",
      "javaType": "StatusInfo",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "reasonCode": {
          "description": "A predefined code for the reason why the status is returned in this response. The string is case-insensitive.\r\n",
          "type": "string",
          "maxLength": 20
        },
        "additionalInfo": {
          "description": "Additional text to provide detailed information.\r\n",
          "type": "string",
          "maxLength": 1024
        },
        "customData": {
          "$ref": "#/definitions/CustomDataType"
        }
      },
      "required": ["reasonCode"]
    },
    "VariableType": {
      "description": "Reference key to a component-variable.\r\n",
      "javaType": "Variable",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "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
        },
        "customData": {
          "$ref": "#/definitions/CustomDataType"
        }
      },
      "required": ["name"]
    },
    "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"]
    }
  },
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "setMonitoringResult": {
      "type": "array",
      "additionalItems": false,
      "items": {
        "$ref": "#/definitions/SetMonitoringResultType"
      },
      "minItems": 1
    },
    "customData": {
      "$ref": "#/definitions/CustomDataType"
    }
  },
  "required": ["setMonitoringResult"]
}
