ev.energy EVS Es API

Endpoints for interacting with EVSEs.

Operations 25

GET /evse_compatibility/check Check EVSE model compatibility in a country #
GET /evses List EVSEs #
GET /evses/{evse_id} Retrieve an EVSE #
PATCH /evses/{evse_id} Update an EVSE #
DELETE /evses/{evse_id} Decommission an EVSE #
GET /evse_models List EVSE models #
GET /evse_models/{evse_model_id} Retrieve an EVSE model #
GET /evse_makes List EVSE makes #
GET /evse_makes/{evse_make_id} Retrieve an EVSE make #
GET /evses/{evse_id}/status_logs List status logs for an EVSE #
GET /evses/{evse_id}/status_logs/{sampled_at} Retrieve a status log for an EVSE #
GET /evses/{evse_id}/command_logs List command logs for an EVSE #
GET /evses/{evse_id}/command_logs/{logged_at} Retrieve a command log for an EVSE #
GET /evses/{evse_id}/error_logs List API error logs for an EVSE #
GET /evses/{evse_id}/error_logs/{sampled_at} Retrieve a specific API error log for an EVSE #
GET /evses/{evse_id}/ocpp_logs List OCPP logs for an EVSE #
GET /evses/{evse_id}/ocpp_logs/{sampled_at} Retrieve an OCPP log for an EVSE #
GET /evses/{evse_id}/vpp_modes Get VPP modes for an EVSE #
GET /evses/{evse_id}/connectivity Get connectivity information for an EVSE #
POST /evses/{evse_id}/reconnect Create EVSE reconnection URL #
GET /evse_firmware_versions List EVSE firmware versions #
GET /evse_firmware_versions/{evse_firmware_version_id} Retrieve an EVSE firmware version #
GET /evse_onboarding Initiate EVSE onboarding #
POST /evse_onboarding/import Import an EVSE by serial number #
POST /evse_waitlist Add user to the EVSE waitlist #

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/ev-energy-evses-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

ev-energy-evses-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ev.energy v2 EVS Es API
  version: '2.0'
  contact:
    email: developers@ev.energy
    url: developers.ev.energy
    name: ev.energy developers
  description: The official API for ev.energy, version 2.
  license:
    name: Proprietary
    url: https://ev.energy
  termsOfService: ''
servers:
- url: https://api.ev.energy/v2
  description: Live API for both production and sandbox requests.
  x-internal: false
- description: Staging server for internal testing only.
  url: https://api-staging.ev.energy/v2
  x-internal: true
security:
- oauth2: []
tags:
- name: EVSEs
  description: Endpoints for interacting with EVSEs.
paths:
  /evse_compatibility/check:
    get:
      summary: Check EVSE model compatibility in a country
      description: "Returns whether the given `EVSEModel` is supported in the supplied\ncountry, and whether the support is `beta` (early-access) or live.\nUsed by the onboarding flow to tell the user upfront whether their\nhardware will work before any account-linking step.\n\nPublic endpoint — callable pre-account, no authentication required.\n\nCountry resolution follows this order: explicit `country` query\nparameter, then the `Accept-Language` header, then `US`.\n\nWhen `program_id` is supplied, program membership is applied as an\nadditional filter on top of the global compatibility check: the\nmodel must be in the program's `supported_evse_models` list AND\npass the global region + `EvseCompatibility` check. Region is\nderived from the program's country, so the `country` query\nparameter and `Accept-Language` header are ignored in that case.\n\nError responses follow RFC 9457 Problem Details. Problem types\nemitted by this endpoint:\n\n- `validation-failed-evse-compatibility-check` — missing or\n  invalid `evse_model_id` / `country` query parameter (`400`).\n- `evse-model-not-found` — `evse_model_id` does not resolve to\n  an `EVSEModel` (`404`).\n- `program-not-found` — `program_id` does not resolve to a\n  program (`404`)."
      tags:
      - EVSEs
      operationId: get-evse_compatibility-check
      parameters:
      - $ref: '#/components/parameters/version-2'
      - name: evse_model_id
        in: query
        required: true
        description: '`EVSEModel.uid` to check compatibility for.'
        schema:
          type: string
          pattern: emod[A-Z\d]{26}
      - name: country
        in: query
        required: false
        description: ISO-3166 alpha-2 country code. See description for fallback chain.
        schema:
          type: string
          pattern: ^[A-Za-z]{2}$
          minLength: 2
          maxLength: 2
      - $ref: '#/components/parameters/Accept-Language'
      - name: client_id
        in: query
        required: false
        description: 'OAuth `Application.client_id`. Mirrors the pre-account

          onboarding endpoints: when supplied and the application has

          sandbox mode enabled, the endpoint returns a canned response

          without touching the database.'
        schema:
          type: string
      - name: program_id
        in: query
        required: false
        description: 'Program uid. When supplied, the model must be in the

          program''s `supported_evse_models` list AND pass the global

          region + `EvseCompatibility` check. Region is derived from

          the program''s country; `country` and `Accept-Language` are

          ignored in that case. Omit for the core app''s pre-account

          flow where the program is not yet known.'
        schema:
          type: string
          pattern: prog[A-Z\d]{26}
      responses:
        '200':
          description: Compatibility verdict for the supplied model and country.
          headers:
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EVSECompatibilityCheckResult'
        '400':
          $ref: '#/components/responses/Problem400BadRequestRetrieve'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '405':
          $ref: '#/components/responses/Problem405MethodNotAllowed'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
      security: []
  /evses:
    get:
      summary: List EVSEs
      tags:
      - EVSEs
      responses:
        '200':
          description: Returns a list of EVSEs.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EVSE'
          headers:
            Link:
              $ref: '#/components/headers/link'
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
        '400':
          $ref: '#/components/responses/Problem400BadRequestList'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-evses
      parameters:
      - $ref: '#/components/parameters/previous'
      - $ref: '#/components/parameters/next'
      - $ref: '#/components/parameters/page_size'
      - $ref: '#/components/parameters/expand-on-evse'
      - $ref: '#/components/parameters/cpid'
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/user'
      description: List all the EVSEs that the authorization token has access to.
      security:
      - oauth2:
        - evse:read
  /evses/{evse_id}:
    parameters:
    - $ref: '#/components/parameters/evse_id'
    get:
      summary: Retrieve an EVSE
      tags:
      - EVSEs
      responses:
        '200':
          description: Returns a single EVSE.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EVSE'
              examples:
                Example 1:
                  value:
                    id: evse01HSH04KDEWF6Z4DB2J77J74K5
                    url: https://api.ev.energy/v2/evses/evse01HSH04KDEWF6Z4DB2J77J74K5
                    model:
                      id: emod01HS9A004X5TB5JCMHENB5Z446
                      name: EVWC2S22
                      make:
                        id: emak01HS8FRXKJD5JZZ7ZN6W8H21P8
                        name: BG SyncEV
                    user: https://api.ev.energy/v2/users/user01HN2NJ9NMRZBXT1H6FT9N7735
          headers:
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
        '400':
          $ref: '#/components/responses/Problem400BadRequestRetrieve'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-evses-evse_id
      parameters:
      - $ref: '#/components/parameters/expand-on-evse'
      - $ref: '#/components/parameters/version-2'
      description: Retrieve a single, specific EVSE's details.
      security:
      - oauth2:
        - evse:read
    patch:
      summary: Update an EVSE
      tags:
      - EVSEs
      responses:
        '200':
          description: EVSE updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EVSE'
          headers:
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
        '400':
          $ref: '#/components/responses/Problem400UpdateEVSEValidationFailed'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: patch-evses-evse_id
      parameters:
      - $ref: '#/components/parameters/expand-on-evse'
      - $ref: '#/components/parameters/version-2'
      description: 'Update an EVSE. Only the EVSE''s `location` may be changed via this endpoint; all other fields are read-only.


        A `400` is returned when the request body fails validation (for example a non-numeric, non-finite or out-of-range coordinate), with the offending fields listed under `field_errors`.'
      security:
      - oauth2:
        - evse:write
      requestBody:
        description: The EVSE fields to update.
        content:
          application/json:
            schema:
              type: object
              properties:
                location:
                  type:
                  - object
                  - 'null'
                  properties:
                    latitude:
                      type: number
                      format: double
                      example: 51.5074
                    longitude:
                      type: number
                      format: double
                      example: -0.1278
                  required:
                  - latitude
                  - longitude
                  description: The geographic location of the EVSE as a latitude/longitude point. Send `null` to clear it.
    delete:
      summary: Decommission an EVSE
      tags:
      - EVSEs
      responses:
        '204':
          description: The EVSE has been decommissioned successfully.
          headers:
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: delete-evses-evse_id
      parameters:
      - $ref: '#/components/parameters/version-2'
      description: Decommission the EVSE by disconnecting it from the ev.energy system.
      security:
      - oauth2:
        - evse:write
  /evse_models:
    get:
      summary: List EVSE models
      tags:
      - EVSEs
      responses:
        '200':
          description: Returns a list of EVSE models.
          headers:
            Link:
              $ref: '#/components/headers/link'
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EVSEModel'
        '400':
          $ref: '#/components/responses/Problem400BadRequestList'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-evse_models
      parameters:
      - $ref: '#/components/parameters/previous'
      - $ref: '#/components/parameters/next'
      - $ref: '#/components/parameters/page_size'
      - $ref: '#/components/parameters/expand-on-evsemodel'
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/available_for_user_id'
      - $ref: '#/components/parameters/user'
      - $ref: '#/components/parameters/evse_make_id_q'
      description: 'List all the EVSE models known by the ev.energy system.


        Anonymous callers are rate limited to 50 requests per hour per IP.'
      security: []
  /evse_models/{evse_model_id}:
    parameters:
    - $ref: '#/components/parameters/evse_model_id'
    get:
      summary: Retrieve an EVSE model
      tags:
      - EVSEs
      responses:
        '200':
          description: Return a single EVSE model.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EVSEModel'
          headers:
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
        '400':
          $ref: '#/components/responses/Problem400BadRequestRetrieve'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-evse_models-evse_model_id
      parameters:
      - $ref: '#/components/parameters/expand-on-evsemodel'
      - $ref: '#/components/parameters/version-2'
      description: 'Retrieve details for a single, specific EVSE model.


        Anonymous callers are rate limited to 50 requests per hour per IP.'
      security: []
  /evse_makes:
    parameters: []
    get:
      summary: List EVSE makes
      tags:
      - EVSEs
      responses:
        '200':
          description: Return a list of EVSE Makes.
          headers:
            Link:
              $ref: '#/components/headers/link'
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EVSEMake'
        '400':
          $ref: '#/components/responses/Problem400BadRequestList'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-evse_makes
      parameters:
      - $ref: '#/components/parameters/previous'
      - $ref: '#/components/parameters/next'
      - $ref: '#/components/parameters/page_size'
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/available_for_user_id'
      - $ref: '#/components/parameters/user'
      description: 'List all the EVSE makes known by the ev.energy system.


        Anonymous callers are rate limited to 50 requests per hour per IP.'
      security: []
  /evse_makes/{evse_make_id}:
    parameters:
    - $ref: '#/components/parameters/evse_make_id'
    get:
      summary: Retrieve an EVSE make
      tags:
      - EVSEs
      responses:
        '200':
          description: Return a single EVSE make.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EVSEMake'
          headers:
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
        '400':
          $ref: '#/components/responses/Problem400BadRequestRetrieve'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-evse_makes-evse_make_id
      parameters:
      - $ref: '#/components/parameters/version-2'
      description: 'Retrieve details for a single, specific EVSE make.


        Anonymous callers are rate limited to 50 requests per hour per IP.'
      security: []
  /evses/{evse_id}/status_logs:
    parameters:
    - $ref: '#/components/parameters/evse_id'
    get:
      summary: List status logs for an EVSE
      description: List the historical status logs for a specific EVSE. Used to find out the state of the EVSE at each point it reported in to ev.energy.
      tags:
      - EVSEs
      responses:
        '200':
          description: List all status logs for a specific EVSE, sorted newest first.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EVSEStatusLog'
          headers:
            Link:
              $ref: '#/components/headers/link-timestamps'
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
        '400':
          $ref: '#/components/responses/Problem400BadRequestList'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-evses-evse_id-status_logs
      parameters:
      - $ref: '#/components/parameters/previous'
      - $ref: '#/components/parameters/next'
      - $ref: '#/components/parameters/page_size'
      - $ref: '#/components/parameters/sampled_at__gte'
      - $ref: '#/components/parameters/sampled_at__lte'
      - $ref: '#/components/parameters/expand-on-evsestatuslog'
      - $ref: '#/components/parameters/version-2'
      security:
      - oauth2:
        - evse:read
  /evses/{evse_id}/status_logs/{sampled_at}:
    parameters:
    - $ref: '#/components/parameters/evse_id'
    - schema:
        type: string
        format: date-time
      name: sampled_at
      in: path
      required: true
      description: The time the log's data was recorded on the device.
      example: '2024-04-17T09:39:45.984584Z'
    get:
      summary: Retrieve a status log for an EVSE
      description: An EVSE status log is uniquely identified by the combination of EVSE ID and the time it was sampled at.
      tags:
      - EVSEs
      responses:
        '200':
          description: Retrieve a single status log for a specific EVSE.
          headers:
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EVSEStatusLog'
        '400':
          $ref: '#/components/responses/Problem400BadRequestRetrieve'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-evses-evse_id-status_logs-timestamp
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/expand-on-evsestatuslog'
      security:
      - oauth2:
        - evse:read
  /evses/{evse_id}/command_logs:
    parameters:
    - $ref: '#/components/parameters/evse_id'
    get:
      summary: List command logs for an EVSE
      description: List the historical command logs for a specific EVSE. These logs record commands that were sent to the EVSE.
      tags:
      - EVSEs
      responses:
        '200':
          description: List all command logs for a specific EVSE, sorted newest first.
          headers:
            Link:
              $ref: '#/components/headers/link-timestamps'
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EVSECommandLog'
        '400':
          $ref: '#/components/responses/Problem400BadRequestList'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-evses-evse_id-command_logs
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/previous'
      - $ref: '#/components/parameters/next'
      - $ref: '#/components/parameters/page_size'
      - $ref: '#/components/parameters/logged_at__gte'
      - $ref: '#/components/parameters/logged_at__lte'
      - $ref: '#/components/parameters/expand-on-evsecommandlog'
      security:
      - oauth2:
        - debug:read
  /evses/{evse_id}/command_logs/{logged_at}:
    parameters:
    - $ref: '#/components/parameters/evse_id'
    - schema:
        type: string
        format: date-time
      name: logged_at
      in: path
      required: true
      description: The time the command was logged.
      example: '2024-04-17T09:39:45.984584Z'
    get:
      summary: Retrieve a command log for an EVSE
      description: An EVSE command log is uniquely identified by the combination of EVSE ID and the time it was logged at.
      tags:
      - EVSEs
      responses:
        '200':
          description: Retrieve a single command log for a specific EVSE.
          headers:
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EVSECommandLog'
        '400':
          $ref: '#/components/responses/Problem400BadRequestRetrieve'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-evses-evse_id-command_logs-timestamp
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/expand-on-evsecommandlog'
      security:
      - oauth2:
        - debug:read
  /evses/{evse_id}/error_logs:
    parameters:
    - $ref: '#/components/parameters/evse_id'
    get:
      summary: List API error logs for an EVSE
      description: List the historical API error logs for a specific EVSE. These logs capture errors that occurred when attempting to communicate with the EVSE's hardware API.
      tags:
      - EVSEs
      responses:
        '200':
          description: List all API error logs for a specific EVSE, sorted newest first.
          headers:
            Link:
              $ref: '#/components/headers/link-timestamps'
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EVSEAPIErrorLog'
        '400':
          $ref: '#/components/responses/Problem400BadRequestList'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-evses-evse_id-error_logs
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/previous'
      - $ref: '#/components/parameters/next'
      - $ref: '#/components/parameters/page_size'
      - $ref: '#/components/parameters/sampled_at__gte'
      - $ref: '#/components/parameters/sampled_at__lte'
      - $ref: '#/components/parameters/expand-on-evseerrorlog'
      security:
      - oauth2:
        - debug:read
  /evses/{evse_id}/error_logs/{sampled_at}:
    parameters:
    - $ref: '#/components/parameters/evse_id'
    - schema:
        type: string
        format: date-time
      name: sampled_at
      in: path
      required: true
      description: The time the error was sampled.
      example: '2024-04-17T09:39:45.984584Z'
    get:
      summary: Retrieve a specific API error log for an EVSE
      description: A single API error log for a particular EVSE is uniquely identified by the timestamp it was sampled at.
      tags:
      - EVSEs
      responses:
        '200':
          description: Returns the EVSE API error logged at a specific time.
          headers:
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EVSEAPIErrorLog'
        '400':
          $ref: '#/components/responses/Problem400BadRequestRetrieve'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-evses-evse_id-error_logs-timestamp
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/expand-on-evseerrorlog'
      security:
      - oauth2:
        - debug:read
  /evses/{evse_id}/ocpp_logs:
    parameters:
    - $ref: '#/components/parameters/evse_id'
    get:
      summary: List OCPP logs for an EVSE
      description: List the historical OCPP message logs for a specific EVSE. These logs record OCPP messages sent to or received from the charger.
      tags:
      - EVSEs
      responses:
        '200':
          description: List all OCPP logs for a specific EVSE, sorted newest first.
          headers:
            Link:
              $ref: '#/components/headers/link-timestamps'
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EVSEOCPPLog'
        '400':
          $ref: '#/components/responses/Problem400BadRequestList'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-evses-evse_id-ocpp_logs
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/previous'
      - $ref: '#/components/parameters/next'
      - $ref: '#/components/parameters/page_size'
      - $ref: '#/components/parameters/sampled_at__gte'
      - $ref: '#/components/parameters/sampled_at__lte'
      - $ref: '#/components/parameters/ocpp-action'
      - $ref: '#/components/parameters/ocpp-action__in'
      - $ref: '#/components/parameters/ocpp-direction'
      - $ref: '#/components/parameters/ocpp-error_code'
      - $ref: '#/components/parameters/ocpp-error_code__in'
      - $ref: '#/components/parameters/expand-on-evseocpplog'
      security:
      - oauth2:
        - debug:read
  /evses/{evse_id}/ocpp_logs/{sampled_at}

# --- truncated at 32 KB (135 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ev-energy/refs/heads/main/openapi/ev-energy-evses-api-openapi.yml