{
  "openapi": "3.1.0",
  "info": {
    "title": "ChargeBridge OCPI Adapter",
    "version": "2.2.1",
    "description": "OCPI 2.2.1 Protocol Adapter for the ChargeBridge EV Roaming Hub. Implements all 9 OCPI modules: Credentials, Locations, Sessions, CDRs, Tariffs, Tokens, Commands, HubClientInfo, and ChargingProfiles.",
    "contact": {
      "name": "ChargeBridge Engineering"
    },
    "license": {
      "name": "Proprietary"
    }
  },
  "servers": [
    {
      "url": "http://localhost:3000",
      "description": "Local development"
    },
    {
      "url": "https://api.dev.egridium.com",
      "description": "Development environment"
    }
  ],
  "tags": [
    {
      "name": "Versions",
      "description": "OCPI version discovery"
    },
    {
      "name": "Credentials",
      "description": "OCPI credential exchange and registration"
    },
    {
      "name": "Locations",
      "description": "Charge point locations, EVSEs, and connectors"
    },
    {
      "name": "Sessions",
      "description": "Charging sessions and charging preferences"
    },
    {
      "name": "CDRs",
      "description": "Charge Detail Records"
    },
    {
      "name": "Tariffs",
      "description": "Charging tariffs and pricing"
    },
    {
      "name": "Tokens",
      "description": "Authorization tokens and token authorization"
    },
    {
      "name": "Commands",
      "description": "Remote commands (start/stop session, reserve, unlock)"
    },
    {
      "name": "HubClientInfo",
      "description": "Hub client information for connected parties"
    },
    {
      "name": "ChargingProfiles",
      "description": "Smart charging profiles management"
    },
    {
      "name": "Admin",
      "description": "Internal admin endpoints for testing and party management"
    },
    {
      "name": "Hub Federation",
      "description": "Cross-hub federation and peer management"
    }
  ],
  "paths": {
    "/ocpi/versions": {
      "get": {
        "tags": ["Versions"],
        "summary": "Get supported OCPI versions",
        "operationId": "getVersions",
        "security": [],
        "responses": {
          "200": {
            "description": "List of supported OCPI versions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "version": {
                            "type": "string"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          }
                        }
                      }
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1": {
      "get": {
        "tags": ["Versions"],
        "summary": "Get version 2.2.1 details and endpoints",
        "operationId": "getVersionDetails",
        "security": [],
        "responses": {
          "200": {
            "description": "OCPI 2.2.1 version details with available endpoints",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "version": {
                          "type": "string",
                          "example": "2.2.1"
                        },
                        "endpoints": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "identifier": {
                                "type": "string"
                              },
                              "role": {
                                "type": "string",
                                "enum": ["SENDER", "RECEIVER"]
                              },
                              "url": {
                                "type": "string",
                                "format": "uri"
                              }
                            }
                          }
                        }
                      }
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/credentials": {
      "get": {
        "tags": ["Credentials"],
        "summary": "Get credentials",
        "operationId": "getCredentials",
        "responses": {
          "200": {
            "description": "Current credentials",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Credential"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 2001
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": ["Credentials"],
        "summary": "Register credentials (initial handshake)",
        "operationId": "postCredentials",
        "requestBody": {
          "description": "Credentials to register",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Credential"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Credentials registered successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Credential"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "400": {
            "description": "Invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 2001
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": ["Credentials"],
        "summary": "Update credentials",
        "operationId": "putCredentials",
        "requestBody": {
          "description": "Updated credentials",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Credential"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Credentials updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Credential"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "400": {
            "description": "Invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 2001
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": ["Credentials"],
        "summary": "Unregister (revoke credentials)",
        "operationId": "deleteCredentials",
        "responses": {
          "200": {
            "description": "Credentials revoked",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 2001
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/locations": {
      "get": {
        "tags": ["Locations"],
        "summary": "Get list of locations (Sender interface)",
        "operationId": "getLocations",
        "parameters": [
          {
            "name": "date_from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Filter: only return objects last updated after this timestamp"
          },
          {
            "name": "date_to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Filter: only return objects last updated before this timestamp"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Pagination offset"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000
            },
            "description": "Pagination limit"
          }
        ],
        "responses": {
          "200": {
            "description": "List of locations",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Location"
                      }
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/locations/{countryCode}/{partyId}/{locationId}": {
      "get": {
        "tags": ["Locations"],
        "summary": "Get a specific location",
        "operationId": "getLocation",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "locationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Location ID (max 36 chars)"
          }
        ],
        "responses": {
          "200": {
            "description": "Location details",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Location"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "404": {
            "description": "Location not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 2001
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": ["Locations"],
        "summary": "Create or replace a location (Receiver interface)",
        "operationId": "putLocation",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "locationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Location ID (max 36 chars)"
          }
        ],
        "requestBody": {
          "description": "Location object",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Location"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Location updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "201": {
            "description": "Location created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": ["Locations"],
        "summary": "Partially update a location (Receiver interface)",
        "operationId": "patchLocation",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "locationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Location ID (max 36 chars)"
          }
        ],
        "requestBody": {
          "description": "Partial location update",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LocationPatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Location patched",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "404": {
            "description": "Location not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 2001
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/locations/{countryCode}/{partyId}/{locationId}/{evseUid}": {
      "get": {
        "tags": ["Locations"],
        "summary": "Get a specific EVSE",
        "operationId": "getEvse",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "locationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Location ID (max 36 chars)"
          },
          {
            "name": "evseUid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "EVSE UID (max 39 chars)"
          }
        ],
        "responses": {
          "200": {
            "description": "EVSE details",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/EVSE"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "404": {
            "description": "EVSE not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 2001
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": ["Locations"],
        "summary": "Create or replace an EVSE",
        "operationId": "putEvse",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "locationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Location ID (max 36 chars)"
          },
          {
            "name": "evseUid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "EVSE UID (max 39 chars)"
          }
        ],
        "requestBody": {
          "description": "EVSE object",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EVSE"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "EVSE updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "201": {
            "description": "EVSE created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": ["Locations"],
        "summary": "Partially update an EVSE",
        "operationId": "patchEvse",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "locationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Location ID (max 36 chars)"
          },
          {
            "name": "evseUid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "EVSE UID (max 39 chars)"
          }
        ],
        "requestBody": {
          "description": "Partial EVSE update",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EVSEPatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "EVSE patched",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/locations/{countryCode}/{partyId}/{locationId}/{evseUid}/{connectorId}": {
      "get": {
        "tags": ["Locations"],
        "summary": "Get a specific connector",
        "operationId": "getConnector",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "locationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Location ID (max 36 chars)"
          },
          {
            "name": "evseUid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "EVSE UID (max 39 chars)"
          },
          {
            "name": "connectorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Connector ID (max 36 chars)"
          }
        ],
        "responses": {
          "200": {
            "description": "Connector details",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Connector"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "404": {
            "description": "Connector not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 2001
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": ["Locations"],
        "summary": "Create or replace a connector",
        "operationId": "putConnector",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "locationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Location ID (max 36 chars)"
          },
          {
            "name": "evseUid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "EVSE UID (max 39 chars)"
          },
          {
            "name": "connectorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Connector ID (max 36 chars)"
          }
        ],
        "requestBody": {
          "description": "Connector object",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Connector"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Connector updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "201": {
            "description": "Connector created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": ["Locations"],
        "summary": "Partially update a connector",
        "operationId": "patchConnector",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "locationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Location ID (max 36 chars)"
          },
          {
            "name": "evseUid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "EVSE UID (max 39 chars)"
          },
          {
            "name": "connectorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Connector ID (max 36 chars)"
          }
        ],
        "requestBody": {
          "description": "Partial connector update",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectorPatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Connector patched",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/sessions": {
      "get": {
        "tags": ["Sessions"],
        "summary": "Get list of sessions (Sender interface)",
        "operationId": "getSessions",
        "parameters": [
          {
            "name": "date_from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Filter: only return objects last updated after this timestamp"
          },
          {
            "name": "date_to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Filter: only return objects last updated before this timestamp"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Pagination offset"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000
            },
            "description": "Pagination limit"
          }
        ],
        "responses": {
          "200": {
            "description": "List of sessions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Session"
                      }
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/sessions/{countryCode}/{partyId}/{sessionId}": {
      "get": {
        "tags": ["Sessions"],
        "summary": "Get a specific session",
        "operationId": "getSession",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Session ID (max 36 chars)"
          }
        ],
        "responses": {
          "200": {
            "description": "Session details",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Session"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "404": {
            "description": "Session not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 2001
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": ["Sessions"],
        "summary": "Create or replace a session (Receiver interface)",
        "operationId": "putSession",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Session ID (max 36 chars)"
          }
        ],
        "requestBody": {
          "description": "Session object",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Session"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Session updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "201": {
            "description": "Session created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": ["Sessions"],
        "summary": "Partially update a session (Receiver interface)",
        "operationId": "patchSession",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Session ID (max 36 chars)"
          }
        ],
        "requestBody": {
          "description": "Partial session update",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SessionPatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Session patched",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/sessions/{sessionId}/charging_preferences": {
      "put": {
        "tags": ["Sessions"],
        "summary": "Set charging preferences for a session",
        "operationId": "setChargingPreferences",
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Session ID (max 36 chars)"
          }
        ],
        "requestBody": {
          "description": "Charging preferences",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChargingPreferences"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "CPO responded; response_type carries the outcome",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ChargingPreferencesResponse"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "404": {
            "description": "Unknown or inaccessible session",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 2001
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "CPO unreachable or returned an unrecognised response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 3000
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/cdrs": {
      "get": {
        "tags": ["CDRs"],
        "summary": "Get list of CDRs (Sender interface)",
        "operationId": "getCdrs",
        "parameters": [
          {
            "name": "date_from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Filter: only return objects last updated after this timestamp"
          },
          {
            "name": "date_to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Filter: only return objects last updated before this timestamp"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Pagination offset"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000
            },
            "description": "Pagination limit"
          }
        ],
        "responses": {
          "200": {
            "description": "List of CDRs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CDR"
                      }
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": ["CDRs"],
        "summary": "Push a new CDR (Receiver interface)",
        "operationId": "postCdr",
        "requestBody": {
          "description": "CDR object",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CDR"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "CDR received successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "400": {
            "description": "Invalid CDR",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 2001
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Duplicate CDR",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 2001
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/cdrs/{cdrId}": {
      "get": {
        "tags": ["CDRs"],
        "summary": "Get a specific CDR by ID",
        "operationId": "getCdr",
        "parameters": [
          {
            "name": "cdrId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "CDR ID (max 39 chars)"
          }
        ],
        "responses": {
          "200": {
            "description": "CDR details",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CDR"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "404": {
            "description": "CDR not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 2001
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/cdrs/{countryCode}/{partyId}/{cdrId}": {
      "get": {
        "tags": ["CDRs"],
        "summary": "Get a CDR by composite ID",
        "operationId": "getCdrByCompositeId",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "cdrId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "CDR ID (max 39 chars)"
          }
        ],
        "responses": {
          "200": {
            "description": "CDR details",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CDR"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "404": {
            "description": "CDR not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 2001
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/cdrs/batch": {
      "post": {
        "tags": ["CDRs"],
        "summary": "Submit batch of CDRs (high-volume ingestion)",
        "operationId": "postBatchCdrs",
        "requestBody": {
          "description": "Array of CDR objects (max 1000)",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CDR"
                },
                "maxItems": 1000
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Batch processing result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "accepted": {
                          "type": "integer"
                        },
                        "rejected": {
                          "type": "integer"
                        },
                        "errors": {
                          "type": "array",
                          "items": {
                            "type": "object"
                          }
                        }
                      }
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/tariffs": {
      "get": {
        "tags": ["Tariffs"],
        "summary": "Get list of tariffs (Sender interface)",
        "operationId": "getTariffs",
        "parameters": [
          {
            "name": "date_from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Filter: only return objects last updated after this timestamp"
          },
          {
            "name": "date_to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Filter: only return objects last updated before this timestamp"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Pagination offset"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000
            },
            "description": "Pagination limit"
          }
        ],
        "responses": {
          "200": {
            "description": "List of tariffs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tariff"
                      }
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/tariffs/{countryCode}/{partyId}/{tariffId}": {
      "get": {
        "tags": ["Tariffs"],
        "summary": "Get a specific tariff",
        "operationId": "getTariff",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "tariffId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Tariff ID (max 36 chars)"
          }
        ],
        "responses": {
          "200": {
            "description": "Tariff details",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Tariff"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "404": {
            "description": "Tariff not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 2001
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": ["Tariffs"],
        "summary": "Create or replace a tariff (Receiver interface)",
        "operationId": "putTariff",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "tariffId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Tariff ID (max 36 chars)"
          }
        ],
        "requestBody": {
          "description": "Tariff object",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Tariff"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tariff updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "201": {
            "description": "Tariff created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": ["Tariffs"],
        "summary": "Delete a tariff",
        "operationId": "deleteTariff",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "tariffId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Tariff ID (max 36 chars)"
          }
        ],
        "responses": {
          "200": {
            "description": "Tariff deleted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "404": {
            "description": "Tariff not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 2001
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/tokens": {
      "get": {
        "tags": ["Tokens"],
        "summary": "Get list of tokens (Sender interface)",
        "operationId": "getTokens",
        "parameters": [
          {
            "name": "date_from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Filter: only return objects last updated after this timestamp"
          },
          {
            "name": "date_to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Filter: only return objects last updated before this timestamp"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Pagination offset"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000
            },
            "description": "Pagination limit"
          }
        ],
        "responses": {
          "200": {
            "description": "List of tokens",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Token"
                      }
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/tokens/{countryCode}/{partyId}/{tokenUid}": {
      "get": {
        "tags": ["Tokens"],
        "summary": "Get a specific token",
        "operationId": "getToken",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "tokenUid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Token UID (max 36 chars)"
          }
        ],
        "responses": {
          "200": {
            "description": "Token details",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Token"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "404": {
            "description": "Token not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 2001
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": ["Tokens"],
        "summary": "Create or replace a token (Receiver interface)",
        "operationId": "putToken",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "tokenUid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Token UID (max 36 chars)"
          }
        ],
        "requestBody": {
          "description": "Token object",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Token"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Token updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "201": {
            "description": "Token created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": ["Tokens"],
        "summary": "Partially update a token (Receiver interface)",
        "operationId": "patchToken",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          },
          {
            "name": "tokenUid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Token UID (max 36 chars)"
          }
        ],
        "requestBody": {
          "description": "Partial token update",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenPatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Token patched",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/tokens/{tokenUid}/authorize": {
      "post": {
        "tags": ["Tokens"],
        "summary": "Real-time token authorization",
        "operationId": "postTokenAuthorize",
        "parameters": [
          {
            "name": "tokenUid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Token UID (max 36 chars)"
          }
        ],
        "requestBody": {
          "description": "Authorization request with optional location references",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenAuthorize"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Authorization decision",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "allowed": {
                          "type": "string",
                          "enum": [
                            "ALLOWED",
                            "BLOCKED",
                            "EXPIRED",
                            "NO_CREDIT",
                            "NOT_ALLOWED"
                          ]
                        }
                      }
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/commands/START_SESSION": {
      "post": {
        "tags": ["Commands"],
        "summary": "Send START_SESSION command",
        "operationId": "postStartSession",
        "requestBody": {
          "description": "Start session command",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartSessionCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Command response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommandResult"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/commands/STOP_SESSION": {
      "post": {
        "tags": ["Commands"],
        "summary": "Send STOP_SESSION command",
        "operationId": "postStopSession",
        "requestBody": {
          "description": "Stop session command",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StopSessionCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Command response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommandResult"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/commands/RESERVE_NOW": {
      "post": {
        "tags": ["Commands"],
        "summary": "Send RESERVE_NOW command",
        "operationId": "postReserveNow",
        "requestBody": {
          "description": "Reserve now command",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReserveNowCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Command response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommandResult"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/commands/CANCEL_RESERVATION": {
      "post": {
        "tags": ["Commands"],
        "summary": "Send CANCEL_RESERVATION command",
        "operationId": "postCancelReservation",
        "requestBody": {
          "description": "Cancel reservation command",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelReservationCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Command response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommandResult"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/commands/UNLOCK_CONNECTOR": {
      "post": {
        "tags": ["Commands"],
        "summary": "Send UNLOCK_CONNECTOR command",
        "operationId": "postUnlockConnector",
        "requestBody": {
          "description": "Unlock connector command",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UnlockConnectorCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Command response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommandResult"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/commands/{command}/{uid}": {
      "post": {
        "tags": ["Commands"],
        "summary": "Post async command result callback",
        "operationId": "postCommandResult",
        "parameters": [
          {
            "name": "command",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Command type"
          },
          {
            "name": "uid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Command UID"
          }
        ],
        "requestBody": {
          "description": "Async command result",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommandResult"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Result received",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/hubclientinfo": {
      "get": {
        "tags": ["HubClientInfo"],
        "summary": "Get list of hub client info (Sender interface)",
        "operationId": "getHubClientInfoList",
        "parameters": [
          {
            "name": "date_from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Filter: only return objects last updated after this timestamp"
          },
          {
            "name": "date_to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Filter: only return objects last updated before this timestamp"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Pagination offset"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000
            },
            "description": "Pagination limit"
          }
        ],
        "responses": {
          "200": {
            "description": "List of hub client info entries",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/HubClientInfo"
                      }
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/hubclientinfo/{countryCode}/{partyId}": {
      "get": {
        "tags": ["HubClientInfo"],
        "summary": "Get client info for a specific party",
        "operationId": "getHubClientInfo",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          }
        ],
        "responses": {
          "200": {
            "description": "Hub client info",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/HubClientInfo"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          },
          "404": {
            "description": "Client info not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 2001
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": ["HubClientInfo"],
        "summary": "Create or replace hub client info (Receiver interface)",
        "operationId": "putHubClientInfo",
        "parameters": [
          {
            "name": "countryCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "OCPI party ID (1-3 uppercase alphanumeric)"
          }
        ],
        "requestBody": {
          "description": "Hub client info object",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HubClientInfo"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Client info updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/chargingprofiles/result/{uid}": {
      "post": {
        "tags": ["ChargingProfiles"],
        "summary": "Post charging profile async result",
        "operationId": "postChargingProfileResult",
        "parameters": [
          {
            "name": "uid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Profile request UID"
          }
        ],
        "requestBody": {
          "description": "Charging profile result",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChargingProfileResult"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Result received",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/chargingprofiles/{sessionId}": {
      "get": {
        "tags": ["ChargingProfiles"],
        "summary": "Get active charging profile for a session",
        "operationId": "getActiveProfile",
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Session ID (max 36 chars)"
          },
          {
            "name": "duration",
            "in": "query",
            "schema": {
              "type": "integer"
            },
            "description": "Requested duration in seconds"
          },
          {
            "name": "response_url",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uri"
            },
            "description": "Callback URL for async response"
          }
        ],
        "responses": {
          "200": {
            "description": "Profile request accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": ["ChargingProfiles"],
        "summary": "Set a charging profile on a session",
        "operationId": "putSetProfile",
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Session ID (max 36 chars)"
          }
        ],
        "requestBody": {
          "description": "Charging profile to set",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetChargingProfile"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Profile request accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": ["ChargingProfiles"],
        "summary": "Clear/delete charging profile for a session",
        "operationId": "deleteProfile",
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Session ID (max 36 chars)"
          },
          {
            "name": "response_url",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uri"
            },
            "description": "Callback URL for async response"
          }
        ],
        "responses": {
          "200": {
            "description": "Clear request accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/ocpi/2.2.1/chargingprofiles/{sessionId}/activeProfile": {
      "put": {
        "tags": ["ChargingProfiles"],
        "summary": "Receive active profile update from CPO",
        "operationId": "putActiveProfileUpdate",
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Session ID (max 36 chars)"
          }
        ],
        "requestBody": {
          "description": "Active charging profile update",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActiveChargingProfileUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Profile update received",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null"
                    },
                    "status_code": {
                      "type": "integer",
                      "example": 1000
                    },
                    "status_message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["status_code", "timestamp"]
                }
              }
            }
          }
        }
      }
    },
    "/admin/parties/register": {
      "post": {
        "tags": ["Admin"],
        "summary": "Register a new party",
        "operationId": "adminRegisterParty",
        "security": [],
        "requestBody": {
          "description": "Party registration details",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdminRegisterParty"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Party registered",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "credentialId": {
                          "type": "string"
                        },
                        "tokenA": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/admin/parties": {
      "get": {
        "tags": ["Admin"],
        "summary": "List all registered parties",
        "operationId": "adminListParties",
        "security": [],
        "responses": {
          "200": {
            "description": "List of all parties",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Location": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": "string",
            "pattern": "^[A-Z]{2}$"
          },
          "party_id": {
            "type": "string",
            "pattern": "^[A-Z0-9]{1,3}$"
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "publish": {
            "type": "boolean"
          },
          "publish_allowed_to": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "uid": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 36
                },
                "type": {
                  "type": "string",
                  "enum": ["AD_HOC_USER", "APP_USER", "OTHER", "RFID"]
                },
                "visual_number": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64
                },
                "issuer": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64
                },
                "group_id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 36
                }
              },
              "additionalProperties": false
            }
          },
          "name": {
            "type": "string",
            "maxLength": 255
          },
          "address": {
            "type": "string",
            "minLength": 1,
            "maxLength": 45
          },
          "city": {
            "type": "string",
            "minLength": 1,
            "maxLength": 45
          },
          "postal_code": {
            "type": "string",
            "maxLength": 10
          },
          "state": {
            "type": "string",
            "maxLength": 20
          },
          "country": {
            "type": "string",
            "minLength": 1,
            "maxLength": 3
          },
          "coordinates": {
            "type": "object",
            "properties": {
              "latitude": {
                "type": "string",
                "pattern": "^-?\\d+(\\.\\d+)?$"
              },
              "longitude": {
                "type": "string",
                "pattern": "^-?\\d+(\\.\\d+)?$"
              }
            },
            "required": ["latitude", "longitude"],
            "additionalProperties": false
          },
          "related_locations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "latitude": {
                  "type": "string"
                },
                "longitude": {
                  "type": "string"
                },
                "name": {
                  "type": "object",
                  "properties": {
                    "language": {
                      "type": "string"
                    },
                    "text": {
                      "type": "string"
                    }
                  },
                  "required": ["language", "text"],
                  "additionalProperties": false
                }
              },
              "required": ["latitude", "longitude"],
              "additionalProperties": false
            }
          },
          "parking_type": {
            "type": "string"
          },
          "evses": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "uid": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 36
                },
                "evse_id": {
                  "type": "string",
                  "maxLength": 48
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "AVAILABLE",
                    "BLOCKED",
                    "CHARGING",
                    "INOPERATIVE",
                    "OUTOFORDER",
                    "PLANNED",
                    "REMOVED",
                    "RESERVED",
                    "UNKNOWN"
                  ]
                },
                "status_schedule": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "period_begin": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                      },
                      "period_end": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "AVAILABLE",
                          "BLOCKED",
                          "CHARGING",
                          "INOPERATIVE",
                          "OUTOFORDER",
                          "PLANNED",
                          "REMOVED",
                          "RESERVED",
                          "UNKNOWN"
                        ]
                      }
                    },
                    "required": ["period_begin", "status"],
                    "additionalProperties": false
                  }
                },
                "capabilities": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "CHARGING_PROFILE_CAPABLE",
                      "CHARGING_PREFERENCES_CAPABLE",
                      "CHIP_CARD_SUPPORT",
                      "CONTACTLESS_CARD_SUPPORT",
                      "CREDIT_CARD_PAYABLE",
                      "DEBIT_CARD_PAYABLE",
                      "PED_TERMINAL",
                      "REMOTE_START_STOP_CAPABLE",
                      "RESERVABLE",
                      "RFID_READER",
                      "START_SESSION_CONNECTOR_REQUIRED",
                      "TOKEN_GROUP_CAPABLE",
                      "UNLOCK_CAPABLE"
                    ]
                  }
                },
                "connectors": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 36
                      },
                      "standard": {
                        "type": "string",
                        "enum": [
                          "CHADEMO",
                          "CHAOJI",
                          "DOMESTIC_A",
                          "DOMESTIC_B",
                          "DOMESTIC_C",
                          "DOMESTIC_D",
                          "DOMESTIC_E",
                          "DOMESTIC_F",
                          "DOMESTIC_G",
                          "DOMESTIC_H",
                          "DOMESTIC_I",
                          "DOMESTIC_J",
                          "DOMESTIC_K",
                          "DOMESTIC_L",
                          "GBT_AC",
                          "GBT_DC",
                          "IEC_60309_2_single_16",
                          "IEC_60309_2_three_16",
                          "IEC_60309_2_three_32",
                          "IEC_60309_2_three_64",
                          "IEC_62196_T1",
                          "IEC_62196_T1_COMBO",
                          "IEC_62196_T2",
                          "IEC_62196_T2_COMBO",
                          "IEC_62196_T3A",
                          "IEC_62196_T3C",
                          "PANTOGRAPH_BOTTOM_UP",
                          "PANTOGRAPH_TOP_DOWN",
                          "TESLA_R",
                          "TESLA_S"
                        ]
                      },
                      "format": {
                        "type": "string",
                        "enum": ["SOCKET", "CABLE"]
                      },
                      "power_type": {
                        "type": "string",
                        "enum": [
                          "AC_1_PHASE",
                          "AC_2_PHASE",
                          "AC_2_PHASE_SPLIT",
                          "AC_3_PHASE",
                          "DC"
                        ]
                      },
                      "max_voltage": {
                        "type": "integer",
                        "exclusiveMinimum": true,
                        "minimum": 0
                      },
                      "max_amperage": {
                        "type": "integer",
                        "exclusiveMinimum": true,
                        "minimum": 0
                      },
                      "max_electric_power": {
                        "type": "integer",
                        "exclusiveMinimum": true,
                        "minimum": 0
                      },
                      "tariff_ids": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 36
                        }
                      },
                      "terms_and_conditions": {
                        "type": "string",
                        "format": "uri"
                      },
                      "last_updated": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                      }
                    },
                    "required": [
                      "id",
                      "standard",
                      "format",
                      "power_type",
                      "max_voltage",
                      "max_amperage",
                      "last_updated"
                    ],
                    "additionalProperties": true
                  },
                  "minItems": 1
                },
                "coordinates": {
                  "type": "object",
                  "properties": {
                    "latitude": {
                      "type": "string",
                      "pattern": "^-?\\d+(\\.\\d+)?$"
                    },
                    "longitude": {
                      "type": "string",
                      "pattern": "^-?\\d+(\\.\\d+)?$"
                    }
                  },
                  "required": ["latitude", "longitude"],
                  "additionalProperties": false
                },
                "floor_level": {
                  "type": "string",
                  "maxLength": 4
                },
                "physical_reference": {
                  "type": "string",
                  "maxLength": 16
                },
                "directions": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "language": {
                        "type": "string",
                        "minLength": 2,
                        "maxLength": 2
                      },
                      "text": {
                        "type": "string",
                        "minLength": 1
                      }
                    },
                    "required": ["language", "text"],
                    "additionalProperties": false
                  }
                },
                "parking_restrictions": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "images": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "thumbnail": {
                        "type": "string",
                        "format": "uri"
                      },
                      "category": {
                        "type": "string"
                      },
                      "type": {
                        "type": "string"
                      },
                      "width": {
                        "type": "integer",
                        "exclusiveMinimum": true,
                        "minimum": 0
                      },
                      "height": {
                        "type": "integer",
                        "exclusiveMinimum": true,
                        "minimum": 0
                      }
                    },
                    "required": ["url", "category", "type"],
                    "additionalProperties": false
                  }
                },
                "last_updated": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                }
              },
              "required": ["uid", "status", "connectors", "last_updated"],
              "additionalProperties": true
            },
            "default": []
          },
          "directions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "language": {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 2
                },
                "text": {
                  "type": "string",
                  "minLength": 1
                }
              },
              "required": ["language", "text"],
              "additionalProperties": false
            }
          },
          "operator": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "website": {
                "type": "string",
                "format": "uri"
              },
              "logo": {}
            },
            "required": ["name"],
            "additionalProperties": false
          },
          "suboperator": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "website": {
                "type": "string",
                "format": "uri"
              },
              "logo": {}
            },
            "required": ["name"],
            "additionalProperties": false
          },
          "owner": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "website": {
                "type": "string",
                "format": "uri"
              },
              "logo": {}
            },
            "required": ["name"],
            "additionalProperties": false
          },
          "facilities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "time_zone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "opening_times": {
            "type": "object",
            "properties": {
              "twentyfourseven": {
                "type": "boolean"
              },
              "regular_hours": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "weekday": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 7
                    },
                    "period_begin": {
                      "type": "string",
                      "pattern": "^\\d{2}:\\d{2}$"
                    },
                    "period_end": {
                      "type": "string",
                      "pattern": "^\\d{2}:\\d{2}$"
                    }
                  },
                  "required": ["weekday", "period_begin", "period_end"],
                  "additionalProperties": false
                }
              },
              "exceptional_openings": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "period_begin": {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                    },
                    "period_end": {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                    }
                  },
                  "required": ["period_begin", "period_end"],
                  "additionalProperties": false
                }
              },
              "exceptional_closings": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "period_begin": {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                    },
                    "period_end": {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                    }
                  },
                  "required": ["period_begin", "period_end"],
                  "additionalProperties": false
                }
              }
            },
            "required": ["twentyfourseven"],
            "additionalProperties": false
          },
          "charging_when_closed": {
            "type": "boolean"
          },
          "images": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "thumbnail": {
                  "type": "string",
                  "format": "uri"
                },
                "category": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "width": {
                  "type": "integer",
                  "exclusiveMinimum": true,
                  "minimum": 0
                },
                "height": {
                  "type": "integer",
                  "exclusiveMinimum": true,
                  "minimum": 0
                }
              },
              "required": ["url", "category", "type"],
              "additionalProperties": false
            }
          },
          "energy_mix": {
            "type": "object",
            "properties": {
              "is_green_energy": {
                "type": "boolean"
              },
              "energy_sources": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "minLength": 1
                    },
                    "percentage": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 100
                    }
                  },
                  "required": ["source", "percentage"],
                  "additionalProperties": false
                }
              },
              "environ_impact": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "category": {
                      "type": "string",
                      "minLength": 1
                    },
                    "amount": {
                      "type": "number"
                    }
                  },
                  "required": ["category", "amount"],
                  "additionalProperties": false
                }
              },
              "supplier_name": {
                "type": "string"
              },
              "energy_product_name": {
                "type": "string"
              }
            },
            "required": ["is_green_energy"],
            "additionalProperties": false
          },
          "last_updated": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          },
          "type": {
            "type": "string",
            "enum": [
              "ON_STREET",
              "PARKING_GARAGE",
              "UNDERGROUND_GARAGE",
              "PARKING_LOT",
              "OTHER",
              "UNKNOWN"
            ]
          }
        },
        "required": [
          "country_code",
          "party_id",
          "id",
          "publish",
          "address",
          "city",
          "country",
          "coordinates",
          "time_zone",
          "last_updated"
        ],
        "additionalProperties": true
      },
      "LocationPatch": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": "string",
            "pattern": "^[A-Z]{2}$"
          },
          "party_id": {
            "type": "string",
            "pattern": "^[A-Z0-9]{1,3}$"
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "publish": {
            "type": "boolean"
          },
          "publish_allowed_to": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "uid": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 36
                },
                "type": {
                  "type": "string",
                  "enum": ["AD_HOC_USER", "APP_USER", "OTHER", "RFID"]
                },
                "visual_number": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64
                },
                "issuer": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64
                },
                "group_id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 36
                }
              },
              "additionalProperties": false
            }
          },
          "name": {
            "type": "string",
            "maxLength": 255
          },
          "address": {
            "type": "string",
            "minLength": 1,
            "maxLength": 45
          },
          "city": {
            "type": "string",
            "minLength": 1,
            "maxLength": 45
          },
          "postal_code": {
            "type": "string",
            "maxLength": 10
          },
          "state": {
            "type": "string",
            "maxLength": 20
          },
          "country": {
            "type": "string",
            "minLength": 1,
            "maxLength": 3
          },
          "coordinates": {
            "type": "object",
            "properties": {
              "latitude": {
                "type": "string",
                "pattern": "^-?\\d+(\\.\\d+)?$"
              },
              "longitude": {
                "type": "string",
                "pattern": "^-?\\d+(\\.\\d+)?$"
              }
            },
            "required": ["latitude", "longitude"],
            "additionalProperties": false
          },
          "related_locations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "latitude": {
                  "type": "string"
                },
                "longitude": {
                  "type": "string"
                },
                "name": {
                  "type": "object",
                  "properties": {
                    "language": {
                      "type": "string"
                    },
                    "text": {
                      "type": "string"
                    }
                  },
                  "required": ["language", "text"],
                  "additionalProperties": false
                }
              },
              "required": ["latitude", "longitude"],
              "additionalProperties": false
            }
          },
          "parking_type": {
            "type": "string"
          },
          "evses": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "uid": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 36
                },
                "evse_id": {
                  "type": "string",
                  "maxLength": 48
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "AVAILABLE",
                    "BLOCKED",
                    "CHARGING",
                    "INOPERATIVE",
                    "OUTOFORDER",
                    "PLANNED",
                    "REMOVED",
                    "RESERVED",
                    "UNKNOWN"
                  ]
                },
                "status_schedule": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "period_begin": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                      },
                      "period_end": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "AVAILABLE",
                          "BLOCKED",
                          "CHARGING",
                          "INOPERATIVE",
                          "OUTOFORDER",
                          "PLANNED",
                          "REMOVED",
                          "RESERVED",
                          "UNKNOWN"
                        ]
                      }
                    },
                    "required": ["period_begin", "status"],
                    "additionalProperties": false
                  }
                },
                "capabilities": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "CHARGING_PROFILE_CAPABLE",
                      "CHARGING_PREFERENCES_CAPABLE",
                      "CHIP_CARD_SUPPORT",
                      "CONTACTLESS_CARD_SUPPORT",
                      "CREDIT_CARD_PAYABLE",
                      "DEBIT_CARD_PAYABLE",
                      "PED_TERMINAL",
                      "REMOTE_START_STOP_CAPABLE",
                      "RESERVABLE",
                      "RFID_READER",
                      "START_SESSION_CONNECTOR_REQUIRED",
                      "TOKEN_GROUP_CAPABLE",
                      "UNLOCK_CAPABLE"
                    ]
                  }
                },
                "connectors": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 36
                      },
                      "standard": {
                        "type": "string",
                        "enum": [
                          "CHADEMO",
                          "CHAOJI",
                          "DOMESTIC_A",
                          "DOMESTIC_B",
                          "DOMESTIC_C",
                          "DOMESTIC_D",
                          "DOMESTIC_E",
                          "DOMESTIC_F",
                          "DOMESTIC_G",
                          "DOMESTIC_H",
                          "DOMESTIC_I",
                          "DOMESTIC_J",
                          "DOMESTIC_K",
                          "DOMESTIC_L",
                          "GBT_AC",
                          "GBT_DC",
                          "IEC_60309_2_single_16",
                          "IEC_60309_2_three_16",
                          "IEC_60309_2_three_32",
                          "IEC_60309_2_three_64",
                          "IEC_62196_T1",
                          "IEC_62196_T1_COMBO",
                          "IEC_62196_T2",
                          "IEC_62196_T2_COMBO",
                          "IEC_62196_T3A",
                          "IEC_62196_T3C",
                          "PANTOGRAPH_BOTTOM_UP",
                          "PANTOGRAPH_TOP_DOWN",
                          "TESLA_R",
                          "TESLA_S"
                        ]
                      },
                      "format": {
                        "type": "string",
                        "enum": ["SOCKET", "CABLE"]
                      },
                      "power_type": {
                        "type": "string",
                        "enum": [
                          "AC_1_PHASE",
                          "AC_2_PHASE",
                          "AC_2_PHASE_SPLIT",
                          "AC_3_PHASE",
                          "DC"
                        ]
                      },
                      "max_voltage": {
                        "type": "integer",
                        "exclusiveMinimum": true,
                        "minimum": 0
                      },
                      "max_amperage": {
                        "type": "integer",
                        "exclusiveMinimum": true,
                        "minimum": 0
                      },
                      "max_electric_power": {
                        "type": "integer",
                        "exclusiveMinimum": true,
                        "minimum": 0
                      },
                      "tariff_ids": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 36
                        }
                      },
                      "terms_and_conditions": {
                        "type": "string",
                        "format": "uri"
                      },
                      "last_updated": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                      }
                    },
                    "required": [
                      "id",
                      "standard",
                      "format",
                      "power_type",
                      "max_voltage",
                      "max_amperage",
                      "last_updated"
                    ],
                    "additionalProperties": true
                  }
                },
                "coordinates": {
                  "type": "object",
                  "properties": {
                    "latitude": {
                      "type": "string",
                      "pattern": "^-?\\d+(\\.\\d+)?$"
                    },
                    "longitude": {
                      "type": "string",
                      "pattern": "^-?\\d+(\\.\\d+)?$"
                    }
                  },
                  "required": ["latitude", "longitude"],
                  "additionalProperties": false
                },
                "floor_level": {
                  "type": "string",
                  "maxLength": 4
                },
                "physical_reference": {
                  "type": "string",
                  "maxLength": 16
                },
                "last_updated": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                }
              },
              "required": ["uid"],
              "additionalProperties": true
            }
          },
          "directions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "language": {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 2
                },
                "text": {
                  "type": "string",
                  "minLength": 1
                }
              },
              "required": ["language", "text"],
              "additionalProperties": false
            }
          },
          "operator": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "website": {
                "type": "string",
                "format": "uri"
              },
              "logo": {}
            },
            "required": ["name"],
            "additionalProperties": false
          },
          "suboperator": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "website": {
                "type": "string",
                "format": "uri"
              },
              "logo": {}
            },
            "required": ["name"],
            "additionalProperties": false
          },
          "owner": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "website": {
                "type": "string",
                "format": "uri"
              },
              "logo": {}
            },
            "required": ["name"],
            "additionalProperties": false
          },
          "facilities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "time_zone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "opening_times": {
            "type": "object",
            "properties": {
              "twentyfourseven": {
                "type": "boolean"
              },
              "regular_hours": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "weekday": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 7
                    },
                    "period_begin": {
                      "type": "string",
                      "pattern": "^\\d{2}:\\d{2}$"
                    },
                    "period_end": {
                      "type": "string",
                      "pattern": "^\\d{2}:\\d{2}$"
                    }
                  },
                  "required": ["weekday", "period_begin", "period_end"],
                  "additionalProperties": false
                }
              },
              "exceptional_openings": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "period_begin": {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                    },
                    "period_end": {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                    }
                  },
                  "required": ["period_begin", "period_end"],
                  "additionalProperties": false
                }
              },
              "exceptional_closings": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "period_begin": {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                    },
                    "period_end": {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                    }
                  },
                  "required": ["period_begin", "period_end"],
                  "additionalProperties": false
                }
              }
            },
            "required": ["twentyfourseven"],
            "additionalProperties": false
          },
          "charging_when_closed": {
            "type": "boolean"
          },
          "images": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "thumbnail": {
                  "type": "string",
                  "format": "uri"
                },
                "category": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "width": {
                  "type": "integer",
                  "exclusiveMinimum": true,
                  "minimum": 0
                },
                "height": {
                  "type": "integer",
                  "exclusiveMinimum": true,
                  "minimum": 0
                }
              },
              "required": ["url", "category", "type"],
              "additionalProperties": false
            }
          },
          "energy_mix": {
            "type": "object",
            "properties": {
              "is_green_energy": {
                "type": "boolean"
              },
              "energy_sources": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "minLength": 1
                    },
                    "percentage": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 100
                    }
                  },
                  "required": ["source", "percentage"],
                  "additionalProperties": false
                }
              },
              "environ_impact": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "category": {
                      "type": "string",
                      "minLength": 1
                    },
                    "amount": {
                      "type": "number"
                    }
                  },
                  "required": ["category", "amount"],
                  "additionalProperties": false
                }
              },
              "supplier_name": {
                "type": "string"
              },
              "energy_product_name": {
                "type": "string"
              }
            },
            "required": ["is_green_energy"],
            "additionalProperties": false
          },
          "last_updated": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          },
          "type": {
            "type": "string",
            "enum": [
              "ON_STREET",
              "PARKING_GARAGE",
              "UNDERGROUND_GARAGE",
              "PARKING_LOT",
              "OTHER",
              "UNKNOWN"
            ]
          }
        },
        "additionalProperties": true
      },
      "EVSE": {
        "type": "object",
        "properties": {
          "uid": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "evse_id": {
            "type": "string",
            "maxLength": 48
          },
          "status": {
            "type": "string",
            "enum": [
              "AVAILABLE",
              "BLOCKED",
              "CHARGING",
              "INOPERATIVE",
              "OUTOFORDER",
              "PLANNED",
              "REMOVED",
              "RESERVED",
              "UNKNOWN"
            ]
          },
          "status_schedule": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "period_begin": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                },
                "period_end": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "AVAILABLE",
                    "BLOCKED",
                    "CHARGING",
                    "INOPERATIVE",
                    "OUTOFORDER",
                    "PLANNED",
                    "REMOVED",
                    "RESERVED",
                    "UNKNOWN"
                  ]
                }
              },
              "required": ["period_begin", "status"],
              "additionalProperties": false
            }
          },
          "capabilities": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "CHARGING_PROFILE_CAPABLE",
                "CHARGING_PREFERENCES_CAPABLE",
                "CHIP_CARD_SUPPORT",
                "CONTACTLESS_CARD_SUPPORT",
                "CREDIT_CARD_PAYABLE",
                "DEBIT_CARD_PAYABLE",
                "PED_TERMINAL",
                "REMOTE_START_STOP_CAPABLE",
                "RESERVABLE",
                "RFID_READER",
                "START_SESSION_CONNECTOR_REQUIRED",
                "TOKEN_GROUP_CAPABLE",
                "UNLOCK_CAPABLE"
              ]
            }
          },
          "connectors": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 36
                },
                "standard": {
                  "type": "string",
                  "enum": [
                    "CHADEMO",
                    "CHAOJI",
                    "DOMESTIC_A",
                    "DOMESTIC_B",
                    "DOMESTIC_C",
                    "DOMESTIC_D",
                    "DOMESTIC_E",
                    "DOMESTIC_F",
                    "DOMESTIC_G",
                    "DOMESTIC_H",
                    "DOMESTIC_I",
                    "DOMESTIC_J",
                    "DOMESTIC_K",
                    "DOMESTIC_L",
                    "GBT_AC",
                    "GBT_DC",
                    "IEC_60309_2_single_16",
                    "IEC_60309_2_three_16",
                    "IEC_60309_2_three_32",
                    "IEC_60309_2_three_64",
                    "IEC_62196_T1",
                    "IEC_62196_T1_COMBO",
                    "IEC_62196_T2",
                    "IEC_62196_T2_COMBO",
                    "IEC_62196_T3A",
                    "IEC_62196_T3C",
                    "PANTOGRAPH_BOTTOM_UP",
                    "PANTOGRAPH_TOP_DOWN",
                    "TESLA_R",
                    "TESLA_S"
                  ]
                },
                "format": {
                  "type": "string",
                  "enum": ["SOCKET", "CABLE"]
                },
                "power_type": {
                  "type": "string",
                  "enum": [
                    "AC_1_PHASE",
                    "AC_2_PHASE",
                    "AC_2_PHASE_SPLIT",
                    "AC_3_PHASE",
                    "DC"
                  ]
                },
                "max_voltage": {
                  "type": "integer",
                  "exclusiveMinimum": true,
                  "minimum": 0
                },
                "max_amperage": {
                  "type": "integer",
                  "exclusiveMinimum": true,
                  "minimum": 0
                },
                "max_electric_power": {
                  "type": "integer",
                  "exclusiveMinimum": true,
                  "minimum": 0
                },
                "tariff_ids": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 36
                  }
                },
                "terms_and_conditions": {
                  "type": "string",
                  "format": "uri"
                },
                "last_updated": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                }
              },
              "required": [
                "id",
                "standard",
                "format",
                "power_type",
                "max_voltage",
                "max_amperage",
                "last_updated"
              ],
              "additionalProperties": true
            },
            "minItems": 1
          },
          "coordinates": {
            "type": "object",
            "properties": {
              "latitude": {
                "type": "string",
                "pattern": "^-?\\d+(\\.\\d+)?$"
              },
              "longitude": {
                "type": "string",
                "pattern": "^-?\\d+(\\.\\d+)?$"
              }
            },
            "required": ["latitude", "longitude"],
            "additionalProperties": false
          },
          "floor_level": {
            "type": "string",
            "maxLength": 4
          },
          "physical_reference": {
            "type": "string",
            "maxLength": 16
          },
          "directions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "language": {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 2
                },
                "text": {
                  "type": "string",
                  "minLength": 1
                }
              },
              "required": ["language", "text"],
              "additionalProperties": false
            }
          },
          "parking_restrictions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "images": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "thumbnail": {
                  "type": "string",
                  "format": "uri"
                },
                "category": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "width": {
                  "type": "integer",
                  "exclusiveMinimum": true,
                  "minimum": 0
                },
                "height": {
                  "type": "integer",
                  "exclusiveMinimum": true,
                  "minimum": 0
                }
              },
              "required": ["url", "category", "type"],
              "additionalProperties": false
            }
          },
          "last_updated": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          }
        },
        "required": ["uid", "status", "connectors", "last_updated"],
        "additionalProperties": true
      },
      "EVSEPatch": {
        "type": "object",
        "properties": {
          "uid": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "evse_id": {
            "type": "string",
            "maxLength": 48
          },
          "status": {
            "type": "string",
            "enum": [
              "AVAILABLE",
              "BLOCKED",
              "CHARGING",
              "INOPERATIVE",
              "OUTOFORDER",
              "PLANNED",
              "REMOVED",
              "RESERVED",
              "UNKNOWN"
            ]
          },
          "status_schedule": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "period_begin": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                },
                "period_end": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "AVAILABLE",
                    "BLOCKED",
                    "CHARGING",
                    "INOPERATIVE",
                    "OUTOFORDER",
                    "PLANNED",
                    "REMOVED",
                    "RESERVED",
                    "UNKNOWN"
                  ]
                }
              },
              "required": ["period_begin", "status"],
              "additionalProperties": false
            }
          },
          "capabilities": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "CHARGING_PROFILE_CAPABLE",
                "CHARGING_PREFERENCES_CAPABLE",
                "CHIP_CARD_SUPPORT",
                "CONTACTLESS_CARD_SUPPORT",
                "CREDIT_CARD_PAYABLE",
                "DEBIT_CARD_PAYABLE",
                "PED_TERMINAL",
                "REMOTE_START_STOP_CAPABLE",
                "RESERVABLE",
                "RFID_READER",
                "START_SESSION_CONNECTOR_REQUIRED",
                "TOKEN_GROUP_CAPABLE",
                "UNLOCK_CAPABLE"
              ]
            }
          },
          "connectors": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 36
                },
                "standard": {
                  "type": "string",
                  "enum": [
                    "CHADEMO",
                    "CHAOJI",
                    "DOMESTIC_A",
                    "DOMESTIC_B",
                    "DOMESTIC_C",
                    "DOMESTIC_D",
                    "DOMESTIC_E",
                    "DOMESTIC_F",
                    "DOMESTIC_G",
                    "DOMESTIC_H",
                    "DOMESTIC_I",
                    "DOMESTIC_J",
                    "DOMESTIC_K",
                    "DOMESTIC_L",
                    "GBT_AC",
                    "GBT_DC",
                    "IEC_60309_2_single_16",
                    "IEC_60309_2_three_16",
                    "IEC_60309_2_three_32",
                    "IEC_60309_2_three_64",
                    "IEC_62196_T1",
                    "IEC_62196_T1_COMBO",
                    "IEC_62196_T2",
                    "IEC_62196_T2_COMBO",
                    "IEC_62196_T3A",
                    "IEC_62196_T3C",
                    "PANTOGRAPH_BOTTOM_UP",
                    "PANTOGRAPH_TOP_DOWN",
                    "TESLA_R",
                    "TESLA_S"
                  ]
                },
                "format": {
                  "type": "string",
                  "enum": ["SOCKET", "CABLE"]
                },
                "power_type": {
                  "type": "string",
                  "enum": [
                    "AC_1_PHASE",
                    "AC_2_PHASE",
                    "AC_2_PHASE_SPLIT",
                    "AC_3_PHASE",
                    "DC"
                  ]
                },
                "max_voltage": {
                  "type": "integer",
                  "exclusiveMinimum": true,
                  "minimum": 0
                },
                "max_amperage": {
                  "type": "integer",
                  "exclusiveMinimum": true,
                  "minimum": 0
                },
                "max_electric_power": {
                  "type": "integer",
                  "exclusiveMinimum": true,
                  "minimum": 0
                },
                "tariff_ids": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 36
                  }
                },
                "terms_and_conditions": {
                  "type": "string",
                  "format": "uri"
                },
                "last_updated": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                }
              },
              "required": [
                "id",
                "standard",
                "format",
                "power_type",
                "max_voltage",
                "max_amperage",
                "last_updated"
              ],
              "additionalProperties": true
            }
          },
          "coordinates": {
            "type": "object",
            "properties": {
              "latitude": {
                "type": "string",
                "pattern": "^-?\\d+(\\.\\d+)?$"
              },
              "longitude": {
                "type": "string",
                "pattern": "^-?\\d+(\\.\\d+)?$"
              }
            },
            "required": ["latitude", "longitude"],
            "additionalProperties": false
          },
          "floor_level": {
            "type": "string",
            "maxLength": 4
          },
          "physical_reference": {
            "type": "string",
            "maxLength": 16
          },
          "last_updated": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          }
        },
        "additionalProperties": true
      },
      "Connector": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "standard": {
            "type": "string",
            "enum": [
              "CHADEMO",
              "CHAOJI",
              "DOMESTIC_A",
              "DOMESTIC_B",
              "DOMESTIC_C",
              "DOMESTIC_D",
              "DOMESTIC_E",
              "DOMESTIC_F",
              "DOMESTIC_G",
              "DOMESTIC_H",
              "DOMESTIC_I",
              "DOMESTIC_J",
              "DOMESTIC_K",
              "DOMESTIC_L",
              "GBT_AC",
              "GBT_DC",
              "IEC_60309_2_single_16",
              "IEC_60309_2_three_16",
              "IEC_60309_2_three_32",
              "IEC_60309_2_three_64",
              "IEC_62196_T1",
              "IEC_62196_T1_COMBO",
              "IEC_62196_T2",
              "IEC_62196_T2_COMBO",
              "IEC_62196_T3A",
              "IEC_62196_T3C",
              "PANTOGRAPH_BOTTOM_UP",
              "PANTOGRAPH_TOP_DOWN",
              "TESLA_R",
              "TESLA_S"
            ]
          },
          "format": {
            "type": "string",
            "enum": ["SOCKET", "CABLE"]
          },
          "power_type": {
            "type": "string",
            "enum": [
              "AC_1_PHASE",
              "AC_2_PHASE",
              "AC_2_PHASE_SPLIT",
              "AC_3_PHASE",
              "DC"
            ]
          },
          "max_voltage": {
            "type": "integer",
            "exclusiveMinimum": true,
            "minimum": 0
          },
          "max_amperage": {
            "type": "integer",
            "exclusiveMinimum": true,
            "minimum": 0
          },
          "max_electric_power": {
            "type": "integer",
            "exclusiveMinimum": true,
            "minimum": 0
          },
          "tariff_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 36
            }
          },
          "terms_and_conditions": {
            "type": "string",
            "format": "uri"
          },
          "last_updated": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          }
        },
        "required": [
          "id",
          "standard",
          "format",
          "power_type",
          "max_voltage",
          "max_amperage",
          "last_updated"
        ],
        "additionalProperties": true
      },
      "ConnectorPatch": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "standard": {
            "type": "string",
            "enum": [
              "CHADEMO",
              "CHAOJI",
              "DOMESTIC_A",
              "DOMESTIC_B",
              "DOMESTIC_C",
              "DOMESTIC_D",
              "DOMESTIC_E",
              "DOMESTIC_F",
              "DOMESTIC_G",
              "DOMESTIC_H",
              "DOMESTIC_I",
              "DOMESTIC_J",
              "DOMESTIC_K",
              "DOMESTIC_L",
              "GBT_AC",
              "GBT_DC",
              "IEC_60309_2_single_16",
              "IEC_60309_2_three_16",
              "IEC_60309_2_three_32",
              "IEC_60309_2_three_64",
              "IEC_62196_T1",
              "IEC_62196_T1_COMBO",
              "IEC_62196_T2",
              "IEC_62196_T2_COMBO",
              "IEC_62196_T3A",
              "IEC_62196_T3C",
              "PANTOGRAPH_BOTTOM_UP",
              "PANTOGRAPH_TOP_DOWN",
              "TESLA_R",
              "TESLA_S"
            ]
          },
          "format": {
            "type": "string",
            "enum": ["SOCKET", "CABLE"]
          },
          "power_type": {
            "type": "string",
            "enum": [
              "AC_1_PHASE",
              "AC_2_PHASE",
              "AC_2_PHASE_SPLIT",
              "AC_3_PHASE",
              "DC"
            ]
          },
          "max_voltage": {
            "type": "integer",
            "exclusiveMinimum": true,
            "minimum": 0
          },
          "max_amperage": {
            "type": "integer",
            "exclusiveMinimum": true,
            "minimum": 0
          },
          "max_electric_power": {
            "type": "integer",
            "exclusiveMinimum": true,
            "minimum": 0
          },
          "tariff_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 36
            }
          },
          "terms_and_conditions": {
            "type": "string",
            "format": "uri"
          },
          "last_updated": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          }
        },
        "additionalProperties": true
      },
      "Session": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": "string",
            "pattern": "^[A-Z]{2}$"
          },
          "party_id": {
            "type": "string",
            "pattern": "^[A-Z0-9]{1,3}$"
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "start_date_time": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          },
          "end_date_time": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          },
          "kwh": {
            "type": "number",
            "minimum": 0
          },
          "cdr_token": {
            "type": "object",
            "properties": {
              "country_code": {
                "type": "string",
                "pattern": "^[A-Z]{2}$"
              },
              "party_id": {
                "type": "string",
                "pattern": "^[A-Z0-9]{1,3}$"
              },
              "uid": {
                "type": "string",
                "minLength": 1,
                "maxLength": 36
              },
              "type": {
                "type": "string",
                "enum": ["AD_HOC_USER", "APP_USER", "OTHER", "RFID"]
              },
              "contract_id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 36
              }
            },
            "required": [
              "country_code",
              "party_id",
              "uid",
              "type",
              "contract_id"
            ],
            "additionalProperties": false
          },
          "auth_method": {
            "type": "string",
            "enum": ["AUTH_REQUEST", "COMMAND", "WHITELIST"]
          },
          "authorization_reference": {
            "type": "string",
            "maxLength": 36
          },
          "location_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "evse_uid": {
            "type": "string",
            "minLength": 1,
            "maxLength": 39
          },
          "connector_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "meter_id": {
            "type": "string",
            "maxLength": 255
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Z]{3}$"
          },
          "charging_periods": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "start_date_time": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                },
                "dimensions": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "CURRENT",
                          "ENERGY",
                          "ENERGY_EXPORT",
                          "ENERGY_IMPORT",
                          "MAX_CURRENT",
                          "MIN_CURRENT",
                          "MAX_POWER",
                          "MIN_POWER",
                          "PARKING_TIME",
                          "POWER",
                          "RESERVATION_TIME",
                          "STATE_OF_CHARGE",
                          "TIME"
                        ]
                      },
                      "volume": {
                        "type": "number"
                      }
                    },
                    "required": ["type", "volume"],
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "tariff_id": {
                  "type": "string"
                }
              },
              "required": ["start_date_time", "dimensions"],
              "additionalProperties": false
            }
          },
          "total_cost": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "excl_vat": {
                    "type": "number"
                  },
                  "incl_vat": {
                    "type": "number"
                  }
                },
                "required": ["excl_vat"],
                "additionalProperties": false
              },
              {
                "type": "number",
                "minimum": 0
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": ["ACTIVE", "COMPLETED", "INVALID", "PENDING", "RESERVATION"]
          },
          "last_updated": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          }
        },
        "required": [
          "country_code",
          "party_id",
          "id",
          "start_date_time",
          "kwh",
          "cdr_token",
          "auth_method",
          "location_id",
          "evse_uid",
          "connector_id",
          "currency",
          "status",
          "last_updated"
        ],
        "additionalProperties": true
      },
      "SessionPatch": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": "string",
            "pattern": "^[A-Z]{2}$"
          },
          "party_id": {
            "type": "string",
            "pattern": "^[A-Z0-9]{1,3}$"
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "start_date_time": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          },
          "end_date_time": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          },
          "kwh": {
            "type": "number",
            "minimum": 0
          },
          "cdr_token": {
            "type": "object",
            "properties": {
              "country_code": {
                "type": "string",
                "pattern": "^[A-Z]{2}$"
              },
              "party_id": {
                "type": "string",
                "pattern": "^[A-Z0-9]{1,3}$"
              },
              "uid": {
                "type": "string",
                "minLength": 1,
                "maxLength": 36
              },
              "type": {
                "type": "string",
                "enum": ["AD_HOC_USER", "APP_USER", "OTHER", "RFID"]
              },
              "contract_id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 36
              }
            },
            "required": [
              "country_code",
              "party_id",
              "uid",
              "type",
              "contract_id"
            ],
            "additionalProperties": false
          },
          "auth_method": {
            "type": "string",
            "enum": ["AUTH_REQUEST", "COMMAND", "WHITELIST"]
          },
          "authorization_reference": {
            "type": "string",
            "maxLength": 36
          },
          "location_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "evse_uid": {
            "type": "string",
            "minLength": 1,
            "maxLength": 39
          },
          "connector_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "meter_id": {
            "type": "string",
            "maxLength": 255
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Z]{3}$"
          },
          "charging_periods": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "start_date_time": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                },
                "dimensions": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "CURRENT",
                          "ENERGY",
                          "ENERGY_EXPORT",
                          "ENERGY_IMPORT",
                          "MAX_CURRENT",
                          "MIN_CURRENT",
                          "MAX_POWER",
                          "MIN_POWER",
                          "PARKING_TIME",
                          "POWER",
                          "RESERVATION_TIME",
                          "STATE_OF_CHARGE",
                          "TIME"
                        ]
                      },
                      "volume": {
                        "type": "number"
                      }
                    },
                    "required": ["type", "volume"],
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "tariff_id": {
                  "type": "string"
                }
              },
              "required": ["start_date_time", "dimensions"],
              "additionalProperties": false
            }
          },
          "total_cost": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "excl_vat": {
                    "type": "number"
                  },
                  "incl_vat": {
                    "type": "number"
                  }
                },
                "required": ["excl_vat"],
                "additionalProperties": false
              },
              {
                "type": "number",
                "minimum": 0
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": ["ACTIVE", "COMPLETED", "INVALID", "PENDING", "RESERVATION"]
          },
          "last_updated": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          }
        },
        "additionalProperties": true
      },
      "ChargingPreferences": {
        "type": "object",
        "properties": {
          "profile_type": {
            "type": "string",
            "enum": ["CHEAP", "FAST", "GREEN", "REGULAR"]
          },
          "departure_time": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          },
          "energy_need": {
            "type": "number",
            "minimum": 0
          },
          "discharge_allowed": {
            "type": "boolean"
          }
        },
        "required": ["profile_type"],
        "additionalProperties": false
      },
      "ChargingPreferencesResponse": {
        "type": "object",
        "properties": {
          "profile_type": {
            "type": "string",
            "enum": ["CHEAP", "FAST", "GREEN", "REGULAR"]
          },
          "departure_time": {
            "type": "string",
            "format": "date-time"
          },
          "energy_need": {
            "type": "number"
          },
          "discharge_allowed": {
            "type": "boolean"
          },
          "response_type": {
            "type": "string",
            "enum": [
              "ACCEPTED",
              "DEPARTURE_REQUIRED",
              "ENERGY_NEED_REQUIRED",
              "NOT_POSSIBLE",
              "PROFILE_TYPE_NOT_SUPPORTED"
            ]
          }
        },
        "required": ["profile_type", "response_type"]
      },
      "CDR": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": "string",
            "pattern": "^[A-Z]{2}$"
          },
          "party_id": {
            "type": "string",
            "pattern": "^[A-Z0-9]{1,3}$"
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 39
          },
          "start_date_time": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          },
          "end_date_time": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          },
          "session_id": {
            "type": "string",
            "maxLength": 36
          },
          "cdr_token": {
            "type": "object",
            "properties": {
              "country_code": {
                "type": "string",
                "pattern": "^[A-Z]{2}$"
              },
              "party_id": {
                "type": "string",
                "pattern": "^[A-Z0-9]{1,3}$"
              },
              "uid": {
                "type": "string",
                "minLength": 1,
                "maxLength": 36
              },
              "type": {
                "type": "string",
                "enum": ["AD_HOC_USER", "APP_USER", "OTHER", "RFID"]
              },
              "contract_id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 36
              }
            },
            "required": [
              "country_code",
              "party_id",
              "uid",
              "type",
              "contract_id"
            ],
            "additionalProperties": false
          },
          "auth_method": {
            "type": "string",
            "enum": ["AUTH_REQUEST", "COMMAND", "WHITELIST"]
          },
          "authorization_reference": {
            "type": "string",
            "maxLength": 36
          },
          "cdr_location": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 36
              },
              "name": {
                "type": "string"
              },
              "address": {
                "type": "string",
                "minLength": 1,
                "maxLength": 45
              },
              "city": {
                "type": "string",
                "minLength": 1,
                "maxLength": 45
              },
              "postal_code": {
                "type": "string",
                "maxLength": 10
              },
              "state": {
                "type": "string",
                "maxLength": 20
              },
              "country": {
                "type": "string",
                "minLength": 1,
                "maxLength": 3
              },
              "coordinates": {
                "type": "object",
                "properties": {
                  "latitude": {
                    "type": "string",
                    "pattern": "^-?\\d+(\\.\\d+)?$"
                  },
                  "longitude": {
                    "type": "string",
                    "pattern": "^-?\\d+(\\.\\d+)?$"
                  }
                },
                "required": ["latitude", "longitude"],
                "additionalProperties": false
              },
              "evse_uid": {
                "type": "string",
                "minLength": 1,
                "maxLength": 39
              },
              "evse_id": {
                "type": "string",
                "maxLength": 48
              },
              "connector_id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 36
              },
              "connector_standard": {
                "type": "string",
                "enum": [
                  "CHADEMO",
                  "CHAOJI",
                  "DOMESTIC_A",
                  "DOMESTIC_B",
                  "DOMESTIC_C",
                  "DOMESTIC_D",
                  "DOMESTIC_E",
                  "DOMESTIC_F",
                  "DOMESTIC_G",
                  "DOMESTIC_H",
                  "DOMESTIC_I",
                  "DOMESTIC_J",
                  "DOMESTIC_K",
                  "DOMESTIC_L",
                  "GBT_AC",
                  "GBT_DC",
                  "IEC_60309_2_single_16",
                  "IEC_60309_2_three_16",
                  "IEC_60309_2_three_32",
                  "IEC_60309_2_three_64",
                  "IEC_62196_T1",
                  "IEC_62196_T1_COMBO",
                  "IEC_62196_T2",
                  "IEC_62196_T2_COMBO",
                  "IEC_62196_T3A",
                  "IEC_62196_T3C",
                  "PANTOGRAPH_BOTTOM_UP",
                  "PANTOGRAPH_TOP_DOWN",
                  "TESLA_R",
                  "TESLA_S"
                ]
              },
              "connector_format": {
                "type": "string",
                "enum": ["SOCKET", "CABLE"]
              },
              "connector_power_type": {
                "type": "string",
                "enum": [
                  "AC_1_PHASE",
                  "AC_2_PHASE",
                  "AC_2_PHASE_SPLIT",
                  "AC_3_PHASE",
                  "DC"
                ]
              }
            },
            "required": [
              "id",
              "address",
              "city",
              "country",
              "coordinates",
              "evse_uid",
              "connector_id",
              "connector_standard",
              "connector_format",
              "connector_power_type"
            ],
            "additionalProperties": false
          },
          "meter_id": {
            "type": "string",
            "maxLength": 255
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Z]{3}$"
          },
          "charging_periods": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "start_date_time": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                },
                "dimensions": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "CURRENT",
                          "ENERGY",
                          "ENERGY_EXPORT",
                          "ENERGY_IMPORT",
                          "MAX_CURRENT",
                          "MIN_CURRENT",
                          "MAX_POWER",
                          "MIN_POWER",
                          "PARKING_TIME",
                          "POWER",
                          "RESERVATION_TIME",
                          "STATE_OF_CHARGE",
                          "TIME"
                        ]
                      },
                      "volume": {
                        "type": "number"
                      }
                    },
                    "required": ["type", "volume"],
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "tariff_id": {
                  "type": "string"
                }
              },
              "required": ["start_date_time", "dimensions"],
              "additionalProperties": false
            },
            "minItems": 1
          },
          "signed_data": {
            "type": "object",
            "properties": {
              "encoding_method": {
                "type": "string",
                "minLength": 1
              },
              "encoding_method_version": {
                "type": "integer"
              },
              "public_key": {
                "type": "string"
              },
              "signed_values": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "nature": {
                      "type": "string",
                      "minLength": 1
                    },
                    "plain_data": {
                      "type": "string",
                      "minLength": 1
                    },
                    "signed_data": {
                      "type": "string",
                      "minLength": 1
                    }
                  },
                  "required": ["nature", "plain_data", "signed_data"],
                  "additionalProperties": false
                },
                "minItems": 1
              },
              "url": {
                "type": "string",
                "format": "uri"
              }
            },
            "required": ["encoding_method", "signed_values"],
            "additionalProperties": false
          },
          "total_cost": {
            "type": "object",
            "properties": {
              "excl_vat": {
                "type": "number"
              },
              "incl_vat": {
                "type": "number"
              }
            },
            "required": ["excl_vat"],
            "additionalProperties": false
          },
          "total_fixed_cost": {
            "type": "object",
            "properties": {
              "excl_vat": {
                "type": "number"
              },
              "incl_vat": {
                "type": "number"
              }
            },
            "required": ["excl_vat"],
            "additionalProperties": false
          },
          "total_energy": {
            "type": "number",
            "minimum": 0
          },
          "total_energy_cost": {
            "type": "object",
            "properties": {
              "excl_vat": {
                "type": "number"
              },
              "incl_vat": {
                "type": "number"
              }
            },
            "required": ["excl_vat"],
            "additionalProperties": false
          },
          "total_time": {
            "type": "number",
            "minimum": 0
          },
          "total_time_cost": {
            "type": "object",
            "properties": {
              "excl_vat": {
                "type": "number"
              },
              "incl_vat": {
                "type": "number"
              }
            },
            "required": ["excl_vat"],
            "additionalProperties": false
          },
          "total_parking_time": {
            "type": "number",
            "minimum": 0
          },
          "total_parking_cost": {
            "type": "object",
            "properties": {
              "excl_vat": {
                "type": "number"
              },
              "incl_vat": {
                "type": "number"
              }
            },
            "required": ["excl_vat"],
            "additionalProperties": false
          },
          "total_reservation_cost": {
            "type": "object",
            "properties": {
              "excl_vat": {
                "type": "number"
              },
              "incl_vat": {
                "type": "number"
              }
            },
            "required": ["excl_vat"],
            "additionalProperties": false
          },
          "remark": {
            "type": "string",
            "maxLength": 255
          },
          "invoice_reference_id": {
            "type": "string",
            "maxLength": 39
          },
          "credit": {
            "type": "boolean"
          },
          "credit_reference_id": {
            "type": "string",
            "maxLength": 39
          },
          "home_charging_compensation": {
            "type": "boolean"
          },
          "last_updated": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          }
        },
        "required": [
          "country_code",
          "party_id",
          "id",
          "start_date_time",
          "end_date_time",
          "cdr_token",
          "auth_method",
          "cdr_location",
          "currency",
          "charging_periods",
          "total_cost",
          "total_energy",
          "total_time",
          "last_updated"
        ],
        "additionalProperties": true
      },
      "Token": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": "string",
            "pattern": "^[A-Z]{2}$"
          },
          "party_id": {
            "type": "string",
            "pattern": "^[A-Z0-9]{1,3}$"
          },
          "uid": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "type": {
            "type": "string",
            "enum": ["AD_HOC_USER", "APP_USER", "OTHER", "RFID"]
          },
          "contract_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "visual_number": {
            "type": "string",
            "maxLength": 64
          },
          "issuer": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64
          },
          "group_id": {
            "type": "string",
            "maxLength": 36
          },
          "valid": {
            "type": "boolean"
          },
          "whitelist": {
            "type": "string",
            "enum": ["ALWAYS", "ALLOWED", "ALLOWED_OFFLINE", "NEVER"]
          },
          "language": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2
          },
          "default_profile_type": {
            "type": "string",
            "enum": ["CHEAP", "FAST", "GREEN", "REGULAR"]
          },
          "energy_contract": {
            "type": "object",
            "properties": {
              "supplier_name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64
              },
              "contract_id": {
                "type": "string",
                "maxLength": 64
              }
            },
            "required": ["supplier_name"],
            "additionalProperties": false
          },
          "last_updated": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          }
        },
        "required": [
          "country_code",
          "party_id",
          "uid",
          "type",
          "contract_id",
          "issuer",
          "valid",
          "whitelist",
          "last_updated"
        ],
        "additionalProperties": true
      },
      "TokenPatch": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": "string",
            "pattern": "^[A-Z]{2}$"
          },
          "party_id": {
            "type": "string",
            "pattern": "^[A-Z0-9]{1,3}$"
          },
          "uid": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "type": {
            "type": "string",
            "enum": ["AD_HOC_USER", "APP_USER", "OTHER", "RFID"]
          },
          "contract_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "visual_number": {
            "type": "string",
            "maxLength": 64
          },
          "issuer": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64
          },
          "group_id": {
            "type": "string",
            "maxLength": 36
          },
          "valid": {
            "type": "boolean"
          },
          "whitelist": {
            "type": "string",
            "enum": ["ALWAYS", "ALLOWED", "ALLOWED_OFFLINE", "NEVER"]
          },
          "language": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2
          },
          "default_profile_type": {
            "type": "string",
            "enum": ["CHEAP", "FAST", "GREEN", "REGULAR"]
          },
          "energy_contract": {
            "type": "object",
            "properties": {
              "supplier_name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64
              },
              "contract_id": {
                "type": "string",
                "maxLength": 64
              }
            },
            "required": ["supplier_name"],
            "additionalProperties": false
          },
          "last_updated": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          }
        },
        "additionalProperties": true
      },
      "TokenAuthorize": {
        "type": "object",
        "properties": {
          "location_references": {
            "type": "object",
            "properties": {
              "location_id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 36
              },
              "evse_uids": {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 39
                }
              }
            },
            "required": ["location_id"],
            "additionalProperties": false
          }
        },
        "additionalProperties": true
      },
      "Tariff": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": "string",
            "pattern": "^[A-Z]{2}$"
          },
          "party_id": {
            "type": "string",
            "pattern": "^[A-Z0-9]{1,3}$"
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Z]{3}$"
          },
          "type": {
            "type": "string",
            "enum": [
              "AD_HOC_PAYMENT",
              "PROFILE_CHEAP",
              "PROFILE_FAST",
              "PROFILE_GREEN",
              "REGULAR"
            ]
          },
          "tariff_alt_text": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "language": {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 2
                },
                "text": {
                  "type": "string",
                  "minLength": 1
                }
              },
              "required": ["language", "text"],
              "additionalProperties": false
            }
          },
          "tariff_alt_url": {
            "type": "string",
            "format": "uri"
          },
          "min_price": {
            "type": "object",
            "properties": {
              "excl_vat": {
                "type": "number"
              },
              "incl_vat": {
                "type": "number"
              }
            },
            "required": ["excl_vat"],
            "additionalProperties": false
          },
          "max_price": {
            "type": "object",
            "properties": {
              "excl_vat": {
                "type": "number"
              },
              "incl_vat": {
                "type": "number"
              }
            },
            "required": ["excl_vat"],
            "additionalProperties": false
          },
          "elements": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "price_components": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["ENERGY", "FLAT", "PARKING_TIME", "TIME"]
                      },
                      "price": {
                        "type": "number",
                        "minimum": 0
                      },
                      "vat": {
                        "type": "number",
                        "minimum": 0
                      },
                      "step_size": {
                        "type": "integer",
                        "exclusiveMinimum": true,
                        "minimum": 0
                      }
                    },
                    "required": ["type", "price", "step_size"],
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "restrictions": {
                  "type": "object",
                  "properties": {
                    "start_time": {
                      "type": "string",
                      "pattern": "^\\d{2}:\\d{2}$"
                    },
                    "end_time": {
                      "type": "string",
                      "pattern": "^\\d{2}:\\d{2}$"
                    },
                    "start_date": {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                    },
                    "end_date": {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                    },
                    "min_kwh": {
                      "type": "number",
                      "minimum": 0
                    },
                    "max_kwh": {
                      "type": "number",
                      "minimum": 0
                    },
                    "min_current": {
                      "type": "number",
                      "minimum": 0
                    },
                    "max_current": {
                      "type": "number",
                      "minimum": 0
                    },
                    "min_power": {
                      "type": "number",
                      "minimum": 0
                    },
                    "max_power": {
                      "type": "number",
                      "minimum": 0
                    },
                    "min_duration": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "max_duration": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "day_of_week": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "MONDAY",
                          "TUESDAY",
                          "WEDNESDAY",
                          "THURSDAY",
                          "FRIDAY",
                          "SATURDAY",
                          "SUNDAY"
                        ]
                      }
                    },
                    "reservation": {
                      "type": "string",
                      "enum": ["RESERVATION", "RESERVATION_EXPIRES"]
                    }
                  },
                  "additionalProperties": false
                }
              },
              "required": ["price_components"],
              "additionalProperties": false
            },
            "minItems": 1
          },
          "start_date_time": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          },
          "end_date_time": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          },
          "energy_mix": {
            "type": "object",
            "properties": {
              "is_green_energy": {
                "type": "boolean"
              },
              "energy_sources": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "minLength": 1
                    },
                    "percentage": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 100
                    }
                  },
                  "required": ["source", "percentage"],
                  "additionalProperties": false
                }
              },
              "environ_impact": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "category": {
                      "type": "string",
                      "minLength": 1
                    },
                    "amount": {
                      "type": "number"
                    }
                  },
                  "required": ["category", "amount"],
                  "additionalProperties": false
                }
              },
              "supplier_name": {
                "type": "string"
              },
              "energy_product_name": {
                "type": "string"
              }
            },
            "required": ["is_green_energy"],
            "additionalProperties": false
          },
          "last_updated": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          }
        },
        "required": [
          "country_code",
          "party_id",
          "id",
          "currency",
          "elements",
          "last_updated"
        ],
        "additionalProperties": true
      },
      "Credential": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "business_details": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "website": {
                "type": "string",
                "format": "uri"
              },
              "logo": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "thumbnail": {
                    "type": "string",
                    "format": "uri"
                  },
                  "category": {
                    "type": "string"
                  },
                  "type": {
                    "type": "string"
                  },
                  "width": {
                    "type": "integer",
                    "exclusiveMinimum": true,
                    "minimum": 0
                  },
                  "height": {
                    "type": "integer",
                    "exclusiveMinimum": true,
                    "minimum": 0
                  }
                },
                "required": ["url", "category", "type"],
                "additionalProperties": false
              }
            },
            "required": ["name"],
            "additionalProperties": false
          },
          "party_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 3
          },
          "country_code": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "role": {
                  "type": "string",
                  "enum": ["CPO", "EMSP", "HUB", "NAP", "NSP", "OTHER", "SCSP"]
                },
                "business_details": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 100
                    },
                    "website": {
                      "type": "string",
                      "format": "uri"
                    },
                    "logo": {
                      "type": "object",
                      "properties": {
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "thumbnail": {
                          "type": "string",
                          "format": "uri"
                        },
                        "category": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "width": {
                          "type": "integer",
                          "exclusiveMinimum": true,
                          "minimum": 0
                        },
                        "height": {
                          "type": "integer",
                          "exclusiveMinimum": true,
                          "minimum": 0
                        }
                      },
                      "required": ["url", "category", "type"],
                      "additionalProperties": false
                    }
                  },
                  "required": ["name"],
                  "additionalProperties": false
                },
                "party_id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 3
                },
                "country_code": {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 2
                }
              },
              "required": [
                "role",
                "business_details",
                "party_id",
                "country_code"
              ],
              "additionalProperties": false
            },
            "minItems": 1
          }
        },
        "required": ["token", "url", "roles"],
        "additionalProperties": true
      },
      "HubClientInfo": {
        "type": "object",
        "properties": {
          "party_id": {
            "type": "string",
            "pattern": "^[A-Z0-9]{1,3}$"
          },
          "country_code": {
            "type": "string",
            "pattern": "^[A-Z]{2}$"
          },
          "role": {
            "type": "string",
            "enum": ["CPO", "EMSP", "HUB", "NAP", "NSP", "OTHER", "SCSP"]
          },
          "status": {
            "type": "string",
            "enum": ["PLANNED", "CONNECTED", "OFFLINE", "SUSPENDED"]
          },
          "last_updated": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          }
        },
        "required": [
          "party_id",
          "country_code",
          "role",
          "status",
          "last_updated"
        ],
        "additionalProperties": true
      },
      "SetChargingProfile": {
        "type": "object",
        "properties": {
          "charging_profile": {
            "type": "object",
            "properties": {
              "charging_rate_unit": {
                "type": "string",
                "enum": ["W", "A"]
              },
              "min_charging_rate": {
                "type": "number",
                "minimum": 0
              },
              "start_date_time": {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
              },
              "duration": {
                "type": "integer",
                "minimum": 0
              },
              "charging_profile_period": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "start_period": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "limit": {
                      "type": "number",
                      "minimum": 0
                    },
                    "num_phases": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 3
                    }
                  },
                  "required": ["start_period", "limit"],
                  "additionalProperties": false
                },
                "minItems": 1
              }
            },
            "required": ["charging_rate_unit", "charging_profile_period"],
            "additionalProperties": false
          },
          "response_url": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": ["charging_profile", "response_url"],
        "additionalProperties": true
      },
      "ChargingProfileResult": {
        "type": "object",
        "properties": {
          "result": {
            "type": "string",
            "enum": ["ACCEPTED", "REJECTED", "UNKNOWN"]
          },
          "profile": {
            "type": "object",
            "properties": {
              "start_date_time": {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
              },
              "charging_profile": {
                "type": "object",
                "properties": {
                  "charging_rate_unit": {
                    "type": "string",
                    "enum": ["W", "A"]
                  },
                  "min_charging_rate": {
                    "type": "number",
                    "minimum": 0
                  },
                  "start_date_time": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
                  },
                  "duration": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "charging_profile_period": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "start_period": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "limit": {
                          "type": "number",
                          "minimum": 0
                        },
                        "num_phases": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 3
                        }
                      },
                      "required": ["start_period", "limit"],
                      "additionalProperties": false
                    },
                    "minItems": 1
                  }
                },
                "required": ["charging_rate_unit", "charging_profile_period"],
                "additionalProperties": false
              }
            },
            "required": ["start_date_time", "charging_profile"],
            "additionalProperties": false
          }
        },
        "required": ["result"],
        "additionalProperties": true
      },
      "ActiveChargingProfileUpdate": {
        "type": "object",
        "properties": {
          "start_date_time": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          },
          "charging_profile": {
            "type": "object",
            "properties": {
              "charging_rate_unit": {
                "type": "string",
                "enum": ["W", "A"]
              },
              "min_charging_rate": {
                "type": "number",
                "minimum": 0
              },
              "start_date_time": {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
              },
              "duration": {
                "type": "integer",
                "minimum": 0
              },
              "charging_profile_period": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "start_period": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "limit": {
                      "type": "number",
                      "minimum": 0
                    },
                    "num_phases": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 3
                    }
                  },
                  "required": ["start_period", "limit"],
                  "additionalProperties": false
                },
                "minItems": 1
              }
            },
            "required": ["charging_rate_unit", "charging_profile_period"],
            "additionalProperties": false
          }
        },
        "required": ["start_date_time", "charging_profile"],
        "additionalProperties": true
      },
      "StartSessionCommand": {
        "type": "object",
        "properties": {
          "response_url": {
            "type": "string",
            "format": "uri"
          },
          "token": {
            "type": "object",
            "properties": {
              "country_code": {
                "type": "string",
                "pattern": "^[A-Z]{2}$"
              },
              "party_id": {
                "type": "string",
                "pattern": "^[A-Z0-9]{1,3}$"
              },
              "uid": {
                "type": "string",
                "minLength": 1,
                "maxLength": 36
              },
              "type": {
                "type": "string",
                "enum": ["AD_HOC_USER", "APP_USER", "OTHER", "RFID"]
              },
              "contract_id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 36
              },
              "visual_number": {
                "type": "string",
                "maxLength": 64
              },
              "issuer": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64
              },
              "group_id": {
                "type": "string",
                "maxLength": 36
              },
              "valid": {
                "type": "boolean"
              },
              "whitelist": {
                "type": "string",
                "enum": ["ALWAYS", "ALLOWED", "ALLOWED_OFFLINE", "NEVER"]
              },
              "language": {
                "type": "string",
                "minLength": 2,
                "maxLength": 2
              },
              "default_profile_type": {
                "type": "string",
                "enum": ["CHEAP", "FAST", "GREEN", "REGULAR"]
              },
              "energy_contract": {
                "type": "object",
                "properties": {
                  "supplier_name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 64
                  },
                  "contract_id": {
                    "type": "string",
                    "maxLength": 64
                  }
                },
                "required": ["supplier_name"],
                "additionalProperties": false
              },
              "last_updated": {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
              }
            },
            "required": [
              "country_code",
              "party_id",
              "uid",
              "type",
              "contract_id",
              "issuer",
              "valid",
              "whitelist",
              "last_updated"
            ],
            "additionalProperties": true
          },
          "location_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "evse_uid": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "connector_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "authorization_reference": {
            "type": "string",
            "maxLength": 36
          }
        },
        "required": ["response_url", "token", "location_id"],
        "additionalProperties": true
      },
      "StopSessionCommand": {
        "type": "object",
        "properties": {
          "response_url": {
            "type": "string",
            "format": "uri"
          },
          "session_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          }
        },
        "required": ["response_url", "session_id"],
        "additionalProperties": true
      },
      "ReserveNowCommand": {
        "type": "object",
        "properties": {
          "response_url": {
            "type": "string",
            "format": "uri"
          },
          "token": {
            "type": "object",
            "properties": {
              "country_code": {
                "type": "string",
                "pattern": "^[A-Z]{2}$"
              },
              "party_id": {
                "type": "string",
                "pattern": "^[A-Z0-9]{1,3}$"
              },
              "uid": {
                "type": "string",
                "minLength": 1,
                "maxLength": 36
              },
              "type": {
                "type": "string",
                "enum": ["AD_HOC_USER", "APP_USER", "OTHER", "RFID"]
              },
              "contract_id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 36
              },
              "visual_number": {
                "type": "string",
                "maxLength": 64
              },
              "issuer": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64
              },
              "group_id": {
                "type": "string",
                "maxLength": 36
              },
              "valid": {
                "type": "boolean"
              },
              "whitelist": {
                "type": "string",
                "enum": ["ALWAYS", "ALLOWED", "ALLOWED_OFFLINE", "NEVER"]
              },
              "language": {
                "type": "string",
                "minLength": 2,
                "maxLength": 2
              },
              "default_profile_type": {
                "type": "string",
                "enum": ["CHEAP", "FAST", "GREEN", "REGULAR"]
              },
              "energy_contract": {
                "type": "object",
                "properties": {
                  "supplier_name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 64
                  },
                  "contract_id": {
                    "type": "string",
                    "maxLength": 64
                  }
                },
                "required": ["supplier_name"],
                "additionalProperties": false
              },
              "last_updated": {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
              }
            },
            "required": [
              "country_code",
              "party_id",
              "uid",
              "type",
              "contract_id",
              "issuer",
              "valid",
              "whitelist",
              "last_updated"
            ],
            "additionalProperties": true
          },
          "expiry_date": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"
          },
          "reservation_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "location_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "evse_uid": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "authorization_reference": {
            "type": "string",
            "maxLength": 36
          }
        },
        "required": [
          "response_url",
          "token",
          "expiry_date",
          "reservation_id",
          "location_id"
        ],
        "additionalProperties": true
      },
      "CancelReservationCommand": {
        "type": "object",
        "properties": {
          "response_url": {
            "type": "string",
            "format": "uri"
          },
          "reservation_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          }
        },
        "required": ["response_url", "reservation_id"],
        "additionalProperties": true
      },
      "UnlockConnectorCommand": {
        "type": "object",
        "properties": {
          "response_url": {
            "type": "string",
            "format": "uri"
          },
          "location_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "evse_uid": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "connector_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          }
        },
        "required": ["response_url", "location_id", "evse_uid", "connector_id"],
        "additionalProperties": true
      },
      "CommandResult": {
        "type": "object",
        "properties": {
          "result": {
            "type": "string",
            "enum": [
              "ACCEPTED",
              "CANCELED_RESERVATION",
              "EVSE_OCCUPIED",
              "EVSE_INOPERATIVE",
              "FAILED",
              "NOT_SUPPORTED",
              "REJECTED",
              "TIMEOUT",
              "UNKNOWN_RESERVATION"
            ]
          },
          "message": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "language": {
                      "type": "string",
                      "minLength": 2,
                      "maxLength": 2
                    },
                    "text": {
                      "type": "string",
                      "minLength": 1
                    }
                  },
                  "required": ["language", "text"],
                  "additionalProperties": false
                }
              },
              {
                "type": "object",
                "properties": {
                  "language": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 2
                  },
                  "text": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "required": ["language", "text"],
                "additionalProperties": false
              },
              {
                "type": "string",
                "minLength": 1
              }
            ],
            "nullable": true
          }
        },
        "required": ["result"],
        "additionalProperties": true
      },
      "AdminRegisterParty": {
        "type": "object",
        "properties": {
          "countryCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2
          },
          "partyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 3
          },
          "role": {
            "type": "string",
            "enum": ["CPO", "EMSP", "HUB", "NAP", "NSP", "OTHER", "SCSP"]
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": ["CPO", "EMSP", "HUB", "NAP", "NSP", "OTHER", "SCSP"]
            },
            "minItems": 1
          },
          "versionsUrl": {
            "type": "string",
            "format": "uri"
          },
          "businessDetails": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1
              },
              "website": {
                "type": "string",
                "format": "uri"
              }
            },
            "required": ["name"],
            "additionalProperties": false
          },
          "tokenA": {
            "type": "string"
          }
        },
        "required": ["countryCode", "partyId", "versionsUrl"],
        "additionalProperties": false
      },
      "AdminCredentialByToken": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": ["token"],
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "OCPIToken": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "Token",
        "description": "OCPI Token authentication. Pass the Token in the Authorization header as \"Token <your-token>\"."
      }
    },
    "parameters": {
      "countryCode": {
        "name": "countryCode",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string"
        },
        "description": "ISO 3166-1 alpha-2 country code"
      },
      "partyId": {
        "name": "partyId",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string"
        },
        "description": "OCPI party ID (1-3 uppercase alphanumeric)"
      }
    },
    "responses": {
      "OCPIError400": {
        "description": "Bad request — validation failed",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "data": {
                  "type": "null"
                },
                "status_code": {
                  "type": "integer",
                  "example": 2001
                },
                "status_message": {
                  "type": "string"
                },
                "timestamp": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            }
          }
        }
      },
      "OCPIError401": {
        "description": "Unauthorized — invalid or missing OCPI token",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "data": {
                  "type": "null"
                },
                "status_code": {
                  "type": "integer",
                  "example": 2001
                },
                "status_message": {
                  "type": "string"
                },
                "timestamp": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            }
          }
        }
      },
      "OCPIError404": {
        "description": "Resource not found",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "data": {
                  "type": "null"
                },
                "status_code": {
                  "type": "integer",
                  "example": 2001
                },
                "status_message": {
                  "type": "string"
                },
                "timestamp": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            }
          }
        }
      },
      "OCPIError500": {
        "description": "Internal server error",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "data": {
                  "type": "null"
                },
                "status_code": {
                  "type": "integer",
                  "example": 3000
                },
                "status_message": {
                  "type": "string"
                },
                "timestamp": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "OCPIToken": []
    }
  ]
}
