Skip to content
Documentation Menu

Locations module

Module Identifier: locations

Data owner: CPO

Type: Functional Module

The Location objects live in the CPO back-end system. They describe the charging locations of an operator.

Module dependency: the Receiver endpoint is dependent on the Tariffs module

Flow and Lifecycle

The Locations module has the Location as base object. Each Location can have multiple EVSEs (1:n) and each EVSE can have multiple Connectors (1:n). With the methods in the Receiver interface, Location data and status information can be shared with for example an eMSP and NSP. Updates can be made to a whole Location, but also only to an EVSE or a single Connector.

When a CPO creates Location objects, it pushes them to connected eMSP by calling PUT on the Receivers Locations endpoint. eMSPs who do not support Push mode need to call GET on the CPOs Locations endpoint to receive the new object. This should be done regularly to stay up to date with the CPOs data, but not too often in order to keep the load low.

If the CPO wants to replace a Location related object, they again push it to the eMSP systems by calling PUT on their Locations endpoint.

Any changes to a Location related object can also be pushed to connected eMSPs by calling the PATCH method on the eMSPs Locations endpoint, but using PATCH mode, only actual changes should be pushed. Providers who do not support Push mode need to call GET on the CPOs Locations endpoint to receive the updates.

When the CPO wants to delete an EVSE from the list of active EVSEs, they MUST update the EVSE's status field to REMOVED and call the PUT or PATCH on the eMSP system. A Location without any valid EVSE object can be considered expired and should no longer be displayed. There is no way to entirely delete Locations, EVSEs and Connectors as there are other modules like sessions that depend on them. If it was possible to remove these objects, those links would no longer work.

When the CPO is not sure about the state or existence of a Location, EVSE or Connector object in the eMSP's system, the CPO can perform a GET request to validate the object in the eMSP's system.

Private charging Locations, that are not to be used for public charging, SHALL NOT be published via OCPI.

No public charging or roaming

When a Location is not available for either Public Charging or Roaming, it is RECOMMENDED to NOT send that Location via OCPI to receiving parties.

Group of Charge Points

OCPP 2.0 supports a 3-tier model:

  • Highest level is a Charge Point
  • A Charge Point can have one or more EVSEs.
  • Every EVSE can have one or more Connectors.

OCPI does not have this model:

  • OCPI has Location at the highest level.
  • Each location can have multiple EVSE
  • Every EVSE can have one or more Connectors.

When mapping OCPP Charge Points to OCPI, there are 2 options:

  • One Location for a group of Charge Points at the same location. (preferred)
  • One Location per Charge Point at the same location.

OCPI prefers the first method. An EV driver does not care if a Location consists of one Charge Point with a very large amount of EVSEs, or a large amount of Charge Points with only one EVSE. The EV driver wants to know how many EVSEs are available. Grouping Charge Points in the same location into one OCPI Location will show better on a map that shows Charging Locations.

Note: By definition, an EVSE can only charge one EV at a time.

OCPP 1.x Charge Points with multiple connectors per EVSE

OCPP 1.x was not designed to support the 3-tier model. It had no notion of EVSEs. The Open Charge Alliance has written an Application Note: "Multiple Connectors per EVSE in a OCPP 1.x implementation"

The workaround:

  • Define one 'virtual' EVSE per Connector.
  • When a connector of an hardware EVSE becomes unavailable, set all 'virtual' EVSEs for all the connectors of the hardware EVSE to unavailable. etc.

Interfaces and endpoints

There are both, a Sender and a Receiver interface for Locations. It is advised to use the Push direction from Sender to Receiver during normal operation in order to keep the latency of updates low. The Sender interface is meant to be used when the connection between two parties is established for the first time, to retrieve the current list of Location objects with the current status, and when the Receiver is not 100% sure the Location cache is entirely up-to-date (i.e. to perform a full sync). The Receiver can also use the Sender GET Object interface to retrieve a specific Location, EVSE or Connector. This feature might be used by an Receiver that wants information about a specific Location, but has not implemented the Receiver Locations interface (i.e. cannot receive Push).

Sender Interface

Typically implemented by market roles like: CPO.

MethodDescription
GETFetch a list of Locations, last updated between the {date_from} and {date_to} (paginated), or get a specific Location, EVSE or Connector.
POSTn/a
PUTn/a
PATCHn/a
DELETEn/a

GET Method

Depending on the URL Segments provided, the GET request can either be used to retrieve information about a list of available Locations (with EVSEs and Connectors) at a CPO (GET List) or it can be used to retrieve information about one specific Location, EVSE or Connector (GET Object).

GET List: Request Parameters

Endpoint structure definition:

{locations_endpoint_url}?[date_from={date_from}]&[date_to={date_to}]&[offset={offset}]&[limit={limit}]

Examples:

+https://www.server.com/ocpi/cpo/2.2.1/locations/?date_from=2019-01-28T12:00:00&date_to=2019-01-29T12:00:00+

+https://ocpi.server.com/2.2.1/locations/?offset=50+

+https://www.server.com/ocpi/2.2.1/locations/?date_from=2019-01-29T12:00:00&limit=100+

+https://www.server.com/ocpi/cpo/2.2.1/locations/?offset=50&limit=100+

If the optional parameters {date_from} and/or {date_to} are provided, only Locations with (last_updated) between the given {date_from} (including) and {date_to} (excluding) will be returned. In order for this to work properly, the following logic MUST be implemented accordingly: If an EVSE is updated, also the 'parent' Location's last_updated field needs to be updated. Similarly, if a Connector is updated, the EVSE's last_updated and the Location's last_updated fields need to be updated.

This request is paginated, it supports the pagination related URL parameters.

ParameterDatatypeRequiredDescription
date_fromDateTimenoOnly return Locations that have last_updated after or equal to this Date/Time (inclusive).
date_toDateTimenoOnly return Locations that have last_updated up to this Date/Time, but not including (exclusive).
offsetintnoThe offset of the first object returned. Default is 0.
limitintnoMaximum number of objects to GET.
GET List: Response Data

This endpoint returns a list of Location objects. The header will contain the pagination related headers.

Each object must contain all required fields. Fields that are not specified may be considered as null values. Any old information that is not specified in the response is considered no longer valid. For requests that use pagination, the response data provided by all the pages together is the new truth. Any old information not contained in any of the pages needs to be considered no longer valid.

TypeCard.Description
Location*List of all Locations with valid EVSEs.
GET Object: Request Parameters

Endpoint structure definition for retrieving a Location, EVSE or Connector:

{locations_endpoint_url}/{location_id}[/{evse_uid}][/{connector_id}]

Examples:

+https://www.server.com/ocpi/cpo/2.2.1/locations/LOC1+

+https://www.server.com/ocpi/cpo/2.2.1/locations/LOC1/3256+

+https://www.server.com/ocpi/cpo/2.2.1/locations/LOC1/3256/1+

The following parameters can be provided as URL segments in the same order.

ParameterDatatypeRequiredDescription
location_idCiString(36)yesLocation.id of the Location object to retrieve.
evse_uidCiString(36)noEvse.uid, required when requesting an EVSE or Connector object.
connector_idCiString(36)noConnector.id, required when requesting a Connector object.
GET Object: Response Data

The response contains the requested object.

TypeCard.Description
Choice: one of three
> Location1If a Location object was requested: the Location object.
> EVSE1If an EVSE object was requested: the EVSE object.
> Connector1If a Connector object was requested: the Connector object.

Receiver Interface

Typically implemented by market roles like: eMSP and NSP.

Locations are Client Owned Objects, so the end-points need to contain the required extra fields: {party_id} and {country_code}.

Endpoint structure definition:

{locations_endpoint_url}/{country_code}/{party_id}/{location_id}[/{evse_uid}][/{connector_id}]

Examples:

+https://www.server.com/ocpi/emsp/2.2.1/locations/BE/BEC/LOC1+

+https://server.com/ocpi/2.2.1/locations/BE/BEC/LOC1/3256+

+https://ocpi.server.com/2.2.1/locations/BE/BEC/LOC1/3256/1+

MethodDescription
GETRetrieve a Location as it is stored in the eMSP system.
POSTn/a (use PUT)
PUTPush new/updated Location, EVSE and/or Connector to the eMSP.
PATCHNotify the eMSP of partial updates to a Location, EVSE or Connector (such as the status).
DELETEn/a (use PATCH to update the status to REMOVED as described in Flow and Lifecycle)

GET Method

If the CPO wants to check the status of a Location, EVSE or Connector object in the eMSP system, it might GET the object from the eMSP system for validation purposes. The CPO is the owner of the objects, so it would be illogical if the eMSP system had a different status or was missing an object. If a discrepancy is found, the CPO might push an update to the eMSP via a PUT or PATCH call.

Request Parameters

The following parameters can be provided as URL segments.

ParameterDatatypeRequiredDescription
country_codeCiString(2)yesCountry code of the CPO requesting data from the eMSP system.
party_idCiString(3)yesParty ID (Provider ID) of the CPO requesting data from the eMSP system.
location_idCiString(36)yesLocation.id of the Location object to retrieve.
evse_uidCiString(36)noEvse.uid, required when requesting an EVSE or Connector object.
connector_idCiString(36)noConnector.id, required when requesting a Connector object.
Response Data

The response contains the requested object.

TypeCard.Description
Choice: one of three
> Location1If a Location object was requested: the Location object.
> EVSE1If an EVSE object was requested: the EVSE object.
> Connector1If a Connector object was requested: the Connector object.

PUT Method

The CPO pushes available Location, EVSE or Connector objects to the eMSP. PUT can be used to send new Location objects to the eMSP but also to replace existing Locations.

When the PUT only contains a Connector Object, the Receiver SHALL also set the new last_updated value on the parent EVSE and Location Objects.

When the PUT only contains a EVSE Object, the Receiver SHALL also set the new last_updated value on the parent Location Object.

Request Parameters

This is an information Push message, the objects pushed will not be owned by the eMSP. To make distinctions between objects being pushed to an eMSP from different CPOs, the {party_id} and {country_code} have to be included in the URL (as URL segments, as described in the Receiver Interface).

ParameterDatatypeRequiredDescription
country_codeCiString(2)yesCountry code of the CPO requesting this PUT to the eMSP system. This SHALL be the same value as the country_code in the Location object being pushed.
party_idCiString(3)yesParty ID (Provider ID) of the CPO requesting this PUT to the eMSP system. This SHALL be the same value as the party_id in the Location object being pushed.
location_idCiString(36)yesLocation.id of the new Location object, or the Location of which an EVSE or Connector object is pushed.
evse_uidCiString(36)noEvse.uid, required when an EVSE or Connector object is pushed.
connector_idCiString(36)noConnector.id, required when a Connector object is pushed.
Request Body

The request body contains the new/updated object.

When the PUT contains a Connector Object, the Receiver SHALL also set the new last_updated value on the parent EVSE and Location Objects.

When the PUT contains a EVSE Object, the Receiver SHALL also set the new last_updated value on the parent Location Object.

TypeCard.Description
Choice: one of three
> Location1New Location object, or Location object to replace.
> EVSE1New EVSE object, or EVSE object to replace.
> Connector1New Connector object, or Connector object to replace.
Example: add an EVSE

To add an EVSE, simply put the full object in an update message, including all its required fields. Since the id will be new to the eMSP's system, the receiving party will know that it is a new object. When not all required fields are specified, the object may be discarded.

Location put example add evse

PATCH Method

Same as the PUT method, but only the fields/objects that have to be updated have to be present. Other fields/objects that are not specified as part of the request are considered unchanged. Therefore, this method is not suitable to remove information shared earlier.

Any request to the PATCH method SHALL contain the last_updated field.

When the PATCH is on a Connector Object, the Receiver SHALL also set the new last_updated value on the parent EVSE and Location Objects.

When the PATCH is on a EVSE Object, the Receiver SHALL also set the new last_updated value on the parent Location Object.

Example: a simple status update

This is the most common type of update message. It is used to notify eMSPs that the status of an EVSE changed. In this case it is the EVSE with uid 3255 of the Location with id 1012.

Location patch example status
Example: change the location name

In this example the name of the Location with id 1012 is being updated.

Location patch example location
Example: set tariff update

In this example Connector 2 of EVSE 1 of Location 1012 receives a new pricing scheme.

Location patch example tariff
Example: delete an EVSE

An EVSE can be deleted by updating its status property.

Location patch example remove evse

Note: To inform eMSPs that an EVSE is scheduled for removal, the status_schedule field can be used._

Object description

Location, EVSE and Connector have the following relation.

Location class diagram

Location Object

The Location object describes the location and its properties where a group of EVSEs that belong together are installed. Typically, the Location object is the exact location of the group of EVSEs, but it can also be the entrance of a parking garage which contains these EVSEs. The exact way to reach each EVSE can be further specified by its own properties.

Locations may be shown in apps or on websites etc. when the flag: publish is set to true. Locations that have this flag set to false SHALL not be shown in an app or on a website etc. unless it is to the owner of a Token in the publish_allowed_to list. Even parties like NSP or eMSP that do not 'own' this Token MAY show this location on an app or website, but only to the owner of that Token. If the user of their app/website has provided information about his/her Token, And that information matches all the fields of one of the PublishToken tokens in the list, then they are allowed to show this location to their user. It is not allowed in OCPI to use a Token that is not 'owned' by the eMSP itself to start a charging session.

PropertyTypeCard.Description
country_codeCiString(2)1ISO-3166 alpha-2 country code of the CPO that 'owns' this Location.
party_idCiString(3)1ID of the CPO that 'owns' this Location (following the ISO-15118 standard).
idCiString(36)1Uniquely identifies the location within the CPOs platform (and suboperator platforms). This field can never be changed, modified or renamed.
publishboolean1Defines if a Location may be published on an website or app etc. + When this is set to false, only tokens identified in the field: publish_allowed_to are allowed to be shown this Location. + When the same location has EVSEs that may be published and may not be published, two 'Locations' should be created.
publish_allowed_toPublishTokenType*This field may only be used when the publish field is set to false. + Only owners of Tokens that match all the set fields of one PublishToken in the list are allowed to be shown this location.
namestring(255)?Display name of the location.
addressstring(45)1Street/block name and house number if available.
citystring(45)1City or town.
postal_codestring(10)?Postal code of the location, may only be omitted when the location has no postal code: in some countries charging locations at highways don't have postal codes.
statestring(20)?State or province of the location, only to be used when relevant.
countrystring(3)1ISO 3166-1 alpha-3 code for the country of this location.
coordinatesGeoLocation1Coordinates of the location.
related_locationsAdditionalGeoLocation*Geographical location of related points relevant to the user.
parking_typeParkingType?The general type of parking at the charge point location.
evsesEVSE*List of EVSEs that belong to this Location.
directionsDisplayText*Human-readable directions on how to reach the location.
operatorBusinessDetails?Information of the operator. When not specified, the information retrieved from the Credentials module, selected by the country_code and party_id of this Location, should be used instead.
suboperatorBusinessDetails?Information of the suboperator if available.
ownerBusinessDetails?Information of the owner if available.
facilitiesFacility*Optional list of facilities this charging location directly belongs to.
time_zonestring(255)1One of IANA tzdata's TZ-values representing the time zone of the location. Examples: "Europe/Oslo", "Europe/Zurich". (http://www.iana.org/time-zones)
opening_timesHours?The times when the EVSEs at the location can be accessed for charging.
charging_when_closedboolean?Indicates if the EVSEs are still charging outside the opening hours of the location. E.g. when the parking garage closes its barriers over night, is it allowed to charge till the next morning? Default: true
imagesImage*Links to images related to the location such as photos or logos.
energy_mixEnergyMix?Details on the energy supplied at this location.
last_updatedDateTime1Timestamp when this Location or one of its EVSEs or Connectors were last updated (or created).

Private Charge Points, home or business that do not need to be published on apps, and do not require remote control via OCPI, SHOULD not be PUT via the OCPI Locations module.

Example public charging location

This is an example of a public charging location. Can be used by any EV Driver as long as his eMSP has a roaming agreement with the CPO. Or the Charge Point has an ad-hoc payment possibility

  • publish = true
  • parking_type = ON_STREET but could also be another value.
  • EVSE.parking_restrictions not used.
Location example

Example destination charging location

This is an example of a destination charging location. This is a Location where only guests, employees or customers can charge. For an EV driver, it can be useful to know if he/she can charge at his destination.

For example at a restaurant, only customers of the restaurant can charge their EV. Or at an office building where employees and guest of the office can charge their EV.

Locations you can think of where this is useful: restaurants, bars, clubs, theme parks, stores, supermarkets, company building, office buildings, etc.

  • publish = true
  • parking_type = PARKING_LOT (but could also be PARKING_GARAGE, ON_DRIVEWAY or UNDERGROUND_GARAGE)
  • EVSE.parking_restrictions = CUSTOMERS
Location example uc2 destination charger

Example destination charging location not published, but paid guest usage possible

This is an example of a destination charging location. But the owner of the location has requested not to publish the location in Apps or on websites.

Charging is still possible: EV drivers of an eMSP with a roaming agreement can still charge their EV. The eMSP helpdesk can use the information from the Location module to help the driver, maybe even start a session for a driver. Starting a session from an App is not possible, because the driver will not be able to select the Charge Point on a map.

In case the EV driver is not billed for charging, there is, in such a case, no reason to publish the location via OCPI.

  • publish = false
  • publish_allowed_to not used
  • parking_type = not used`
  • EVSE.parking_restrictions = CUSTOMERS May still be useful so a support desk can also tell this to a customer.
Location example uc3 destination charger not published

Example charging location with limited visibility

This is an example of a charging location that only a limited group can see (and use) via an App or website.

Typical examples where this is useful:

  • Charge Points in the parking garage of an apartment building. Only owners can see/control the Charge Points.
  • Charge Points at an office, for employees only. Only employees can see/control the Charge Points.
  • Charge Points at vehicle depot. Any employee can see/control an charge point, even transaction they did not start. Use group_id for this.

The locations SHALL NOT be published to the general public. Only selected Tokens can see (and control) the Charge Points via eMSP app.

  • publish = false
  • publish_allowed_to contains list with information of Tokens that are allowed to be shown the Location.
  • parking_type = UNDERGROUND_GARAGE (but could also be PARKING_GARAGE, ON_DRIVEWAY or PARKING_LOT)
Location example uc4 limited visibility

Example private charge point with eMSP app control

This is an example of a private/home charge point that needs to be controlled via an eMSP App.

The locations SHALL NOT be published to the general public. Only the owner, identified by his/her Token can see (and control) the Charge Points via an eMSP app.

  • publish = false
  • publish_allowed_to contains the information of the Tokens of the owner.
  • parking_type = not used, not relevant, owner knows where his Charge Point is.
Location example uc5 home charge point

Example charge point in a parking garage with opening hours

This is an example of a charge point, located in a parking garage with limited opening hours: 7:00 - 18:00.

If the EV is left in the parking garage overnight, the car will still be charged.

  • publish = true
  • parking_type = PARKING_GARAGE but could also be another value.
  • EVSE.parking_restrictions not used.
  • opening_times is used.
  • charging_when_closed = true
Location example parking garage opening hours

EVSE Object

The EVSE object describes the part that controls the power supply to a single EV in a single session. It always belongs to a Location object. The object only contains directions to get from the location itself to the EVSE (i.e. floor, physical_reference or directions).

When the directional properties of an EVSE are insufficient to reach the EVSE from the Location point, then it typically indicates that the EVSE should be put in a different Location object (sometimes with the same address but with different coordinates/directions).

An EVSE object has a list of Connectors which can not be used simultaneously: only one connector per EVSE can be used at the time.

PropertyTypeCard.Description
uidCiString(36)1Uniquely identifies the EVSE within the CPOs platform (and suboperator platforms). This field can never be changed, modified or renamed. This is the 'technical' identification of the EVSE, not to be used as 'human readable' identification, use the field evse_id for that. + This field is named uid instead of id, because id could be confused with evse_id which is an eMI3 defined field. + Note that in order to fulfill both the requirement that an EVSE's uid be unique within a CPO's platform and the requirement that EVSEs are never deleted, a CPO will typically want to avoid using identifiers of the physical hardware for this uid property. If they do use such a physical identifier, they will find themselves breaking the uniqueness requirement for uid when the same physical EVSE is redeployed at another Location.
evse_idCiString(48)?Compliant with the following specification for EVSE ID from "eMI3 standard version V1.0" (https://web.archive.org/web/20230603153631/https://emi3group.com/documents-links/) "Part 2: business objects." Optional because: if an evse_id is to be re-used in the real world, the evse_id can be removed from an EVSE object if the status is set to REMOVED.
statusStatus1Indicates the current status of the EVSE.
status_scheduleStatusSchedule*Indicates a planned status update of the EVSE.
capabilitiesCapability*List of functionalities that the EVSE is capable of.
connectorsConnector+List of available connectors on the EVSE.
floor_levelstring(4)?Level on which the Charge Point is located (in garage buildings) in the locally displayed numbering scheme.
coordinatesGeoLocation?Coordinates of the EVSE.
physical_referencestring(16)?A number/string printed on the outside of the EVSE for visual identification.
directionsDisplayText*Multi-language human-readable directions when more detailed information on how to reach the EVSE from the Location is required.
parking_restrictionsParkingRestriction*The restrictions that apply to the parking spot.
imagesImage*Links to images related to the EVSE such as photos or logos.
last_updatedDateTime1Timestamp when this EVSE or one of its Connectors was last updated (or created).

Note: OCPP 1.x does not have good support for Charge Points that have multiple connectors per EVSE. To make StartSession over OCPI work, the CPO SHOULD present the different connectors of an EVSE as separate EVSE, as is also written by the OCA in the application note: "Multiple Connectors per EVSE in a OCPP 1.x implementation".

Connector Object

A Connector is the socket or cable and plug available for the EV to use. A single EVSE may provide multiple Connectors but only one of them can be in use at the same time. A Connector always belongs to an EVSE object.

PropertyTypeCard.Description
idCiString(36)1Identifier of the Connector within the EVSE. Two Connectors may have the same id as long as they do not belong to the same EVSE object.
standardConnectorType1The standard of the installed connector.
formatConnectorFormat1The format (socket/cable) of the installed connector.
power_typePowerType1
max_voltageint1Maximum voltage of the connector (line to neutral for AC_3_PHASE), in volt [V]. For example: DC Chargers might vary the voltage during charging when battery almost full.
max_amperageint1Maximum amperage of the connector, in ampere [A].
max_electric_powerint?Maximum electric power that can be delivered by this connector, in Watts (W). When the maximum electric power is lower than the calculated value from voltage and amperage, this value should be set. + For example: A DC Charge Point which can delivers up to 920V and up to 400A can be limited to a maximum of 150kW (max_electric_power = 150000). Depending on the car, it may supply max voltage or current, but not both at the same time. + For AC Charge Points, the amount of phases used can also have influence on the maximum power.
tariff_idsCiString(36)*Identifiers of the currently valid charging tariffs. Multiple tariffs are possible, but only one of each Tariff.type can be active at the same time. Tariffs with the same type are only allowed if they are not active at the same time: start_date_time and end_date_time period not overlapping. + When preference-based smart charging is supported, one tariff for every possible ProfileType should be provided. These tell the user about the options they have at this Connector, and what the tariff is for every option. + For a "free of charge" tariff, this field should be set and point to a defined "free of charge" tariff.
terms_and_conditionsURL?URL to the operator's terms and conditions.
last_updatedDateTime1Timestamp when this Connector was last updated (or created).

Data types

AdditionalGeoLocation class

This class defines an additional geo location that is relevant for the Charge Point. The geodetic system to be used is WGS 84.

PropertyTypeCard.Description
latitudestring(10)1Latitude of the point in decimal degree. Example: 50.770774. Decimal separator: "." Regex: -?[0-9]{1,2}\.[0-9]{5,7}
longitudestring(11)1Longitude of the point in decimal degree. Example: -126.104965. Decimal separator: "." Regex: -?[0-9]{1,3}\.[0-9]{5,7}
nameDisplayText?Name of the point in local language or as written at the location. For example the street name of a parking lot entrance or it's number.

BusinessDetails class

PropertyTypeCard.Description
namestring(100)1Name of the operator.
websiteURL?Link to the operator's website.
logoImage?Image link to the operator's logo.

Capability enum

The capabilities of an EVSE.

ValueDescription
CHARGING_PROFILE_CAPABLEThe EVSE supports charging profiles.
CHARGING_PREFERENCES_CAPABLEThe EVSE supports charging preferences.
CHIP_CARD_SUPPORTEVSE has a payment terminal that supports chip cards.
CONTACTLESS_CARD_SUPPORTEVSE has a payment terminal that supports contactless cards.
CREDIT_CARD_PAYABLEEVSE has a payment terminal that makes it possible to pay for charging using a credit card.
DEBIT_CARD_PAYABLEEVSE has a payment terminal that makes it possible to pay for charging using a debit card.
PED_TERMINALEVSE has a payment terminal with a pin-code entry device.
REMOTE_START_STOP_CAPABLEThe EVSE can remotely be started/stopped.
RESERVABLEThe EVSE can be reserved.
RFID_READERCharging at this EVSE can be authorized with an RFID token.
START_SESSION_CONNECTOR_REQUIREDWhen a StartSession is sent to this EVSE, the MSP is required to add the optional connector_id field in the StartSession object.
TOKEN_GROUP_CAPABLEThis EVSE supports token groups, two or more tokens work as one, so that a session can be started with one token and stopped with another (handy when a card and key-fob are given to the EV-driver).
UNLOCK_CAPABLEConnectors have mechanical lock that can be requested by the eMSP to be unlocked.

When a Charge Point supports ad-hoc payments with a payment terminal, please use a combination of the following values to explain the possibilities of the terminal: CHIP_CARD_SUPPORT, CONTACTLESS_CARD_SUPPORT, CREDIT_CARD_PAYABLE, DEBIT_CARD_PAYABLE, PED_TERMINAL.

There are Charge Points in the field that do not yet support OCPP 2.x. If these Charge Points have multiple connectors per EVSE, the CPO needs to know which connector to start when receiving a StartSession for the given EVSE. If this is the case, the CPO should set the START_SESSION_CONNECTOR_REQUIRED capability on the given EVSE.

ConnectorFormat enum

The format of the connector, whether it is a socket or a plug.

ValueDescription
SOCKETThe connector is a socket; the EV user needs to bring a fitting plug.
CABLEThe connector is an attached cable; the EV users car needs to have a fitting inlet.

ConnectorType enum

The socket or plug standard of the charging point.

ValueDescription
CHADEMOThe connector type is CHAdeMO, DC
CHAOJIThe ChaoJi connector. The new generation charging connector, harmonized between CHAdeMO and GB/T. DC.
DOMESTIC_AStandard/Domestic household, type "A", NEMA 1-15, 2 pins
DOMESTIC_BStandard/Domestic household, type "B", NEMA 5-15, 3 pins
DOMESTIC_CStandard/Domestic household, type "C", CEE 7/17, 2 pins
DOMESTIC_DStandard/Domestic household, type "D", 3 pin
DOMESTIC_EStandard/Domestic household, type "E", CEE 7/5 3 pins
DOMESTIC_FStandard/Domestic household, type "F", CEE 7/4, Schuko, 3 pins
DOMESTIC_GStandard/Domestic household, type "G", BS 1363, Commonwealth, 3 pins
DOMESTIC_HStandard/Domestic household, type "H", SI-32, 3 pins
DOMESTIC_IStandard/Domestic household, type "I", AS 3112, 3 pins
DOMESTIC_JStandard/Domestic household, type "J", SEV 1011, 3 pins
DOMESTIC_KStandard/Domestic household, type "K", DS 60884-2-D1, 3 pins
DOMESTIC_LStandard/Domestic household, type "L", CEI 23-16-VII, 3 pins
DOMESTIC_MStandard/Domestic household, type "M", BS 546, 3 pins
DOMESTIC_NStandard/Domestic household, type "N", NBR 14136, 3 pins
DOMESTIC_OStandard/Domestic household, type "O", TIS 166-2549, 3 pins
GBT_ACGuobiao GB/T 20234.2 AC socket/connector
GBT_DCGuobiao GB/T 20234.3 DC connector
IEC_60309_2_single_16IEC 60309-2 Industrial Connector single phase 16 amperes (usually blue)
IEC_60309_2_three_16IEC 60309-2 Industrial Connector three phases 16 amperes (usually red)
IEC_60309_2_three_32IEC 60309-2 Industrial Connector three phases 32 amperes (usually red)
IEC_60309_2_three_64IEC 60309-2 Industrial Connector three phases 64 amperes (usually red)
IEC_62196_T1IEC 62196 Type 1 "SAE J1772"
IEC_62196_T1_COMBOCombo Type 1 based, DC
IEC_62196_T2IEC 62196 Type 2 "Mennekes"
IEC_62196_T2_COMBOCombo Type 2 based, DC
IEC_62196_T3AIEC 62196 Type 3A
IEC_62196_T3CIEC 62196 Type 3C "Scame"
NEMA_5_20NEMA 5-20, 3 pins
NEMA_6_30NEMA 6-30, 3 pins
NEMA_6_50NEMA 6-50, 3 pins
NEMA_10_30NEMA 10-30, 3 pins
NEMA_10_50NEMA 10-50, 3 pins
NEMA_14_30NEMA 14-30, 3 pins, rating of 30 A
NEMA_14_50NEMA 14-50, 3 pins, rating of 50 A
PANTOGRAPH_BOTTOM_UPOn-board Bottom-up-Pantograph typically for bus charging
PANTOGRAPH_TOP_DOWNOff-board Top-down-Pantograph typically for bus charging
TESLA_RTesla Connector "Roadster"-type (round, 4 pin)
TESLA_STesla Connector "Model-S"-type (oval, 5 pin)

EnergyMix class

This type is used to specify the energy mix and environmental impact of the supplied energy at a location or in a tariff.

PropertyTypeCard.Description
is_green_energyboolean1True if 100% from regenerative sources. (CO2 and nuclear waste is zero)
energy_sourcesEnergySource*Key-value pairs (enum + percentage) of energy sources of this location's tariff.
environ_impactEnvironmentalImpact*Key-value pairs (enum + percentage) of nuclear waste and CO2 exhaust of this location's tariff.
supplier_namestring(64)?Name of the energy supplier, delivering the energy for this location or tariff.*
energy_product_namestring(64)?Name of the energy suppliers product/tariff plan used at this location.*

* These fields can be used to look up energy qualification or to show it directly to the customer (for well-known brands like Greenpeace Energy, etc.)

Examples

Simple:
Location energymix example simple
Tariff energy provider name:
Location energymix example energy provider
Complete:
Location energymix example complete

EnergySource class

Key-value pairs (enum + percentage) of energy sources. All given values of all categories should add up to 100 percent.

PropertyTypeCard.Description
sourceEnergySourceCategory1The type of energy source.
percentagenumber1Percentage of this source (0-100) in the mix.

EnergySourceCategory enum

Categories of energy sources.

ValueDescription
NUCLEARNuclear power sources.
GENERAL_FOSSILAll kinds of fossil power sources.
COALFossil power from coal.
GASFossil power from gas.
GENERAL_GREENAll kinds of regenerative power sources.
SOLARRegenerative power from PV.
WINDRegenerative power from wind turbines.
WATERRegenerative power from water turbines.

EnvironmentalImpact class

Amount of waste produced/emitted per kWh.

PropertyTypeCard.Description
categoryEnvironmentalImpactCategory1The environmental impact category of this value.
amountnumber1Amount of this portion in g/kWh.

EnvironmentalImpactCategory enum

Categories of environmental impact values.

ValueDescription
NUCLEAR_WASTEProduced nuclear waste in grams per kilowatthour.
CARBON_DIOXIDEExhausted carbon dioxide in grams per kilowatthour.

ExceptionalPeriod class

Specifies one exceptional period for opening or access hours.

PropertyTypeCard.Description
period_beginDateTime1Begin of the exception. In UTC, time_zone field can be used to convert to local time.
period_endDateTime1End of the exception. In UTC, time_zone field can be used to convert to local time.

Facility enum

ValueDescription
HOTELA hotel.
RESTAURANTA restaurant.
CAFEA cafe.
MALLA mall or shopping center.
SUPERMARKETA supermarket.
SPORTSport facilities: gym, field etc.
RECREATION_AREAA recreation area.
NATURELocated in, or close to, a park, nature reserve etc.
MUSEUMA museum.
BIKE_SHARINGA bike/e-bike/e-scooter sharing location.
BUS_STOPA bus stop.
TAXI_STANDA taxi stand.
TRAM_STOPA tram stop/station.
METRO_STATIONA metro station.
TRAIN_STATIONA train station.
AIRPORTAn airport.
PARKING_LOTA parking lot.
CARPOOL_PARKINGA carpool parking.
FUEL_STATIONA Fuel station.
WIFIWifi or other type of internet available.

GeoLocation class

This class defines the geo location of the Charge Point. The geodetic system to be used is WGS 84.

PropertyTypeCard.Description
latitudestring(10)1Latitude of the point in decimal degree. Example: 50.770774. Decimal separator: "." Regex: -?[0-9]{1,2}\.[0-9]{5,7}
longitudestring(11)1Longitude of the point in decimal degree. Example: -126.104965. Decimal separator: "." Regex: -?[0-9]{1,3}\.[0-9]{5,7}

Note: Five decimal places is seen as a minimum for GPS coordinates of the Charge Point as this gives approximately 1 meter precision. More is always better. Seven decimal places gives approximately 1cm precision.

Hours class

Opening and access hours of the location.

PropertyTypeCard.Description
twentyfoursevenboolean1True to represent 24 hours a day and 7 days a week, except the given exceptions.
regular_hoursRegularHours*Regular hours, weekday-based. Only to be used if twentyfourseven=false, then this field needs to contain at least one RegularHours object.
exceptional_openingsExceptionalPeriod*Exceptions for specified calendar dates, time-range based. Periods the station is operating/accessible. Additional to regular_hours. May overlap regular rules.
exceptional_closingsExceptionalPeriod*Exceptions for specified calendar dates, time-range based. Periods the station is not operating/accessible. Overwriting regular_hours and exceptional_openings. Should not overlap exceptional_openings.

Example: 24/7 open with exceptional closing.

Open 24 hours per day, 7 days a week, except for 25th of December 2018 between 03:00 and 05:00.

Location hours 247 open exception closing

Diagram showing a representation of the example 24/7 open with exception closing.

Example: Opening Hours with exceptional closing.

Regular opening hours between 01:00 and 06:00. With exceptional closing on 25th of December 2018 between 03:00 and 05:00.

Location hours opening hours with exceptional closing

Diagram showing a representation of the example Opening Hours with exceptional closing

Example: Opening Hours with exceptional opening.

Regular opening hours between 00:00 and 04:00. With exceptional opening on 25th of December 2018 between 05:00 and 07:00.

Location hours opening hours with exceptional opening

Diagram showing a representation of the example Opening Hours with exceptional opening.

Image class

This class references an image related to an EVSE in terms of a file name or url. According to the roaming connection between one EVSE Operator and one or more Navigation Service Providers, the hosting or file exchange of image payload data has to be defined. The exchange of this content data is out of scope of OCPI. However, the recommended setup is a public available web server hosted and updated by the EVSE Operator. Per charge point an unlimited number of images of each type is allowed. Recommended are at least two images where one is a network or provider logo and the second is a station photo. If two images of the same type are defined, not only one should be selected but both should be displayed together.

Photo Dimensions: The recommended dimensions for all photos is a minimum width of 800 pixels and a minimum height of 600 pixels. Thumbnail should always have the same orientation as the original photo with a size of 200 by 200 pixels.

Logo Dimensions: The recommended dimensions for logos are exactly 512 pixels in width height. Thumbnail representations of logos should be exactly 128 pixels in width and height. If not squared, thumbnails should have the same orientation as the original.

PropertyTypeCard.Description
urlURL1URL from where the image data can be fetched through a web browser.
thumbnailURL?URL from where a thumbnail of the image can be fetched through a webbrowser.
categoryImageCategory1Describes what the image is used for.
typeCiString(4)1Image type like: gif, jpeg, png, svg.
widthint(5)?Width of the full scale image.
heightint(5)?Height of the full scale image.

ImageCategory enum

The category of an image to obtain the correct usage in a user presentation. The category has to be set accordingly to the image content in order to guarantee the right usage.

ValueDescription
CHARGERPhoto of the physical device that contains one or more EVSEs.
ENTRANCELocation entrance photo. Should show the car entrance to the location from street side.
LOCATIONLocation overview photo.
NETWORKLogo of an associated roaming network to be displayed with the EVSE for example in lists, maps and detailed information views.
OPERATORLogo of the charge point operator, for example a municipality, to be displayed in the EVSEs detailed information view or in lists and maps, if no network logo is present.
OTHEROther
OWNERLogo of the charge point owner, for example a local store, to be displayed in the EVSEs detailed information view.

ParkingRestriction enum

This value, if provided, represents the restriction to the parking spot for different purposes.

ValueDescription
EV_ONLYReserved parking spot for electric vehicles.
PLUGGEDParking is only allowed while plugged in (charging).
DISABLEDReserved parking spot for disabled people with valid ID.
CUSTOMERSParking spot for customers/guests only, for example in case of a hotel or shop.
MOTORCYCLESParking spot only suitable for (electric) motorcycles or scooters.

ParkingType enum

Reflects the general type of the charge point's location. May be used for user information.

ValueDescription
ALONG_MOTORWAYLocation on a parking facility/rest area along a motorway, freeway, interstate, highway etc.
PARKING_GARAGEMultistorey car park.
PARKING_LOTA cleared area that is intended for parking vehicles, i.e. at super markets, bars, etc.
ON_DRIVEWAYLocation is on the driveway of a house/building.
ON_STREETParking in public space along a street.
UNDERGROUND_GARAGEMultistorey car park, mainly underground.

PowerType enum

ValueDescription
AC_1_PHASEAC single phase.
AC_2_PHASEAC two phases, only two of the three available phases connected.
AC_2_PHASE_SPLITAC two phases using split phase system.
AC_3_PHASEAC three phases.
DCDirect Current.

PublishTokenType class

Defines the set of values that identify a token to which a Location might be published.

At least one of the following fields SHALL be set: uid, visual_number, or group_id.

When uid is set, type SHALL also be set.

When visual_number is set, issuer SHALL also be set.

PropertyTypeCard.Description
uidCiString(36)?Unique ID by which this Token can be identified.
typeTokenType?Type of the token.
visual_numberstring(64)?Visual readable number/identification as printed on the Token (RFID card).
issuerstring(64)?Issuing company, most of the times the name of the company printed on the token (RFID card), not necessarily the eMSP.
group_idCiString(36)?This ID groups a couple of tokens. This can be used to make two or more tokens work as one.

RegularHours class

Regular recurring operation or access hours.

PropertyTypeCard.Description
weekdayint(1)1Number of day in the week, from Monday (1) till Sunday (7)
period_beginstring(5)1Begin of the regular period, in local time, given in hours and minutes. Must be in 24h format with leading zeros. Example: "18:15". Hour/Minute separator: ":" Regex: `([0-1][0-9]\
2[0-3]):[0-5][0-9]`.period_endstring(5)1
End of the regular period, in local time, syntax as for period_begin. Must be later than period_begin.

Example

Operating on weekdays from 8am till 8pm with one exceptional opening on 22/6/2014 and one exceptional closing the Monday after:

Location regularhours example

This represents the following schedule, where [line-through]#stroked out# days are without operation hours, bold days are where exceptions apply and regular displayed days are where the regular schedule applies.

WeekdayMo
TuWe
ThFr
SaSu
MoTu
WeTh
FrSa
SuDate
1617
1819
2021
[line-through]#22#23
[line-through]#24#25
2627
[line-through]#28#[line-through]#29#
Open from08
0808
0808
09-
08-
0808
08-
-Open till
2020
2020
2012
-20
-20
2020
--

Status enum

The status of an EVSE.

ValueDescription
AVAILABLEThe EVSE/Connector is able to start a new charging session.
BLOCKEDThe EVSE/Connector is not accessible because of a physical barrier, i.e. a car.
CHARGINGThe EVSE/Connector is in use.
INOPERATIVEThe EVSE/Connector is not yet active, or temporarily not available for use, but not broken or defect.
OUTOFORDERThe EVSE/Connector is currently out of order, some part/components may be broken/defect.
PLANNEDThe EVSE/Connector is planned, will be operating soon.
REMOVEDThe EVSE/Connector was discontinued/removed.
RESERVEDThe EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers.
UNKNOWNNo status information available (also used when offline).

StatusSchedule class

This type is used to schedule status periods in the future. The eMSP can provide this information to the EV user for trip planning purposes. A period MAY have no end. Example: "This station will be running as of tomorrow. Today it is still planned and under construction."

PropertyTypeCard.Description
period_beginDateTime1Begin of the scheduled period.
period_endDateTime?End of the scheduled period, if known.
statusStatus1Status value during the scheduled period.

Note: The scheduled status is purely informational. When the status actually changes, the CPO must push an update to the EVSEs status field itself.

Schema and Examples

Below are the JSON Schemas and example payloads for this module, embedded inline.

Schemas

Location object — schemas/objects/location.schema.json

{
    "title": "V2.2.1\\Location",
    "type": "object",
    "properties": {
        "country_code": {
            "type": "string",
            "maxLength": 2,
            "minLength": 2
        },
        "party_id": {
            "type": "string",
            "maxLength": 3,
            "minLength": 3
        },
        "id": {
            "type": "string",
            "maxLength": 36,
            "minLength": 1
        },
        "publish": {
            "type": "boolean"
        },
        "publish_allowed_to": {
            "type": [
                "array",
                "null"
            ],
            "items": {
                "$ref": "#/definitions/publish_token"
            }
        },
        "name": {
            "type": [
                "string",
                "null"
            ],
            "maxLength": 255,
            "minLength": 1
        },
        "address": {
            "type": "string",
            "maxLength": 45,
            "minLength": 1
        },
        "city": {
            "type": "string",
            "maxLength": 45,
            "minLength": 1
        },
        "postal_code": {
            "type": [
                "string",
                "null"
            ],
            "maxLength": 10,
            "minLength": 1
        },
        "state": {
            "type": [
                "string",
                "null"
            ],
            "maxLength": 20,
            "minLength": 1
        },
        "country": {
            "type": "string",
            "maxLength": 3,
            "minLength": 3
        },
        "coordinates": {
            "$ref": "#/definitions/geo_location"
        },
        "related_locations": {
            "type": [
                "array",
                "null"
            ],
            "items": {
                "$ref": "#/definitions/additional_geo_location"
            }
        },
        "parking_type": {
            "type": [
                "string",
                "null"
            ],
            "enum": [
                "ALONG_MOTORWAY",
                "PARKING_GARAGE",
                "PARKING_LOT",
                "ON_DRIVEWAY",
                "ON_STREET",
                "UNDERGROUND_GARAGE",
                null
            ]
        },
        "evses": {
            "type": [
                "array",
                "null"
            ],
            "items": {
                "$ref": "#/definitions/evse"
            }
        },
        "directions": {
            "type": [
                "array",
                "null"
            ],
            "items": {
                "$ref": "#/definitions/display_text"
            }
        },
        "operator": {
            "oneOf": [
                {
                    "type": "null"
                },
                {
                    "$ref": "#/definitions/business_details"
                }
            ]
        },
        "suboperator": {
            "oneOf": [
                {
                    "type": "null"
                },
                {
                    "$ref": "#/definitions/business_details"
                }
            ]
        },
        "owner": {
            "oneOf": [
                {
                    "type": "null"
                },
                {
                    "$ref": "#/definitions/business_details"
                }
            ]
        },
        "facilities": {
            "type": [
                "array",
                "null"
            ],
            "items": {
                "type": "string",
                "enum": [
                    "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"
                ]
            }
        },
        "time_zone": {
            "type": "string",
            "maxLength": 255,
            "minLength": 1
        },
        "opening_times": {
            "oneOf": [
                {
                    "type": "null"
                },
                {
                    "$ref": "#/definitions/hours"
                }
            ]
        },
        "charging_when_closed": {
            "type": [
                "boolean",
                "null"
            ]
        },
        "images": {
            "type": [
                "array",
                "null"
            ],
            "items": {
                "$ref": "#/definitions/image"
            }
        },
        "energy_mix": {
            "oneOf": [
                {
                    "type": "null"
                },
                {
                    "$ref": "#/definitions/energy_mix"
                }
            ]
        },
        "last_updated": {
            "$ref": "#/definitions/datetime"
        }
    },
    "required": [
        "country_code",
        "party_id",
        "id",
        "publish",
        "address",
        "city",
        "country",
        "coordinates",
        "time_zone",
        "last_updated"
    ],
    "additionalProperties": false,
    "definitions": {
        "publish_token": {
            "type": "object",
            "properties": {
                "uid": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "AD_HOC_USER",
                        "APP_USER",
                        "OTHER",
                        "RFID"
                    ]
                },
                "visual_number": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "maxLength": 64,
                    "minLength": 1
                },
                "issuer": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "maxLength": 64,
                    "minLength": 1
                },
                "group_id": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "maxLength": 36,
                    "minLength": 1
                }
            },
            "additionalProperties": false
        },
        "geo_location": {
            "type": "object",
            "properties": {
                "latitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,2}\\.[0-9]{5,7}$"
                },
                "longitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,3}\\.[0-9]{5,7}$"
                }
            },
            "required": [
                "latitude",
                "longitude"
            ],
            "additionalProperties": false
        },
        "additional_geo_location": {
            "type": "object",
            "properties": {
                "latitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,2}\\.[0-9]{5,7}$"
                },
                "longitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,3}\\.[0-9]{5,7}$"
                },
                "name": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "$ref": "#/definitions/display_text"
                        }
                    ]
                }
            },
            "required": [
                "latitude",
                "longitude"
            ],
            "additionalProperties": false
        },
        "display_text": {
            "type": "object",
            "properties": {
                "language": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 2,
                    "pattern": "^[A-Za-z]{2}$"
                },
                "text": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 512
                }
            },
            "required": [
                "language",
                "text"
            ],
            "additionalProperties": false
        },
        "evse": {
            "title": "V2.2.1\\EVSE",
            "type": "object",
            "properties": {
                "uid": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "evse_id": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "maxLength": 48,
                    "minLength": 1
                },
                "status": {
                    "$ref": "#/definitions/status"
                },
                "status_schedule": {
                    "type": [
                        "array",
                        "null"
                    ],
                    "items": {
                        "$ref": "#/definitions/status_schedule"
                    }
                },
                "capabilities": {
                    "type": [
                        "array",
                        "null"
                    ],
                    "items": {
                        "type": "string",
                        "enum": [
                            "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"
                        ]
                    }
                },
                "connectors": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "$ref": "#/definitions/connector"
                    }
                },
                "floor_level": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "maxLength": 4,
                    "minLength": 1
                },
                "coordinates": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "$ref": "#/definitions/geo_location"
                        }
                    ]
                },
                "physical_reference": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "maxLength": 16,
                    "minLength": 1
                },
                "directions": {
                    "type": [
                        "array",
                        "null"
                    ],
                    "items": {
                        "$ref": "#/definitions/display_text"
                    }
                },
                "parking_restrictions": {
                    "type": [
                        "array",
                        "null"
                    ],
                    "items": {
                        "type": "string",
                        "enum": [
                            "EV_ONLY",
                            "PLUGGED",
                            "DISABLED",
                            "CUSTOMERS",
                            "MOTORCYCLES"
                        ]
                    }
                },
                "images": {
                    "type": [
                        "array",
                        "null"
                    ],
                    "items": {
                        "$ref": "#/definitions/image"
                    }
                },
                "last_updated": {
                    "$ref": "#/definitions/datetime"
                }
            },
            "required": [
                "uid",
                "status",
                "connectors",
                "last_updated"
            ],
            "additionalProperties": false
        },
        "status": {
            "type": "string",
            "enum": [
                "AVAILABLE",
                "BLOCKED",
                "CHARGING",
                "INOPERATIVE",
                "OUTOFORDER",
                "PLANNED",
                "REMOVED",
                "RESERVED",
                "UNKNOWN"
            ]
        },
        "status_schedule": {
            "type": "object",
            "properties": {
                "period_begin": {
                    "$ref": "#/definitions/datetime"
                },
                "period_end": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "$ref": "#/definitions/datetime"
                        }
                    ]
                },
                "status": {
                    "$ref": "#/definitions/status"
                }
            },
            "required": [
                "period_begin",
                "status"
            ],
            "additionalProperties": false
        },
        "datetime": {
            "type": "string",
            "pattern": "^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\\.[0-9]+)?Z?$"
        },
        "connector": {
            "title": "V2.2.1\\Connector",
            "type": "object",
            "properties": {
                "id": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "standard": {
                    "type": "string",
                    "enum": [
                        "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"
                    ]
                },
                "format": {
                    "type": "string",
                    "enum": [
                        "SOCKET",
                        "CABLE"
                    ]
                },
                "power_type": {
                    "type": "string",
                    "enum": [
                        "AC_1_PHASE",
                        "AC_2_PHASE",
                        "AC_2_PHASE_SPLIT",
                        "AC_3_PHASE",
                        "DC"
                    ]
                },
                "max_voltage": {
                    "type": "integer"
                },
                "max_amperage": {
                    "type": "integer"
                },
                "max_electric_power": {
                    "type": [
                        "integer",
                        "null"
                    ]
                },
                "tariff_ids": {
                    "type": [
                        "array",
                        "null"
                    ],
                    "items": {
                        "type": "string",
                        "maxLength": 36
                    }
                },
                "terms_and_conditions": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "$ref": "#/definitions/url"
                        }
                    ]
                },
                "last_updated": {
                    "$ref": "#/definitions/datetime"
                }
            },
            "required": [
                "id",
                "standard",
                "format",
                "power_type",
                "max_voltage",
                "max_amperage",
                "last_updated"
            ],
            "additionalProperties": false
        },
        "url": {
            "type": "string",
            "format": "uri",
            "maxLength": 255
        },
        "image": {
            "type": "object",
            "properties": {
                "url": {
                    "$ref": "#/definitions/url"
                },
                "thumbnail": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "$ref": "#/definitions/url"
                        }
                    ]
                },
                "category": {
                    "type": "string",
                    "enum": [
                        "CHARGER",
                        "ENTRANCE",
                        "LOCATION",
                        "NETWORK",
                        "OPERATOR",
                        "OTHER",
                        "OWNER"
                    ]
                },
                "type": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 4
                },
                "width": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "maximum": 99999,
                    "minimum": 1
                },
                "height": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "maximum": 99999,
                    "minimum": 1
                }
            },
            "required": [
                "url",
                "category",
                "type"
            ],
            "additionalProperties": false
        },
        "business_details": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                },
                "website": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "$ref": "#/definitions/url"
                        }
                    ]
                },
                "logo": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "$ref": "#/definitions/image"
                        }
                    ]
                }
            },
            "required": [
                "name"
            ],
            "additionalProperties": false
        },
        "hours": {
            "type": "object",
            "properties": {
                "twentyfourseven": {
                    "type": "boolean"
                },
                "regular_hours": {
                    "type": [
                        "array",
                        "null"
                    ],
                    "items": {
                        "$ref": "#/definitions/regular_hours"
                    }
                },
                "exceptional_openings": {
                    "type": [
                        "array",
                        "null"
                    ],
                    "items": {
                        "$ref": "#/definitions/exceptional_period"
                    }
                },
                "exceptional_closings": {
                    "type": [
                        "array",
                        "null"
                    ],
                    "items": {
                        "$ref": "#/definitions/exceptional_period"
                    }
                }
            },
            "required": [
                "twentyfourseven"
            ],
            "additionalProperties": false
        },
        "regular_hours": {
            "type": "object",
            "properties": {
                "weekday": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 7
                },
                "period_begin": {
                    "type": "string",
                    "pattern": "^([0-1][0-9]|2[0-3]):[0-5][0-9]$",
                    "maxLength": 5
                },
                "period_end": {
                    "type": "string",
                    "pattern": "^([0-1][0-9]|2[0-3]):[0-5][0-9]$",
                    "maxLength": 5
                }
            },
            "required": [
                "weekday",
                "period_begin",
                "period_end"
            ],
            "additionalProperties": false
        },
        "exceptional_period": {
            "type": "object",
            "properties": {
                "period_begin": {
                    "$ref": "#/definitions/datetime"
                },
                "period_end": {
                    "$ref": "#/definitions/datetime"
                }
            },
            "required": [
                "period_begin",
                "period_end"
            ],
            "additionalProperties": false
        },
        "energy_mix": {
            "type": "object",
            "properties": {
                "is_green_energy": {
                    "type": "boolean"
                },
                "energy_sources": {
                    "type": [
                        "array",
                        "null"
                    ],
                    "items": {
                        "$ref": "#/definitions/energy_source"
                    }
                },
                "environ_impact": {
                    "type": [
                        "array",
                        "null"
                    ],
                    "items": {
                        "$ref": "#/definitions/environmental_impact"
                    }
                },
                "supplier_name": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "maxLength": 64,
                    "minLength": 1
                },
                "energy_product_name": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "maxLength": 64,
                    "minLength": 1
                }
            },
            "required": [
                "is_green_energy"
            ],
            "additionalProperties": false
        },
        "energy_source": {
            "type": "object",
            "properties": {
                "source": {
                    "type": "string",
                    "enum": [
                        "NUCLEAR",
                        "GENERAL_FOSSIL",
                        "COAL",
                        "GAS",
                        "GENERAL_GREEN",
                        "SOLAR",
                        "WIND",
                        "WATER"
                    ]
                },
                "percentage": {
                    "type": "number"
                }
            },
            "required": [
                "source",
                "percentage"
            ],
            "additionalProperties": false
        },
        "environmental_impact": {
            "type": "object",
            "properties": {
                "category": {
                    "type": "string",
                    "enum": [
                        "NUCLEAR_WASTE",
                        "CARBON_DIOXIDE"
                    ]
                },
                "amount": {
                    "type": "number"
                }
            },
            "required": [
                "category",
                "amount"
            ],
            "additionalProperties": false
        }
    }
}

EVSE object — schemas/objects/evse.schema.json

{
    "title": "V2.2.1\\EVSE",
    "type": "object",
    "properties": {
        "uid": {
            "type": "string",
            "maxLength": 36,
            "minLength": 1
        },
        "evse_id": {
            "type": [
                "string",
                "null"
            ],
            "maxLength": 48,
            "minLength": 1
        },
        "status": {
            "$ref": "#/definitions/status"
        },
        "status_schedule": {
            "type": [
                "array",
                "null"
            ],
            "items": {
                "$ref": "#/definitions/status_schedule"
            }
        },
        "capabilities": {
            "type": [
                "array",
                "null"
            ],
            "items": {
                "type": "string",
                "enum": [
                    "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"
                ]
            }
        },
        "connectors": {
            "type": "array",
            "minItems": 1,
            "items": {
                "$ref": "#/definitions/connector"
            }
        },
        "floor_level": {
            "type": [
                "string",
                "null"
            ],
            "maxLength": 4,
            "minLength": 1
        },
        "coordinates": {
            "oneOf": [
                {
                    "type": "null"
                },
                {
                    "$ref": "#/definitions/geo_location"
                }
            ]
        },
        "physical_reference": {
            "type": [
                "string",
                "null"
            ],
            "maxLength": 16,
            "minLength": 1
        },
        "directions": {
            "type": [
                "array",
                "null"
            ],
            "items": {
                "$ref": "#/definitions/display_text"
            }
        },
        "parking_restrictions": {
            "type": [
                "array",
                "null"
            ],
            "items": {
                "type": "string",
                "enum": [
                    "EV_ONLY",
                    "PLUGGED",
                    "DISABLED",
                    "CUSTOMERS",
                    "MOTORCYCLES"
                ]
            }
        },
        "images": {
            "type": [
                "array",
                "null"
            ],
            "items": {
                "$ref": "#/definitions/image"
            }
        },
        "last_updated": {
            "$ref": "#/definitions/datetime"
        }
    },
    "required": [
        "uid",
        "status",
        "connectors",
        "last_updated"
    ],
    "additionalProperties": false,
    "definitions": {
        "status": {
            "type": "string",
            "enum": [
                "AVAILABLE",
                "BLOCKED",
                "CHARGING",
                "INOPERATIVE",
                "OUTOFORDER",
                "PLANNED",
                "REMOVED",
                "RESERVED",
                "UNKNOWN"
            ]
        },
        "status_schedule": {
            "type": "object",
            "properties": {
                "period_begin": {
                    "$ref": "#/definitions/datetime"
                },
                "period_end": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "$ref": "#/definitions/datetime"
                        }
                    ]
                },
                "status": {
                    "$ref": "#/definitions/status"
                }
            },
            "required": [
                "period_begin",
                "status"
            ],
            "additionalProperties": false
        },
        "datetime": {
            "type": "string",
            "pattern": "^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\\.[0-9]+)?Z?$"
        },
        "connector": {
            "title": "V2.2.1\\Connector",
            "type": "object",
            "properties": {
                "id": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "standard": {
                    "type": "string",
                    "enum": [
                        "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"
                    ]
                },
                "format": {
                    "type": "string",
                    "enum": [
                        "SOCKET",
                        "CABLE"
                    ]
                },
                "power_type": {
                    "type": "string",
                    "enum": [
                        "AC_1_PHASE",
                        "AC_2_PHASE",
                        "AC_2_PHASE_SPLIT",
                        "AC_3_PHASE",
                        "DC"
                    ]
                },
                "max_voltage": {
                    "type": "integer"
                },
                "max_amperage": {
                    "type": "integer"
                },
                "max_electric_power": {
                    "type": [
                        "integer",
                        "null"
                    ]
                },
                "tariff_ids": {
                    "type": [
                        "array",
                        "null"
                    ],
                    "items": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 36
                    }
                },
                "terms_and_conditions": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "$ref": "#/definitions/url"
                        }
                    ]
                },
                "last_updated": {
                    "$ref": "#/definitions/datetime"
                }
            },
            "required": [
                "id",
                "standard",
                "format",
                "power_type",
                "max_voltage",
                "max_amperage",
                "last_updated"
            ],
            "additionalProperties": false
        },
        "url": {
            "type": "string",
            "format": "uri",
            "maxLength": 255
        },
        "geo_location": {
            "type": "object",
            "properties": {
                "latitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,2}\\.[0-9]{5,7}$"
                },
                "longitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,3}\\.[0-9]{5,7}$"
                }
            },
            "required": [
                "latitude",
                "longitude"
            ],
            "additionalProperties": false
        },
        "display_text": {
            "type": "object",
            "properties": {
                "language": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 2,
                    "pattern": "^[A-Za-z]{2}$"
                },
                "text": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 512
                }
            },
            "required": [
                "language",
                "text"
            ],
            "additionalProperties": false
        },
        "image": {
            "type": "object",
            "properties": {
                "url": {
                    "$ref": "#/definitions/url"
                },
                "thumbnail": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "$ref": "#/definitions/url"
                        }
                    ]
                },
                "category": {
                    "type": "string",
                    "enum": [
                        "CHARGER",
                        "ENTRANCE",
                        "LOCATION",
                        "NETWORK",
                        "OPERATOR",
                        "OTHER",
                        "OWNER"
                    ]
                },
                "type": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 4
                },
                "width": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "maximum": 99999,
                    "minimum": 1
                },
                "height": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "maximum": 99999,
                    "minimum": 1
                }
            },
            "required": [
                "url",
                "category",
                "type"
            ],
            "additionalProperties": false
        }
    }
}

Connector object — schemas/objects/connector.schema.json

{
    "title": "V2.2.1\\Connector",
    "type": "object",
    "properties": {
        "id": {
            "type": "string",
            "maxLength": 36,
            "minLength": 1
        },
        "standard": {
            "type": "string",
            "enum": [
                "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"
            ]
        },
        "format": {
            "type": "string",
            "enum": [
                "SOCKET",
                "CABLE"
            ]
        },
        "power_type": {
            "type": "string",
            "enum": [
                "AC_1_PHASE",
                "AC_2_PHASE",
                "AC_2_PHASE_SPLIT",
                "AC_3_PHASE",
                "DC"
            ]
        },
        "max_voltage": {
            "type": "integer"
        },
        "max_amperage": {
            "type": "integer"
        },
        "max_electric_power": {
            "type": ["integer", "null"]
        },
        "tariff_ids": {
            "type": ["array", "null"],
            "items": {
                "type": "string",
                "minLength": 1,
                "maxLength": 36
            }
        },
        "terms_and_conditions": {
            "oneOf": [
                {"type": "null"},
                {"$ref": "#/definitions/url"}
            ]
        },
        "last_updated": {
            "$ref": "#/definitions/datetime"
        }
    },
    "required": [
        "id",
        "standard",
        "format",
        "power_type",
        "max_voltage",
        "max_amperage",
        "last_updated"
    ],
    "additionalProperties": false,
    "definitions": {
        "url": {
            "type": "string",
            "format": "uri",
            "maxLength": 255
        },
        "datetime": {
            "type": "string",
            "pattern": "^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\\.[0-9]+)?Z?$"
        }
    }
}

Common types — schemas/objects/common.schema.json

{
    "title": "V2.2.1\\Common",
    "definitions": {
        "datetime": {
            "type": "string",
            "pattern": "^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\\.[0-9]+)?Z?$"
        },
        "display_text": {
            "type": "object",
            "properties": {
                "language": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 2,
                    "pattern": "^[A-Za-z]{2}$"
                },
                "text": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 512
                }
            },
            "required": [
                "language",
                "text"
            ],
            "additionalProperties": false
        },
        "price": {
            "type": "object",
            "properties": {
                "excl_vat": {
                    "type": "number"
                },
                "incl_vat": {
                    "type": "number"
                }
            },
            "required": [
                "excl_vat"
            ],
            "additionalProperties": false
        },
        "role": {
            "type": "string",
            "enum": [
                "CPO",
                "EMSP",
                "HUB",
                "NAP",
                "NSP",
                "OTHER",
                "SCSP"
            ]
        },
        "url": {
            "type": "string",
            "format": "uri",
            "maxLength": 255
        },
        "geo_location": {
            "type": "object",
            "properties": {
                "latitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,2}\\.[0-9]{5,7}$"
                },
                "longitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,3}\\.[0-9]{5,7}$"
                }
            },
            "required": [
                "latitude",
                "longitude"
            ],
            "additionalProperties": false
        },
        "additional_geo_location": {
            "type": "object",
            "properties": {
                "latitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,2}\\.[0-9]{5,7}$"
                },
                "longitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,3}\\.[0-9]{5,7}$"
                },
                "name": {
                    "$ref": "#/definitions/display_text"
                }
            },
            "required": [
                "latitude",
                "longitude"
            ],
            "additionalProperties": false
        },
        "business_details": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                },
                "website": {
                    "$ref": "#/definitions/url"
                },
                "logo": {
                    "$ref": "#/definitions/image"
                }
            },
            "required": [
                "name"
            ],
            "additionalProperties": false
        },
        "image": {
            "type": "object",
            "properties": {
                "url": {
                    "$ref": "#/definitions/url"
                },
                "thumbnail": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "$ref": "#/definitions/url"
                        }
                    ]
                },
                "category": {
                    "type": "string",
                    "enum": [
                        "CHARGER",
                        "ENTRANCE",
                        "LOCATION",
                        "NETWORK",
                        "OPERATOR",
                        "OTHER",
                        "OWNER"
                    ]
                },
                "type": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 4
                },
                "width": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "maximum": 99999,
                    "minimum": 1
                },
                "height": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "maximum": 99999,
                    "minimum": 1
                }
            },
            "required": [
                "url",
                "category",
                "type"
            ],
            "additionalProperties": false
        },
        "regular_hours": {
            "type": "object",
            "properties": {
                "weekday": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 7
                },
                "period_begin": {
                    "type": "string",
                    "pattern": "^([0-1][0-9]|2[0-3]):[0-5][0-9]$",
                    "maxLength": 5
                },
                "period_end": {
                    "type": "string",
                    "pattern": "^([0-1][0-9]|2[0-3]):[0-5][0-9]$",
                    "maxLength": 5
                }
            },
            "required": [
                "weekday",
                "period_begin",
                "period_end"
            ],
            "additionalProperties": false
        },
        "exceptional_period": {
            "type": "object",
            "properties": {
                "period_begin": {
                    "$ref": "#/definitions/datetime"
                },
                "period_end": {
                    "$ref": "#/definitions/datetime"
                }
            },
            "required": [
                "period_begin",
                "period_end"
            ],
            "additionalProperties": false
        },
        "hours": {
            "type": "object",
            "properties": {
                "twentyfourseven": {
                    "type": "boolean"
                },
                "regular_hours": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/regular_hours"
                    }
                },
                "exceptional_openings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/exceptional_period"
                    }
                },
                "exceptional_closings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/exceptional_period"
                    }
                }
            },
            "required": [
                "twentyfourseven"
            ],
            "additionalProperties": false
        },
        "energy_source": {
            "type": "object",
            "properties": {
                "source": {
                    "type": "string",
                    "enum": [
                        "NUCLEAR",
                        "GENERAL_FOSSIL",
                        "COAL",
                        "GAS",
                        "GENERAL_GREEN",
                        "SOLAR",
                        "WIND",
                        "WATER"
                    ]
                },
                "percentage": {
                    "type": "number"
                }
            },
            "required": [
                "source",
                "percentage"
            ],
            "additionalProperties": false
        },
        "environmental_impact": {
            "type": "object",
            "properties": {
                "category": {
                    "type": "string",
                    "enum": [
                        "NUCLEAR_WASTE",
                        "CARBON_DIOXIDE"
                    ]
                },
                "amount": {
                    "type": "number"
                }
            },
            "required": [
                "category",
                "amount"
            ],
            "additionalProperties": false
        },
        "energy_mix": {
            "type": "object",
            "properties": {
                "is_green_energy": {
                    "type": "boolean"
                },
                "energy_sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/energy_source"
                    }
                },
                "environ_impact": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/environmental_impact"
                    }
                },
                "supplier_name": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                },
                "energy_product_name": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                }
            },
            "required": [
                "is_green_energy"
            ],
            "additionalProperties": false
        },
        "status": {
            "type": "string",
            "enum": [
                "AVAILABLE",
                "BLOCKED",
                "CHARGING",
                "INOPERATIVE",
                "OUTOFORDER",
                "PLANNED",
                "REMOVED",
                "RESERVED",
                "UNKNOWN"
            ]
        },
        "status_schedule": {
            "type": "object",
            "properties": {
                "period_begin": {
                    "$ref": "#/definitions/datetime"
                },
                "period_end": {
                    "$ref": "#/definitions/datetime"
                },
                "status": {
                    "$ref": "#/definitions/status"
                }
            },
            "required": [
                "period_begin",
                "status"
            ],
            "additionalProperties": false
        },
        "publish_token": {
            "type": "object",
            "properties": {
                "uid": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "AD_HOC_USER",
                        "APP_USER",
                        "OTHER",
                        "RFID"
                    ]
                },
                "visual_number": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                },
                "issuer": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                },
                "group_id": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                }
            },
            "additionalProperties": false
        },
        "cdr_token": {
            "type": "object",
            "properties": {
                "country_code": {
                    "type": "string",
                    "maxLength": 2,
                    "minLength": 2
                },
                "party_id": {
                    "type": "string",
                    "maxLength": 3,
                    "minLength": 3
                },
                "uid": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "AD_HOC_USER",
                        "APP_USER",
                        "OTHER",
                        "RFID"
                    ]
                },
                "contract_id": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                }
            },
            "required": [
                "country_code",
                "party_id",
                "uid",
                "type",
                "contract_id"
            ],
            "additionalProperties": false
        },
        "cdr_dimension": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "CURRENT",
                        "ENERGY",
                        "ENERGY_EXPORT",
                        "ENERGY_IMPORT",
                        "MAX_CURRENT",
                        "MIN_CURRENT",
                        "MAX_POWER",
                        "MIN_POWER",
                        "PARKING_TIME",
                        "POWER",
                        "RESERVATION_TIME",
                        "STATE_OF_CHARGE",
                        "TIME"
                    ]
                },
                "volume": {
                    "type": "number"
                }
            },
            "required": [
                "type",
                "volume"
            ],
            "additionalProperties": false
        },
        "charging_period": {
            "type": "object",
            "properties": {
                "start_date_time": {
                    "$ref": "#/definitions/datetime"
                },
                "dimensions": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "$ref": "#/definitions/cdr_dimension"
                    }
                },
                "tariff_id": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                }
            },
            "required": [
                "start_date_time",
                "dimensions"
            ],
            "additionalProperties": false
        }
    }
}

PUT location request body — schemas/requests/location.request.schema.json

{
    "title": "V2.2.1\\Location Request",
    "description": "Request body for PUT location/EVSE/connector.",
    "$ref": "#/definitions/location",
    "definitions": {
        "location": {
            "title": "V2.2.1\\Location",
            "type": "object",
            "properties": {
                "country_code": {
                    "type": "string",
                    "maxLength": 2,
                    "minLength": 2
                },
                "party_id": {
                    "type": "string",
                    "maxLength": 3,
                    "minLength": 3
                },
                "id": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "publish": {
                    "type": "boolean"
                },
                "publish_allowed_to": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/publish_token"
                    }
                },
                "name": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "address": {
                    "type": "string",
                    "maxLength": 45,
                    "minLength": 1
                },
                "city": {
                    "type": "string",
                    "maxLength": 45,
                    "minLength": 1
                },
                "postal_code": {
                    "type": "string",
                    "maxLength": 10,
                    "minLength": 1
                },
                "state": {
                    "type": "string",
                    "maxLength": 20,
                    "minLength": 1
                },
                "country": {
                    "type": "string",
                    "maxLength": 3,
                    "minLength": 3
                },
                "coordinates": {
                    "$ref": "#/definitions/geo_location"
                },
                "related_locations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/additional_geo_location"
                    }
                },
                "parking_type": {
                    "type": "string",
                    "enum": [
                        "ALONG_MOTORWAY",
                        "PARKING_GARAGE",
                        "PARKING_LOT",
                        "ON_DRIVEWAY",
                        "ON_STREET",
                        "UNDERGROUND_GARAGE"
                    ]
                },
                "evses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/evse"
                    }
                },
                "directions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/display_text"
                    }
                },
                "operator": {
                    "$ref": "#/definitions/business_details"
                },
                "suboperator": {
                    "$ref": "#/definitions/business_details"
                },
                "owner": {
                    "$ref": "#/definitions/business_details"
                },
                "facilities": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": [
                            "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"
                        ]
                    }
                },
                "time_zone": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "opening_times": {
                    "$ref": "#/definitions/hours"
                },
                "charging_when_closed": {
                    "type": "boolean"
                },
                "images": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/image"
                    }
                },
                "energy_mix": {
                    "$ref": "#/definitions/energy_mix"
                },
                "last_updated": {
                    "$ref": "#/definitions/datetime"
                }
            },
            "required": [
                "country_code",
                "party_id",
                "id",
                "publish",
                "address",
                "city",
                "country",
                "coordinates",
                "time_zone",
                "last_updated"
            ],
            "additionalProperties": false
        },
        "publish_token": {
            "type": "object",
            "properties": {
                "uid": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "AD_HOC_USER",
                        "APP_USER",
                        "OTHER",
                        "RFID"
                    ]
                },
                "visual_number": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                },
                "issuer": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                },
                "group_id": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                }
            },
            "additionalProperties": false
        },
        "geo_location": {
            "type": "object",
            "properties": {
                "latitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,2}\\.[0-9]{5,7}$"
                },
                "longitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,3}\\.[0-9]{5,7}$"
                }
            },
            "required": [
                "latitude",
                "longitude"
            ],
            "additionalProperties": false
        },
        "additional_geo_location": {
            "type": "object",
            "properties": {
                "latitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,2}\\.[0-9]{5,7}$"
                },
                "longitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,3}\\.[0-9]{5,7}$"
                },
                "name": {
                    "$ref": "#/definitions/display_text"
                }
            },
            "required": [
                "latitude",
                "longitude"
            ],
            "additionalProperties": false
        },
        "display_text": {
            "type": "object",
            "properties": {
                "language": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 2,
                    "pattern": "^[A-Za-z]{2}$"
                },
                "text": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 512
                }
            },
            "required": [
                "language",
                "text"
            ],
            "additionalProperties": false
        },
        "evse": {
            "title": "V2.2.1\\EVSE",
            "type": "object",
            "properties": {
                "uid": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "evse_id": {
                    "type": "string",
                    "maxLength": 48,
                    "minLength": 1
                },
                "status": {
                    "$ref": "#/definitions/status"
                },
                "status_schedule": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/status_schedule"
                    }
                },
                "capabilities": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": [
                            "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"
                        ]
                    }
                },
                "connectors": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "$ref": "#/definitions/connector"
                    }
                },
                "floor_level": {
                    "type": "string",
                    "maxLength": 4,
                    "minLength": 1
                },
                "coordinates": {
                    "$ref": "#/definitions/geo_location"
                },
                "physical_reference": {
                    "type": "string",
                    "maxLength": 16,
                    "minLength": 1
                },
                "directions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/display_text"
                    }
                },
                "parking_restrictions": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": [
                            "EV_ONLY",
                            "PLUGGED",
                            "DISABLED",
                            "CUSTOMERS",
                            "MOTORCYCLES"
                        ]
                    }
                },
                "images": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/image"
                    }
                },
                "last_updated": {
                    "$ref": "#/definitions/datetime"
                }
            },
            "required": [
                "uid",
                "status",
                "connectors",
                "last_updated"
            ],
            "additionalProperties": false
        },
        "status": {
            "type": "string",
            "enum": [
                "AVAILABLE",
                "BLOCKED",
                "CHARGING",
                "INOPERATIVE",
                "OUTOFORDER",
                "PLANNED",
                "REMOVED",
                "RESERVED",
                "UNKNOWN"
            ]
        },
        "status_schedule": {
            "type": "object",
            "properties": {
                "period_begin": {
                    "$ref": "#/definitions/datetime"
                },
                "period_end": {
                    "$ref": "#/definitions/datetime"
                },
                "status": {
                    "$ref": "#/definitions/status"
                }
            },
            "required": [
                "period_begin",
                "status"
            ],
            "additionalProperties": false
        },
        "datetime": {
            "type": "string",
            "pattern": "^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\\.[0-9]+)?Z?$"
        },
        "connector": {
            "title": "V2.2.1\\Connector",
            "type": "object",
            "properties": {
                "id": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "standard": {
                    "type": "string",
                    "enum": [
                        "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"
                    ]
                },
                "format": {
                    "type": "string",
                    "enum": [
                        "SOCKET",
                        "CABLE"
                    ]
                },
                "power_type": {
                    "type": "string",
                    "enum": [
                        "AC_1_PHASE",
                        "AC_2_PHASE",
                        "AC_2_PHASE_SPLIT",
                        "AC_3_PHASE",
                        "DC"
                    ]
                },
                "max_voltage": {
                    "type": "integer"
                },
                "max_amperage": {
                    "type": "integer"
                },
                "max_electric_power": {
                    "type": "integer"
                },
                "tariff_ids": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "maxLength": 36
                    }
                },
                "terms_and_conditions": {
                    "$ref": "#/definitions/url"
                },
                "last_updated": {
                    "$ref": "#/definitions/datetime"
                }
            },
            "required": [
                "id",
                "standard",
                "format",
                "power_type",
                "max_voltage",
                "max_amperage",
                "last_updated"
            ],
            "additionalProperties": false
        },
        "url": {
            "type": "string",
            "format": "uri",
            "maxLength": 255
        },
        "image": {
            "type": "object",
            "properties": {
                "url": {
                    "$ref": "#/definitions/url"
                },
                "thumbnail": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "$ref": "#/definitions/url"
                        }
                    ]
                },
                "category": {
                    "type": "string",
                    "enum": [
                        "CHARGER",
                        "ENTRANCE",
                        "LOCATION",
                        "NETWORK",
                        "OPERATOR",
                        "OTHER",
                        "OWNER"
                    ]
                },
                "type": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 4
                },
                "width": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "maximum": 99999,
                    "minimum": 1
                },
                "height": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "maximum": 99999,
                    "minimum": 1
                }
            },
            "required": [
                "url",
                "category",
                "type"
            ],
            "additionalProperties": false
        },
        "business_details": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                },
                "website": {
                    "$ref": "#/definitions/url"
                },
                "logo": {
                    "$ref": "#/definitions/image"
                }
            },
            "required": [
                "name"
            ],
            "additionalProperties": false
        },
        "hours": {
            "type": "object",
            "properties": {
                "twentyfourseven": {
                    "type": "boolean"
                },
                "regular_hours": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/regular_hours"
                    }
                },
                "exceptional_openings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/exceptional_period"
                    }
                },
                "exceptional_closings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/exceptional_period"
                    }
                }
            },
            "required": [
                "twentyfourseven"
            ],
            "additionalProperties": false
        },
        "regular_hours": {
            "type": "object",
            "properties": {
                "weekday": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 7
                },
                "period_begin": {
                    "type": "string",
                    "pattern": "^([0-1][0-9]|2[0-3]):[0-5][0-9]$",
                    "maxLength": 5
                },
                "period_end": {
                    "type": "string",
                    "pattern": "^([0-1][0-9]|2[0-3]):[0-5][0-9]$",
                    "maxLength": 5
                }
            },
            "required": [
                "weekday",
                "period_begin",
                "period_end"
            ],
            "additionalProperties": false
        },
        "exceptional_period": {
            "type": "object",
            "properties": {
                "period_begin": {
                    "$ref": "#/definitions/datetime"
                },
                "period_end": {
                    "$ref": "#/definitions/datetime"
                }
            },
            "required": [
                "period_begin",
                "period_end"
            ],
            "additionalProperties": false
        },
        "energy_mix": {
            "type": "object",
            "properties": {
                "is_green_energy": {
                    "type": "boolean"
                },
                "energy_sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/energy_source"
                    }
                },
                "environ_impact": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/environmental_impact"
                    }
                },
                "supplier_name": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                },
                "energy_product_name": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                }
            },
            "required": [
                "is_green_energy"
            ],
            "additionalProperties": false
        },
        "energy_source": {
            "type": "object",
            "properties": {
                "source": {
                    "type": "string",
                    "enum": [
                        "NUCLEAR",
                        "GENERAL_FOSSIL",
                        "COAL",
                        "GAS",
                        "GENERAL_GREEN",
                        "SOLAR",
                        "WIND",
                        "WATER"
                    ]
                },
                "percentage": {
                    "type": "number"
                }
            },
            "required": [
                "source",
                "percentage"
            ],
            "additionalProperties": false
        },
        "environmental_impact": {
            "type": "object",
            "properties": {
                "category": {
                    "type": "string",
                    "enum": [
                        "NUCLEAR_WASTE",
                        "CARBON_DIOXIDE"
                    ]
                },
                "amount": {
                    "type": "number"
                }
            },
            "required": [
                "category",
                "amount"
            ],
            "additionalProperties": false
        }
    }
}

PATCH location request body — schemas/requests/location_patch.request.schema.json

{
    "title": "V2.2.1\\Location Patch Request",
    "description": "Request body for PATCH location/EVSE/connector. Partial object per OCPI 2.2.1 PATCH semantics.",
    "anyOf": [
        {
            "type": "object",
            "properties": {
                "country_code": {
                    "type": "string",
                    "maxLength": 2,
                    "minLength": 2
                },
                "party_id": {
                    "type": "string",
                    "maxLength": 3,
                    "minLength": 3
                },
                "id": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "publish": {
                    "type": "boolean"
                },
                "publish_allowed_to": {
                    "type": "array",
                    "items": {
                        "$ref": "location.request.schema.json#/definitions/publish_token"
                    }
                },
                "name": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "address": {
                    "type": "string",
                    "maxLength": 45,
                    "minLength": 1
                },
                "city": {
                    "type": "string",
                    "maxLength": 45,
                    "minLength": 1
                },
                "postal_code": {
                    "type": "string",
                    "maxLength": 10,
                    "minLength": 1
                },
                "state": {
                    "type": "string",
                    "maxLength": 20,
                    "minLength": 1
                },
                "country": {
                    "type": "string",
                    "maxLength": 3,
                    "minLength": 3
                },
                "coordinates": {
                    "$ref": "location.request.schema.json#/definitions/geo_location"
                },
                "related_locations": {
                    "type": "array",
                    "items": {
                        "$ref": "location.request.schema.json#/definitions/additional_geo_location"
                    }
                },
                "parking_type": {
                    "type": "string",
                    "enum": [
                        "ALONG_MOTORWAY",
                        "PARKING_GARAGE",
                        "PARKING_LOT",
                        "ON_DRIVEWAY",
                        "ON_STREET",
                        "UNDERGROUND_GARAGE"
                    ]
                },
                "evses": {
                    "type": "array",
                    "items": {
                        "$ref": "location.request.schema.json#/definitions/evse"
                    }
                },
                "directions": {
                    "type": "array",
                    "items": {
                        "$ref": "location.request.schema.json#/definitions/display_text"
                    }
                },
                "operator": {
                    "$ref": "location.request.schema.json#/definitions/business_details"
                },
                "suboperator": {
                    "$ref": "location.request.schema.json#/definitions/business_details"
                },
                "owner": {
                    "$ref": "location.request.schema.json#/definitions/business_details"
                },
                "facilities": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": [
                            "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"
                        ]
                    }
                },
                "time_zone": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "opening_times": {
                    "$ref": "location.request.schema.json#/definitions/hours"
                },
                "charging_when_closed": {
                    "type": "boolean"
                },
                "images": {
                    "type": "array",
                    "items": {
                        "$ref": "location.request.schema.json#/definitions/image"
                    }
                },
                "energy_mix": {
                    "$ref": "location.request.schema.json#/definitions/energy_mix"
                },
                "last_updated": {
                    "$ref": "../objects/common.schema.json#/definitions/datetime"
                }
            },
            "required": [
                "last_updated"
            ],
            "additionalProperties": false,
            "minProperties": 1
        },
        {
            "type": "object",
            "properties": {
                "uid": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "evse_id": {
                    "type": "string",
                    "maxLength": 48,
                    "minLength": 1
                },
                "status": {
                    "$ref": "location.request.schema.json#/definitions/status"
                },
                "status_schedule": {
                    "type": "array",
                    "items": {
                        "$ref": "location.request.schema.json#/definitions/status_schedule"
                    }
                },
                "capabilities": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": [
                            "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"
                        ]
                    }
                },
                "connectors": {
                    "type": "array",
                    "items": {
                        "$ref": "location.request.schema.json#/definitions/connector"
                    }
                },
                "floor_level": {
                    "type": "string",
                    "maxLength": 4,
                    "minLength": 1
                },
                "coordinates": {
                    "$ref": "location.request.schema.json#/definitions/geo_location"
                },
                "physical_reference": {
                    "type": "string",
                    "maxLength": 16,
                    "minLength": 1
                },
                "directions": {
                    "type": "array",
                    "items": {
                        "$ref": "location.request.schema.json#/definitions/display_text"
                    }
                },
                "parking_restrictions": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": [
                            "EV_ONLY",
                            "PLUGGED",
                            "DISABLED",
                            "CUSTOMERS",
                            "MOTORCYCLES"
                        ]
                    }
                },
                "images": {
                    "type": "array",
                    "items": {
                        "$ref": "location.request.schema.json#/definitions/image"
                    }
                },
                "last_updated": {
                    "$ref": "../objects/common.schema.json#/definitions/datetime"
                }
            },
            "required": [
                "last_updated"
            ],
            "additionalProperties": false,
            "minProperties": 1
        },
        {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "standard": {
                    "type": "string",
                    "enum": [
                        "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"
                    ]
                },
                "format": {
                    "type": "string",
                    "enum": [
                        "SOCKET",
                        "CABLE"
                    ]
                },
                "power_type": {
                    "type": "string",
                    "enum": [
                        "AC_1_PHASE",
                        "AC_2_PHASE",
                        "AC_2_PHASE_SPLIT",
                        "AC_3_PHASE",
                        "DC"
                    ]
                },
                "max_voltage": {
                    "type": "integer"
                },
                "max_amperage": {
                    "type": "integer"
                },
                "max_electric_power": {
                    "type": "integer"
                },
                "tariff_ids": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "maxLength": 36
                    }
                },
                "terms_and_conditions": {
                    "$ref": "location.request.schema.json#/definitions/url"
                },
                "last_updated": {
                    "$ref": "../objects/common.schema.json#/definitions/datetime"
                }
            },
            "required": [
                "last_updated"
            ],
            "additionalProperties": false,
            "minProperties": 1
        }
    ]
}

Single Location response envelope — schemas/responses/location.response.schema.json

{
    "title": "V2.2.1\\Location Response",
    "type": "object",
    "properties": {
        "data": {
            "$ref": "#/definitions/location"
        },
        "status_code": {
            "type": "integer"
        },
        "status_message": {
            "type": [
                "string",
                "null"
            ]
        },
        "timestamp": {
            "$ref": "#/definitions/datetime"
        }
    },
    "required": [
        "status_code",
        "timestamp"
    ],
    "additionalProperties": false,
    "definitions": {
        "publish_token": {
            "type": "object",
            "properties": {
                "uid": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "AD_HOC_USER",
                        "APP_USER",
                        "OTHER",
                        "RFID"
                    ]
                },
                "visual_number": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                },
                "issuer": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                },
                "group_id": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                }
            },
            "additionalProperties": false
        },
        "geo_location": {
            "type": "object",
            "properties": {
                "latitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,2}\\.[0-9]{5,7}$"
                },
                "longitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,3}\\.[0-9]{5,7}$"
                }
            },
            "required": [
                "latitude",
                "longitude"
            ],
            "additionalProperties": false
        },
        "additional_geo_location": {
            "type": "object",
            "properties": {
                "latitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,2}\\.[0-9]{5,7}$"
                },
                "longitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,3}\\.[0-9]{5,7}$"
                },
                "name": {
                    "$ref": "#/definitions/display_text"
                }
            },
            "required": [
                "latitude",
                "longitude"
            ],
            "additionalProperties": false
        },
        "display_text": {
            "type": "object",
            "properties": {
                "language": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 2,
                    "pattern": "^[A-Za-z]{2}$"
                },
                "text": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 512
                }
            },
            "required": [
                "language",
                "text"
            ],
            "additionalProperties": false
        },
        "evse": {
            "title": "V2.2.1\\EVSE",
            "type": "object",
            "properties": {
                "uid": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "evse_id": {
                    "type": "string",
                    "maxLength": 48,
                    "minLength": 1
                },
                "status": {
                    "$ref": "#/definitions/status"
                },
                "status_schedule": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/status_schedule"
                    }
                },
                "capabilities": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": [
                            "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"
                        ]
                    }
                },
                "connectors": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "$ref": "#/definitions/connector"
                    }
                },
                "floor_level": {
                    "type": "string",
                    "maxLength": 4,
                    "minLength": 1
                },
                "coordinates": {
                    "$ref": "#/definitions/geo_location"
                },
                "physical_reference": {
                    "type": "string",
                    "maxLength": 16,
                    "minLength": 1
                },
                "directions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/display_text"
                    }
                },
                "parking_restrictions": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": [
                            "EV_ONLY",
                            "PLUGGED",
                            "DISABLED",
                            "CUSTOMERS",
                            "MOTORCYCLES"
                        ]
                    }
                },
                "images": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/image"
                    }
                },
                "last_updated": {
                    "$ref": "#/definitions/datetime"
                }
            },
            "required": [
                "uid",
                "status",
                "connectors",
                "last_updated"
            ],
            "additionalProperties": false
        },
        "status": {
            "type": "string",
            "enum": [
                "AVAILABLE",
                "BLOCKED",
                "CHARGING",
                "INOPERATIVE",
                "OUTOFORDER",
                "PLANNED",
                "REMOVED",
                "RESERVED",
                "UNKNOWN"
            ]
        },
        "status_schedule": {
            "type": "object",
            "properties": {
                "period_begin": {
                    "$ref": "#/definitions/datetime"
                },
                "period_end": {
                    "$ref": "#/definitions/datetime"
                },
                "status": {
                    "$ref": "#/definitions/status"
                }
            },
            "required": [
                "period_begin",
                "status"
            ],
            "additionalProperties": false
        },
        "datetime": {
            "type": "string",
            "pattern": "^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\\.[0-9]+)?Z?$"
        },
        "connector": {
            "title": "V2.2.1\\Connector",
            "type": "object",
            "properties": {
                "id": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "standard": {
                    "type": "string",
                    "enum": [
                        "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"
                    ]
                },
                "format": {
                    "type": "string",
                    "enum": [
                        "SOCKET",
                        "CABLE"
                    ]
                },
                "power_type": {
                    "type": "string",
                    "enum": [
                        "AC_1_PHASE",
                        "AC_2_PHASE",
                        "AC_2_PHASE_SPLIT",
                        "AC_3_PHASE",
                        "DC"
                    ]
                },
                "max_voltage": {
                    "type": "integer"
                },
                "max_amperage": {
                    "type": "integer"
                },
                "max_electric_power": {
                    "type": "integer"
                },
                "tariff_ids": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "maxLength": 36
                    }
                },
                "terms_and_conditions": {
                    "$ref": "#/definitions/url"
                },
                "last_updated": {
                    "$ref": "#/definitions/datetime"
                }
            },
            "required": [
                "id",
                "standard",
                "format",
                "power_type",
                "max_voltage",
                "max_amperage",
                "last_updated"
            ],
            "additionalProperties": false
        },
        "url": {
            "type": "string",
            "format": "uri",
            "maxLength": 255
        },
        "image": {
            "type": "object",
            "properties": {
                "url": {
                    "$ref": "#/definitions/url"
                },
                "thumbnail": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "$ref": "#/definitions/url"
                        }
                    ]
                },
                "category": {
                    "type": "string",
                    "enum": [
                        "CHARGER",
                        "ENTRANCE",
                        "LOCATION",
                        "NETWORK",
                        "OPERATOR",
                        "OTHER",
                        "OWNER"
                    ]
                },
                "type": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 4
                },
                "width": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "maximum": 99999,
                    "minimum": 1
                },
                "height": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "maximum": 99999,
                    "minimum": 1
                }
            },
            "required": [
                "url",
                "category",
                "type"
            ],
            "additionalProperties": false
        },
        "business_details": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                },
                "website": {
                    "$ref": "#/definitions/url"
                },
                "logo": {
                    "$ref": "#/definitions/image"
                }
            },
            "required": [
                "name"
            ],
            "additionalProperties": false
        },
        "hours": {
            "type": "object",
            "properties": {
                "twentyfourseven": {
                    "type": "boolean"
                },
                "regular_hours": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/regular_hours"
                    }
                },
                "exceptional_openings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/exceptional_period"
                    }
                },
                "exceptional_closings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/exceptional_period"
                    }
                }
            },
            "required": [
                "twentyfourseven"
            ],
            "additionalProperties": false
        },
        "regular_hours": {
            "type": "object",
            "properties": {
                "weekday": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 7
                },
                "period_begin": {
                    "type": "string",
                    "pattern": "^([0-1][0-9]|2[0-3]):[0-5][0-9]$",
                    "maxLength": 5
                },
                "period_end": {
                    "type": "string",
                    "pattern": "^([0-1][0-9]|2[0-3]):[0-5][0-9]$",
                    "maxLength": 5
                }
            },
            "required": [
                "weekday",
                "period_begin",
                "period_end"
            ],
            "additionalProperties": false
        },
        "exceptional_period": {
            "type": "object",
            "properties": {
                "period_begin": {
                    "$ref": "#/definitions/datetime"
                },
                "period_end": {
                    "$ref": "#/definitions/datetime"
                }
            },
            "required": [
                "period_begin",
                "period_end"
            ],
            "additionalProperties": false
        },
        "energy_mix": {
            "type": "object",
            "properties": {
                "is_green_energy": {
                    "type": "boolean"
                },
                "energy_sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/energy_source"
                    }
                },
                "environ_impact": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/environmental_impact"
                    }
                },
                "supplier_name": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                },
                "energy_product_name": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                }
            },
            "required": [
                "is_green_energy"
            ],
            "additionalProperties": false
        },
        "energy_source": {
            "type": "object",
            "properties": {
                "source": {
                    "type": "string",
                    "enum": [
                        "NUCLEAR",
                        "GENERAL_FOSSIL",
                        "COAL",
                        "GAS",
                        "GENERAL_GREEN",
                        "SOLAR",
                        "WIND",
                        "WATER"
                    ]
                },
                "percentage": {
                    "type": "number"
                }
            },
            "required": [
                "source",
                "percentage"
            ],
            "additionalProperties": false
        },
        "environmental_impact": {
            "type": "object",
            "properties": {
                "category": {
                    "type": "string",
                    "enum": [
                        "NUCLEAR_WASTE",
                        "CARBON_DIOXIDE"
                    ]
                },
                "amount": {
                    "type": "number"
                }
            },
            "required": [
                "category",
                "amount"
            ],
            "additionalProperties": false
        },
        "location": {
            "title": "V2.2.1\\Location",
            "type": "object",
            "properties": {
                "country_code": {
                    "type": "string",
                    "maxLength": 2,
                    "minLength": 2
                },
                "party_id": {
                    "type": "string",
                    "maxLength": 3,
                    "minLength": 3
                },
                "id": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "publish": {
                    "type": "boolean"
                },
                "publish_allowed_to": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/publish_token"
                    }
                },
                "name": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "address": {
                    "type": "string",
                    "maxLength": 45,
                    "minLength": 1
                },
                "city": {
                    "type": "string",
                    "maxLength": 45,
                    "minLength": 1
                },
                "postal_code": {
                    "type": "string",
                    "maxLength": 10,
                    "minLength": 1
                },
                "state": {
                    "type": "string",
                    "maxLength": 20,
                    "minLength": 1
                },
                "country": {
                    "type": "string",
                    "maxLength": 3,
                    "minLength": 3
                },
                "coordinates": {
                    "$ref": "#/definitions/geo_location"
                },
                "related_locations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/additional_geo_location"
                    }
                },
                "parking_type": {
                    "type": "string",
                    "enum": [
                        "ALONG_MOTORWAY",
                        "PARKING_GARAGE",
                        "PARKING_LOT",
                        "ON_DRIVEWAY",
                        "ON_STREET",
                        "UNDERGROUND_GARAGE"
                    ]
                },
                "evses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/evse"
                    }
                },
                "directions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/display_text"
                    }
                },
                "operator": {
                    "$ref": "#/definitions/business_details"
                },
                "suboperator": {
                    "$ref": "#/definitions/business_details"
                },
                "owner": {
                    "$ref": "#/definitions/business_details"
                },
                "facilities": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": [
                            "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"
                        ]
                    }
                },
                "time_zone": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "opening_times": {
                    "$ref": "#/definitions/hours"
                },
                "charging_when_closed": {
                    "type": "boolean"
                },
                "images": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/image"
                    }
                },
                "energy_mix": {
                    "$ref": "#/definitions/energy_mix"
                },
                "last_updated": {
                    "$ref": "#/definitions/datetime"
                }
            },
            "required": [
                "country_code",
                "party_id",
                "id",
                "publish",
                "address",
                "city",
                "country",
                "coordinates",
                "time_zone",
                "last_updated"
            ],
            "additionalProperties": false
        }
    }
}

Locations list response envelope — schemas/responses/locations.response.schema.json

{
    "title": "V2.2.1\\Locations Response",
    "type": "object",
    "properties": {
        "data": {
            "type": [
                "array",
                "null"
            ],
            "items": {
                "$ref": "#/definitions/location"
            }
        },
        "status_code": {
            "type": "integer"
        },
        "status_message": {
            "type": [
                "string",
                "null"
            ]
        },
        "timestamp": {
            "$ref": "#/definitions/datetime"
        }
    },
    "required": [
        "status_code",
        "timestamp"
    ],
    "additionalProperties": false,
    "definitions": {
        "publish_token": {
            "type": "object",
            "properties": {
                "uid": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "AD_HOC_USER",
                        "APP_USER",
                        "OTHER",
                        "RFID"
                    ]
                },
                "visual_number": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                },
                "issuer": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                },
                "group_id": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                }
            },
            "additionalProperties": false
        },
        "geo_location": {
            "type": "object",
            "properties": {
                "latitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,2}\\.[0-9]{5,7}$"
                },
                "longitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,3}\\.[0-9]{5,7}$"
                }
            },
            "required": [
                "latitude",
                "longitude"
            ],
            "additionalProperties": false
        },
        "additional_geo_location": {
            "type": "object",
            "properties": {
                "latitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,2}\\.[0-9]{5,7}$"
                },
                "longitude": {
                    "type": "string",
                    "pattern": "^-?[0-9]{1,3}\\.[0-9]{5,7}$"
                },
                "name": {
                    "$ref": "#/definitions/display_text"
                }
            },
            "required": [
                "latitude",
                "longitude"
            ],
            "additionalProperties": false
        },
        "display_text": {
            "type": "object",
            "properties": {
                "language": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 2,
                    "pattern": "^[A-Za-z]{2}$"
                },
                "text": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 512
                }
            },
            "required": [
                "language",
                "text"
            ],
            "additionalProperties": false
        },
        "evse": {
            "title": "V2.2.1\\EVSE",
            "type": "object",
            "properties": {
                "uid": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "evse_id": {
                    "type": "string",
                    "maxLength": 48,
                    "minLength": 1
                },
                "status": {
                    "$ref": "#/definitions/status"
                },
                "status_schedule": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/status_schedule"
                    }
                },
                "capabilities": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": [
                            "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"
                        ]
                    }
                },
                "connectors": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "$ref": "#/definitions/connector"
                    }
                },
                "floor_level": {
                    "type": "string",
                    "maxLength": 4,
                    "minLength": 1
                },
                "coordinates": {
                    "$ref": "#/definitions/geo_location"
                },
                "physical_reference": {
                    "type": "string",
                    "maxLength": 16,
                    "minLength": 1
                },
                "directions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/display_text"
                    }
                },
                "parking_restrictions": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": [
                            "EV_ONLY",
                            "PLUGGED",
                            "DISABLED",
                            "CUSTOMERS",
                            "MOTORCYCLES"
                        ]
                    }
                },
                "images": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/image"
                    }
                },
                "last_updated": {
                    "$ref": "#/definitions/datetime"
                }
            },
            "required": [
                "uid",
                "status",
                "connectors",
                "last_updated"
            ],
            "additionalProperties": false
        },
        "status": {
            "type": "string",
            "enum": [
                "AVAILABLE",
                "BLOCKED",
                "CHARGING",
                "INOPERATIVE",
                "OUTOFORDER",
                "PLANNED",
                "REMOVED",
                "RESERVED",
                "UNKNOWN"
            ]
        },
        "status_schedule": {
            "type": "object",
            "properties": {
                "period_begin": {
                    "$ref": "#/definitions/datetime"
                },
                "period_end": {
                    "$ref": "#/definitions/datetime"
                },
                "status": {
                    "$ref": "#/definitions/status"
                }
            },
            "required": [
                "period_begin",
                "status"
            ],
            "additionalProperties": false
        },
        "datetime": {
            "type": "string",
            "pattern": "^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\\.[0-9]+)?Z?$"
        },
        "connector": {
            "title": "V2.2.1\\Connector",
            "type": "object",
            "properties": {
                "id": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "standard": {
                    "type": "string",
                    "enum": [
                        "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"
                    ]
                },
                "format": {
                    "type": "string",
                    "enum": [
                        "SOCKET",
                        "CABLE"
                    ]
                },
                "power_type": {
                    "type": "string",
                    "enum": [
                        "AC_1_PHASE",
                        "AC_2_PHASE",
                        "AC_2_PHASE_SPLIT",
                        "AC_3_PHASE",
                        "DC"
                    ]
                },
                "max_voltage": {
                    "type": "integer"
                },
                "max_amperage": {
                    "type": "integer"
                },
                "max_electric_power": {
                    "type": "integer"
                },
                "tariff_ids": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "maxLength": 36
                    }
                },
                "terms_and_conditions": {
                    "$ref": "#/definitions/url"
                },
                "last_updated": {
                    "$ref": "#/definitions/datetime"
                }
            },
            "required": [
                "id",
                "standard",
                "format",
                "power_type",
                "max_voltage",
                "max_amperage",
                "last_updated"
            ],
            "additionalProperties": false
        },
        "url": {
            "type": "string",
            "format": "uri",
            "maxLength": 255
        },
        "image": {
            "type": "object",
            "properties": {
                "url": {
                    "$ref": "#/definitions/url"
                },
                "thumbnail": {
                    "oneOf": [
                        {
                            "type": "null"
                        },
                        {
                            "$ref": "#/definitions/url"
                        }
                    ]
                },
                "category": {
                    "type": "string",
                    "enum": [
                        "CHARGER",
                        "ENTRANCE",
                        "LOCATION",
                        "NETWORK",
                        "OPERATOR",
                        "OTHER",
                        "OWNER"
                    ]
                },
                "type": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 4
                },
                "width": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "maximum": 99999,
                    "minimum": 1
                },
                "height": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "maximum": 99999,
                    "minimum": 1
                }
            },
            "required": [
                "url",
                "category",
                "type"
            ],
            "additionalProperties": false
        },
        "business_details": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                },
                "website": {
                    "$ref": "#/definitions/url"
                },
                "logo": {
                    "$ref": "#/definitions/image"
                }
            },
            "required": [
                "name"
            ],
            "additionalProperties": false
        },
        "hours": {
            "type": "object",
            "properties": {
                "twentyfourseven": {
                    "type": "boolean"
                },
                "regular_hours": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/regular_hours"
                    }
                },
                "exceptional_openings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/exceptional_period"
                    }
                },
                "exceptional_closings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/exceptional_period"
                    }
                }
            },
            "required": [
                "twentyfourseven"
            ],
            "additionalProperties": false
        },
        "regular_hours": {
            "type": "object",
            "properties": {
                "weekday": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 7
                },
                "period_begin": {
                    "type": "string",
                    "pattern": "^([0-1][0-9]|2[0-3]):[0-5][0-9]$",
                    "maxLength": 5
                },
                "period_end": {
                    "type": "string",
                    "pattern": "^([0-1][0-9]|2[0-3]):[0-5][0-9]$",
                    "maxLength": 5
                }
            },
            "required": [
                "weekday",
                "period_begin",
                "period_end"
            ],
            "additionalProperties": false
        },
        "exceptional_period": {
            "type": "object",
            "properties": {
                "period_begin": {
                    "$ref": "#/definitions/datetime"
                },
                "period_end": {
                    "$ref": "#/definitions/datetime"
                }
            },
            "required": [
                "period_begin",
                "period_end"
            ],
            "additionalProperties": false
        },
        "energy_mix": {
            "type": "object",
            "properties": {
                "is_green_energy": {
                    "type": "boolean"
                },
                "energy_sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/energy_source"
                    }
                },
                "environ_impact": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/environmental_impact"
                    }
                },
                "supplier_name": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                },
                "energy_product_name": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                }
            },
            "required": [
                "is_green_energy"
            ],
            "additionalProperties": false
        },
        "energy_source": {
            "type": "object",
            "properties": {
                "source": {
                    "type": "string",
                    "enum": [
                        "NUCLEAR",
                        "GENERAL_FOSSIL",
                        "COAL",
                        "GAS",
                        "GENERAL_GREEN",
                        "SOLAR",
                        "WIND",
                        "WATER"
                    ]
                },
                "percentage": {
                    "type": "number"
                }
            },
            "required": [
                "source",
                "percentage"
            ],
            "additionalProperties": false
        },
        "environmental_impact": {
            "type": "object",
            "properties": {
                "category": {
                    "type": "string",
                    "enum": [
                        "NUCLEAR_WASTE",
                        "CARBON_DIOXIDE"
                    ]
                },
                "amount": {
                    "type": "number"
                }
            },
            "required": [
                "category",
                "amount"
            ],
            "additionalProperties": false
        },
        "location": {
            "title": "V2.2.1\\Location",
            "type": "object",
            "properties": {
                "country_code": {
                    "type": "string",
                    "maxLength": 2,
                    "minLength": 2
                },
                "party_id": {
                    "type": "string",
                    "maxLength": 3,
                    "minLength": 3
                },
                "id": {
                    "type": "string",
                    "maxLength": 36,
                    "minLength": 1
                },
                "publish": {
                    "type": "boolean"
                },
                "publish_allowed_to": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/publish_token"
                    }
                },
                "name": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "address": {
                    "type": "string",
                    "maxLength": 45,
                    "minLength": 1
                },
                "city": {
                    "type": "string",
                    "maxLength": 45,
                    "minLength": 1
                },
                "postal_code": {
                    "type": "string",
                    "maxLength": 10,
                    "minLength": 1
                },
                "state": {
                    "type": "string",
                    "maxLength": 20,
                    "minLength": 1
                },
                "country": {
                    "type": "string",
                    "maxLength": 3,
                    "minLength": 3
                },
                "coordinates": {
                    "$ref": "#/definitions/geo_location"
                },
                "related_locations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/additional_geo_location"
                    }
                },
                "parking_type": {
                    "type": "string",
                    "enum": [
                        "ALONG_MOTORWAY",
                        "PARKING_GARAGE",
                        "PARKING_LOT",
                        "ON_DRIVEWAY",
                        "ON_STREET",
                        "UNDERGROUND_GARAGE"
                    ]
                },
                "evses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/evse"
                    }
                },
                "directions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/display_text"
                    }
                },
                "operator": {
                    "$ref": "#/definitions/business_details"
                },
                "suboperator": {
                    "$ref": "#/definitions/business_details"
                },
                "owner": {
                    "$ref": "#/definitions/business_details"
                },
                "facilities": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": [
                            "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"
                        ]
                    }
                },
                "time_zone": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "opening_times": {
                    "$ref": "#/definitions/hours"
                },
                "charging_when_closed": {
                    "type": "boolean"
                },
                "images": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/image"
                    }
                },
                "energy_mix": {
                    "$ref": "#/definitions/energy_mix"
                },
                "last_updated": {
                    "$ref": "#/definitions/datetime"
                }
            },
            "required": [
                "country_code",
                "party_id",
                "id",
                "publish",
                "address",
                "city",
                "country",
                "coordinates",
                "time_zone",
                "last_updated"
            ],
            "additionalProperties": false
        }
    }
}

Examples

Location — examples/location_example.json

{
  "country_code": "BE",
  "party_id": "BEC",
  "id": "LOC1",
  "publish": true,
  "name": "Gent Zuid",
  "address": "F.Rooseveltlaan 3A",
  "city": "Gent",
  "postal_code": "9000",
  "country": "BEL",
  "coordinates": {
    "latitude": "51.047599",
    "longitude": "3.729944"
  },
  "parking_type": "ON_STREET",
  "evses": [{
    "uid": "3256",
    "evse_id": "BE*BEC*E041503001",
    "status": "AVAILABLE",
    "capabilities": [
      "RESERVABLE"
    ],
    "connectors": [{
      "id": "1",
      "standard": "IEC_62196_T2",
      "format": "CABLE",
      "power_type": "AC_3_PHASE",
      "max_voltage": 220,
      "max_amperage": 16,
      "tariff_ids": ["11"],
      "last_updated": "2015-03-16T10:10:02Z"
    }, {
      "id": "2",
      "standard": "IEC_62196_T2",
      "format": "SOCKET",
      "power_type": "AC_3_PHASE",
      "max_voltage": 220,
      "max_amperage": 16,
      "tariff_ids": ["13"],
      "last_updated": "2015-03-18T08:12:01Z"
    }],
    "physical_reference": "1",
    "floor_level": "-1",
    "last_updated": "2015-06-28T08:12:01Z"
  }, {
    "uid": "3257",
    "evse_id": "BE*BEC*E041503002",
    "status": "RESERVED",
    "capabilities": [
      "RESERVABLE"
    ],
    "connectors": [{
      "id": "1",
      "standard": "IEC_62196_T2",
      "format": "SOCKET",
      "power_type": "AC_3_PHASE",
      "max_voltage": 220,
      "max_amperage": 16,
      "tariff_ids": ["12"],
      "last_updated": "2015-06-29T20:39:09Z"
    }],
    "physical_reference": "2",
    "floor_level": "-2",
    "last_updated": "2015-06-29T20:39:09Z"
  }],
  "operator": {
    "name": "BeCharged"
  },
  "time_zone": "Europe/Brussels",
  "last_updated": "2015-06-29T20:39:09Z"
}

Location — destination charger (UC2) — examples/location_example_uc2_destination_charger.json

{
  "country_code": "NL",
  "party_id": "ALF",
  "id": "3e7b39c2-10d0-4138-a8b3-8509a25f9920",
  "publish": true,
  "name": "ihomer",
  "address": "Tamboerijn 7",
  "city": "Etten-Leur",
  "postal_code": "4876 BS",
  "country": "NLD",
  "coordinates": {
    "latitude": "51.562787",
    "longitude": "4.638975"
  },
  "parking_type": "PARKING_LOT",
  "evses": [{
    "uid": "fd855359-bc81-47bb-bb89-849ae3dac89e",
    "evse_id": "NL*ALF*E000000001",
    "status": "AVAILABLE",
    "connectors": [{
      "id": "1",
      "standard": "IEC_62196_T2",
      "format": "SOCKET",
      "power_type": "AC_3_PHASE",
      "max_voltage": 220,
      "max_amperage": 16,
      "last_updated": "2019-07-01T12:12:11Z"
    }],
    "parking_restrictions": [ "CUSTOMERS" ],
    "last_updated": "2019-07-01T12:12:11Z"
  }],
  "time_zone": "Europe/Amsterdam",
  "last_updated": "2019-07-01T12:12:11Z"
}

Location — destination charger not published (UC3) — examples/location_example_uc3_destination_charger_not_published.json

{
  "country_code": "NL",
  "party_id": "ALF",
  "id": "3e7b39c2-10d0-4138-a8b3-8509a25f9920",
  "publish": false,
  "name": "ihomer",
  "address": "Tamboerijn 7",
  "city": "Etten-Leur",
  "postal_code": "4876 BS",
  "country": "NLD",
  "coordinates": {
    "latitude": "51.562787",
    "longitude": "4.638975"
  },
  "evses": [{
    "uid": "fd855359-bc81-47bb-bb89-849ae3dac89e",
    "evse_id": "NL*ALF*E000000001",
    "status": "AVAILABLE",
    "connectors": [{
      "id": "1",
      "standard": "IEC_62196_T2",
      "format": "SOCKET",
      "power_type": "AC_3_PHASE",
      "max_voltage": 220,
      "max_amperage": 16,
      "last_updated": "2019-07-01T12:12:11Z"
    }],
    "parking_restrictions": [ "CUSTOMERS" ],
    "last_updated": "2019-07-01T12:12:11Z"
  }],
  "time_zone": "Europe/Amsterdam",
  "last_updated": "2019-07-01T12:12:11Z"
}

Location — limited visibility (UC4) — examples/location_example_uc4_limited_visibility.json

{
  "country_code": "NL",
  "party_id": "ALL",
  "id": "f76c2e0c-a6ef-4f67-bf23-6a187e5ca0e0",
  "publish": false,
  "publish_allowed_to": [{
    "visual_number": "12345-67",
    "issuer": "NewMotion"
  }, {
    "visual_number": "0055375624",
    "issuer": "ANWB"
  }, {
    "uid": "12345678905880",
    "type": "RFID"
  }],
  "name": "Water State",
  "address": "Taco van der Veenplein 12",
  "city": "Leeuwarden",
  "postal_code": "8923 EM",
  "country": "NLD",
  "coordinates": {
    "latitude": "53.213763",
    "longitude": "5.804638"
  },
  "parking_type": "UNDERGROUND_GARAGE",
  "evses": [{
    "uid": "8c1b3487-61ac-40a7-a367-21eee99dbd90",
    "evse_id": "NL*ALL*EGO0000013",
    "status": "AVAILABLE",
    "connectors": [{
      "id": "1",
      "standard": "IEC_62196_T2",
      "format": "SOCKET",
      "power_type": "AC_3_PHASE",
      "max_voltage": 230,
      "max_amperage": 16,
      "last_updated": "2019-09-27T00:19:45Z"
    }],
    "last_updated": "2019-09-27T00:19:45Z"
  }],
  "time_zone": "Europe/Amsterdam",
  "last_updated": "2019-09-27T00:19:45Z"
}

Location — home charge point (UC5) — examples/location_example_uc5_home_charge_point.json

{
  "country_code": "DE",
  "party_id": "ALL",
  "id": "a5295927-09b9-4a71-b4b9-a5fffdfa0b77",
  "publish": false,
  "publish_allowed_to": [{
    "visual_number": "0123456-99",
    "issuer": "MoveMove"
  }],
  "address": "Krautwigstraße 283A",
  "city": "Köln",
  "postal_code": "50931",
  "country": "DEU",
  "coordinates": {
    "latitude": "50.931826",
    "longitude": "6.964043"
  },
  "parking_type": "ON_DRIVEWAY",
  "evses": [{
    "uid": "4534ad5f-45be-428b-bfd0-fa489dda932d",
    "evse_id": "DE*ALL*EGO0000001",
    "status": "AVAILABLE",
    "connectors": [{
      "id": "1",
      "standard": "IEC_62196_T2",
      "format": "SOCKET",
      "power_type": "AC_1_PHASE",
      "max_voltage": 230,
      "max_amperage": 8,
      "last_updated": "2019-04-05T17:17:56Z"
    }],
    "last_updated": "2019-04-05T17:17:56Z"
  }],
  "time_zone": "Europe/Berlin",
  "last_updated": "2019-04-05T17:17:56Z"
}

Location — parking garage opening hours — examples/location_example_parking_garage_opening_hours.json

{
  "country_code": "SE",
  "party_id": "EVC",
  "id": "cbb0df21-d17d-40ba-a4aa-dc588c8f98cb",
  "publish": true,
  "name": "P-Huset Leonard",
  "address": "Claesgatan 6",
  "city": "Malmö",
  "postal_code": "214 26",
  "country": "SWE",
  "coordinates": {
    "latitude": "55.590325",
    "longitude": "13.008307"
  },
  "parking_type": "PARKING_GARAGE",
  "evses": [{
    "uid": "eccb8dd9-4189-433e-b100-cc0945dd17dc",
    "evse_id": "SE*EVC*E000000123",
    "status": "AVAILABLE",
    "connectors": [{
      "id": "1",
      "standard": "IEC_62196_T2",
      "format": "SOCKET",
      "power_type": "AC_3_PHASE",
      "max_voltage": 230,
      "max_amperage": 32,
      "last_updated": "2017-03-07T02:21:22Z"
    }],
    "last_updated": "2017-03-07T02:21:22Z"
  }],
  "time_zone": "Europe/Stockholm",
  "opening_times": {
    "twentyfourseven": false,
    "regular_hours": [{
      "weekday": 1,
      "period_begin": "07:00",
      "period_end": "18:00"
    }, {
      "weekday": 2,
      "period_begin": "07:00",
      "period_end": "18:00"
    },{
      "weekday": 3,
      "period_begin": "07:00",
      "period_end": "18:00"
    },{
      "weekday": 4,
      "period_begin": "07:00",
      "period_end": "18:00"
    },{
      "weekday": 5,
      "period_begin": "07:00",
      "period_end": "18:00"
    },{
      "weekday": 6,
      "period_begin": "07:00",
      "period_end": "18:00"
    },{
      "weekday": 7,
      "period_begin": "07:00",
      "period_end": "18:00"
    }]
  },
  "charging_when_closed": true,
  "last_updated": "2017-03-07T02:21:22Z"
}

Location — 24/7 with exceptional closing — examples/location_hours_247_open_exception_closing.json

{
  "twentyfourseven": true,
  "exceptional_closings": [{
    "period_begin": "2018-12-25T03:00:00Z",
    "period_end": "2018-12-25T05:00:00Z"
  }]
}

Location — opening hours with exceptional closing — examples/location_hours_opening_hours_with_exceptional_closing.json

{
  "twentyfourseven": false,
  "regular_hours": [{
    "weekday": 1,
    "period_begin": "01:00",
    "period_end": "06:00"
  }, {
    "weekday": 2,
    "period_begin": "01:00",
    "period_end": "06:00"
  }],
  "exceptional_closings": [{
    "period_begin": "2018-12-25T03:00:00Z",
    "period_end": "2018-12-25T05:00:00Z"
  }]
}

Location — opening hours with exceptional opening — examples/location_hours_opening_hours_with_exceptional_opening.json

{
  "twentyfourseven": false,
  "regular_hours": [{
    "weekday": 1,
    "period_begin": "00:00",
    "period_end": "04:00"
  }, {
    "weekday": 2,
    "period_begin": "00:00",
    "period_end": "04:00"
  }],
  "exceptional_openings": [{
    "period_begin": "2018-12-25T05:00:00Z",
    "period_end": "2018-12-25T06:00:00Z"
  }]
}

RegularHours — examples/location_regularhours_example.json

{
  "opening_times": {
    "regular_hours": [
      {
        "weekday": 1,
        "period_begin": "08:00",
        "period_end": "20:00"
      },
      {
        "weekday": 2,
        "period_begin": "08:00",
        "period_end": "20:00"
      },
      {
        "weekday": 3,
        "period_begin": "08:00",
        "period_end": "20:00"
      },
      {
        "weekday": 4,
        "period_begin": "08:00",
        "period_end": "20:00"
      },
      {
        "weekday": 5,
        "period_begin": "08:00",
        "period_end": "20:00"
      }
    ],
    "twentyfourseven": false,
    "exceptional_openings": [
      {
        "period_begin": "2014-06-21T09:00:00Z",
        "period_end": "2014-06-21T12:00:00Z"
      }
    ],
    "exceptional_closings": [
      {
        "period_begin": "2014-06-24T00:00:00Z",
        "period_end": "2014-06-25T00:00:00Z"
      }
    ]
  }
}

EnergyMix — simple — examples/location_energymix_example_simple.json

{
  "energy_mix": {
    "is_green_energy": true
  }
}

EnergyMix — energy provider — examples/location_energymix_example_energy_provider.json

{
  "energy_mix": {
    "is_green_energy": true,
    "supplier_name": "Greenpeace Energy eG",
    "energy_product_name": "eco-power"
  }
}

EnergyMix — complete — examples/location_energymix_example_complete.json

{
  "energy_mix": {
    "is_green_energy": false,
    "energy_sources": [
    { "source": "GENERAL_GREEN",  "percentage": 35.9 },
    { "source": "GAS",            "percentage": 6.3  },
    { "source": "COAL",           "percentage": 33.2 },
    { "source": "GENERAL_FOSSIL", "percentage": 2.9  },
    { "source": "NUCLEAR",        "percentage": 21.7 }
    ],
    "environ_impact": [
    { "category": "NUCLEAR_WASTE",  "amount": 0.0006   },
    { "category": "CARBON_DIOXIDE", "amount": 372      }
    ],
    "supplier_name":       "E.ON Energy Deutschland",
    "energy_product_name": "E.ON DirektStrom eco"
  }
}

PUT location — add EVSE — examples/location_put_example_add_evse.json

{
  "uid": "3256",
  "evse_id": "BE*BEC*E041503003",
  "status": "AVAILABLE",
  "capabilities": ["RESERVABLE"],
  "connectors": [
    {
      "id": "1",
      "standard": "IEC_62196_T2",
      "format": "SOCKET",
      "tariff_ids": ["14"]
    }
  ],
  "floor": -1,
  "physical_reference": 3,
  "last_updated": "2019-06-24T12:39:09Z"
}

PATCH location — examples/location_patch_example_location.json

{
  "name": "Interparking Gent Zuid",
  "last_updated": "2019-06-24T12:39:09Z"
}

PATCH location — status — examples/location_patch_example_status.json

{
  "status": "CHARGING",
  "last_updated": "2019-06-24T12:39:09Z"
}

PATCH location — tariff — examples/location_patch_example_tariff.json

{
  "tariff_ids": ["15"],
  "last_updated": "2019-06-24T12:39:09Z"
}

PATCH location — remove EVSE — examples/location_patch_example_remove_evse.json

{
  "status": "REMOVED",
  "last_updated": "2019-06-24T12:39:09Z"
}

JSON Schemas

JSON Schemas for this module's objects, requests, and responses.

Connector object schema
Evse object schema
Location object schema
Location request schema
Location patch request schema
Location response schema
Locations response schema