Incoming requests payload validation with JSON schemas (#135)
[e-mobility-charging-stations-simulator.git] / src / types / ChargingStationTemplate.ts
index 789ce248bc3d5e40beba0ccc2a2e221a618501fb..71d84bc80056a3b477ca3f7ce03c94508ef70a72 100644 (file)
@@ -1,9 +1,13 @@
-import ChargingStationOcppConfiguration from './ChargingStationOcppConfiguration';
-import { ClientOptions } from 'ws';
 import { ClientRequestArgs } from 'http';
+
+import { ClientOptions } from 'ws';
+
+import { AutomaticTransactionGeneratorConfiguration } from './AutomaticTransactionGenerator';
+import ChargingStationOcppConfiguration from './ChargingStationOcppConfiguration';
 import { ConnectorStatus } from './ConnectorStatus';
 import { OCPPProtocol } from './ocpp/OCPPProtocol';
 import { OCPPVersion } from './ocpp/OCPPVersion';
+import { IncomingRequestCommand, RequestCommand } from './ocpp/Requests';
 
 export enum CurrentType {
   AC = 'AC',
@@ -29,20 +33,13 @@ export enum Voltage {
   VOLTAGE_800 = 800,
 }
 
-export interface AutomaticTransactionGenerator {
-  enable: boolean;
-  minDuration: number;
-  maxDuration: number;
-  minDelayBetweenTwoTransactions: number;
-  maxDelayBetweenTwoTransactions: number;
-  probabilityOfStart: number;
-  stopAfterHours: number;
-  stopOnConnectionFailure: boolean;
-  requireAuthorize?: boolean;
-}
-
 export type WsOptions = ClientOptions & ClientRequestArgs;
 
+interface CommandsSupport {
+  incomingCommands: Record<IncomingRequestCommand, boolean>;
+  outgoingCommands?: Record<RequestCommand, boolean>;
+}
+
 export default interface ChargingStationTemplate {
   templateHash?: string;
   supervisionUrls?: string | string[];
@@ -54,6 +51,7 @@ export default interface ChargingStationTemplate {
   ocppProtocol?: OCPPProtocol;
   ocppStrictCompliance?: boolean;
   ocppPersistentConfiguration?: boolean;
+  stationInfoPersistentConfiguration?: boolean;
   wsOptions?: WsOptions;
   authorizationFile?: string;
   baseName: string;
@@ -78,12 +76,13 @@ export default interface ChargingStationTemplate {
   useConnectorId0?: boolean;
   randomConnectors?: boolean;
   resetTime?: number;
-  autoRegister: boolean;
+  autoRegister?: boolean;
   autoReconnectMaxRetries?: number;
   reconnectExponentialDelay?: boolean;
   registrationMaxRetries?: number;
   enableStatistics?: boolean;
-  mayAuthorizeAtRemoteStart: boolean;
+  mayAuthorizeAtRemoteStart?: boolean;
+  payloadSchemaValidation?: boolean;
   amperageLimitationOcppKey?: string;
   amperageLimitationUnit?: AmpereUnits;
   beginEndMeterValues?: boolean;
@@ -93,7 +92,8 @@ export default interface ChargingStationTemplate {
   mainVoltageMeterValues?: boolean;
   phaseLineToLineVoltageMeterValues?: boolean;
   customValueLimitationMeterValues?: boolean;
+  commandsSupport?: CommandsSupport;
   Configuration?: ChargingStationOcppConfiguration;
-  AutomaticTransactionGenerator: AutomaticTransactionGenerator;
+  AutomaticTransactionGenerator?: AutomaticTransactionGeneratorConfiguration;
   Connectors: Record<string, ConnectorStatus>;
 }