{
  "openapi": "3.0.1",
  "info": {
    "title": "eMabler | Express API",
    "description": "",
    "termsOfService": "https://www.emabler.com/privacy-policy",
    "contact": {
      "name": "eMabler Ltd",
      "url": "https://www.emabler.com/contact",
      "email": "hello@emabler.com"
    },
    "version": "2.0.1"
  },
  "servers": [
    {
      "url": "https://api.emabler.net/api/v2/express/"
    }
  ],
  "paths": {
    "/v2/express/transactions": {
      "get": {
        "tags": [
          "Transactions"
        ],
        "summary": "Get Express Transactions",
        "description": "Retrieves transaction information for express charging sessions.",
        "operationId": "getExpressTransactions",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "Page to be fetched. Default: 1",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-ms-summary": "Page",
            "x-ms-visibility": "important"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit (No. of records per page). Max value: 100. Default: 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-ms-summary": "Limit",
            "x-ms-visibility": "important"
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search text to filter sessions.",
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Search",
            "x-ms-visibility": "important"
          },
          {
            "name": "from",
            "in": "query",
            "description": "Filter sessions from this timestamp (ISO 8601 format).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-ms-summary": "Timestamp From",
            "x-ms-visibility": "important"
          },
          {
            "name": "to",
            "in": "query",
            "description": "Filter sessions to this timestamp (ISO 8601 format).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-ms-summary": "Timestamp To",
            "x-ms-visibility": "important"
          },
          {
            "name": "clientId",
            "in": "query",
            "description": "Filter by client ID",
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Client ID",
            "x-ms-visibility": "important"
          },
          {
            "name": "chargerId",
            "in": "query",
            "description": "Filter by charger ID",
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Charger ID",
            "x-ms-visibility": "important"
          },
          {
            "name": "transactionId",
            "in": "query",
            "description": "Filter by transaction ID",
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Transaction ID",
            "x-ms-visibility": "important"
          },
          {
            "name": "merchantReference",
            "in": "query",
            "description": "Filter by merchant reference",
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Merchant Reference",
            "x-ms-visibility": "important"
          },
          {
            "name": "paymentType",
            "in": "query",
            "description": "Filter by payment type",
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Payment Type",
            "x-ms-visibility": "important"
          },
          {
            "name": "sortKey",
            "in": "query",
            "description": "Field to be used for sorting. Default: startTime",
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Sort Key",
            "x-ms-visibility": "important"
          },
          {
            "name": "sortDescending",
            "in": "query",
            "description": "Set to 'true' to sort descending based on sort key. Default: 'true'",
            "schema": {
              "type": "boolean"
            },
            "x-ms-summary": "Sort Descending",
            "x-ms-visibility": "important"
          }
        ],
        "responses": {
          "200": {
            "description": "Express sessions successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/getExpressTransactionsResponse"
                }
              }
            },
            "x-ms-summary": "Success"
          },
          "400": {
            "description": "Details of the validation error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Internal Server Error"
          },
          "401": {
            "description": "User not authorized.",
            "x-ms-summary": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      }
    },
    "/v2/express/split-revenue/export": {
      "get": {
        "tags": [
          "ExpressSplitRevenue"
        ],
        "summary": "Export Express Split Revenue CSV",
        "description": "Exports the split-revenue view as a CSV download: one row per session-recipient pair over the given date range (filtered on session stop time), sorted by stop time descending. All amounts are VAT-inclusive gross; split amounts are post-commission. Exports larger than 100 000 rows fail with EXPORT_TOO_LARGE - narrow the date range.",
        "operationId": "exportExpressSplitRevenueCsv",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "description": "Include sessions stopped at or after this timestamp (ISO 8601 format). Default: 2000-01-01.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-ms-summary": "Timestamp From",
            "x-ms-visibility": "important"
          },
          {
            "name": "to",
            "in": "query",
            "description": "Include sessions stopped at or before this timestamp (ISO 8601 format). Default: now.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-ms-summary": "Timestamp To",
            "x-ms-visibility": "important"
          }
        ],
        "responses": {
          "200": {
            "description": "CSV file download (UTF-8 with BOM, RFC 4180) with header row expressSessionId,sessionStopTime,recipientFriendlyName,balanceAccountId,splitAmount,splitAmountMinor,currency,sessionTotal,vatInclusive.",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            },
            "x-ms-summary": "Success"
          },
          "400": {
            "description": "Details of the validation error, or EXPORT_TOO_LARGE when the export exceeds the row cap.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Internal Server Error"
          },
          "401": {
            "description": "User not authorized.",
            "x-ms-summary": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      }
    },
    "/v2/express/split-revenue": {
      "get": {
        "tags": [
          "ExpressSplitRevenue"
        ],
        "summary": "Get Express Split Revenue",
        "description": "Retrieves Express revenue grouped by balance-account recipient over the given date range (filtered on session stop time), plus a bucket of normal Express revenue without payment splits. All amounts are VAT-inclusive gross; split amounts are post-commission.",
        "operationId": "getExpressSplitRevenue",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "description": "Include sessions stopped at or after this timestamp (ISO 8601 format). Default: 2000-01-01.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-ms-summary": "Timestamp From",
            "x-ms-visibility": "important"
          },
          {
            "name": "to",
            "in": "query",
            "description": "Include sessions stopped at or before this timestamp (ISO 8601 format). Default: now.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-ms-summary": "Timestamp To",
            "x-ms-visibility": "important"
          }
        ],
        "responses": {
          "200": {
            "description": "Split revenue summary successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/getSplitRevenueResponse"
                }
              }
            },
            "x-ms-summary": "Success"
          },
          "400": {
            "description": "Details of the validation error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Internal Server Error"
          },
          "401": {
            "description": "User not authorized.",
            "x-ms-summary": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      }
    },
    "/v2/express/split-revenue/{balanceAccountId}/sessions": {
      "get": {
        "tags": [
          "ExpressSplitRevenue"
        ],
        "summary": "Get Express Split Revenue Sessions",
        "description": "Retrieves the sessions contributing to a balance-account recipient's split revenue over the given date range (filtered on session stop time), sorted by stop time descending. Each line carries the session's full VAT-inclusive total and this recipient's split of it.",
        "operationId": "getExpressSplitRevenueSessions",
        "parameters": [
          {
            "name": "balanceAccountId",
            "in": "path",
            "description": "The balance-account id of the recipient",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Balance Account ID",
            "x-ms-visibility": "important"
          },
          {
            "name": "from",
            "in": "query",
            "description": "Include sessions stopped at or after this timestamp (ISO 8601 format). Default: 2000-01-01.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-ms-summary": "Timestamp From",
            "x-ms-visibility": "important"
          },
          {
            "name": "to",
            "in": "query",
            "description": "Include sessions stopped at or before this timestamp (ISO 8601 format). Default: now.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-ms-summary": "Timestamp To",
            "x-ms-visibility": "important"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page to be fetched. Default: 1",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-ms-summary": "Page",
            "x-ms-visibility": "important"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit (No. of records per page). Max value: 100. Default: 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-ms-summary": "Limit",
            "x-ms-visibility": "important"
          }
        ],
        "responses": {
          "200": {
            "description": "Split revenue sessions successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/getSplitRevenueSessionsResponse"
                }
              }
            },
            "x-ms-summary": "Success"
          },
          "400": {
            "description": "Details of the validation error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Internal Server Error"
          },
          "401": {
            "description": "User not authorized.",
            "x-ms-summary": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      }
    },
    "/v2/express/sites/{siteId}/settings": {
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Delete Express branding override for a site",
        "description": "Deletes the branding override for the given site, if one exists.",
        "operationId": "deleteExpressSiteBranding",
        "parameters": [
          {
            "name": "siteId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-ms-summary": "Site ID"
          }
        ],
        "responses": {
          "400": {
            "description": "Validation error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "204": {
            "description": "The branding override was deleted",
            "x-ms-summary": "No Content"
          },
          "404": {
            "description": "No branding override for this site",
            "x-ms-summary": "Not Found"
          },
          "401": {
            "description": "User / function not authorised",
            "x-ms-summary": "Unauthorised"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      },
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get Express branding override for a site",
        "description": "Retrieves the branding override for the given site, if one exists.",
        "operationId": "getExpressSiteBranding",
        "parameters": [
          {
            "name": "siteId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-ms-summary": "Site ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The site branding override",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/siteBrandingResponse"
                }
              }
            },
            "x-ms-summary": "OK Reply"
          },
          "400": {
            "description": "Validation error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "404": {
            "description": "No branding override for this site",
            "x-ms-summary": "Not Found"
          },
          "401": {
            "description": "User / function not authorised",
            "x-ms-summary": "Unauthorised"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Create or update Express branding for a site",
        "description": "Upserts the branding override for the given site. Omitted fields are unchanged; explicit nulls clear the field so it inherits again.",
        "operationId": "updateExpressSiteBranding",
        "parameters": [
          {
            "name": "siteId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-ms-summary": "Site ID"
          }
        ],
        "requestBody": {
          "description": "Site branding data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/updateSiteBrandingRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated site branding",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/siteBrandingResponse"
                }
              }
            },
            "x-ms-summary": "OK Reply"
          },
          "400": {
            "description": "Validation error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "404": {
            "description": "Site not found for this customer",
            "x-ms-summary": "Not Found"
          },
          "401": {
            "description": "User / function not authorised",
            "x-ms-summary": "Unauthorised"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      }
    },
    "/v2/express/sites/{siteId}/settings/effective": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get effective Express branding for a site",
        "description": "Resolves the effective branding for the given site, per field, from the nearest site override or the customer configuration.",
        "operationId": "getEffectiveExpressSiteBranding",
        "parameters": [
          {
            "name": "siteId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-ms-summary": "Site ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The effective site branding, per field",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/effectiveSiteBrandingResponse"
                }
              }
            },
            "x-ms-summary": "OK Reply"
          },
          "400": {
            "description": "Validation error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "404": {
            "description": "Site not found for this customer",
            "x-ms-summary": "Not Found"
          },
          "401": {
            "description": "User / function not authorised",
            "x-ms-summary": "Unauthorised"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      }
    },
    "/v2/express/sites/settings": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "List Express branding overrides for the customer",
        "description": "Retrieves all site branding overrides for the authenticated customer.",
        "operationId": "getExpressSiteBrandingList",
        "responses": {
          "200": {
            "description": "The site branding overrides for the customer",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/siteBrandingResponse"
                  }
                }
              }
            },
            "x-ms-summary": "OK Reply"
          },
          "400": {
            "description": "Validation error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "401": {
            "description": "User / function not authorised",
            "x-ms-summary": "Unauthorised"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      }
    },
    "/v2/express/settings": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get Express settings for authenticated customer",
        "description": "Get the Express settings for the authenticated customer",
        "operationId": "getExpressSettings",
        "responses": {
          "200": {
            "description": "The Express settings for the authenticated customer",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/getExpressSettingsResponse"
                }
              }
            },
            "x-ms-summary": "OK Reply"
          },
          "400": {
            "description": "Exception Details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Error/Exception"
          },
          "404": {
            "description": "Settings not found for the customer",
            "x-ms-summary": "Not Found"
          },
          "401": {
            "description": "User / function not authorised",
            "x-ms-summary": "Unauthorised"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          },
          {
            "functionKey": [ ]
          }
        ],
        "x-ms-visibility": "important"
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Update Express settings for authenticated customer",
        "description": "Update or create Express settings for the authenticated customer",
        "operationId": "updateExpressSettings",
        "requestBody": {
          "description": "Express settings data to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/updateExpressSettingsRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated Express settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/updateExpressSettingsResponse"
                }
              }
            },
            "x-ms-summary": "OK Reply"
          },
          "400": {
            "description": "Validation error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "401": {
            "description": "User / function not authorised",
            "x-ms-summary": "Unauthorised"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          },
          {
            "functionKey": [ ]
          }
        ],
        "x-ms-visibility": "important"
      }
    },
    "/v2/express/sessions": {
      "get": {
        "tags": [
          "Session"
        ],
        "summary": "Get express sessions",
        "description": "Gets express sessions for the specified duration",
        "operationId": "getSessions",
        "parameters": [
          {
            "name": "startTimeBegin",
            "in": "query",
            "description": "Beginning of the 'session start time' period",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-ms-summary": "Start Time Begin",
            "x-ms-visibility": "important"
          },
          {
            "name": "startTimeEnd",
            "in": "query",
            "description": "Ending of the 'session start time' period",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-ms-summary": "Start Time End",
            "x-ms-visibility": "important"
          },
          {
            "name": "stopTimeBegin",
            "in": "query",
            "description": "Beginning of the 'session stop time' period",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-ms-summary": "Stop Time Begin",
            "x-ms-visibility": "important"
          },
          {
            "name": "stopTimeEnd",
            "in": "query",
            "description": "Ending of the 'session stop time' period",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-ms-summary": "Stop Time End",
            "x-ms-visibility": "important"
          }
        ],
        "responses": {
          "200": {
            "description": "Express sessions for the given duration",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/sessionResponse"
                  }
                }
              }
            },
            "x-ms-summary": "OK Reply"
          },
          "400": {
            "description": "Exception Details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Error/Exception"
          },
          "401": {
            "description": "User not authorised",
            "x-ms-summary": "Unauthorised"
          }
        },
        "deprecated": true,
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      }
    },
    "/v2/express/prices": {
      "post": {
        "tags": [
          "Price"
        ],
        "summary": "Add Express Price",
        "description": "Creates a new express price entry in the system.",
        "operationId": "addExpressPrice",
        "requestBody": {
          "description": "The express price data to create",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/addExpressPriceRequestBody"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Express price successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/addExpressPriceResponse"
                }
              }
            },
            "x-ms-summary": "Success"
          },
          "400": {
            "description": "Details of the validation error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Internal Server Error"
          },
          "401": {
            "description": "User not authorized.",
            "x-ms-summary": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      },
      "get": {
        "tags": [
          "Price"
        ],
        "summary": "Get Express Prices",
        "description": "Retrieves pricing information for express charging sessions.",
        "operationId": "getExpressPrices",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "Page to be fetched. Default: 1",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-ms-summary": "Page",
            "x-ms-visibility": "important"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit (No. of records per page). Max value: 100. Default: 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-ms-summary": "Limit",
            "x-ms-visibility": "important"
          },
          {
            "name": "priceType",
            "in": "query",
            "description": "Filter by price type",
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Price Type",
            "x-ms-visibility": "important"
          },
          {
            "name": "currency",
            "in": "query",
            "description": "Filter by currency code",
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Currency",
            "x-ms-visibility": "important"
          },
          {
            "name": "sortKey",
            "in": "query",
            "description": "Field to be used for sorting. Default: id",
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Sort Key",
            "x-ms-visibility": "important"
          },
          {
            "name": "sortDescending",
            "in": "query",
            "description": "Set to 'true' to sort descending based on sort key. Default: 'false'",
            "schema": {
              "type": "boolean"
            },
            "x-ms-summary": "Sort Descending",
            "x-ms-visibility": "important"
          }
        ],
        "responses": {
          "200": {
            "description": "Express prices successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/getExpressPricesResponse"
                }
              }
            },
            "x-ms-summary": "Success"
          },
          "400": {
            "description": "Details of the validation error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Internal Server Error"
          },
          "401": {
            "description": "User not authorized.",
            "x-ms-summary": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      }
    },
    "/v2/express/price/{priceId}": {
      "get": {
        "tags": [
          "Price"
        ],
        "summary": "Get Express Price",
        "description": "Retrieves detailed price information for a specific express price by price ID.",
        "operationId": "getExpressPrice",
        "parameters": [
          {
            "name": "priceId",
            "in": "path",
            "description": "The unique identifier of the price",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-ms-summary": "Price ID",
            "x-ms-visibility": "important"
          }
        ],
        "responses": {
          "200": {
            "description": "Express price successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/expressPriceDto"
                }
              }
            },
            "x-ms-summary": "Success"
          },
          "400": {
            "description": "Details of the validation error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Internal Server Error"
          },
          "404": {
            "description": "Price not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Not Found"
          },
          "401": {
            "description": "User not authorized.",
            "x-ms-summary": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      }
    },
    "/v2/express/configuration": {
      "get": {
        "tags": [
          "Configuration"
        ],
        "summary": "Get the configuration related to Express",
        "description": "Get the configuration related to Express",
        "operationId": "getConfiguration",
        "parameters": [
          {
            "name": "urlKey",
            "in": "query",
            "description": "This is the Url Key configured for the Express Charger",
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Url Key configured for the Express Charger",
            "x-ms-visibility": "important"
          }
        ],
        "responses": {
          "200": {
            "description": "The configuration for the Express",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/configurationResponse"
                }
              }
            },
            "x-ms-summary": "OK Reply"
          },
          "400": {
            "description": "Exception Details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Error/Exception"
          },
          "401": {
            "description": "User / function not authorised",
            "x-ms-summary": "Unauthorised"
          }
        },
        "deprecated": true,
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          },
          {
            "functionKey": [ ]
          }
        ],
        "x-ms-visibility": "important"
      },
      "post": {
        "tags": [
          "Configuration"
        ],
        "summary": "Update the configuration related to Express",
        "description": "Update the configuration related to Express",
        "operationId": "updateConfiguration",
        "requestBody": {
          "description": "The configuration request for Express. Configuration as JSON and file as a form data",
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/configurationData"
              }
            }
          },
          "required": true
        },
        "responses": {
          "400": {
            "description": "Exception Details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Error/Exception"
          },
          "200": {
            "description": "No description"
          },
          "401": {
            "description": "User not authorised",
            "x-ms-summary": "Unauthorised"
          }
        },
        "deprecated": true,
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      }
    },
    "/v2/express/logo/{fileName}": {
      "get": {
        "tags": [
          "Configuration"
        ],
        "summary": "Get the logo image for the Express",
        "description": "Get the logo image for the Express",
        "operationId": "getLogo",
        "parameters": [
          {
            "name": "fileName",
            "in": "path",
            "description": "The file name of the logo to be retrieved",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "The file name of the logo",
            "x-ms-visibility": "important"
          }
        ],
        "responses": {
          "200": {
            "description": "The logo for the Express",
            "content": {
              "image/*": {
                "schema": {
                  "$ref": "#/components/schemas/stream"
                }
              }
            },
            "x-ms-summary": "OK Reply"
          },
          "404": {
            "description": "No logo with that file name",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Not Found"
          },
          "400": {
            "description": "Exception Details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Error/Exception"
          }
        },
        "deprecated": true,
        "x-ms-visibility": "important"
      }
    },
    "/v2/express/chargers": {
      "post": {
        "tags": [
          "Charger"
        ],
        "summary": "Add Express Charger",
        "description": "Creates a new express charger entry in the system.",
        "operationId": "addExpressCharger",
        "requestBody": {
          "description": "The express charger data to create",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/addExpressChargerRequestBody"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Express charger successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/addExpressChargerResponse"
                }
              }
            },
            "x-ms-summary": "Success"
          },
          "400": {
            "description": "Details of the validation error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Internal Server Error"
          },
          "409": {
            "description": "A charger with the provided URL key or Charger ID already exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Conflict"
          },
          "401": {
            "description": "User not authorized.",
            "x-ms-summary": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      },
      "get": {
        "tags": [
          "Charger"
        ],
        "summary": "Get Express Chargers",
        "description": "Retrieves charger information for express charging sessions.",
        "operationId": "getExpressChargers",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "Page to be fetched. Default: 1",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-ms-summary": "Page",
            "x-ms-visibility": "important"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit (No. of records per page). Max value: 100. Default: 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-ms-summary": "Limit",
            "x-ms-visibility": "important"
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search text to filter chargers.",
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Search",
            "x-ms-visibility": "important"
          },
          {
            "name": "connectionType",
            "in": "query",
            "description": "Filter by connection type",
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Connection Type",
            "x-ms-visibility": "important"
          },
          {
            "name": "chargerType",
            "in": "query",
            "description": "Filter by charger type",
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Charger Type",
            "x-ms-visibility": "important"
          },
          {
            "name": "sortKey",
            "in": "query",
            "description": "Field to be used for sorting. Default: id",
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Sort Key",
            "x-ms-visibility": "important"
          },
          {
            "name": "sortDescending",
            "in": "query",
            "description": "Set to 'true' to sort descending based on sort key. Default: 'false'",
            "schema": {
              "type": "boolean"
            },
            "x-ms-summary": "Sort Descending",
            "x-ms-visibility": "important"
          }
        ],
        "responses": {
          "200": {
            "description": "Express chargers successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/getExpressChargersResponse"
                }
              }
            },
            "x-ms-summary": "Success"
          },
          "400": {
            "description": "Details of the validation error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Internal Server Error"
          },
          "401": {
            "description": "User not authorized.",
            "x-ms-summary": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      }
    },
    "/v2/express/charger/{chargerId}": {
      "get": {
        "tags": [
          "Charger"
        ],
        "summary": "Get Express Charger",
        "description": "Retrieves detailed charger information for a specific express charger by charger ID.",
        "operationId": "getExpressCharger",
        "parameters": [
          {
            "name": "chargerId",
            "in": "path",
            "description": "The unique identifier of the charger",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Charger ID",
            "x-ms-visibility": "important"
          }
        ],
        "responses": {
          "200": {
            "description": "Express charger successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/expressChargerDto"
                }
              }
            },
            "x-ms-summary": "Success"
          },
          "400": {
            "description": "Details of the validation error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Internal Server Error"
          },
          "404": {
            "description": "Charger not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Not Found"
          },
          "401": {
            "description": "User not authorized.",
            "x-ms-summary": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      }
    },
    "/v2/express/chargers/{chargerId}": {
      "patch": {
        "tags": [
          "Charger"
        ],
        "summary": "Update Express Charger",
        "description": "Updates an existing express charger in the system.",
        "operationId": "updateExpressCharger",
        "parameters": [
          {
            "name": "chargerId",
            "in": "path",
            "description": "The ID of the express charger to update.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Charger ID",
            "x-ms-visibility": "important"
          }
        ],
        "requestBody": {
          "description": "The express charger data to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/updateExpressChargerRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Express charger successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/updateExpressChargerResponse"
                }
              }
            },
            "x-ms-summary": "Success"
          },
          "400": {
            "description": "Details of the validation error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Internal Server Error"
          },
          "404": {
            "description": "Express charger not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Not Found"
          },
          "409": {
            "description": "A charger with the provided URL key already exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Conflict"
          },
          "403": {
            "description": "User does not have access to this charger.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Forbidden"
          },
          "401": {
            "description": "User not authorized.",
            "x-ms-summary": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      }
    },
    "/v2/express/reconciliation-reports/{id}/download": {
      "get": {
        "tags": [
          "ExpressReconciliation"
        ],
        "summary": "Get Reconciliation Report Download URL",
        "description": "Returns a short-lived (1 hour) read-only URL for the reconciled payout Excel file.",
        "operationId": "getExpressReconciliationReportDownload",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The reconciliation report id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-ms-summary": "Report ID",
            "x-ms-visibility": "important"
          }
        ],
        "responses": {
          "200": {
            "description": "Download URL successfully generated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/getReconciliationReportDownloadResponse"
                }
              }
            },
            "x-ms-summary": "Success"
          },
          "400": {
            "description": "Details of the validation error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Internal Server Error"
          },
          "404": {
            "description": "The report does not exist for this customer.",
            "x-ms-summary": "Not Found"
          },
          "401": {
            "description": "User not authorized.",
            "x-ms-summary": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      }
    },
    "/v2/express/reconciliation-reports": {
      "get": {
        "tags": [
          "ExpressReconciliation"
        ],
        "summary": "Get Express Payout Reconciliation Reports",
        "description": "Retrieves the customer's processed Adyen payout reconciliation reports, newest first. Each report joins one Adyen payout to the Express charging sessions behind it; the file itself is fetched via the download endpoint.",
        "operationId": "getExpressReconciliationReports",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "Page to be fetched. Default: 1",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-ms-summary": "Page",
            "x-ms-visibility": "important"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit (No. of records per page). Max value: 100. Default: 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-ms-summary": "Limit",
            "x-ms-visibility": "important"
          },
          {
            "name": "accountHolderId",
            "in": "query",
            "description": "Only reports of this Adyen account holder (see GET v2/express/adyen/account-holders).",
            "schema": {
              "type": "string"
            },
            "x-ms-summary": "Account holder",
            "x-ms-visibility": "important"
          }
        ],
        "responses": {
          "200": {
            "description": "Reconciliation reports successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/getReconciliationReportsResponse"
                }
              }
            },
            "x-ms-summary": "Success"
          },
          "400": {
            "description": "Details of the validation error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            },
            "x-ms-summary": "Validation Error"
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Internal Server Error"
          },
          "401": {
            "description": "User not authorized.",
            "x-ms-summary": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      }
    },
    "/v2/express/adyen/account-holders": {
      "get": {
        "tags": [
          "ExpressAdyen"
        ],
        "summary": "Get visible Adyen account holders",
        "description": "Lists the Adyen account holders the caller may view Express payouts, payments and reports for. Admins get every accounting unit's account holder plus the organization default; site admins get the account holders of the sites they have rights on.",
        "operationId": "getExpressAdyenAccountHolders",
        "responses": {
          "200": {
            "description": "Account holders successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/adyenAccountHolderDto"
                  }
                }
              }
            },
            "x-ms-summary": "Success"
          },
          "500": {
            "description": "An unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error"
                }
              }
            },
            "x-ms-summary": "Internal Server Error"
          },
          "401": {
            "description": "User not authorized.",
            "x-ms-summary": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          },
          {
            "bearer": [ ]
          }
        ],
        "x-ms-visibility": "important"
      }
    }
  },
  "components": {
    "schemas": {
      "addExpressChargerRequestBody": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string"
          },
          "urlKey": {
            "type": "string"
          },
          "connectionType": {
            "type": "string"
          },
          "chargerType": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "sockets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/expressSocketPriceRequest"
            }
          }
        }
      },
      "addExpressChargerResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "chargerId": {
            "type": "string"
          },
          "urlKey": {
            "type": "string"
          },
          "connectionType": {
            "type": "string"
          },
          "chargerType": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "sockets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/expressSocketPriceResponse"
            }
          }
        }
      },
      "addExpressPriceRequestBody": {
        "type": "object",
        "properties": {
          "priceType": {
            "type": "string",
            "description": "The type of pricing unit (e.g., 'KWH_UNIT', 'WH_UNIT', 'MIN_UNIT')"
          },
          "currency": {
            "type": "string",
            "description": "Currency code (e.g., 'EUR', 'USD'). Default: EUR"
          },
          "unitPrice": {
            "type": "number",
            "description": "Price including VAT",
            "format": "double"
          },
          "vat": {
            "type": "number",
            "description": "VAT percentage",
            "format": "double"
          },
          "countryCode": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country sent to the payment provider for sessions using this price (decides the local payment methods offered). Omit to use the customer's default country."
          }
        }
      },
      "addExpressPriceResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "priceType": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "unitPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "vat": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "countryCode": {
            "type": "string"
          }
        }
      },
      "adyenAccountHolderDto": {
        "type": "object",
        "properties": {
          "accountHolderId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "costCenterId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "configurationData": {
        "type": "object",
        "properties": {
          "configuration": {
            "$ref": "#/components/schemas/configurationRequest"
          },
          "file": {
            "type": "string",
            "format": "binary"
          }
        }
      },
      "configurationRequest": {
        "type": "object",
        "properties": {
          "company": {
            "type": "string"
          },
          "vatNumber": {
            "type": "string"
          },
          "termsConditionsUrl": {
            "type": "string"
          },
          "supportText": {
            "type": "string"
          }
        }
      },
      "configurationResponse": {
        "type": "object",
        "properties": {
          "company": {
            "type": "string"
          },
          "vatNumber": {
            "type": "string"
          },
          "logoFileName": {
            "type": "string"
          },
          "termsConditionsUrl": {
            "type": "string"
          },
          "supportText": {
            "type": "string"
          }
        }
      },
      "effectiveFieldValue": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string"
          },
          "source": {
            "type": "string"
          }
        }
      },
      "effectiveSiteBrandingResponse": {
        "type": "object",
        "properties": {
          "siteId": {
            "type": "integer",
            "format": "int64"
          },
          "companyName": {
            "$ref": "#/components/schemas/effectiveFieldValue"
          },
          "vatNumber": {
            "$ref": "#/components/schemas/effectiveFieldValue"
          },
          "logoFile": {
            "$ref": "#/components/schemas/effectiveFieldValue"
          },
          "termsConditionsUrl": {
            "$ref": "#/components/schemas/effectiveFieldValue"
          },
          "supportText": {
            "$ref": "#/components/schemas/effectiveFieldValue"
          },
          "primaryColor": {
            "$ref": "#/components/schemas/effectiveFieldValue"
          },
          "secondaryColor": {
            "$ref": "#/components/schemas/effectiveFieldValue"
          },
          "backgroundColor": {
            "$ref": "#/components/schemas/effectiveFieldValue"
          },
          "countryCode": {
            "$ref": "#/components/schemas/effectiveFieldValue"
          }
        }
      },
      "error": {
        "type": "object",
        "properties": {
          "errorCode": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "errorNumber": {
            "type": "integer",
            "format": "int32"
          },
          "helpLink": {
            "type": "string"
          }
        }
      },
      "expressChargerDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "enabled": {
            "type": "boolean"
          },
          "chargerId": {
            "type": "string"
          },
          "chargerName": {
            "type": "string"
          },
          "urlKey": {
            "type": "string"
          },
          "connectionType": {
            "type": "string"
          },
          "chargerType": {
            "type": "string"
          },
          "sockets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/expressSocketPriceDto"
            }
          }
        }
      },
      "expressPriceDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "unitPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "priceType": {
            "type": "string"
          },
          "vat": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "countryCode": {
            "type": "string"
          }
        }
      },
      "expressSocketPriceDto": {
        "type": "object",
        "properties": {
          "socketId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "socketName": {
            "type": "string"
          },
          "price": {
            "$ref": "#/components/schemas/expressPriceDto"
          },
          "tariffId": {
            "type": "string"
          }
        }
      },
      "expressSocketPriceRequest": {
        "type": "object",
        "properties": {
          "connectorId": {
            "type": "integer",
            "format": "int32"
          },
          "priceId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "tariffId": {
            "type": "string"
          }
        }
      },
      "expressSocketPriceResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "connectorId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "priceId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "tariffId": {
            "type": "string"
          }
        }
      },
      "expressTransactionDto": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string"
          },
          "chargerName": {
            "type": "string"
          },
          "socketId": {
            "type": "integer",
            "format": "int32"
          },
          "socketName": {
            "type": "string"
          },
          "siteId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "siteName": {
            "type": "string"
          },
          "transactionId": {
            "type": "string"
          },
          "merchantReference": {
            "type": "string"
          },
          "paymentType": {
            "type": "string"
          },
          "startTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "consumptionWh": {
            "type": "integer",
            "format": "int32"
          },
          "consumptionKwh": {
            "type": "number",
            "format": "double"
          },
          "priceType": {
            "type": "string"
          },
          "unitPrice": {
            "type": "number",
            "format": "double"
          },
          "vatPercent": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "totalCostInclVat": {
            "type": "number",
            "format": "double"
          },
          "totalCostExclVat": {
            "type": "number",
            "format": "double"
          },
          "totalVatAmount": {
            "type": "number",
            "format": "double"
          },
          "chargerStartTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "chargerEndTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "getExpressChargersResponse": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "limit": {
            "type": "integer",
            "format": "int32"
          },
          "totalRecords": {
            "type": "integer",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean"
          },
          "hasPreviousPage": {
            "type": "boolean"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/expressChargerDto"
            }
          }
        }
      },
      "getExpressPricesResponse": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "limit": {
            "type": "integer",
            "format": "int32"
          },
          "totalRecords": {
            "type": "integer",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean"
          },
          "hasPreviousPage": {
            "type": "boolean"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/expressPriceDto"
            }
          }
        }
      },
      "getExpressSettingsResponse": {
        "type": "object",
        "properties": {
          "companyName": {
            "type": "string"
          },
          "vatNumber": {
            "type": "string"
          },
          "logoFile": {
            "type": "string"
          },
          "termsConditionsUrl": {
            "type": "string"
          },
          "supportText": {
            "type": "string"
          },
          "fungAccountId": {
            "type": "string"
          },
          "fungPaymentProfileId": {
            "type": "string"
          },
          "primaryColor": {
            "type": "string"
          },
          "secondaryColor": {
            "type": "string"
          },
          "backgroundColor": {
            "type": "string"
          },
          "defaultCountryCode": {
            "type": "string"
          },
          "tariffEngineEnabled": {
            "type": "boolean"
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "getExpressTransactionsResponse": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "limit": {
            "type": "integer",
            "format": "int32"
          },
          "totalRecords": {
            "type": "integer",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean"
          },
          "hasPreviousPage": {
            "type": "boolean"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/expressTransactionDto"
            }
          }
        }
      },
      "getReconciliationReportDownloadResponse": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          }
        }
      },
      "getReconciliationReportsResponse": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "limit": {
            "type": "integer",
            "format": "int32"
          },
          "totalRecords": {
            "type": "integer",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean"
          },
          "hasPreviousPage": {
            "type": "boolean"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/reconciliationReportDto"
            }
          }
        }
      },
      "getSplitRevenueResponse": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "format": "date-time"
          },
          "to": {
            "type": "string",
            "format": "date-time"
          },
          "recipients": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/splitRevenueRecipientDto"
            }
          },
          "noSplit": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/splitRevenueNoSplitDto"
            }
          }
        }
      },
      "getSplitRevenueSessionsResponse": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "limit": {
            "type": "integer",
            "format": "int32"
          },
          "totalRecords": {
            "type": "integer",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean"
          },
          "hasPreviousPage": {
            "type": "boolean"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/splitRevenueSessionDto"
            }
          }
        }
      },
      "problemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string"
          },
          "instance": {
            "type": "string"
          },
          "extensions": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          }
        }
      },
      "reconciliationReportDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "reportFileName": {
            "type": "string"
          },
          "accountHolderId": {
            "type": "string"
          },
          "balanceAccountId": {
            "type": "string"
          },
          "payoutDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "currency": {
            "type": "string"
          },
          "payoutAmount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "rowCount": {
            "type": "integer",
            "format": "int32"
          },
          "matchedCount": {
            "type": "integer",
            "format": "int32"
          },
          "unmatchedCount": {
            "type": "integer",
            "format": "int32"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "sessionResponse": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string"
          },
          "socketId": {
            "type": "integer",
            "format": "int32"
          },
          "transactionId": {
            "type": "string"
          },
          "evseTransactionId": {
            "type": "string"
          },
          "merchantReference": {
            "type": "string"
          },
          "paymentType": {
            "type": "string"
          },
          "startTime": {
            "type": "string",
            "format": "date-time"
          },
          "endTime": {
            "type": "string",
            "format": "date-time"
          },
          "consumptionWh": {
            "type": "integer",
            "format": "int32"
          },
          "consumptionKwh": {
            "type": "number",
            "format": "double"
          },
          "priceType": {
            "type": "string"
          },
          "unitPrice": {
            "type": "number",
            "format": "double"
          },
          "vatPercent": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "totalCostInclVat": {
            "type": "number",
            "format": "double"
          },
          "totalCostExclVat": {
            "type": "number",
            "format": "double"
          },
          "totalVatAmount": {
            "type": "number",
            "format": "double"
          },
          "chargerStartTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "chargerEndTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "siteBrandingResponse": {
        "type": "object",
        "properties": {
          "siteId": {
            "type": "integer",
            "format": "int64"
          },
          "companyName": {
            "type": "string"
          },
          "vatNumber": {
            "type": "string"
          },
          "logoFile": {
            "type": "string"
          },
          "termsConditionsUrl": {
            "type": "string"
          },
          "supportText": {
            "type": "string"
          },
          "primaryColor": {
            "type": "string"
          },
          "secondaryColor": {
            "type": "string"
          },
          "backgroundColor": {
            "type": "string"
          },
          "countryCode": {
            "type": "string"
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "splitRevenueNoSplitDto": {
        "type": "object",
        "properties": {
          "sessionCount": {
            "type": "integer",
            "format": "int32"
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "splitRevenueRecipientDto": {
        "type": "object",
        "properties": {
          "balanceAccountId": {
            "type": "string"
          },
          "friendlyName": {
            "type": "string"
          },
          "sessionCount": {
            "type": "integer",
            "format": "int32"
          },
          "amountMinor": {
            "type": "integer",
            "format": "int64"
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "splitRevenueSessionDto": {
        "type": "object",
        "properties": {
          "expressSessionId": {
            "type": "string"
          },
          "chargerId": {
            "type": "string"
          },
          "startTime": {
            "type": "string",
            "format": "date-time"
          },
          "stopTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sessionTotal": {
            "type": "number",
            "format": "double"
          },
          "amountMinor": {
            "type": "integer",
            "format": "int64"
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "stream": {
        "type": "object",
        "properties": {
          "canRead": {
            "type": "boolean"
          },
          "canWrite": {
            "type": "boolean"
          },
          "canSeek": {
            "type": "boolean"
          },
          "canTimeout": {
            "type": "boolean"
          },
          "length": {
            "type": "integer",
            "format": "int64"
          },
          "position": {
            "type": "integer",
            "format": "int64"
          },
          "readTimeout": {
            "type": "integer",
            "format": "int32"
          },
          "writeTimeout": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "updateExpressChargerRequestBody": {
        "type": "object",
        "properties": {
          "urlKey": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "sockets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/expressSocketPriceRequest"
            }
          }
        }
      },
      "updateExpressChargerResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "chargerId": {
            "type": "string"
          },
          "urlKey": {
            "type": "string"
          },
          "connectionType": {
            "type": "string"
          },
          "chargerType": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "sockets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/expressSocketPriceResponse"
            }
          }
        }
      },
      "updateExpressSettingsRequestBody": {
        "type": "object",
        "properties": {
          "companyName": {
            "type": "string"
          },
          "vatNumber": {
            "type": "string"
          },
          "termsConditionsUrl": {
            "type": "string"
          },
          "supportText": {
            "type": "string"
          },
          "fungAccountId": {
            "type": "string"
          },
          "fungPaymentProfileId": {
            "type": "string"
          },
          "primaryColor": {
            "type": "string"
          },
          "secondaryColor": {
            "type": "string"
          },
          "backgroundColor": {
            "type": "string"
          },
          "logoBase64": {
            "type": "string"
          }
        }
      },
      "updateExpressSettingsResponse": {
        "type": "object",
        "properties": {
          "companyName": {
            "type": "string"
          },
          "vatNumber": {
            "type": "string"
          },
          "logoFile": {
            "type": "string"
          },
          "termsConditionsUrl": {
            "type": "string"
          },
          "supportText": {
            "type": "string"
          },
          "fungAccountId": {
            "type": "string"
          },
          "fungPaymentProfileId": {
            "type": "string"
          },
          "primaryColor": {
            "type": "string"
          },
          "secondaryColor": {
            "type": "string"
          },
          "backgroundColor": {
            "type": "string"
          },
          "defaultCountryCode": {
            "type": "string"
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "updateSiteBrandingRequestBody": {
        "type": "object",
        "properties": {
          "companyName": {
            "type": "string"
          },
          "vatNumber": {
            "type": "string"
          },
          "termsConditionsUrl": {
            "type": "string"
          },
          "supportText": {
            "type": "string"
          },
          "primaryColor": {
            "type": "string"
          },
          "secondaryColor": {
            "type": "string"
          },
          "backgroundColor": {
            "type": "string"
          },
          "logoBase64": {
            "type": "string"
          },
          "countryCode": {
            "type": "string"
          }
        }
      }
    },
    "securitySchemes": {
      "apiKey": {
        "type": "apiKey",
        "description": "The API key for the customer",
        "name": "x-api-key",
        "in": "header"
      },
      "bearer": {
        "type": "http",
        "description": "The bearer token for the user",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "functionKey": {
        "type": "apiKey",
        "description": "The Function key configured to invoke the function",
        "name": "x-function-key",
        "in": "header"
      }
    }
  }
}