ev.energy Users API

Endpoints for interacting with users.

Operations 16

GET /users List users #
POST /users Create user #
GET /users/{user_id} Retrieve user #
PATCH /users/{user_id} Update User #
GET /users/{user_id}/notification_preferences Retrieve user notification preferences #
PATCH /users/{user_id}/notification_preferences Update user notification preferences #
GET /users/{user_id}/route_planner_preferences Retrieve route planner preferences #
PATCH /users/{user_id}/route_planner_preferences Update route planner preferences #
GET /users/{user_id}/payout_method Retrieve payout method #
PATCH /users/{user_id}/payout_method Update payout method #
DELETE /users/{user_id}/payout_method Delete payout method #
GET /users/{user_id}/saved_routes List saved routes #
POST /users/{user_id}/saved_routes Create a saved route #
GET /users/{user_id}/saved_routes/{saved_route_id} Retrieve a saved route #
PATCH /users/{user_id}/saved_routes/{saved_route_id} Update a saved route #
DELETE /users/{user_id}/saved_routes/{saved_route_id} Delete a saved route #

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-users-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-users-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ev.energy v2 Users 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: Users
  description: Endpoints for interacting with users.
paths:
  /users:
    get:
      summary: List users
      tags:
      - Users
      responses:
        '200':
          description: Returns a list of Users.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
          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-users
      description: List all the users that the authorization token has access to.
      parameters:
      - $ref: '#/components/parameters/previous'
      - $ref: '#/components/parameters/next'
      - $ref: '#/components/parameters/page_size'
      - $ref: '#/components/parameters/expand-on-user'
      - $ref: '#/components/parameters/email'
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/user'
      security:
      - oauth2:
        - user:read
    post:
      summary: Create user
      tags:
      - Users
      responses:
        '201':
          description: User Created Successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '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: post-users
      security:
      - oauth2:
        - user:write
      description: Create an individual user in the ev.energy system.
      parameters:
      - $ref: '#/components/parameters/version-2'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/User'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/User'
  /users/{user_id}:
    parameters:
    - $ref: '#/components/parameters/user_id'
    get:
      summary: Retrieve user
      description: Retrieve information about a single, specific user.
      tags:
      - Users
      responses:
        '200':
          description: Returns a single User.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          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-users-user_id
      parameters:
      - $ref: '#/components/parameters/expand-on-user'
      - $ref: '#/components/parameters/version-2'
      security:
      - oauth2:
        - user:read
    patch:
      summary: Update User
      tags:
      - Users
      responses:
        '200':
          description: User updated 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'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '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: patch-users-user_id
      security:
      - oauth2:
        - user:write
      description: Update user information.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/User'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/User'
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/expand-on-user'
  /users/{user_id}/notification_preferences:
    parameters:
    - $ref: '#/components/parameters/user_id'
    get:
      summary: Retrieve user notification preferences
      description: Retrieve the set of notification groups the user is currently subscribed to.
      tags:
      - Users
      responses:
        '200':
          description: Returns the user's notification preferences.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserNotificationPreferences'
          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'
        '405':
          $ref: '#/components/responses/Problem405MethodNotAllowed'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-users-user_id-notification_preferences
      parameters:
      - $ref: '#/components/parameters/version-2'
      security:
      - oauth2:
        - notification_preferences:read
    patch:
      summary: Update user notification preferences
      description: 'Update the user''s notification group opt-in state.


        The `groups` object is treated as a partial map: only the keys you

        include are modified. Keys you omit are left untouched. This means

        clients only need to send the groups they want to change, and adding

        new groups to the API in the future cannot accidentally clobber an

        old client''s silence on them.


        `PATCH {}` and `PATCH {"groups": {}}` are valid no-ops. Unknown group

        names produce a `400`.'
      tags:
      - Users
      responses:
        '200':
          description: Notification preferences updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserNotificationPreferences'
          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'
        '400':
          $ref: '#/components/responses/Problem400UpdateNotificationPreferencesValidationFailed'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '405':
          $ref: '#/components/responses/Problem405MethodNotAllowed'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: patch-users-user_id-notification_preferences
      security:
      - oauth2:
        - notification_preferences:write
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserNotificationPreferences'
      parameters:
      - $ref: '#/components/parameters/version-2'
  /users/{user_id}/route_planner_preferences:
    parameters:
    - $ref: '#/components/parameters/user_id'
    get:
      summary: Retrieve route planner preferences
      description: 'Retrieve the user''s EV Route Planner preferences (default vehicle,

        en-route minimum charger power, and default arrival battery floor).


        A preferences row is created with defaults on first access, so this

        never 404s for an existing, accessible user.'
      tags:
      - Users
      operationId: get-users-user_id-route_planner_preferences
      responses:
        '200':
          description: Returns the user's route planner preferences.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutePlannerPreferences'
          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'
        '405':
          $ref: '#/components/responses/Problem405MethodNotAllowed'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      parameters:
      - $ref: '#/components/parameters/version-2'
      security:
      - oauth2:
        - route_planner_preferences:read
    patch:
      summary: Update route planner preferences
      description: 'Update the user''s EV Route Planner preferences.


        The body is treated as a partial map: only the keys you include are

        modified, omitted keys are left untouched. `PATCH {}` is a valid no-op.

        `preferred_vehicle` accepts a vehicle URL or `null`;

        `min_charger_power_watts` accepts one of

        `22000, 50000, 100000, 150000, 250000` or `null`.'
      tags:
      - Users
      operationId: patch-users-user_id-route_planner_preferences
      responses:
        '200':
          description: Route planner preferences updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutePlannerPreferences'
          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'
        '400':
          $ref: '#/components/responses/Problem400UpdateRoutePlannerPreferencesValidationFailed'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '405':
          $ref: '#/components/responses/Problem405MethodNotAllowed'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      security:
      - oauth2:
        - route_planner_preferences:write
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoutePlannerPreferencesUpdate'
      parameters:
      - $ref: '#/components/parameters/version-2'
  /users/{user_id}/payout_method:
    parameters:
    - $ref: '#/components/parameters/user_id'
    get:
      summary: Retrieve payout method
      description: 'Retrieve the user''s preferred payout method. Returns null fields when

        the user has not set up a payout method.

        '
      tags:
      - Users
      operationId: get-users-user_id-payout-method
      responses:
        '200':
          description: Returns the user's payout method.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutMethod'
          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'
        '405':
          $ref: '#/components/responses/Problem405MethodNotAllowed'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      parameters:
      - $ref: '#/components/parameters/version-2'
      security:
      - oauth2:
        - payout_method:read
    patch:
      summary: Update payout method
      description: 'Create or update the user''s preferred payout method. The request must

        always include `receiver_wallet`. For `PAYPAL` and `VENMO` the

        client must also supply `receiver` (an email or phone respectively).

        For `BILL_CREDITS` the `receiver` must not be supplied — it is

        derived server-side from the user''s linked billing account.

        '
      tags:
      - Users
      operationId: patch-users-user_id-payout-method
      responses:
        '200':
          description: Payout method updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutMethod'
          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'
        '400':
          $ref: '#/components/responses/Problem400UpdatePayoutMethodValidationFailed'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '405':
          $ref: '#/components/responses/Problem405MethodNotAllowed'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      parameters:
      - $ref: '#/components/parameters/version-2'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayoutMethodUpdate'
      security:
      - oauth2:
        - payout_method:write
    delete:
      summary: Delete payout method
      description: 'Clear the user''s preferred payout method. The user''s stored

        ``UserPayoutMethod`` records are not removed; only the

        ``preferred_payout_method`` link on the user is cleared. Returns 204

        even when the user already has no payout method set (no-op).

        '
      tags:
      - Users
      operationId: delete-users-user_id-payout-method
      responses:
        '204':
          description: Payout method cleared.
          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'
        '400':
          $ref: '#/components/responses/Problem400BadRequestRetrieve'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '405':
          $ref: '#/components/responses/Problem405MethodNotAllowed'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      parameters:
      - $ref: '#/components/parameters/version-2'
      security:
      - oauth2:
        - payout_method:write
  /users/{user_id}/saved_routes:
    parameters:
    - $ref: '#/components/parameters/user_id'
    get:
      summary: List saved routes
      description: 'List the user''s saved route-planner routes. A saved route is a reusable

        "recipe" — origin, destination, waypoints and planning preferences — not

        a stored charging plan; the plan is recalculated on each re-plan.

        '
      tags:
      - Users
      operationId: get-users-user_id-saved_routes
      responses:
        '200':
          description: Returns the user's saved routes.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SavedRoute'
          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'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '405':
          $ref: '#/components/responses/Problem405MethodNotAllowed'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/previous'
      - $ref: '#/components/parameters/next'
      - $ref: '#/components/parameters/page_size'
      security:
      - oauth2:
        - saved_routes:read
    post:
      summary: Create a saved route
      description: 'Create a new saved route for the user. The route is owned by the user

        named in the path; `id`, `url`, `user` and `created_at` are assigned by

        the server. `last_used_at` defaults to now when omitted.


        A user may save at most 50 routes; exceeding this returns a `400`.

        '
      tags:
      - Users
      operationId: post-users-user_id-saved_routes
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SavedRouteCreate'
      responses:
        '201':
          description: The saved route was created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SavedRoute'
          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'
        '400':
          $ref: '#/components/responses/Problem400SavedRouteValidationFailed'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '405':
          $ref: '#/components/responses/Problem405MethodNotAllowed'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      parameters:
      - $ref: '#/components/parameters/version-2'
      security:
      - oauth2:
        - saved_routes:write
  /users/{user_id}/saved_routes/{saved_route_id}:
    parameters:
    - $ref: '#/components/parameters/user_id'
    - $ref: '#/components/parameters/saved_route_id'
    get:
      summary: Retrieve a saved route
      tags:
      - Users
      operationId: get-users-user_id-saved_routes-saved_route_id
      responses:
        '200':
          description: Returns the saved route.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SavedRoute'
          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'
        '405':
          $ref: '#/components/responses/Problem405MethodNotAllowed'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      parameters:
      - $ref: '#/components/parameters/version-2'
      security:
      - oauth2:
        - saved_routes:read
    patch:
      summary: Update a saved route
      description: 'Partially update a saved route: rename it, toggle `favourite`, bump

        `last_used_at` after a re-plan, or edit the endpoints. Only the fields

        supplied are changed.

        '
      tags:
      - Users
      operationId: patch-users-user_id-saved_routes-saved_route_id
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SavedRoutePatch'
      responses:
        '200':
          description: The saved route was updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SavedRoute'
          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'
        '400':
          $ref: '#/components/responses/Problem400SavedRouteValidationFailed'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '405':
          $ref: '#/components/responses/Problem405MethodNotAllowed'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      parameters:
      - $ref: '#/components/parameters/version-2'
      security:
      - oauth2:
        - saved_routes:write
    delete:
      summary: Delete a saved route
      tags:
      - Users
      operationId: delete-users-user_id-saved_routes-saved_route_id
      responses:
        '204':
          description: The saved route was deleted.
          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'
        '400':
          $ref: '#/components/responses/Problem400BadRequestRetrieve'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '405':
          $ref: '#/components/responses/Problem405MethodNotAllowed'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      parameters:
      - $ref: '#/components/parameters/version-2'
      security:
      - oauth2:
        - saved_routes:write
components:
  responses:
    Problem405MethodNotAllowed:
      description: Could not satisfy this HTTP method.
      content:
        application/problem+json:
          schema:
            type: object
            required:
            - title
            - detail
            properties:
              status:
                type: number
                example: 405
              title:
                type: string
                example: Method Not Allowed
              detail:
                type: string
                example: Could not satisfy this HTTP method.
      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'
    Problem404NotFound:
      description: This resource either does not exist or the client is not authorized to access it.
      content:
        application/problem+json:
          schema:
            type: object
            required:
            - title
            - detail
            properties:
              status:
                type: number
                example: 404
              title:
                type: string
                example: Not found
              detail:
                type: string
                example: Resource does not exist or cannot be accessed.
      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'
    Problem400UpdatePayoutMethodValidationFailed:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/RFC9457ProblemDetail'
          examples:
            Request failed validation:
              value:
                type: https://api.ev.energy/v2/problems/validation-failed-update-payout-method/
                status: 400
                title: Request failed validation.
                detail: 'Error on fields: receiver'
                field_errors:
                  receiver:
                  - Required when receiver_wallet is PAYPAL.
      description: The payout method update request body failed validation.
      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'
    Problem400BadRequestRetrieve:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/RFC9457ProblemDetail'
          examples:
            Unsupported Version:
              $ref: '#/components/examples/ProblemUnsupportedVersion'
      description: A problem with the request's parameters prevented it being fulfilled.
      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'
    Problem400UpdateNotificationPreferencesValidationFailed:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/RFC9457ProblemDetail'
          examples:
            Request failed validation:
              value:
                type: https://api.ev.energy/v2/problems/validation-failed-update-notification-preferences/
                status: 400
                title: Request failed validation.
                detail: 'Error on fields: groups'
                field_errors:
                  groups:
                  - 'Unknown notification group: ''charging_flower''.'
      description: The notification preferences update request body failed validation.
      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'
    Problem429TooManyRequests:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/RFC9457ProblemDetail'
          examples:
            Example 1:
              value:
                type: https://api.ev.energy/v2/problems/rate-limit-exceeded/
                status: 429
                title: Too Many Requests
                detail: Request was rate limited. Try again in 42 seconds
      description: The client has exceeded its rate limit.
      headers:
        EvEnergy-Version:
          $ref: '#/components/headers/version-2'
       

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