{
    "$id": "ReserveNowRequest",
    "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"]
        },
        "ConnectorEnumType": {
            "description": "This field specifies the connector type.\r\n",
            "javaType": "ConnectorEnum",
            "type": "string",
            "additionalProperties": false,
            "enum": [
                "cCCS1",
                "cCCS2",
                "cG105",
                "cTesla",
                "cType1",
                "cType2",
                "s309-1P-16A",
                "s309-1P-32A",
                "s309-3P-16A",
                "s309-3P-32A",
                "sBS1361",
                "sCEE-7-7",
                "sType2",
                "sType3",
                "Other1PhMax16A",
                "Other1PhOver16A",
                "Other3Ph",
                "Pan",
                "wInductive",
                "wResonant",
                "Undetermined",
                "Unknown"
            ],
            "tsEnumNames": [
                "cCCS1",
                "cCCS2",
                "cG105",
                "cTesla",
                "cType1",
                "cType2",
                "s309_1P_16A",
                "s309_1P_32A",
                "s309_3P_16A",
                "s309_3P_32A",
                "sBS1361",
                "sCEE_7_7",
                "sType2",
                "sType3",
                "Other1PhMax16A",
                "Other1PhOver16A",
                "Other3Ph",
                "Pan",
                "wInductive",
                "wResonant",
                "Undetermined",
                "Unknown"
            ]
        },
        "IdTokenEnumType": {
            "description": "Enumeration of possible idToken types.\r\n",
            "javaType": "IdTokenEnum",
            "type": "string",
            "additionalProperties": false,
            "enum": [
                "Central",
                "eMAID",
                "ISO14443",
                "ISO15693",
                "KeyCode",
                "Local",
                "MacAddress",
                "NoAuthorization"
            ],
            "tsEnumNames": [
                "Central",
                "eMAID",
                "ISO14443",
                "ISO15693",
                "KeyCode",
                "Local",
                "MacAddress",
                "NoAuthorization"
            ]
        },
        "AdditionalInfoType": {
            "description": "Contains a case insensitive identifier to use for the authorization and the type of authorization to support multiple forms of identifiers.\r\n",
            "javaType": "AdditionalInfo",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "customData": {
                    "$ref": "#/definitions/CustomDataType"
                },
                "additionalIdToken": {
                    "description": "This field specifies the additional IdToken.\r\n",
                    "type": "string",
                    "maxLength": 36
                },
                "type": {
                    "description": "This defines the type of the additionalIdToken. This is a custom type, so the implementation needs to be agreed upon by all involved parties.\r\n",
                    "type": "string",
                    "maxLength": 50
                }
            },
            "required": ["additionalIdToken", "type"]
        },
        "IdTokenType": {
            "description": "Contains a case insensitive identifier to use for the authorization and the type of authorization to support multiple forms of identifiers.\r\n",
            "javaType": "IdToken",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "customData": {
                    "$ref": "#/definitions/CustomDataType"
                },
                "additionalInfo": {
                    "type": "array",
                    "additionalItems": false,
                    "items": {
                        "$ref": "#/definitions/AdditionalInfoType"
                    },
                    "minItems": 1
                },
                "idToken": {
                    "description": "IdToken is case insensitive. Might hold the hidden id of an RFID tag, but can for example also contain a UUID.\r\n",
                    "type": "string",
                    "maxLength": 36
                },
                "type": {
                    "$ref": "#/definitions/IdTokenEnumType"
                }
            },
            "required": ["idToken", "type"]
        }
    },
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "customData": {
            "$ref": "#/definitions/CustomDataType"
        },
        "id": {
            "description": "Id of reservation.\r\n",
            "type": "integer"
        },
        "expiryDateTime": {
            "description": "Date and time at which the reservation expires.\r\n",
            "type": "string",
            "format": "date-time"
        },
        "connectorType": {
            "$ref": "#/definitions/ConnectorEnumType"
        },
        "idToken": {
            "$ref": "#/definitions/IdTokenType"
        },
        "evseId": {
            "description": "This contains ID of the evse to be reserved.\r\n",
            "type": "integer"
        },
        "groupIdToken": {
            "$ref": "#/definitions/IdTokenType"
        }
    },
    "required": ["id", "expiryDateTime", "idToken"]
}
