/* eslint-disable */
/**
 * This file was automatically generated by json-schema-to-typescript.
 * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
 * and run json-schema-to-typescript to regenerate this file.
 */

/**
 * This field specifies the connector type.
 *
 */
export type ConnectorEnumType =
  | "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";
/**
 * Enumeration of possible idToken types.
 *
 */
export type IdTokenEnumType =
  | "Central"
  | "eMAID"
  | "ISO14443"
  | "ISO15693"
  | "KeyCode"
  | "Local"
  | "MacAddress"
  | "NoAuthorization";

export interface ReserveNowRequest {
  customData?: CustomDataType;
  /**
   * Id of reservation.
   *
   */
  id: number;
  /**
   * Date and time at which the reservation expires.
   *
   */
  expiryDateTime: string;
  connectorType?: ConnectorEnumType;
  idToken: IdTokenType;
  /**
   * This contains ID of the evse to be reserved.
   *
   */
  evseId?: number;
  groupIdToken?: IdTokenType;
}
/**
 * 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.
 */
export interface CustomDataType {
  vendorId: string;
  [k: string]: unknown;
}
/**
 * Contains a case insensitive identifier to use for the authorization and the type of authorization to support multiple forms of identifiers.
 *
 */
export interface IdTokenType {
  customData?: CustomDataType;
  /**
   * @minItems 1
   */
  additionalInfo?: [AdditionalInfoType, ...AdditionalInfoType[]];
  /**
   * IdToken is case insensitive. Might hold the hidden id of an RFID tag, but can for example also contain a UUID.
   *
   */
  idToken: string;
  type: IdTokenEnumType;
}
/**
 * Contains a case insensitive identifier to use for the authorization and the type of authorization to support multiple forms of identifiers.
 *
 */
export interface AdditionalInfoType {
  customData?: CustomDataType;
  /**
   * This field specifies the additional IdToken.
   *
   */
  additionalIdToken: string;
  /**
   * This defines the type of the additionalIdToken. This is a custom type, so the implementation needs to be agreed upon by all involved parties.
   *
   */
  type: string;
}
