Drive API Reference API

The Drive API provides comprehensive access to Plugsurfing's charging infrastructure network. It enables you to manage users, charging keys, search for charging locations, handle payments, and control charging sessions.

Operations 59

POST /drive/v1/users/{userId}/charging-keys/{referenceId}/activate Activate a charging key #
PATCH /drive/v1/users/{userId}/charging-keys/{identifier} Edit a charging key #
GET /drive/v1/users/{userId}/charging-keys Get user's charging keys #
POST /drive/v1/users/{userId}/charging-keys Create a charging key #
POST /drive/v1/users/{userId}/charging-keys/plug-and-charge Create a Plug&Charge key #
POST /drive/v1/users/{userId}/charging-keys/orders Create charging key order #
GET /drive/v1/users/{userId}/charging-keys/orders Get list of charging key orders #
GET /drive/v1/users/{userId}/charging-keys/orders/{orderId}/receipt Get order receipt URL #
GET /drive/v1/charging-keys/orders/configuration Get pricing information per country #
POST /drive/v1/charging-keys/reservations Reserve a charging key #
POST /drive/v1/geosearch/radius Radius search #
POST /drive/v1/geosearch/rectangle Rectangle search #
POST /drive/v1/geosearch/route Route search #
GET /drive/v1/locations/{locationId} Get location by id #
GET /drive/v1/locations/{locationId}/live-data Get location live data #
GET /drive/v1/locations/batch Batch locations #
GET /drive/v1/locations/operators Get list of operators #
GET /drive/v1/users/{userId}/payment-options Get user's payment methods #
POST /drive/v1/users/{userId}/payment-options Add a new payment method #
GET /drive/v1/users/{userId}/payment-options/stripe-setup-intent Get Stripe SetupIntent to confirm a payment method #
DELETE /drive/v1/users/{userId}/payment-options/{id} Delete user's payment option #
GET /drive/v1/users/{userId}/prepaid Get user's prepaid balance #
POST /drive/v1/users/{userId}/sessions/history Get charging session history #
GET /drive/v1/users/{userId}/sessions/{sessionId} Get details of a specific charging session #
GET /drive/v1/users/{userId}/sessions/{sessionId}/receipt Get a session receipt by session id #
POST /drive/v1/users/{userId}/sessions/start Start a remote charging session #
POST /drive/v1/users/{userId}/sessions/{sessionId}/stop Stop a remote charging session #
POST /drive/v1/users/{userId}/sessions/{sessionId}/payments/retry Retry session payment #
POST /drive/v1/users/{userId}/user-groups/{groupId} Add user to user group #
DELETE /drive/v1/users/{userId}/user-groups/{groupId} Remove user from user group #
POST /drive/v1/users/{userId}/vouchers/{code}/redeem Redeem a voucher code #
POST /drive/v1/users Create user #
GET /drive/v1/users/{userId} Read user details #
PATCH /drive/v1/users/{userId} Update user details #
DELETE /drive/v1/users/{userId} Remove user #
GET /emp/v1/charging-keys Get charging keys #
POST /emp/v1/charging-keys Create a charging key #
PUT /emp/v1/charging-keys/{keyIdentifier}/rename Rename a charging key #
PUT /emp/v1/charging-keys/{keyIdentifier}/enable Enable charging key #
PUT /emp/v1/charging-keys/{keyIdentifier}/disable Disable charging key #
PUT /emp/v1/charging-keys/{keyIdentifier}/transfer Transfer a charging key #
POST /emp/v1/geosearch/radius Search locations around a point #
POST /emp/v1/geosearch/rectangle Search locations within a rectangle #
POST /emp/v1/geosearch/route Search for locations along a route #
GET /emp/v1/locations/{locationId} Get location by id #
GET /emp/v1/locations/{locationId}/live-data Get location live data #
GET /emp/v1/locations/batch Get batch of locations #
GET /emp/v1/orders Fetch charging key orders #
POST /emp/v1/orders Create a fleet charging key order #
POST /emp/v1/orders/{orderId}/assign Mark an order as 'Assigned' #
GET /emp/v1/products List available products #
GET /emp/v1/payment-options/stripe/publishable-api-key Get Stripe publishable API key #
POST /emp/v1/sessions/start Start a remote session #
POST /emp/v1/sessions/{sessionId}/stop Stop a remote session #
GET /emp/v1/sessions/{sessionId}/receipt Get a session receipt by session id #
GET /emp/v1/sessions/{sessionId} Get session by id #
POST /emp/v1/fleets Create a fleet #
PUT /emp/v1/fleets/{fleetId}/rename Rename a fleet #
GET /emp/v1/fleets/{fleetId}/invitation Get fleet invitation codes #

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/plugsurfing:drive-api-reference-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

plugsurfing-reference-openapi.json Raw ↑
{
  "openapi": "3.1.0",
  "info": {
    "title": "Drive API",
    "version": "1.0.0",
    "description": "The Drive API provides comprehensive access to Plugsurfing's charging infrastructure network. It enables you to manage users, charging keys, search for charging locations, handle payments, and control charging sessions."
  },
  "servers": [
    {
      "url": "https://{environment}.plugsurfing.com",
      "variables": {
        "environment": {
          "enum": [
            "drive-api-stage"
          ],
          "default": "drive-api-stage",
          "description": "API environment - use drive-api-stage for testing and drive-api for production"
        }
      }
    }
  ],
  "tags": [
    {
      "name": "Geosearch",
      "description": "Search and retrieve detailed information about charging locations and stations"
    },
    {
      "name": "Users",
      "description": "Manage user accounts including creation, retrieval, updates, and deletion. Handles user-specific data and preferences."
    },
    {
      "name": "Charging Keys",
      "description": "Manage physical and virtual charging keys including creation, activation, updates, and status management. Essential for user access to charging stations."
    },
    {
      "name": "Sessions",
      "description": "Access and manage charging session data including history, status, and detailed session information"
    },
    {
      "name": "Remote Charging",
      "description": "Control charging sessions remotely including starting and stopping sessions, and monitoring session status"
    },
    {
      "name": "Payment Options",
      "description": "Manage payment methods and handle transaction processing for charging services"
    },
    {
      "name": "User Groups",
      "description": "Manage user group memberships"
    },
    {
      "name": "Vouchers",
      "description": "Redeem vouchers"
    },
    {
      "name": "Charging Key Orders",
      "description": "Handle the ordering and fulfillment process for physical charging keys"
    },
    {
      "name": "EMP Charging Keys",
      "description": "E-Mobility Provider specific endpoints for managing charging keys"
    },
    {
      "name": "EMP Geosearch",
      "description": "E-Mobility Provider specific endpoints for location search and information"
    },
    {
      "name": "EMP Orders",
      "description": "E-Mobility Provider specific endpoints for managing orders"
    },
    {
      "name": "EMP Sessions",
      "description": "E-Mobility Provider specific endpoints for managing charging sessions"
    },
    {
      "name": "EMP Fleets",
      "description": "E-Mobility Provider specific endpoints for managing fleets"
    }
  ],
  "paths": {
    "/drive/v1/users/{userId}/charging-keys/{referenceId}/activate": {
      "post": {
        "tags": [
          "Charging Keys"
        ],
        "summary": "Activate a charging key",
        "description": "Activates a charging key for a specific user. The key must exist and be unassigned. Once activated, the key can be used to start charging sessions.",
        "operationId": "activateUserChargingKey",
        "parameters": [
          {
            "name": "referenceId",
            "in": "path",
            "description": "Human-readable identifier written on the rfid card or tag, visualNumber from the charging key reservation.",
            "example": "DE*8PS*FR1RFK*4",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "description": "The unique identifier of the user who will own this charging key. Must be a valid user ID in your system.",
            "example": "6f36dc9b-446f-462b-aae0-95c7636d5c6c",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChargingKeyActivateRequest"
              },
              "example": {
                "whitelist": "NEVER"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChargingKey"
                },
                "example": {
                  "keyId": "0eb7732d-eb7a-418c",
                  "referenceId": "DE*8PS*AD21B1*3",
                  "contractId": "DE-8PS-C0AD21B13-Q",
                  "name": "My RFID key",
                  "validFrom": "2022-01-24T11:25:54.210Z",
                  "validTo": "2032-01-24T11:25:54.210Z",
                  "type": "card",
                  "enabled": true,
                  "whitelist": "NEVER",
                  "created": "2025-01-15T10:30:00Z",
                  "updated": "2025-01-15T10:30:00Z"
                }
              }
            }
          },
          "400": {
            "description": "The provided query parameters, route parameters or body is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                },
                "example": {
                  "message": "Invalid request payload",
                  "details": [
                    "field X is required"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "User or charging key not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "Resource not found"
                }
              }
            }
          },
          "409": {
            "description": "Key already in use",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "Resource not found"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "Resource not found"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/drive/v1/users/{userId}/charging-keys/{identifier}": {
      "patch": {
        "tags": [
          "Charging Keys"
        ],
        "summary": "Edit a charging key",
        "description": "Modify a charging key's properties. You can change the key's name and enable/disable it. Disabling a key immediately prevents it from being used for charging. Important notes:\n- Only non-null fields in the request are applied\n- Disabling a key takes effect immediately across all charging stations\n- Some CPOs cache key status, so in rare cases it may take a few minutes for the disable action to propagate\n- Name changes are purely cosmetic and don't affect the key's functionality",
        "operationId": "updateUserChargingKey",
        "parameters": [
          {
            "name": "identifier",
            "in": "path",
            "description": "The unique identifier for the charging key - can be either the keyId (internal identifier) or contractId (roaming identifier)",
            "example": "0eb7732d-eb7a-418c",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "description": "The unique identifier of the user who owns the charging key",
            "example": "6f36dc9b-446f-462b-aae0-95c7636d5c6c",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChargingKeyPatchRequest"
              },
              "example": {
                "name": "My RFID key updated",
                "enabled": true,
                "whitelist": "ALLOWED_OFFLINE"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChargingKey"
                },
                "example": {
                  "keyId": "0eb7732d-eb7a-418c",
                  "referenceId": "DE*8PS*AD21B1*3",
                  "contractId": "DE-8PS-C0AD21B13-Q",
                  "name": "My RFID key",
                  "validFrom": "2022-01-24T11:25:54.210Z",
                  "validTo": "2032-01-24T11:25:54.210Z",
                  "type": "card",
                  "enabled": true,
                  "whitelist": "ALLOWED_OFFLINE",
                  "created": "2025-01-15T10:30:00Z",
                  "updated": "2025-01-15T10:30:00Z"
                }
              }
            }
          },
          "400": {
            "description": "The provided query parameters, route parameters or body is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                },
                "example": {
                  "message": "Invalid request payload",
                  "details": [
                    "field X is required"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "User or charging key not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "Resource not found"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — can happen when making two requests to update the same charging key in a short period of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "Resource not found"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "Resource not found"
                }
              }
            }
          }
        },
        "deprecated": false,
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/drive/v1/users/{userId}/charging-keys": {
      "get": {
        "tags": [
          "Charging Keys"
        ],
        "summary": "Get user's charging keys",
        "description": "Retrieves all charging keys associated with a specific user. This includes both active and inactive keys, physical and virtual keys. The response contains detailed information about each key including its status, type, and validity period.",
        "operationId": "listUserChargingKeys",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The unique identifier of the user whose charging keys should be retrieved",
            "example": "6f36dc9b-446f-462b-aae0-95c7636d5c6c",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "keys": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ChargingKey"
                      }
                    }
                  }
                },
                "example": {
                  "keys": [
                    {
                      "keyId": "0eb7732d-eb7a-418c",
                      "referenceId": "DE*8PS*AD21B1*3",
                      "contractId": "DE-8PS-C0AD21B13-Q",
                      "name": "My RFID key",
                      "validFrom": "2022-01-24T11:25:54.210Z",
                      "validTo": "2032-01-24T11:25:54.210Z",
                      "type": "card",
                      "enabled": true,
                      "whitelist": "NEVER",
                      "created": "2025-01-15T10:30:00Z",
                      "updated": "2025-01-15T10:30:00Z"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The provided query parameters, route parameters or body is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                },
                "example": {
                  "message": "Invalid request payload",
                  "details": [
                    "field X is required"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "Resource not found"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "Resource not found"
                }
              }
            }
          }
        },
        "deprecated": false,
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Charging Keys"
        ],
        "summary": "Create a charging key",
        "description": "Creates a new charging key for a specified user. Important notes:\n- The key will be created in an enabled state by default\n- Contract id, keyIdentifier and visualNumber must be provided.",
        "operationId": "createUserChargingKey",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The unique identifier of the user who will own the new charging key",
            "example": "6f36dc9b-446f-462b-aae0-95c7636d5c6c",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChargingKeyPostRequest"
              },
              "example": {
                "name": "My RFID key",
                "keyIdentifier": "04A224B7C89280",
                "contractId": "DE-8PS-C0AD21B13-Q",
                "visualNumber": "DE*8PS*FR1RFK*4",
                "enabled": true,
                "whitelist": "NEVER"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChargingKey"
                },
                "example": {
                  "keyId": "0eb7732d-eb7a-418c",
                  "referenceId": "DE*8PS*AD21B1*3",
                  "contractId": "DE-8PS-C0AD21B13-Q",
                  "name": "My RFID key",
                  "validFrom": "2022-01-24T11:25:54.210Z",
                  "validTo": "2032-01-24T11:25:54.210Z",
                  "type": "card",
                  "enabled": true,
                  "whitelist": "NEVER",
                  "created": "2025-01-15T10:30:00Z",
                  "updated": "2025-01-15T10:30:00Z"
                }
              }
            }
          },
          "400": {
            "description": "The provided query parameters, route parameters or body is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                },
                "example": {
                  "message": "Invalid request payload",
                  "details": [
                    "field X is required"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "Resource not found"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "Resource not found"
                }
              }
            }
          }
        },
        "deprecated": false,
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/drive/v1/users/{userId}/charging-keys/plug-and-charge": {
      "post": {
        "tags": [
          "Charging Keys"
        ],
        "summary": "Create a Plug&Charge key",
        "description": "Creates a Plug&Charge charging key for a user. The key enables\nroaming authorization at PnC-capable charging stations.",
        "operationId": "createPncChargingKey",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The unique identifier of the user who will own the new Plug&Charge key",
            "example": "6f36dc9b-446f-462b-aae0-95c7636d5c6c",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Plug&Charge key creation request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChargingKeyPlugAndChargePostRequest"
              },
              "example": {
                "pcid": "WDBRF61J21F123456",
                "contractId": "DE-8PS-C0AD21B13-Q"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Plug&Charge key created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChargingKeyPlugAndChargePostResponse"
                },
                "example": {
                  "contractId": "DE-8PS-C0AD21B13-Q",
                  "pcid": "WDBRF61J21F123456",
                  "keyId": "DE-8PS-C0AD21B13-Q"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request. Possible causes: PCID or contractId syntactically incorrect, contractId prefix not allowed for organization or Plug&Charge feature not enabled.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                },
                "example": {
                  "message": "Invalid request payload",
                  "fields": [
                    {
                      "name": "pcid",
                      "message": "PCID must be 17-18 alphanumeric characters",
                      "rejectedValue": "invalid"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "Resource not found"
                }
              }
            }
          },
          "409": {
            "description": "A charging key for this EMAID already exists (if EMAID-sharing is not allowed for the organization).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "A charging key for this EMAID already exists"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "Internal server error"
                }
              }
            }
          }
        },
        "deprecated": false,
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/drive/v1/users/{userId}/charging-keys/orders": {
      "post": {
        "tags": [
          "Charging Key Orders"
        ],
        "summary": "Create charging key order",
        "description": "Orders a charging key for the given user. Requires the product to be configured on Plugsurfing side. Therefore, we ask you to reach out to us before using it.",
        "operationId": "createChargingKeyOrder",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "example": "6f36dc9b-446f-462b-aae0-95c7636d5c6c",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChargingKeyOrderRequest"
              },
              "example": {
                "productId": "physical-rfid-key",
                "quantity": 1,
                "address": {
                  "line1": "Kungsgatan 1",
                  "line2": "Floor 2",
                  "city": "Stockholm",
                  "postalCode": "11143",
                  "countryCode": "SE",
                  "firstName": "Olivier",
                  "lastName": "Payen",
                  "company": "Plugsurfing"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChargingKeyOrderResponse"
                },
                "example": {
                  "id": "9aE20Rmj0v",
                  "state": "ORDER_PLACED",
                  "clientSecret": "pi_1J5J9v3sZvKYlo2C5J9v2eZv"
                }
              }
            }
          },
          "400": {
            "description": "The provided query parameters, route parameters or body is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                },
                "example": {
                  "message": "Invalid request payload",
                  "details": [
                    "field X is required"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "Resource not found"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests — a given user can't order more than 1 card every 5 minutes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "Resource not found"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "Resource not found"
                }
              }
            }
          }
        },
        "deprecated": false,
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Charging Key Orders"
        ],
        "summary": "Get list of charging key orders",
        "description": "Returns the list of ordered charging keys by a given user.",
        "operationId": "listChargingKeyOrders",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChargingKeyOrdersListResponse"
                },
                "example": [
                  {
                    "id": "vrj82A9EpJ",
                    "created": "2022-04-07T11:30:57.000Z",
                    "updated": "2022-04-07T11:30:57.000Z",
                    "address": {
                      "companyName": "Plusurfing",
                      "firstName": "Luck",
                      "lastName": "Thomson",
                      "addressLine1": "Rättarvägen 3",
                      "addressLine2": "Rättarvägen 3",
                      "postalCode": 12345,
                      "city": "Solna",
                      "country": "Sweden"
                    },
                    "quantity": 1,
                    "currency": "SEK",
                    "priceMinorInclVat": 1010,
                    "state": "ORDER_PLACED",
                    "hasReceipt": false
                  }
                ]
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "Resource not found"
                }
              }
            }
          }
        },
        "deprecated": false,
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/drive/v1/users/{userId}/charging-keys/orders/{orderId}/receipt": {
      "get": {
        "tags": [
          "Charging Key Orders"
        ],
        "summary": "Get order receipt URL",
        "description": "Returns an absolute URL to the order's receipt. The receipt will be in PDF format.",
        "operationId": "getChargingKeyOrderReceiptUrl",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "example": "6f36dc9b-446f-462b-aae0-95c7636d5c6c",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChargingKeyOrderReceiptResponse"
                },
                "example": {
                  "url": "string"
                }
              }
            }
          },
          "400": {
            "description": "Provided path parameter, is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                },
                "example": {
                  "message": "Invalid request payload",
                  "details": [
                    "field X is required"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Receipt not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "Resource not found"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "message": "Resource not found"
                }
              }
            }
          }
        },
        "deprecated": false,
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/drive/v1/charging-keys/orders/configuration": {
      "get": {
        "tags": [
          "Charging Key Orders"
        ],
        "summary": "Get pricing information per country",
        "description": "Returns the pricing information for ordering charging keys per country. Each country has to be set up manually for your organization in order for it to show up here.",
        "operationId": "getChargingKeyOrderConfiguration",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChargingKeyConfigurationResponse"
                },
                "example": {
                  "countries": [
                    {
                      "country": "SE",
                      "currency": "SEK",
                      "priceMinorInclVat": 1,
                      "vat": 1
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "No pricing found for organization",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                },
                "example": {
        

# --- truncated at 32 KB (351 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/plugsurfing/refs/heads/main/openapi/_original/plugsurfing-reference-openapi.json