diff --git a/ocpi.cdrs.v22.ts b/ocpi.cdrs.v22.ts index 9ab1501..367a4e6 100644 --- a/ocpi.cdrs.v22.ts +++ b/ocpi.cdrs.v22.ts @@ -10,25 +10,20 @@ import { Tariff } from "./ocpi.tariff.v22"; export const AuthMethod = z.enum(["AUTH_REQUEST", "COMMAND", "WHITELIST"]); const CdrDimensionType = z.enum([ - "CURRENT", "ENERGY", - "ENERGY_EXPORT", - "ENERGY_IMPORT", "MAX_CURRENT", "MIN_CURRENT", "MAX_POWER", "MIN_POWER", "PARKING_TIME", - "POWER", "RESERVATION_TIME", - "STATE_OF_CHARGE", "TIME", - ]); +]); export const CdrDimension = z.object({ type: CdrDimensionType, volume: z.number(), - }); +}); export const CdrToken = z.object({ uid: z.string().max(36), diff --git a/ocpi.cdrs.v221.ts b/ocpi.cdrs.v221.ts index ad4a85d..38ae468 100644 --- a/ocpi.cdrs.v221.ts +++ b/ocpi.cdrs.v221.ts @@ -10,20 +10,15 @@ import { Tariff } from "./ocpi.tariff.v221"; export const AuthMethod = z.enum(["AUTH_REQUEST", "COMMAND", "WHITELIST"]); const CdrDimensionType = z.enum([ - "CURRENT", "ENERGY", - "ENERGY_EXPORT", - "ENERGY_IMPORT", "MAX_CURRENT", "MIN_CURRENT", "MAX_POWER", "MIN_POWER", "PARKING_TIME", - "POWER", "RESERVATION_TIME", - "STATE_OF_CHARGE", "TIME", - ]); +]); export const CdrDimension = z.object({ type: CdrDimensionType, diff --git a/ocpi.sessions.v22.ts b/ocpi.sessions.v22.ts index f63e41a..c43821f 100644 --- a/ocpi.sessions.v22.ts +++ b/ocpi.sessions.v22.ts @@ -1,11 +1,38 @@ import {z} from "zod"; -import { AuthMethod, CdrToken, ChargingPeriod } from "./ocpi.cdrs.v22"; +import { AuthMethod, CdrToken } from "./ocpi.cdrs.v22"; import { Price } from "./ocpi.common.v22"; export const SessionStatus = z.enum(["ACTIVE", "COMPLETED", "INVALID", "PENDING", "RESERVATION"]); export const ProfileType = z.enum(["CHEAP", "FAST", "GREEN", "REGULAR"]); +const CdrDimensionType = z.enum([ + "CURRENT", + "ENERGY", + "ENERGY_EXPORT", + "ENERGY_IMPORT", + "MAX_CURRENT", + "MIN_CURRENT", + "MAX_POWER", + "MIN_POWER", + "PARKING_TIME", + "POWER", + "RESERVATION_TIME", + "STATE_OF_CHARGE", + "TIME", +]); + +export const CdrDimension = z.object({ + type: CdrDimensionType, + volume: z.number(), +}); + +export const ChargingPeriod = z.object({ + start_date_time: z.date(), + dimensions: z.array(CdrDimension).nonempty(), + tariff_id: z.string().max(36).nullish(), +}); + export const Session = z.object({ country_code: z.string().length(2), party_id: z.string().max(3), diff --git a/ocpi.sessions.v221.ts b/ocpi.sessions.v221.ts index 72fda51..ab6c277 100644 --- a/ocpi.sessions.v221.ts +++ b/ocpi.sessions.v221.ts @@ -1,11 +1,38 @@ import {z} from "zod"; -import { AuthMethod, CdrToken, ChargingPeriod } from "./ocpi.cdrs.v221"; +import { AuthMethod, CdrToken } from "./ocpi.cdrs.v221"; import { Price } from "./ocpi.common.v221"; export const SessionStatus = z.enum(["ACTIVE", "COMPLETED", "INVALID", "PENDING", "RESERVATION"]); export const ProfileType = z.enum(["CHEAP", "FAST", "GREEN", "REGULAR"]); +const CdrDimensionType = z.enum([ + "CURRENT", + "ENERGY", + "ENERGY_EXPORT", + "ENERGY_IMPORT", + "MAX_CURRENT", + "MIN_CURRENT", + "MAX_POWER", + "MIN_POWER", + "PARKING_TIME", + "POWER", + "RESERVATION_TIME", + "STATE_OF_CHARGE", + "TIME", +]); + +export const CdrDimension = z.object({ + type: CdrDimensionType, + volume: z.number(), +}); + +export const ChargingPeriod = z.object({ + start_date_time: z.date(), + dimensions: z.array(CdrDimension).nonempty(), + tariff_id: z.string().max(36).nullish(), +}); + export const Session = z.object({ country_code: z.string().length(2), party_id: z.string().max(3),