/**
 * This file was auto-generated by openapi-typescript.
 * Do not make direct changes to the file.
 */


export interface paths {
  "/sessions": {
    /**
     * Sender /sessions
     * @description Fetch Sessions from a CPO system.
     */
    get: operations["getSessions"];
  };
  "/sessions/{session_id}/charging_preferences": {
    /**
     * Sender /sessions/{session_id}/charging_preferences
     * @description Set/update the driver’s Charging Preferences for this charging session.
     */
    put: operations["setChargingPreferences"];
  };
  "/sessions/{country_code}/{party_id}/{session_id}": {
    /**
     * Receiver /sessions/{country_code}/{party_id}/{session_id}
     * @description Retrieve a Session object from the eMSP’s system with Session.id equal to {session_id}.
     */
    get: operations["getSessionById"];
    /**
     * Receiver /sessions/{country_code}/{party_id}/{session_id}
     * @description Inform the eMSP’s system about a new/updated Session object in the CPO’s system.
     */
    put: operations["putSessionById"];
    /**
     * Receiver /sessions/{country_code}/{party_id}/{session_id}
     * @description Same as the PUT method, but only the fields/objects that need to be updated have to be present. Fields/objects which are not specified are considered unchange
     */
    patch: operations["patchSessionById"];
  };
  "/commands/START_SESSION": {
    /**
     * Receiver /commands/START_SESSION
     * @description Typically implemented by market roles like: CPO.
     */
    post: operations["startSession"];
  };
  "/commands/STOP_SESSION": {
    /** Receiver /commands/STOP_SESSION */
    post: operations["stopSession"];
  };
  "/commands/{command}/{uid}": {
    /**
     * Sender /commands/{command}/{uid}
     * @description Typically implemented by market roles like: eMSP.
     * The Sender interface receives the asynchronous responses.
     */
    post: operations["SenderCommandsUID"];
  };
  "/tokens/{country_code}/{party_id}/{token_uid}": {
    /**
     * Receiver /tokens/{country_code}/{party_id}/{token_uid}
     * @description Retrieve a Token as it is stored in the CPO system.
     */
    get: operations["getTokenById"];
    /**
     * Receiver /tokens/{country_code}/{party_id}/{token_uid}
     * @description New or updated Token objects are pushed from the eMSP to the CPO.
     */
    put: operations["putToken"];
    /**
     * Receiver /tokens/{country_code}/{party_id}/{token_uid}
     * @description New or updated Token objects are pushed from the eMSP to the CPO.
     */
    patch: operations["patchToken"];
  };
  "/versions": {
    /** /versions */
    get: operations["getVersions"];
  };
  "/{version}": {
    /**
     * /{version}
     * @description also supports https://ocpi.server.com/{version}/details
     */
    get: operations["getVersion"];
  };
  "/credentials": {
    /**
     * Get
     * @description Retrieves the credentials object to access the server’s platform.
     */
    get: operations["getCredentials"];
    /**
     * Update
     * @description Provides the server with an updated credentials object to access the client’s system.
     */
    put: operations["putCredentials"];
    /**
     * Register
     * @description Provides the server with a credentials object to access the client’s system (i.e. register).
     */
    post: operations["postCredentials"];
    /**
     * Unregister
     * @description Informs the server that its credentials to the client’s system are now invalid (i.e. unregister).
     */
    delete: operations["deleteCredentials"];
  };
  "/locations": {
    /**
     * Sender /locations
     * @description Fetch a list of Locations
     */
    get: operations["getLocations"];
  };
  "/locations/{location_id}": {
    /** Sender /locations/{location_id} */
    get: operations["getLocation_by_location_id"];
  };
  "/locations/{location_id}/{evse_uid}": {
    /** Sender /locations/{location_id}/{evse_uid} */
    get: operations["getLocation_by_location_id_evse_uid"];
  };
  "/locations/{location_id}/{evse_uid}/{connector_id}": {
    /** Sender /locations/{location_id}/{evse_uid}]/[{connector_id} */
    get: operations["getLocation_by_location_id_evse_uid_connector_id"];
  };
  "/tariffs": {
    /** Sender /tariffs */
    get: operations["getTariffs"];
  };
  "/cdrs": {
    /** Sender /cdrs */
    get: operations["getCdrs"];
    /** Receiver /cdrs */
    post: operations["createCdr"];
  };
  "/cdrs/{cdr_id}": {
    /** Receiver /cdrs/{cdr_id} */
    get: operations["getCdrById"];
  };
  "/chargingprofiles/{session_id}": {
    /**
     * {chargingprofiles_endpoint_url}{session_id}
     * @description Creates a new ChargingProfile on a session, or replaces an existing ChargingProfile on the EVSE.
     */
    put: operations["updateChargingProfile"];
  };
  "/clientinfo/{country_code}/{party_id}": {
    /**
     * Receiver: {clientinfo_endpoint_url}/{country_code}/{party_id}
     * @description Retrieve a ClientInfo object as it is stored in the connected clients system.
     */
    get: operations["getClientInfo"];
    /**
     * Receiver: {clientinfo_endpoint_url}/{country_code}/{party_id}
     * @description New or updated ClientInfo objects are pushed from the Hub to a connected client.
     */
    put: operations["putClientInfo"];
  };
  "/hubclientinfo": {
    /**
     * Sender: {locations_endpoint_url}
     * @description Get the list of known ClientInfo objects, last updated between the {date_from} and {date_to} paginated)
     */
    get: operations["getHubClientInfos"];
  };
}

export type webhooks = Record<string, never>;

export interface components {
  schemas: {
    /**
     * DateTime type
     * Format: date-time
     */
    DateTime: string;
    BaseResponse: {
      /**
       * @description * or ?
       * Contains the actual response data object or list of objects from each request, depending on the cardinality of the response data, this is an array (card. * or +), or a single object (card. 1 or ?)
       */
      data?: unknown;
      /** @example 200 */
      status_code: number;
      /** @example OK */
      status_message?: string;
      /**
       * Format: date-time
       * @example 2020-01-01T00:00:00Z
       */
      timestamp: string;
    };
    /**
     * country_code
     * @description ISO-3166 alpha-2 country code
     *
     * @example JP
     */
    CountryCode: string;
    /**
     * party_id
     * @description ID of the CPO (following the ISO-15118 standard).
     *
     * @example PLU
     */
    PartyID: string;
    CdrToken: {
      country_code: components["schemas"]["CountryCode"];
      party_id: components["schemas"]["PartyID"];
      /**
       * @description Unique ID by which this Token can be identified.
       * This is the field used by the CPO’s system (RFID reader on the Charge Point) to identify this token.
       * Currently, in most cases: type=RFID, this is the RFID hidden ID as read by the RFID reader, but that is not a requirement.
       * If this is a type=APP_USER Token, it will be a unique, by the eMSP, generated ID.
       */
      uid: string;
      /** @enum {string} */
      type: "AD_HOC_USER" | "APP_USER" | "OTHER" | "RFID";
      /** @description Uniquely identifies the EV driver contract token within the eMSP’s platform (and suboperator platforms). Recommended to follow the specification for eMA ID from "eMI3 standard version V1.0" (http://emi3group.com/documents-links/) "Part 2: business objects." */
      contract_id: string;
    };
    CdrDimension: {
      /** @enum {string} */
      type: "CURRENT" | "ENERGY" | "ENERGY_EXPORT" | "ENERGY_IMPORT" | "MAX_CURRENT" | "MIN_CURRENT" | "MAX_POWER" | "MIN_POWER" | "PARKING_TIME" | "POWER" | "RESERVATION_TIME" | "STATE_OF_CHARGE" | "TIME";
      /** Format: float */
      volume: number;
    };
    ChargingPeriod: {
      /** Format: date-time */
      start_date_time: string;
      dimensions: components["schemas"]["CdrDimension"][];
      tariff_id?: string;
    };
    Price: {
      /** Format: float */
      excl_vat: number;
      /** Format: float */
      incl_vat?: number;
    };
    Session: {
      country_code: components["schemas"]["CountryCode"];
      party_id: components["schemas"]["PartyID"];
      id: string;
      /**
       * Format: date-time
       * @description The timestamp when the session became ACTIVE in the Charge Point.
       * When the session is still PENDING, this field SHALL be set to the time the Session was created at the Charge Point. When a Session goes from PENDING to ACTIVE, this field SHALL be updated to the moment the Session went to ACTIVE in the Charge Point.
       */
      start_date_time: string;
      /** Format: date-time */
      end_date_time?: string;
      /** Format: float */
      kwh: number;
      cdr_token: components["schemas"]["CdrToken"];
      /**
       * @description Method used for authentication. This might change during a session, for example when the session was started with a reservation: ReserveNow: COMMAND. When the driver arrives and starts charging using a Token that is whitelisted: WHITELIST.
       *
       * @enum {string}
       */
      auth_method: "AUTH_REQUEST" | "COMMAND" | "WHITELIST";
      authorization_reference?: string;
      location_id: string;
      /** @description EVSE.uid of the EVSE of this Location on which the charging session is/was happening. Allowed to be set to: #NA when this session is created for a reservation, but no EVSE yet assigned to the driver. */
      evse_uid: string;
      connector_id: string;
      meter_id?: string;
      currency: string;
      charging_periods?: components["schemas"]["ChargingPeriod"][];
      total_cost?: components["schemas"]["Price"];
      /** @enum {string} */
      status: "ACTIVE" | "COMPLETED" | "INVALID" | "PENDING" | "RESERVATION";
      last_updated: components["schemas"]["DateTime"];
    };
    ChargingPreferences: {
      /** @enum {string} */
      profile_type: "CHEAP" | "FAST" | "GREEN" | "REGULAR";
      departure_time?: string;
      /** Format: float */
      energy_need?: number;
      discharge_allowed?: boolean;
    };
    /** @description The Problem Details JSON Object [[RFC7807](https://tools.ietf.org/html/rfc7807)]. */
    Problem: {
      /**
       * Format: uri
       * @description A URI reference [[RFC3986](https://tools.ietf.org/html/rfc3986)] that identifies the problem type. It should provide human-readable documentation for the problem type. When this member is not present, its value is assumed to be "about:blank".
       */
      type?: string;
      /** @description A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization. */
      title?: string;
      /** @description The HTTP status code. */
      status?: number;
      /** @description A human-readable explanation specific to this occurrence of the problem. */
      detail?: string;
      /** @description A URI reference that identifies the specific occurrence of the problem.  It may or may not yield further information if dereferenced. */
      instance?: string;
      [key: string]: unknown;
    };
    SessionPatch: {
      country_code?: components["schemas"]["CountryCode"];
      party_id?: components["schemas"]["PartyID"];
      id?: string;
      start_date_time?: string;
      end_date_time?: string;
      /** Format: float */
      kwh?: number;
      cdr_token?: components["schemas"]["CdrToken"];
      /** @enum {string} */
      auth_method?: "AUTH_REQUEST" | "COMMAND" | "WHITELIST";
      authorization_reference?: string;
      location_id?: string;
      evse_uid?: string;
      connector_id?: string;
      meter_id?: string;
      currency?: string;
      charging_periods?: components["schemas"]["ChargingPeriod"][];
      total_cost?: components["schemas"]["Price"];
      /** @enum {string} */
      status?: "ACTIVE" | "COMPLETED" | "INVALID" | "PENDING" | "RESERVATION";
      last_updated: components["schemas"]["DateTime"];
    };
    /**
     * EnergyContract class
     * @description Information about a energy contract that belongs to a Token so a driver could use his/her own energy contract when charging at a Charge Point.
     */
    EnergyContract: {
      /**
       * @description Name of the energy supplier.
       * @example The Green Power Company
       */
      supplier_name: string;
      /**
       * @description Contract ID at the energy supplier, that belongs to the owner of this token.
       * @example 123456789
       */
      contract_id?: string;
    };
    /** Token Object */
    Token: {
      country_code: components["schemas"]["CountryCode"];
      party_id: string;
      uid: string;
      /**
       * @description TokenType enum
       * @enum {string}
       */
      type: "AD_HOC_USER" | "APP_USER" | "OTHER" | "RFID";
      contract_id: string;
      visual_number?: string;
      issuer: string;
      group_id?: string;
      valid: boolean;
      /**
       * WhitelistType enum
       * @description Defines when authorization of a Token by the CPO is allowed.
       * @enum {string}
       */
      whitelist: "ALWAYS" | "ALLOWED" | "ALLOWED_OFFLINE" | "NEVER";
      language?: string;
      /**
       * ProfileType enum
       * @description Different smart charging profile types.
       * @enum {string}
       */
      default_profile_type?: "CHEAP" | "FAST" | "GREEN" | "REGULAR";
      energy_contract?: components["schemas"]["EnergyContract"];
      last_updated: components["schemas"]["DateTime"];
    };
    StartSession: {
      response_url: string;
      token: components["schemas"]["Token"];
      location_id: string;
      evse_uid?: string;
      connector_id?: string;
      authorization_reference?: string;
    };
    /**
     * CommandResponseType enum
     * @enum {string}
     */
    CommandResponseType: "NOT_SUPPORTED" | "REJECTED" | "ACCEPTED" | "UNKNOWN_SESSION";
    /** DisplayText class */
    DisplayText: {
      /**
       * @description Language Code ISO 639-1.
       * @example en
       */
      language: string;
      /**
       * @description Text to be displayed to a end user. No markup, html etc. allowed.
       * @example Standard Tariff
       */
      text: string;
    };
    CommandResponse: {
      result: components["schemas"]["CommandResponseType"];
      timeout: number;
      message?: components["schemas"]["DisplayText"];
    };
    StopSession: {
      response_url: string;
      session_id: string;
    };
    /**
     * CommandResultType enum
     * @description Result of the command that was send to the Charge Point.
     * @enum {string}
     */
    CommandResultType: "ACCEPTED" | "CANCELED_RESERVATION" | "EVSE_OCCUPIED" | "EVSE_INOPERATIVE" | "FAILED" | "NOT_SUPPORTED" | "REJECTED" | "TIMEOUT" | "UNKNOWN_RESERVATION";
    CommandResult: {
      result: components["schemas"]["CommandResultType"];
      message: components["schemas"]["DisplayText"];
    };
    /**
     * Token patch payload
     * @example {
     *   "valid": false,
     *   "last_updated": "2019-06-19T02:11:11Z"
     * }
     */
    TokenPatch: {
      country_code?: string;
      party_id?: string;
      uid?: string;
      /**
       * @description TokenType enum
       * @enum {string}
       */
      type?: "AD_HOC_USER" | "APP_USER" | "OTHER" | "RFID";
      contract_id?: string;
      visual_number?: string;
      issuer?: string;
      group_id?: string;
      valid?: boolean;
      /**
       * WhitelistType enum
       * @description Defines when authorization of a Token by the CPO is allowed.
       * @enum {string}
       */
      whitelist?: "ALWAYS" | "ALLOWED" | "ALLOWED_OFFLINE" | "NEVER";
      language?: string;
      /**
       * ProfileType enum
       * @description Different smart charging profile types.
       * @enum {string}
       */
      default_profile_type?: "CHEAP" | "FAST" | "GREEN" | "REGULAR";
      energy_contract?: components["schemas"]["EnergyContract"];
      last_updated: components["schemas"]["DateTime"];
    };
    /**
     * @description VersionNumber enum
     * @example 2.2.1
     * @enum {string}
     */
    VersionNumber: "2.0" | "2.1" | "2.1.1" | "2.2" | "2.2.1";
    Version: {
      version: components["schemas"]["VersionNumber"];
      /** @example https://www.example.com/ocpi/cpo/2.2.1 */
      url: string;
    };
    /**
     * @example [
     *   {
     *     "version": "2.2.1",
     *     "url": "https://www.example.com/ocpi/cpo/2.2.1"
     *   },
     *   {
     *     "version": "2.2",
     *     "url": "https://www.example.com/ocpi/cpo/2.2"
     *   }
     * ]
     */
    Versions: components["schemas"]["Version"][];
    /**
     * @description ModuleID enum
     * @enum {string}
     */
    ModuleID: "cdrs" | "chargingprofiles" | "commands" | "credentials" | "hubclientinfo" | "locations" | "sessions" | "tariffs" | "tokens";
    /**
     * @description InterfaceRole enum
     * @enum {string}
     */
    InterfaceRole: "SENDER" | "RECEIVER";
    /** @description Endpoint */
    Endpoint: {
      identifier: components["schemas"]["ModuleID"];
      role: components["schemas"]["InterfaceRole"];
      /** @example https://www.server.com/ocpi/cpo/2.2 */
      url: string;
    };
    VersionDetail: {
      version: components["schemas"]["VersionNumber"];
      endpoints: components["schemas"]["Endpoint"][];
    };
    /**
     * URL
     * Format: uri
     */
    URL: string;
    /**
     * Role enum
     * @enum {string}
     */
    Role: "CPO" | "EMSP" | "HUB" | "NAP" | "NSP" | "OTHER" | "SCSP";
    /**
     * ImageCategory enum
     * @enum {string}
     */
    ImageCategory: "CHARGER" | "ENTRANCE" | "LOCATION" | "NETWORK" | "OPERATOR" | "OTHER" | "OWNER";
    /** Image class */
    Image: {
      url: components["schemas"]["URL"];
      thumbnail?: components["schemas"]["URL"];
      category: components["schemas"]["ImageCategory"];
      /** @description Image type like: gif, jpeg, png, svg. */
      type: string;
      width?: number;
      height?: number;
    };
    /** BusinessDetails class */
    BusinessDetails: {
      /** @description Name of the operator. */
      name: string;
      website?: components["schemas"]["URL"];
      logo?: components["schemas"]["Image"];
    };
    /** CredentialsRole class */
    CredentialsRole: {
      role: components["schemas"]["Role"];
      business_details: components["schemas"]["BusinessDetails"];
      party_id: components["schemas"]["PartyID"];
      country_code: components["schemas"]["CountryCode"];
    };
    /**
     * Credentials object
     * @description Every role needs a unique combination of: role, party_id and country_code.
     */
    Credentials: {
      token: string;
      url: components["schemas"]["URL"];
      roles: components["schemas"]["CredentialsRole"][];
    };
    /** GeoLocation class */
    GeoLocation: {
      latitude: string;
      longitude: string;
    };
    /** AdditionalGeoLocation class */
    AdditionalGeoLocation: {
      latitude: string;
      longitude: string;
      name?: components["schemas"]["DisplayText"];
    };
    /**
     * ParkingType enum
     * @enum {string}
     */
    ParkingType: "ALONG_MOTORWAY" | "PARKING_GARAGE" | "PARKING_LOT" | "ON_DRIVEWAY" | "ON_STREET" | "UNDERGROUND_GARAGE";
    /**
     * Status enum
     * @description The status of an EVSE.
     * @enum {string}
     */
    Status: "AVAILABLE" | "BLOCKED" | "CHARGING" | "INOPERATIVE" | "OUTOFORDER" | "PLANNED" | "REMOVED" | "RESERVED" | "UNKNOWN";
    /** StatusSchedule class */
    StatusSchedule: {
      period_begin: components["schemas"]["DateTime"];
      period_end?: components["schemas"]["DateTime"];
      status: components["schemas"]["Status"];
    };
    /**
     * Capability enum
     * @description The capability of an EVSE.
     * @enum {string}
     */
    Capability: "CHARGING_PROFILE_CAPABLE" | "CHARGING_PREFERENCES_CAPABLE" | "CHIP_CARD_SUPPORT" | "CONTACTLESS_CARD_SUPPORT" | "CREDIT_CARD_PAYABLE" | "DEBIT_CARD_PAYABLE" | "PED_TERMINAL" | "REMOTE_START_STOP_CAPABLE" | "RESERVABLE" | "RFID_READER" | "START_SESSION_CONNECTOR_REQUIRED" | "TOKEN_GROUP_CAPABLE" | "UNLOCK_CAPABLE";
    /**
     * ConnectorType enum
     * @enum {string}
     */
    ConnectorType: "CHADEMO" | "CHAOJI" | "DOMESTIC_A" | "DOMESTIC_B" | "DOMESTIC_C" | "DOMESTIC_D" | "DOMESTIC_E" | "DOMESTIC_F" | "DOMESTIC_G" | "DOMESTIC_H" | "DOMESTIC_I" | "DOMESTIC_J" | "DOMESTIC_K" | "DOMESTIC_L" | "DOMESTIC_M" | "DOMESTIC_N" | "DOMESTIC_O" | "GBT_AC" | "GBT_DC" | "IEC_60309_2_single_16" | "IEC_60309_2_three_16" | "IEC_60309_2_three_32" | "IEC_60309_2_three_64" | "IEC_62196_T1" | "IEC_62196_T1_COMBO" | "IEC_62196_T2" | "IEC_62196_T2_COMBO" | "IEC_62196_T3A" | "IEC_62196_T3C" | "NEMA_5_20" | "NEMA_6_30" | "NEMA_6_50" | "NEMA_10_30" | "NEMA_10_50" | "NEMA_14_30" | "NEMA_14_50" | "PANTOGRAPH_BOTTOM_UP" | "PANTOGRAPH_TOP_DOWN" | "TESLA_R" | "TESLA_S";
    /**
     * ConnectorFormat enum
     * @enum {string}
     */
    ConnectorFormat: "SOCKET" | "CABLE";
    /**
     * PowerType enum
     * @enum {string}
     */
    PowerType: "AC_1_PHASE" | "AC_2_PHASE" | "AC_2_PHASE_SPLIT" | "AC_3_PHASE" | "DC";
    /** Connector Object */
    Connector: {
      id: string;
      standard: components["schemas"]["ConnectorType"];
      format: components["schemas"]["ConnectorFormat"];
      power_type: components["schemas"]["PowerType"];
      max_voltage: number;
      max_amperage: number;
      max_electric_power?: number;
      tariff_ids?: string[];
      terms_and_conditions?: components["schemas"]["URL"];
      last_updated: components["schemas"]["DateTime"];
    };
    /**
     * ParkingRestriction enum
     * @enum {string}
     */
    ParkingRestriction: "EV_ONLY" | "PLUGGED" | "DISABLED" | "CUSTOMERS" | "MOTORCYCLES";
    EVSE: {
      uid: string;
      evse_id?: string;
      status: components["schemas"]["Status"];
      status_schedule?: components["schemas"]["StatusSchedule"][];
      capabilities?: components["schemas"]["Capability"][];
      connectors: components["schemas"]["Connector"][];
      floor_level?: string;
      coordinates?: components["schemas"]["GeoLocation"];
      physical_reference?: string;
      directions?: components["schemas"]["DisplayText"][];
      parking_restrictions?: components["schemas"]["ParkingRestriction"][];
      images?: components["schemas"]["Image"][];
      /** Format: date-time */
      last_updated: string;
    };
    /**
     * @description Facility enum
     * @enum {string}
     */
    Facility: "HOTEL" | "RESTAURANT" | "CAFE" | "MALL" | "SUPERMARKET" | "SPORT" | "RECREATION_AREA" | "NATURE" | "MUSEUM" | "BIKE_SHARING" | "BUS_STOP" | "TAXI_STAND" | "TRAM_STOP" | "METRO_STATION" | "TRAIN_STATION" | "AIRPORT" | "PARKING_LOT" | "CARPOOL_PARKING" | "FUEL_STATION" | "WIFI";
    /** @description RegularHours class */
    RegularHours: {
      /** @description Number of day in the week, from Monday (1) till Sunday (7) */
      weekday: number;
      period_begin: string;
      period_end: string;
    };
    /** @description ExceptionalPeriod class */
    ExceptionalPeriod: {
      period_begin: components["schemas"]["DateTime"];
      period_end: components["schemas"]["DateTime"];
    };
    /** @description Hours class */
    Hours: {
      twentyfourseven: boolean;
      regular_hours?: components["schemas"]["RegularHours"][];
      exceptional_openings?: components["schemas"]["ExceptionalPeriod"];
      exceptional_closings?: components["schemas"]["ExceptionalPeriod"];
    };
    /**
     * @description EnergySourceCategory enum
     * @enum {string}
     */
    EnergySourceCategory: "NUCLEAR" | "GENERAL_FOSSIL" | "COAL" | "GAS" | "GENERAL_GREEN" | "SOLAR" | "WIND" | "WATER";
    /** @description EnergySource class */
    EnergySource: {
      source: components["schemas"]["EnergySourceCategory"];
      percentage: number;
    };
    /**
     * @description EnvironmentalImpactCategory enum
     * @enum {string}
     */
    EnvironmentalImpactCategory: "NUCLEAR_WASTE" | "CARBON_DIOXIDE";
    /** @description EnvironmentalImpact class */
    EnvironmentalImpact: {
      category: components["schemas"]["EnvironmentalImpactCategory"];
      amount: number;
    };
    /** @description EnergyMix class */
    EnergyMix: {
      is_green_energy: boolean;
      energy_sources?: components["schemas"]["EnergySource"][];
      environ_impact?: components["schemas"]["EnvironmentalImpact"][];
      supplier_name?: string;
      energy_product_name?: string;
    };
    Location: {
      country_code: components["schemas"]["CountryCode"];
      party_id: components["schemas"]["PartyID"];
      id: string;
      publish: boolean;
      publish_allowed_to?: string[];
      name?: string;
      address: string;
      city: string;
      postal_code?: string;
      state?: string;
      country: string;
      coordinates: components["schemas"]["GeoLocation"];
      related_locations?: components["schemas"]["AdditionalGeoLocation"][];
      parking_type?: components["schemas"]["ParkingType"][];
      evses?: components["schemas"]["EVSE"][];
      directions?: components["schemas"]["DisplayText"][];
      operator?: components["schemas"]["BusinessDetails"];
      suboperator?: components["schemas"]["BusinessDetails"];
      owner?: components["schemas"]["BusinessDetails"];
      facilities?: components["schemas"]["Facility"][];
      time_zone: string;
      opening_times?: components["schemas"]["Hours"][];
      charging_when_closed?: boolean;
      images?: components["schemas"]["Image"][];
      energy_mix?: components["schemas"]["EnergyMix"];
      last_updated: components["schemas"]["DateTime"];
    };
    /**
     * TariffType enum
     * @enum {string}
     */
    TariffType: "AD_HOC_PAYMENT" | "PROFILE_CHEAP" | "PROFILE_FAST" | "PROFILE_GREEN" | "REGULAR";
    /**
     * TariffDimensionType enum
     * @enum {string}
     */
    TariffDimensionType: "ENERGY" | "FLAT" | "PARKING_TIME" | "TIME";
    /**
     * number type
     * Format: number
     */
    number: number;
    /** PriceComponent class */
    PriceComponent: {
      type: components["schemas"]["TariffDimensionType"];
      price: components["schemas"]["number"];
      vat?: components["schemas"]["number"];
      step_size: number;
    };
    /**
     * time type
     * @description time of day in local time, the time zone is defined in the time_zone field of the Location, for example 13:30, valid from this time of the day. Must be in 24h format with leading zeros. Hour/Minute separator: ":" Regex: ([0-1][0- 9]|2[0-3]):[0-5][0-9]
     */
    time: string;
    /**
     * day type
     * @description date in local time, the time zone is defined in the time_zone field of the Location, for example: 2015-12-24, valid from this day (inclusive). Regex: ([12][0-9]{3})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])
     */
    day: string;
    /**
     * DayOfWeek enum
     * @enum {string}
     */
    DayOfWeek: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY";
    /**
     * ReservationRestrictionType enum
     * @enum {string}
     */
    ReservationRestrictionType: "RESERVATION" | "RESERVATION_EXPIRES";
    /** TariffRestrictions class */
    TariffRestrictions: {
      star_time?: components["schemas"]["time"];
      end_time?: components["schemas"]["time"];
      start_date?: components["schemas"]["day"];
      end_date?: components["schemas"]["day"];
      min_kwh?: components["schemas"]["number"];
      max_kwh?: components["schemas"]["number"];
      min_current?: components["schemas"]["number"];
      max_current?: components["schemas"]["number"];
      min_power?: components["schemas"]["number"];
      max_power?: components["schemas"]["number"];
      min_duration?: number;
      max_duration?: number;
      day_of_week?: components["schemas"]["DayOfWeek"];
      reservation?: components["schemas"]["ReservationRestrictionType"];
    };
    /** TariffElement class */
    TariffElement: {
      price_components: components["schemas"]["PriceComponent"][];
      restrictions?: components["schemas"]["TariffRestrictions"];
    };
    /**
     * @example {
     *   "country_code": "DE",
     *   "party_id": "ALL",
     *   "id": 16,
     *   "currency": "EUR",
     *   "elements": [
     *     {
     *       "price_components": [
     *         {
     *           "type": "ENERGY",
     *           "price": 0.25,
     *           "vat": 10,
     *           "step_size": 1
     *         }
     *       ]
     *     }
     *   ],
     *   "last_updated": "2018-12-17T11:16:55Z"
     * }
     */
    Tariff: {
      country_code: components["schemas"]["CountryCode"];
      party_id: components["schemas"]["PartyID"];
      id: string;
      /** @description ISO-4217 code of the currency */
      currency: string;
      type?: components["schemas"]["TariffType"];
      tariff_alt_text?: components["schemas"]["DisplayText"];
      tariff_alt_url?: components["schemas"]["URL"];
      min_price?: components["schemas"]["Price"];
      max_price?: components["schemas"]["Price"];
      elements: components["schemas"]["TariffElement"][];
      start_date_time?: components["schemas"]["DateTime"];
      end_date_time?: components["schemas"]["DateTime"];
      energy_min?: components["schemas"]["EnergyMix"];
      last_updated: components["schemas"]["DateTime"];
    };
    /**
     * AuthMethod enum
     * @enum {string}
     */
    AuthMethod: "AUTH_REQUEST" | "COMMAND" | "WHITELIST";
    /**
     * CdrLocation class
     * @description The CdrLocation class contains only the relevant information from the Location object that is needed in a CDR.
     */
    CdrLocation: {
      id: string;
      name?: string;
      address: string;
      city: string;
      postal_code?: string;
      state?: string;
      country: string;
      coordinates: components["schemas"]["GeoLocation"];
      evse_uid: string;
      evse_id: string;
      connector_id: string;
      connector_standard: components["schemas"]["ConnectorType"];
      connector_format: components["schemas"]["ConnectorFormat"];
      connector_power_type: components["schemas"]["PowerType"];
    };
    /** @description SignedValue class */
    SignedValue: {
      nature: string;
      plain_data: string;
      signed_data: string;
    };
    /** @description SignedData class */
    SignedData: {
      encoding_method: string;
      encoding_method_version?: number;
      public_key?: string;
      signed_values: components["schemas"]["SignedValue"];
      url?: string;
    };
    /**
     * CDR
     * @description The CDR object describes the charging session and its costs, how these costs are composed, etc.
     */
    CDR: {
      country_code: components["schemas"]["CountryCode"];
      party_id: components["schemas"]["PartyID"];
      id: string;
      /** Format: date-time */
      start_date_time: string;
      /** Format: date-time */
      end_date_time: string;
      session_id?: string;
      cdr_token: components["schemas"]["CdrToken"];
      auth_method: components["schemas"]["AuthMethod"];
      authorization_reference?: string;
      cdr_location: components["schemas"]["CdrLocation"];
      meter_id?: string;
      currency: string;
      tariffs?: components["schemas"]["Tariff"][];
      charging_periods?: components["schemas"]["ChargingPeriod"][];
      signed_data?: components["schemas"]["SignedData"];
      total_cost: components["schemas"]["Price"];
      total_fixed_cost?: components["schemas"]["Price"];
      /** Format: float */
      total_energy: number;
      total_energy_cost?: components["schemas"]["Price"];
      /** Format: float */
      total_time: number;
      total_time_cost?: components["schemas"]["Price"];
      /** Format: float */
      total_parking_time?: number;
      total_parking_cost?: components["schemas"]["Price"];
      total_reservation_cost?: components["schemas"]["Price"];
      remark?: string;
      invoice_reference_id?: string;
      credit?: boolean;
      credit_reference_id?: string;
      home_charging_compensation?: boolean;
      last_updated: components["schemas"]["DateTime"];
    };
    /** @enum {string} */
    ChargingRateUnit: "W" | "A";
    ChargingProfilePeriod: {
      start_period: number;
      limit: components["schemas"]["number"];
    };
    ChargingProfile: {
      start_date_time?: components["schemas"]["DateTime"];
      duration?: number;
      charging_rate_unit: components["schemas"]["ChargingRateUnit"];
      min_charging_rate?: components["schemas"]["number"];
      charging_profile_period?: components["schemas"]["ChargingProfilePeriod"][];
    };
    SetChargingProfile: {
      charging_profile: components["schemas"]["ChargingProfile"];
      response_url: components["schemas"]["URL"];
    };
    /** @enum {string} */
    ChargingProfileResponseType: "ACCEPTED" | "NOT_SUPPORTED" | "REJECTED" | "TOO_OFTEN" | "UNKNOWN_SESSION";
    ChargingProfileResponse: {
      /** @example ACCEPTED */
      result: components["schemas"]["ChargingProfileResponseType"];
      timeout: number;
    };
    /**
     * ConnectionStatus enum
     * @enum {string}
     */
    ConnectionStatus: "CONNECTED" | "OFFLINE" | "PLANNED" | "SUSPENDED";
    ClientInfo: {
      party_id: components["schemas"]["PartyID"];
      country_code: components["schemas"]["CountryCode"];
      role: components["schemas"]["Role"];
      status: components["schemas"]["ConnectionStatus"];
      last_updated: components["schemas"]["DateTime"];
    };
  };
  responses: {
    /** @description Success */
    SessionsResponse: {
      headers: {
        Link: components["headers"]["Link"];
        "X-Total-Count": components["headers"]["X-Total-Count"];
        "X-Limit": components["headers"]["X-Limit"];
      };
      content: {
        "application/json": components["schemas"]["BaseResponse"] & {
          data?: components["schemas"]["Session"][];
        };
      };
    };
    /** @description Unauthorized */
    Unauthorized: {
      content: {
        "application/json": components["schemas"]["BaseResponse"];
      };
    };
    /** @description Success */
    ChargingPreferencesResponse: {
      content: {
        "application/json": components["schemas"]["BaseResponse"] & ({
          /** @enum {string} */
          data?: "ACCEPTED" | "DEPARTURE_REQUIRED" | "ENERGY_NEED_REQUIRED" | "NOT_POSSIBLE" | "PROFILE_TYPE_NOT_SUPPORTED";
        });
      };
    };
    /** @description Problem */
    Problem: {
      content: {
        "application/json": components["schemas"]["Problem"];
      };
    };
    /** @description Success */
    SessionResponse: {
      content: {
        "application/json": components["schemas"]["BaseResponse"] & {
          data?: components["schemas"]["Session"];
        };
      };
    };
    /** @description Success */
    CommandResponse: {
      content: {
        "application/json": components["schemas"]["BaseResponse"] & {
          data?: components["schemas"]["CommandResponse"];
        };
      };
    };
    /** @description Tokens GET Response with one Token object. */
    OneTokenResponse: {
      content: {
        "application/json": components["schemas"]["BaseResponse"] & {
          data?: components["schemas"]["Token"];
        };
      };
    };
    /** @description Not Found */
    NotFound: {
      content: {
        "application/json": components["schemas"]["BaseResponse"];
      };
    };
    /** @description Bad Request */
    BadRequest: {
      content: {
        "application/json": components["schemas"]["BaseResponse"];
      };
    };
    /** @description versions */
    Versions: {
      headers: {
        Link: components["headers"]["Link"];
        "X-Total-Count": components["headers"]["X-Total-Count"];
        "X-Limit": components["headers"]["X-Limit"];
      };
      content: {
        "application/json": components["schemas"]["BaseResponse"] & {
          data?: components["schemas"]["Versions"];
        };
      };
    };
    /** @description Version */
    Version: {
      content: {
        "application/json": components["schemas"]["BaseResponse"] & {
          data?: components["schemas"]["VersionDetail"];
        };
      };
    };
    /** @description method not allowed */
    MethodNotAllowed: {
      content: {
        "application/json": components["schemas"]["BaseResponse"];
      };
    };
    /** @description Accepted */
    Accepted: {
      content: {
        "application/json": Record<string, never>;
      };
    };
    /** @description Success */
    LocationsResponse: {
      headers: {
        Link: components["headers"]["Link"];
        "X-Total-Count": components["headers"]["X-Total-Count"];
        "X-Limit": components["headers"]["X-Limit"];
      };
      content: {
        "application/json": components["schemas"]["BaseResponse"] & {
          data?: components["schemas"]["Location"][];
        };
      };
    };
    /** @description Location */
    Location: {
      content: {
        "application/json": components["schemas"]["BaseResponse"] & {
          data?: components["schemas"]["Location"];
        };
      };
    };
    /** @description List of all tariffs. */
    TariffsResponse: {
      headers: {
        Link: components["headers"]["Link"];
        "X-Total-Count": components["headers"]["X-Total-Count"];
        "X-Limit": components["headers"]["X-Limit"];
      };
      content: {
        "application/json": components["schemas"]["BaseResponse"] & {
          data?: components["schemas"]["Tariff"][];
        };
      };
    };
    /** @description CDRs Response. */
    CdrsResponse: {
      headers: {
        Link: components["headers"]["Link"];
        "X-Total-Count": components["headers"]["X-Total-Count"];
        "X-Limit": components["headers"]["X-Limit"];
      };
      content: {
        "application/json": components["schemas"]["BaseResponse"] & {
          data?: components["schemas"]["CDR"][];
        };
      };
    };
    /** @description CDR Response. */
    CdrResponse: {
      content: {
        "application/json": components["schemas"]["BaseResponse"] & {
          data?: components["schemas"]["CDR"];
        };
      };
    };
    /** @description SetChargingProfileResponse */
    SetChargingProfileResponse: {
      content: {
        "application/json": components["schemas"]["BaseResponse"] & {
          data?: components["schemas"]["ChargingProfileResponse"];
        };
      };
    };
    /** @description ClientInfo Response */
    ClientInfoResponse: {
      content: {
        "application/json": components["schemas"]["BaseResponse"] & {
          data?: components["schemas"]["ClientInfo"];
        };
      };
    };
    /** @description List of ClientInfo objects */
    ClientInfosResponse: {
      headers: {
        Link: components["headers"]["Link"];
        "X-Total-Count": components["headers"]["X-Total-Count"];
        "X-Limit": components["headers"]["X-Limit"];
      };
      content: {
        "application/json": components["schemas"]["BaseResponse"] & {
          data?: components["schemas"]["ClientInfo"][];
        };
      };
    };
  };
  parameters: {
    collectionDateFrom?: components["schemas"]["DateTime"];
    collectionDateTo?: components["schemas"]["DateTime"];
    collectionOffset?: number;
    collectionLimit?: number;
    sessionId: string;
    countryCode: string;
    partyId: string;
    command: "CANCEL_RESERVATION" | "RESERVE_NOW" | "START_SESSION" | "STOP_SESSION" | "UNLOCK_CONNECTOR";
    uid: string;
    tokenUid: string;
    type?: string;
    locationId: string;
    evseUid: string;
    connectorId: string;
    cdrId: string;
  };
  requestBodies: {
    /** @description Session payload */
    Session?: {
      content: {
        "application/json": components["schemas"]["Session"];
      };
    };
    /** @description Session patch payload */
    SessionPatch?: {
      content: {
        "application/json": components["schemas"]["SessionPatch"];
      };
    };
    /** @description StartSession payload */
    StartSession?: {
      content: {
        "application/json": components["schemas"]["StartSession"];
      };
    };
    /** @description Token payload */
    Token?: {
      content: {
        "application/json": components["schemas"]["Token"];
      };
    };
    /** @description Token patch payload */
    TokenPatch?: {
      content: {
        "application/json": components["schemas"]["TokenPatch"];
      };
    };
  };
  headers: {
    /** @description Link to the 'next' page should be provided when this is NOT the last page. The Link should also contain any filters present in the original request. See the examples below. */
    Link: string;
    /** @description (Custom HTTP Header) The total number of objects available in the server system that match the given query (including the given query parameters, for example: date_to and date_from but excluding limit and offset) and that are available to this client. For example: The CPO server might return less CDR objects to an eMSP than the total number of CDRs available in the CPO system. */
    "X-Total-Count": number;
    /** @description (Custom HTTP Header) The maximum number of objects that the server can return. Note that this is an upper limit. If there are not enough remaining objects to return, fewer objects than this upper limit number will be returned, X-Limit SHALL then still show the upper limit, not the number of objects returned. */
    "X-Limit": number;
  };
  pathItems: never;
}

export type external = Record<string, never>;

export interface operations {

  /**
   * Sender /sessions
   * @description Fetch Sessions from a CPO system.
   */
  getSessions: {
    parameters: {
      query?: {
        date_from?: components["parameters"]["collectionDateFrom"];
        date_to?: components["parameters"]["collectionDateTo"];
        offset?: components["parameters"]["collectionOffset"];
        limit?: components["parameters"]["collectionLimit"];
      };
    };
    responses: {
      200: components["responses"]["SessionsResponse"];
      /** @description Unauthorized */
      401: components["responses"]["Unauthorized"];
    };
  };
  /**
   * Sender /sessions/{session_id}/charging_preferences
   * @description Set/update the driver’s Charging Preferences for this charging session.
   */
  setChargingPreferences: {
    parameters: {
      path: {
        session_id: components["parameters"]["sessionId"];
      };
    };
    requestBody?: {
      content: {
        "application/json": components["schemas"]["ChargingPreferences"];
      };
    };
    responses: {
      200: components["responses"]["ChargingPreferencesResponse"];
      /** @description Forbidden */
      403: components["responses"]["Problem"];
    };
  };
  /**
   * Receiver /sessions/{country_code}/{party_id}/{session_id}
   * @description Retrieve a Session object from the eMSP’s system with Session.id equal to {session_id}.
   */
  getSessionById: {
    parameters: {
      path: {
        country_code: components["parameters"]["countryCode"];
        party_id: components["parameters"]["partyId"];
        session_id: components["parameters"]["sessionId"];
      };
    };
    responses: {
      200: components["responses"]["SessionResponse"];
      401: components["responses"]["Unauthorized"];
    };
  };
  /**
   * Receiver /sessions/{country_code}/{party_id}/{session_id}
   * @description Inform the eMSP’s system about a new/updated Session object in the CPO’s system.
   */
  putSessionById: {
    parameters: {
      path: {
        country_code: components["parameters"]["countryCode"];
        party_id: components["parameters"]["partyId"];
        session_id: components["parameters"]["sessionId"];
      };
    };
    requestBody: components["requestBodies"]["Session"];
  };
  /**
   * Receiver /sessions/{country_code}/{party_id}/{session_id}
   * @description Same as the PUT method, but only the fields/objects that need to be updated have to be present. Fields/objects which are not specified are considered unchange
   */
  patchSessionById: {
    parameters: {
      path: {
        country_code: components["parameters"]["countryCode"];
        party_id: components["parameters"]["partyId"];
        session_id: components["parameters"]["sessionId"];
      };
    };
    requestBody: components["requestBodies"]["SessionPatch"];
  };
  /**
   * Receiver /commands/START_SESSION
   * @description Typically implemented by market roles like: CPO.
   */
  startSession: {
    requestBody: components["requestBodies"]["StartSession"];
    responses: {
      200: components["responses"]["CommandResponse"];
      401: components["responses"]["Unauthorized"];
    };
  };
  /** Receiver /commands/STOP_SESSION */
  stopSession: {
    requestBody?: {
      content: {
        "application/json": components["schemas"]["StopSession"];
      };
    };
    responses: {
      /** @description OK */
      200: components["responses"]["CommandResponse"];
      /** @description Unauthorized */
      401: components["responses"]["Unauthorized"];
    };
  };
  /**
   * Sender /commands/{command}/{uid}
   * @description Typically implemented by market roles like: eMSP.
   * The Sender interface receives the asynchronous responses.
   */
  SenderCommandsUID: {
    parameters: {
      path: {
        command: components["parameters"]["command"];
        uid: components["parameters"]["uid"];
      };
    };
    requestBody?: {
      content: {
        "application/json": components["schemas"]["CommandResult"];
      };
    };
  };
  /**
   * Receiver /tokens/{country_code}/{party_id}/{token_uid}
   * @description Retrieve a Token as it is stored in the CPO system.
   */
  getTokenById: {
    parameters: {
      query?: {
        type?: string;
      };
      path: {
        country_code: components["parameters"]["countryCode"];
        party_id: components["parameters"]["partyId"];
        token_uid: components["parameters"]["tokenUid"];
      };
    };
    responses: {
      200: components["responses"]["OneTokenResponse"];
      401: components["responses"]["Unauthorized"];
      404: components["responses"]["NotFound"];
    };
  };
  /**
   * Receiver /tokens/{country_code}/{party_id}/{token_uid}
   * @description New or updated Token objects are pushed from the eMSP to the CPO.
   */
  putToken: {
    parameters: {
      query?: {
        type?: components["parameters"]["type"];
      };
      path: {
        country_code: components["parameters"]["countryCode"];
        party_id: components["parameters"]["partyId"];
        token_uid: components["parameters"]["tokenUid"];
      };
    };
    requestBody: components["requestBodies"]["Token"];
    responses: {
      /** @description Token updated */
      200: components["responses"]["OneTokenResponse"];
      /** @description Token created */
      201: components["responses"]["OneTokenResponse"];
      400: components["responses"]["BadRequest"];
      401: components["responses"]["Unauthorized"];
      404: components["responses"]["NotFound"];
    };
  };
  /**
   * Receiver /tokens/{country_code}/{party_id}/{token_uid}
   * @description New or updated Token objects are pushed from the eMSP to the CPO.
   */
  patchToken: {
    parameters: {
      path: {
        country_code: components["parameters"]["countryCode"];
        party_id: components["parameters"]["partyId"];
        token_uid: components["parameters"]["tokenUid"];
      };
    };
    requestBody: components["requestBodies"]["TokenPatch"];
    responses: {
      /** @description Token updated */
      200: components["responses"]["OneTokenResponse"];
      400: components["responses"]["BadRequest"];
      401: components["responses"]["Unauthorized"];
      404: components["responses"]["NotFound"];
    };
  };
  /** /versions */
  getVersions: {
    responses: {
      /** @description OK */
      200: components["responses"]["Versions"];
      /** @description Unauthorized */
      401: components["responses"]["Unauthorized"];
    };
  };
  /**
   * /{version}
   * @description also supports https://ocpi.server.com/{version}/details
   */
  getVersion: {
    parameters: {
      path: {
        version: string;
      };
    };
    responses: {
      /** @description OK */
      200: components["responses"]["Version"];
      /** @description Unauthorized */
      401: components["responses"]["Unauthorized"];
    };
  };
  /**
   * Get
   * @description Retrieves the credentials object to access the server’s platform.
   */
  getCredentials: {
    responses: {
      /** @description OK */
      200: {
        content: {
          "application/json": components["schemas"]["Credentials"];
        };
      };
      /** @description Unauthorized */
      401: components["responses"]["Unauthorized"];
    };
  };
  /**
   * Update
   * @description Provides the server with an updated credentials object to access the client’s system.
   */
  putCredentials: {
    requestBody?: {
      content: {
        "application/json": components["schemas"]["Credentials"];
      };
    };
    responses: {
      /** @description OK */
      200: {
        content: {
          "application/json": components["schemas"]["Credentials"];
        };
      };
      /** @description Unauthorized */
      401: components["responses"]["Unauthorized"];
      /** @description This method MUST return a HTTP status code 405: method not allowed if the client has not been registered yet. */
      405: components["responses"]["MethodNotAllowed"];
    };
  };
  /**
   * Register
   * @description Provides the server with a credentials object to access the client’s system (i.e. register).
   */
  postCredentials: {
    requestBody?: {
      content: {
        "application/json": components["schemas"]["Credentials"];
      };
    };
    responses: {
      /** @description OK */
      200: {
        content: {
          "application/json": components["schemas"]["Credentials"];
        };
      };
      /** @description Unauthorized */
      401: components["responses"]["Unauthorized"];
      /** @description This method MUST return a HTTP status code 405: method not allowed if the client has already been registered. */
      405: components["responses"]["MethodNotAllowed"];
    };
  };
  /**
   * Unregister
   * @description Informs the server that its credentials to the client’s system are now invalid (i.e. unregister).
   */
  deleteCredentials: {
    requestBody?: {
      content: {
        "application/json": components["schemas"]["Credentials"];
      };
    };
    responses: {
      /** @description credentials are invalid and can no longer be used */
      202: components["responses"]["Accepted"];
      /** @description Unauthorized */
      401: components["responses"]["Unauthorized"];
      /** @description This method MUST return a HTTP status code 405: method not allowed if the client has not been registered yet. */
      405: components["responses"]["MethodNotAllowed"];
    };
  };
  /**
   * Sender /locations
   * @description Fetch a list of Locations
   */
  getLocations: {
    parameters: {
      query?: {
        date_from?: components["parameters"]["collectionDateFrom"];
        date_to?: components["parameters"]["collectionDateTo"];
        offset?: components["parameters"]["collectionOffset"];
        limit?: components["parameters"]["collectionLimit"];
      };
    };
    responses: {
      200: components["responses"]["LocationsResponse"];
      400: components["responses"]["BadRequest"];
      401: components["responses"]["Unauthorized"];
    };
  };
  /** Sender /locations/{location_id} */
  getLocation_by_location_id: {
    parameters: {
      path: {
        location_id: components["parameters"]["locationId"];
      };
    };
    responses: {
      200: components["responses"]["Location"];
      400: components["responses"]["BadRequest"];
      401: components["responses"]["Unauthorized"];
      404: components["responses"]["NotFound"];
    };
  };
  /** Sender /locations/{location_id}/{evse_uid} */
  getLocation_by_location_id_evse_uid: {
    parameters: {
      path: {
        location_id: components["parameters"]["locationId"];
        evse_uid: components["parameters"]["evseUid"];
      };
    };
    responses: {
      200: components["responses"]["Location"];
      400: components["responses"]["BadRequest"];
      401: components["responses"]["Unauthorized"];
      404: components["responses"]["NotFound"];
    };
  };
  /** Sender /locations/{location_id}/{evse_uid}]/[{connector_id} */
  getLocation_by_location_id_evse_uid_connector_id: {
    parameters: {
      path: {
        location_id: components["parameters"]["locationId"];
        evse_uid: components["parameters"]["evseUid"];
        connector_id: components["parameters"]["connectorId"];
      };
    };
    responses: {
      200: components["responses"]["Location"];
      400: components["responses"]["BadRequest"];
      401: components["responses"]["Unauthorized"];
      404: components["responses"]["NotFound"];
    };
  };
  /** Sender /tariffs */
  getTariffs: {
    parameters: {
      query?: {
        date_from?: components["parameters"]["collectionDateFrom"];
        date_to?: components["parameters"]["collectionDateTo"];
        offset?: components["parameters"]["collectionOffset"];
        limit?: components["parameters"]["collectionLimit"];
      };
    };
    responses: {
      200: components["responses"]["TariffsResponse"];
      400: components["responses"]["BadRequest"];
      401: components["responses"]["Unauthorized"];
    };
  };
  /** Sender /cdrs */
  getCdrs: {
    parameters: {
      query?: {
        date_from?: components["parameters"]["collectionDateFrom"];
        date_to?: components["parameters"]["collectionDateTo"];
        offset?: components["parameters"]["collectionOffset"];
        limit?: components["parameters"]["collectionLimit"];
      };
    };
    responses: {
      200: components["responses"]["CdrsResponse"];
      401: components["responses"]["Unauthorized"];
    };
  };
  /** Receiver /cdrs */
  createCdr: {
    requestBody?: {
      content: {
        "application/json": components["schemas"]["CDR"];
      };
    };
    responses: {
      /** @description Created */
      201: never;
      400: components["responses"]["BadRequest"];
      401: components["responses"]["Unauthorized"];
    };
  };
  /** Receiver /cdrs/{cdr_id} */
  getCdrById: {
    parameters: {
      path: {
        cdr_id: components["parameters"]["cdrId"];
      };
    };
    responses: {
      200: components["responses"]["CdrResponse"];
      401: components["responses"]["Unauthorized"];
      404: components["responses"]["NotFound"];
    };
  };
  /**
   * {chargingprofiles_endpoint_url}{session_id}
   * @description Creates a new ChargingProfile on a session, or replaces an existing ChargingProfile on the EVSE.
   */
  updateChargingProfile: {
    parameters: {
      path: {
        session_id: components["parameters"]["sessionId"];
      };
    };
    /** @description SetChargingProfile */
    requestBody: {
      content: {
        "application/json": components["schemas"]["SetChargingProfile"];
      };
    };
    responses: {
      /** @description OK */
      200: components["responses"]["SetChargingProfileResponse"];
      /** @description Unauthorized */
      401: components["responses"]["Unauthorized"];
      /** @description Not Found */
      404: components["responses"]["NotFound"];
    };
  };
  /**
   * Receiver: {clientinfo_endpoint_url}/{country_code}/{party_id}
   * @description Retrieve a ClientInfo object as it is stored in the connected clients system.
   */
  getClientInfo: {
    parameters: {
      path: {
        country_code: components["parameters"]["countryCode"];
        party_id: components["parameters"]["partyId"];
      };
    };
    responses: {
      /** @description OK */
      200: components["responses"]["ClientInfoResponse"];
      /** @description Unauthorized */
      401: components["responses"]["Unauthorized"];
      /** @description Not Found */
      404: components["responses"]["NotFound"];
    };
  };
  /**
   * Receiver: {clientinfo_endpoint_url}/{country_code}/{party_id}
   * @description New or updated ClientInfo objects are pushed from the Hub to a connected client.
   */
  putClientInfo: {
    parameters: {
      path: {
        country_code: components["parameters"]["countryCode"];
        party_id: components["parameters"]["partyId"];
      };
    };
    requestBody?: {
      content: {
        "application/json": components["schemas"]["ClientInfo"];
      };
    };
    responses: {
      /** @description Updated */
      200: components["responses"]["ClientInfoResponse"];
      /** @description Created */
      201: components["responses"]["ClientInfoResponse"];
      /** @description Bad Request */
      400: components["responses"]["BadRequest"];
      /** @description Unauthorized */
      401: components["responses"]["Unauthorized"];
    };
  };
  /**
   * Sender: {locations_endpoint_url}
   * @description Get the list of known ClientInfo objects, last updated between the {date_from} and {date_to} paginated)
   */
  getHubClientInfos: {
    parameters: {
      query?: {
        date_from?: components["parameters"]["collectionDateFrom"];
        date_to?: components["parameters"]["collectionDateTo"];
        offset?: components["parameters"]["collectionOffset"];
        limit?: components["parameters"]["collectionLimit"];
      };
    };
    responses: {
      200: components["responses"]["ClientInfosResponse"];
      400: components["responses"]["BadRequest"];
      401: components["responses"]["Unauthorized"];
    };
  };
}
