{
  "openapi": "3.0.3",
  "info": {
    "title": "Epic-Charging Server Application Report API",
    "description": "\n# Epic-Charging API\n\nWelcome to the Epic-Charging API documentation. This API gives you full control over your EV charging infrastructure, allowing you to manage chargers, monitor sessions, and generate reports.\n\n## Getting Started\n\nTo use the Epic-Charging API, you'll need:\n- An API Key (see the Authentication section)\n- A basic understanding of the resources available through the API\n\n## Base URL\n\nAll API URLs referenced in this documentation are relative to:\n```\nhttps://{{tenant}}.epiccharging.com/api/external/v1/\n```\n\n## Authentication\n\nThe Epic-Charging API uses API keys for authentication. Include your API key in all requests using the `Token-Authorization` header:\n\n```bash\ncurl -X GET https://{{tenant}}.epiccharging.com/api/external/v1/charger/ \\\n  -H \"Token-Authorization: your_api_key_here\"\n```\n\nYour API key carries privileges, so keep it secure. Do not share it in publicly accessible areas such as GitHub, client-side code, or public forums.\n\n## Rate Limiting\n\nAPI requests may be subject to rate limiting. If you exceed the rate limit, the API will respond with a `429 Too Many Requests` status code.\n\n## Error Responses\n\nThe API uses standard HTTP response codes to indicate success or failure:\n- 2xx: Success\n- 4xx: Client errors (invalid request, unauthorized, etc.)\n- 5xx: Server errors\n\nError responses include a JSON body with details about the error.\n",
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://{tenant}.epiccharging.com/api/external/v1",
      "description": "Server",
      "variables": {
        "tenant": {
          "default": "demo",
          "enum": [
            "demo",
            "gsspower",
            "anothercustomer"
          ]
        }
      }
    }
  ],
  "tags": [
    {
      "name": "Charger Port",
      "description": "Charger Ports represent the individual connector points where vehicles can be connected for charging.\n\nUse these endpoints to:\n- List all available charger ports across your network\n- Get detailed information about specific ports\n- Update port settings and configurations\n- Reserve ports for future use\n- Start and stop charging sessions\n- Cancel reservations\n\nEach charger port belongs to a parent charger and can have different connector types (J1772, CCS, CHADEMO, etc.)\nand power capacities. Ports also maintain status information about current charging activities.\n"
    },
    {
      "name": "Charger",
      "description": "Chargers are the physical stations containing one or more charging ports.\n\nThese endpoints allow you to:\n- List all chargers in your network with their current statuses\n- Get detailed information about specific chargers\n- View power, connectivity, and location information\n- See all ports associated with a charger\n- Create bulk chargers\n\nChargers contain important metadata about locations, payment types, power capabilities, \nand operating temperatures. A single charger typically houses multiple charging ports.\n"
    },
    {
      "name": "Report",
      "description": "The reporting API provides comprehensive data and metrics about your charging network.\n\nUse these endpoints to:\n- Get real-time status information for all chargers\n- Generate comprehensive charger reports\n- View detailed charging session history\n- Analyze fault data and error conditions\n- Track energy usage and transactions\n\nThese endpoints support filtering by date ranges, chargers, and other parameters to help\nyou generate specific reports for business intelligence, maintenance planning, and usage analytics.\n"
    },
    {
      "name": "User",
      "description": "The User API allows you to manage and retrieve information about system users.\n\nThese endpoints enable you to:\n- List all users with access to your charging network\n- View user details including attached ID tags and accessible chargers\n- See authorization levels and access rights\n\nUser management is essential for controlling access to chargers and tracking\nusage patterns across your charging infrastructure.\n"
    },
    {
      "name": "Location",
      "description": "Locations represent physical places where chargers are installed.\n\nUse these endpoints to:\n- Create multiple locations in a single operation\n- Manage location information including address, contact details, and coordinates\n- Associate chargers with specific locations\n\nLocations provide important context for chargers and help with geographic organization\nof your charging infrastructure.\n"
    }
  ],
  "security": [
    {
      "BearerAuth": []
    }
  ],
  "paths": {
    "/charger-port": {
      "get": {
        "operationId": "charger-port_list",
        "summary": "List Charger Ports",
        "description": "Retrieves a list of all charger ports with their current status and connector information.\n\nThis endpoint supports filtering by parameters like status and charger.\n\n## Permissions\n\nRequires a valid API key with read permissions for charger ports.\n",
        "parameters": [
          {
            "name": "charger__payment_type",
            "in": "query",
            "description": "Filter by payment type (Paid or Free)",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "Paid",
                "Free"
              ]
            }
          },
          {
            "name": "charger",
            "in": "query",
            "description": "Filter by specific charger UUID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status__in",
            "in": "query",
            "description": "Filter by charger port status (comma-separated list)",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DISABLED",
                "AVAILABLE",
                "STANDBY",
                "CHARGING",
                "OFFLINE",
                "FAULTED",
                "RESERVED",
                "UNAVAILABLE",
                "UNDEFINED",
                "NOT_CHARGING",
                "COMPLETE",
                "ASLEEP",
                "STARTING",
                "STOPPING",
                "WAITING_CHARGER",
                "WAITING_VEHICLE",
                "IN_PROGRESS",
                "FAILED_START",
                "FAILED_STOP",
                "NO_SESSION",
                "PREPARING",
                "SUSPENDED_EV",
                "SUSPENDED_EVSE",
                "UNPLUGGED",
                "UNPLUGGED_NOT_CHARGING",
                "UNPLUGGED_CHARGING",
                "PLUGGED_IN_NOT_CHARGING",
                "PLUGGED_IN_SUSPENDED_EV",
                "PLUGGED_IN_CHARGING",
                "CHARGING_COMPLETE",
                "CUSTOM_CHARGER",
                "CUSTOM_VEHICLE",
                "FINISHING"
              ]
            }
          },
          {
            "name": "location__in",
            "in": "query",
            "description": "Filter by location (comma-separated list)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordering",
            "in": "query",
            "description": "Field to order results by (prefix with - for descending order)",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "created_at",
                "-created_at",
                "custom_id",
                "-custom_id",
                "status",
                "-status",
                "parking_lot",
                "-parking_lot",
                "temperature",
                "-temperature",
                "max_power",
                "-max_power",
                "current_kilowatt_hour",
                "-current_kilowatt_hour",
                "start_charging_at",
                "-start_charging_at",
                "end_charging_at",
                "-end_charging_at",
                "charger_point_id",
                "-charger_point_id",
                "location_name",
                "-location_name"
              ]
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "A search term.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to return per page.",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The initial index from which to return the results.",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "count",
                    "results"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ChargerPortList"
                      }
                    }
                  }
                },
                "example": {
                  "count": 2,
                  "next": null,
                  "previous": null,
                  "results": [
                    {
                      "id": "123e4567-e89b-12d3-a456-426614174000",
                      "max_power": 22,
                      "charging_speed": 11,
                      "power": 11,
                      "connector_type": "J1772",
                      "status": {
                        "key": "AVAILABLE",
                        "value": "Available"
                      },
                      "charger": "223e4567-e89b-12d3-a456-426614174003"
                    }
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "Charger Port"
        ]
      }
    },
    "/charger-port/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "A UUID string identifying this Charger Port.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "operationId": "charger-port_read",
        "summary": "Get Charger Port Details",
        "description": "Gets detailed information about a specific charger port by ID, including connector specifications and active session details. Requires a valid API key.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChargerPort"
                }
              }
            }
          }
        },
        "tags": [
          "Charger Port"
        ]
      },
      "patch": {
        "operationId": "charger-port_partial_update",
        "summary": "Update Charger Port",
        "description": "Updates specific fields of a charger port, such as status or configuration settings. Requires a valid API key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChargerPortUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChargerPortUpdate"
                }
              }
            }
          }
        },
        "tags": [
          "Charger Port"
        ]
      }
    },
    "/charger-port/{id}/cancel_reservation": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "A UUID string identifying this Charger Port.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "patch": {
        "operationId": "charger-port_cancel_reservation",
        "summary": "Cancel Reservation",
        "description": "Cancels the reservation for charger port. The reservation_id must be provided.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "reservation_id"
                ],
                "properties": {
                  "reservation_id": {
                    "type": "integer",
                    "description": "Reservation identifier."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Charger Port"
        ]
      }
    },
    "/charger-port/{id}/reserve_now": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "A UUID string identifying this Charger Port.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "patch": {
        "operationId": "charger-port_reserve_now",
        "summary": "Reserve Charger Port",
        "description": "Reserves a charger port. The fields expiry_date_time, id_tag, and reservation_id must be included in the request body.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "expiry_date_time",
                  "id_tag",
                  "reservation_id"
                ],
                "properties": {
                  "expiry_date_time": {
                    "type": "string",
                    "format": "date-time",
                    "description": "Reservation expiry time in UTC format."
                  },
                  "id_tag": {
                    "type": "string",
                    "description": "Identification tag."
                  },
                  "parent_id_tag": {
                    "type": "string",
                    "description": "Parent Identification tag.",
                    "default": "SYS00TEM"
                  },
                  "reservation_id": {
                    "type": "integer",
                    "description": "Reservation ID."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Charger Port"
        ]
      }
    },
    "/charger-port/{id}/start": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "A UUID string identifying this Charger Port.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "patch": {
        "operationId": "charger-port_start",
        "summary": "Start Charging",
        "description": "Start a charger port to begin charging.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Charger Port"
        ]
      }
    },
    "/charger-port/{id}/stop": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "A UUID string identifying this Charger Port.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "patch": {
        "operationId": "charger-port_stop",
        "summary": "Stop Charging",
        "description": "Stop a charger port to end charging.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Charger Port"
        ]
      }
    },
    "/charger": {
      "get": {
        "operationId": "charger_list",
        "summary": "List Chargers",
        "description": "Retrieves a list of all available chargers with their current status and locations. Requires a valid API key.",
        "parameters": [
          {
            "name": "created_at",
            "in": "query",
            "description": "Filter by creation date",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "is_active",
            "in": "query",
            "description": "Filter by active status",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Filter by location",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter by charger status",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DISABLED",
                "AVAILABLE",
                "STANDBY",
                "CHARGING",
                "OFFLINE",
                "FAULTED",
                "RESERVED",
                "UNAVAILABLE"
              ]
            }
          },
          {
            "name": "number_phases",
            "in": "query",
            "description": "Filter by number of phases",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "1",
                "3"
              ]
            }
          },
          {
            "name": "current_type",
            "in": "query",
            "description": "Filter by current type",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "AC",
                "DC",
                "NACS"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to return per page",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The initial index from which to return the results",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "count",
                    "results"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ExternalAPIChargerList"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Charger"
        ]
      }
    },
    "/charger/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "A UUID string identifying this Charger.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "operationId": "charger_read",
        "summary": "Get Charger Details",
        "description": "Gets detailed information about a specific charger by ID, including technical specifications and current operational status. Requires a valid API key.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalAPIChargerRetrieve"
                }
              }
            }
          }
        },
        "tags": [
          "Charger"
        ]
      }
    },
    "/report/charger-status": {
      "get": {
        "operationId": "report_charger-status_list",
        "summary": "List Charger Statuses",
        "description": "Retrieves the current operational status of all chargers with detailed port information. Includes counts of chargers in each status category.",
        "parameters": [
          {
            "name": "charger",
            "in": "query",
            "description": "Filter by charger UUID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to return per page",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The initial index from which to return the results",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "count",
                    "results"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ExternalAPIReportChargerStatus"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Report"
        ]
      }
    },
    "/report/charger-status/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "A UUID string identifying this Charger.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "operationId": "report_charger-status_read",
        "summary": "Get Charger Status",
        "description": "Gets the current operational status of a specific charger by ID, including charger health and detailed port information.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalAPIReportChargerStatus"
                }
              }
            }
          }
        },
        "tags": [
          "Report"
        ]
      }
    },
    "/report/charger": {
      "get": {
        "operationId": "report_charger_list",
        "summary": "List Charger Reports",
        "description": "Generates a comprehensive report of all chargers with detailed information including location, owner, commission date, and total power usage. Supports pagination with a default limit of 100 records.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to return per page",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The initial index from which to return the results",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "count",
                    "results"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ReportCharger"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Report"
        ]
      }
    },
    "/report/charging-session": {
      "get": {
        "operationId": "report_charging-session_list",
        "summary": "List Charging Sessions",
        "description": "Provides a detailed report of all completed charging sessions including timestamps, energy delivered, and associated costs. Supports filtering by date ranges and pagination.",
        "parameters": [
          {
            "name": "plug_in_start_datetime__gte",
            "in": "query",
            "description": "Filter by plug-in start time (minimum)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "plug_in_start_datetime__lte",
            "in": "query",
            "description": "Filter by plug-in start time (maximum)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to return per page",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The initial index from which to return the results",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "count",
                    "results"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ReportChargingSession"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Report"
        ]
      }
    },
    "/report/faults": {
      "get": {
        "operationId": "report_faults_list",
        "summary": "List Faults",
        "description": "Lists all system fault events with detailed error information, categorized by charger. Supports filtering by charger ID and date range, with pagination.",
        "parameters": [
          {
            "name": "created_at__range",
            "in": "query",
            "description": "Filter by creation date range",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "created_at__gte",
            "in": "query",
            "description": "Filter by creation date (minimum)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "created_at__lte",
            "in": "query",
            "description": "Filter by creation date (maximum)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "charger",
            "in": "query",
            "description": "Filter by charger UUID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to return per page",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The initial index from which to return the results",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "count",
                    "results"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ReportFaults"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Report"
        ]
      }
    },
    "/report/transaction": {
      "get": {
        "operationId": "report_transaction_list",
        "summary": "List Transactions",
        "description": "Generates a transaction report with detailed charging session information including timestamps, energy usage, and charging duration. Supports filtering by charger, date range, and timestamps.",
        "parameters": [
          {
            "name": "start_datetime__gte",
            "in": "query",
            "description": "Filter by start date (minimum)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "start_datetime__lte",
            "in": "query",
            "description": "Filter by start date (maximum)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "stop_datetime__gte",
            "in": "query",
            "description": "Filter by stop date (minimum)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "stop_datetime__lte",
            "in": "query",
            "description": "Filter by stop date (maximum)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "charger__in",
            "in": "query",
            "description": "Filter by charger UUID (comma-separated list)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to return per page",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The initial index from which to return the results",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "count",
                    "results"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ReportTransaction"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Report"
        ]
      }
    },
    "/user": {
      "get": {
        "operationId": "user_list",
        "summary": "List Users",
        "description": "Retrieves a list of users with their attached ID tags and chargers. Only accessible with a valid API key.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to return per page",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The initial index from which to return the results",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "count",
                    "results"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ExternalAPIUser"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "tags": [
          "User"
        ]
      }
    },
    "/user/{uuid}": {
      "parameters": [
        {
          "name": "uuid",
          "in": "path",
          "description": "UUID of the user",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "operationId": "user_read",
        "summary": "Get User Details",
        "description": "Gets detailed information about a specific user by UUID, including personal information, attached ID tags and assigned chargers. Requires a valid API key.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalAPIUser"
                }
              }
            }
          }
        },
        "tags": [
          "User"
        ]
      }
    },
    "/chargers": {
      "post": {
        "operationId": "chargers_create",
        "summary": "Create Multiple Chargers",
        "description": "Creates multiple chargers in a single transaction. All chargers must pass validation for the operation to succeed.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "chargers"
                ],
                "properties": {
                  "chargers": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/ChargerCreate"
                    }
                  }
                }
              },
              "example": {
                "chargers": [
                  {
                    "charger_point_id": "CP001",
                    "manufacturer": "epic_ocpp",
                    "model": "epic_home",
                    "custom_id": "Charger 1",
                    "location": "550e8400-e29b-41d4-a716-446655440000",
                    "ports": [
                      {
                        "connector_id": 1,
                        "connector_type": "J1772",
                        "max_current": 32,
                        "current": 32
                      }
                    ],
                    "connectivity": "WIFI",
                    "current_type": "AC",
                    "payment_type": "FREE",
                    "number_phases": 3,
                    "id_tag_required": false,
                    "rfid_required": false
                  },
                  {
                    "charger_point_id": "CP002",
                    "manufacturer": "epic_ocpp",
                    "model": "epic_pro",
                    "custom_id": "Charger 2",
                    "location": "550e8400-e29b-41d4-a716-446655440000",
                    "ports": [
                      {
                        "connector_id": 1,
                        "connector_type": "TYPE_2",
                        "max_power": 16,
                        "power": 16
                      },
                      {
                        "connector_id": 2,
                        "connector_type": "J1772",
                        "max_power": 125,
                        "power": 125
                      }
                    ],
                    "connectivity": "ETHERNET",
                    "current_type": "DC",
                    "payment_type": "PAID",
                    "number_phases": 3,
                    "id_tag_required": true,
                    "rfid_required": false
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "chargers": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ExternalAPIChargerRetrieve"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Charger"
        ]
      }
    },
    "/locations": {
      "post": {
        "operationId": "locations_create",
        "summary": "Create Multiple Locations",
        "description": "Creates multiple locations in a single transaction. All locations must pass validation for the operation to succeed.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "locations"
                ],
                "properties": {
                  "locations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/LocationCreate"
                    }
                  }
                }
              },
              "example": {
                "locations": [
                  {
                    "custom_id": "Location 1",
                    "formatted_address": "123 Main Street, New York, NY 10001, USA",
                    "company_name": "EV Charging Corp",
                    "contact_name": "John Smith",
                    "contact_email": "john.smith@example.com",
                    "is_members_only": false,
                    "places_api_data": {
                      "place_id": "ChIJiZ6E4gyuEmsRCHbfpbXvAAU",
                      "formatted_address": "123 Main Street, New York, NY 10001, USA",
                      "geometry": {
                        "location": {
                          "lat": 40.7128,
                          "lng": -74.006
                        }
                      },
                      "address_components": [
                        {
                          "long_name": "123",
                          "short_name": "123",
                          "types": [
                            "street_number"
                          ]
                        },
                        {
                          "long_name": "Main Street",
                          "short_name": "Main St",
                          "types": [
                            "route"
                          ]
                        },
                        {
                          "long_name": "New York",
                          "short_name": "NY",
                          "types": [
                            "locality",
                            "political"
                          ]
                        }
                      ],
                      "utc_offset": -240
                    }
                  },
                  {
                    "custom_id": "Location 2",
                    "formatted_address": "456 Oak Avenue, Los Angeles, CA 90001, USA",
                    "company_name": "Green Energy Solutions",
                    "contact_name": "Jane Doe",
                    "contact_email": "jane.doe@example.com",
                    "places_api_data": {
                      "place_id": "ChIJK3cjPxWsEmsRAJxpbXvRAAM",
                      "formatted_address": "456 Oak Avenue, Los Angeles, CA 90001, USA",
                      "geometry": {
                        "location": {
                          "lat": 34.0522,
                          "lng": -118.2437
                        }
                      },
                      "address_components": [
                        {
                          "long_name": "456",
                          "short_name": "456",
                          "types": [
                            "street_number"
                          ]
                        },
                        {
                          "long_name": "Oak Avenue",
                          "short_name": "Oak Ave",
                          "types": [
                            "route"
                          ]
                        },
                        {
                          "long_name": "Los Angeles",
                          "short_name": "LA",
                          "types": [
                            "locality",
                            "political"
                          ]
                        }
                      ],
                      "utc_offset": -420
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "locations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Location"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Location"
        ]
      }
    },
    "/location-discounts": {
      "post": {
        "operationId": "location-discounts_create",
        "summary": "Location discounts create",
        "description": "Create multiple location discounts in a single transaction.",
        "tags": [
          "Location-discounts"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkLocationDiscount"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkLocationDiscount"
                }
              }
            }
          }
        }
      }
    },
    "/location-discounts/bulk-delete": {
      "delete": {
        "operationId": "location-discounts_bulk_delete",
        "summary": "Location discounts bulk delete",
        "description": "Update multiple location discounts in a single transaction.",
        "tags": [
          "Location-discounts"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkLocationDiscountDelete"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/location-discounts/bulk-update": {
      "patch": {
        "operationId": "location-discounts_bulk_update",
        "summary": "Location discounts bulk update",
        "description": "Update multiple location discounts in a single transaction.",
        "tags": [
          "Location-discounts"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkUpdateLocationDiscount"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkUpdateLocationDiscount"
                }
              }
            }
          }
        }
      }
    },
    "/location-discounts/get-full": {
      "get": {
        "operationId": "location-discounts_get_full",
        "summary": "Location discounts get full",
        "description": "External API for bulk location discount operations.\n    Provides functionality to create multiple locations discounts in a single request.\n    Requires API key authentication for all requests.",
        "tags": [
          "Location-discounts"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to return per page.",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The initial index from which to return the results.",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkLocationDiscount"
                }
              }
            }
          }
        }
      }
    },
    "/users": {
      "post": {
        "operationId": "users_create",
        "summary": "Users create",
        "description": "Create multiple users in a single transaction.",
        "tags": [
          "Users"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/UserCreate"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserBulkCreationResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "BearerAuth": {
        "type": "apiKey",
        "name": "Token-Authorization",
        "in": "header",
        "description": "API key must be provided in the Token-Authorization header"
      }
    },
    "schemas": {
      "ParkingLotLookup": {
        "type": "object",
        "required": [
          "value"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "description": "Unique identifier for the parking lot"
          },
          "value": {
            "type": "string",
            "minLength": 1,
            "description": "Name or identifier of the parking lot"
          }
        }
      },
      "ChargerPortList": {
        "type": "object",
        "required": [
          "max_power",
          "power",
          "charger"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true,
            "description": "Unique identifier for the charger port"
          },
          "max_power": {
            "type": "number",
            "description": "Maximum power output in kW"
          },
          "charging_speed": {
            "type": "number",
            "readOnly": true,
            "description": "Current charging speed"
          },
          "custom_id": {
            "type": "string",
            "readOnly": true,
            "description": "Custom identifier for the port"
          },
          "power": {
            "type": "number",
            "nullable": true,
            "description": "Current power output"
          },
          "manufacturer": {
            "type": "object",
            "readOnly": true,
            "properties": {
              "custom_id": {
                "type": "string",
                "description": "Manufacturer custom ID"
              },
              "value": {
                "type": "string",
                "description": "Manufacturer name"
              }
            }
          },
          "model": {
            "type": "object",
            "readOnly": true,
            "properties": {
              "custom_id": {
                "type": "string",
                "description": "Model custom ID"
              },
              "value": {
                "type": "string",
                "description": "Model name"
              },
              "port_count": {
                "type": "integer",
                "description": "Number of ports on this model"
              }
            }
          },
          "status": {
            "type": "object",
            "readOnly": true,
            "properties": {
              "key": {
                "type": "string",
                "description": "Status code"
              },
              "value": {
                "type": "string",
                "description": "Human-readable status"
              }
            }
          },
          "parking_lot": {
            "$ref": "#/components/schemas/ParkingLotLookup"
          },
          "connector_type": {
            "type": "string",
            "enum": [
              "J1772",
              "CCS",
              "CHADEMO",
              "NACS",
              "SHUKO",
              "TYPE_2"
            ],
            "description": "Type of connector"
          },
          "current_ampere": {
            "type": "number",
            "description": "Current in amperes"
          },
          "current_kilowatt_hour": {
            "type": "number",
            "description": "Current in kilowatt-hours"
          },
          "start_charging_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "When charging started"
          },
          "end_charging_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "When charging ended"
          },
          "charger": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "Associated charger UUID"
          }
        }
      },
      "ChargerPort": {
        "type": "object",
        "required": [
          "max_power",
          "power",
          "charger"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true,
            "description": "Unique identifier for the charger port"
          },
          "max_power": {
            "type": "number",
            "description": "Maximum power output in kW"
          },
          "charging_speed": {
            "type": "number",
            "readOnly": true,
            "description": "Current charging speed"
          },
          "custom_id": {
            "type": "string",
            "readOnly": true,
            "description": "Custom identifier for the port"
          },
          "power": {
            "type": "number",
            "nullable": true,
            "description": "Current power output"
          },
          "manufacturer": {
            "type": "object",
            "readOnly": true,
            "properties": {
              "custom_id": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            }
          },
          "model": {
            "type": "object",
            "readOnly": true,
            "properties": {
              "custom_id": {
                "type": "string"
              },
              "value": {
                "type": "string"
              },
              "port_count": {
                "type": "integer"
              }
            }
          },
          "status": {
            "type": "object",
            "readOnly": true,
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            }
          },
          "parking_lot": {
            "$ref": "#/components/schemas/ParkingLotLookup"
          },
          "connector_type": {
            "type": "string",
            "enum": [
              "J1772",
              "CCS",
              "CHADEMO",
              "NACS",
              "SHUKO",
              "TYPE_2"
            ]
          },
          "charger": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "Associated charger UUID"
          }
        }
      },
      "ChargerPortUpdate": {
        "type": "object",
        "required": [
          "charging_speed",
          "max_power"
        ],
        "properties": {
          "charging_speed": {
            "type": "number",
            "description": "Charging speed to set"
          },
          "custom_id": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Custom identifier for the port"
          },
          "max_power": {
            "type": "number",
            "description": "Maximum power output"
          },
          "is_deleted": {
            "type": "boolean",
            "description": "Whether the port is deleted"
          }
        }
      },
      "ExternalAPIChargerChargerPort": {
        "type": "object",
        "required": [
          "max_power",
          "charge_current_kilowatt_hour"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true,
            "description": "Unique identifier for the port"
          },
          "connector_id": {
            "type": "integer",
            "nullable": true,
            "description": "Connector ID for OCPP"
          },
          "status": {
            "type": "object",
            "readOnly": true,
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            }
          },
          "max_power": {
            "type": "number",
            "description": "Maximum power output"
          },
          "charge_current_kilowatt_hour": {
            "type": "number",
            "nullable": true,
            "description": "Current charge rate in kWh"
          },
          "charging_start_at": {
            "type": "string",
            "format": "date-time",
            "description": "When charging started"
          },
          "connected_user_email": {
            "description": "Connected user email",
            "type": "string",
            "readOnly": true
          }
        }
      },
      "ExternalAPIChargerList": {
        "type": "object",
        "required": [
          "location_name",
          "customer_qr_code",
          "ports"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true,
            "description": "Unique identifier for the charger"
          },
          "custom_id": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Custom identifier for the charger"
          },
          "charger_point_id": {
            "type": "string",
            "maxLength": 255,
            "description": "Charger point identifier"
          },
          "status": {
            "type": "object",
            "readOnly": true,
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            }
          },
          "location_name": {
            "type": "string",
            "minLength": 1,
            "nullable": true,
            "description": "Name of the location where charger is installed"
          },
          "temperature": {
            "type": "number",
            "description": "Current temperature of the charger"
          },
          "payment_type": {
            "type": "string",
            "enum": [
              "Paid",
              "Free"
            ],
            "description": "Whether charging is paid or free"
          },
          "id_tag_required": {
            "type": "boolean",
            "description": "Whether ID tag is required to use this charger"
          },
          "customer_qr_code": {
            "type": "string",
            "minLength": 1,
            "nullable": true,
            "description": "QR code for customer access"
          },
          "ports": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExternalAPIChargerChargerPort"
            },
            "description": "List of ports on this charger"
          },
          "charger_group": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "Group this charger belongs to"
          }
        }
      },
      "ExternalAPIChargerChargerPortRetrieve": {
        "type": "object",
        "required": [
          "max_power",
          "charging_speed"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true,
            "description": "Unique identifier for the port"
          },
          "connector_id": {
            "type": "integer",
            "nullable": true,
            "description": "Connector ID for OCPP"
          },
          "max_power": {
            "type": "number",
            "description": "Maximum power output"
          },
          "power": {
            "type": "number",
            "description": "Current power output"
          },
          "max_current": {
            "type": "string",
            "readOnly": true,
            "description": "Maximum current"
          },
          "current": {
            "type": "string",
            "readOnly": true,
            "description": "Current output"
          },
          "charging_speed": {
            "type": "number",
            "description": "Current charging speed"
          },
          "connector_type": {
            "type": "object",
            "readOnly": true,
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "description": "Type of connector"
          },
          "charging_start_at": {
            "type": "string",
            "format": "date-time",
            "description": "When charging started"
          },
          "connected_user_email": {
            "description": "Connected user email",
            "type": "string",
            "readOnly": true
          }
        }
      },
      "ExternalAPIChargerRetrieve": {
        "type": "object",
        "required": [
          "ports",
          "manufacturer",
          "model",
          "rfid_required"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true,
            "description": "Unique identifier for the charger"
          },
          "custom_id": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Custom identifier for the charger"
          },
          "charger_point_id": {
            "type": "string",
            "maxLength": 255,
            "description": "Charger point identifier"
          },
          "status": {
            "type": "object",
            "readOnly": true,
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "description": "Current status of the charger"
          },
          "payment_type": {
            "type": "string",
            "enum": [
              "PAID",
              "FREE"
            ],
            "description": "Whether charging is paid or free"
          },
          "customer_qr_code": {
            "type": "string",
            "minLength": 1,
            "nullable": true,
            "description": "QR code for customer access"
          },
          "ports": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExternalAPIChargerChargerPortRetrieve"
            },
            "description": "List of ports on this charger"
          },
          "manufacturer": {
            "type": "string",
            "description": "Manufacturer information"
          },
          "model": {
            "type": "string",
            "readOnly": true,
            "description": "Model information"
          },
          "location_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "Location identifier"
          },
          "rfid_required": {
            "type": "boolean",
            "nullable": true,
            "description": "Whether RFID is required to use this charger"
          },
          "number_phases": {
            "type": "integer",
            "enum": [
              1,
              3
            ],
            "description": "Number of electrical phases"
          }
        }
      },
      "ExternalAPIReportChargerPort": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true,
            "description": "Unique identifier for the port"
          },
          "connector_id": {
            "type": "integer",
            "nullable": true,
            "description": "Connector ID for OCPP"
          },
          "status": {
            "type": "string",
            "enum": [
              "DISABLED",
              "AVAILABLE",
              "STANDBY",
              "CHARGING",
              "OFFLINE",
              "FAULTED",
              "RESERVED",
              "UNAVAILABLE",
              "UNDEFINED",
              "NOT_CHARGING",
              "COMPLETE",
              "ASLEEP",
              "STARTING",
              "STOPPING",
              "WAITING_CHARGER",
              "WAITING_VEHICLE",
              "IN_PROGRESS",
              "FAILED_START",
              "FAILED_STOP",
              "NO_SESSION",
              "PREPARING",
              "SUSPENDED_EV",
              "SUSPENDED_EVSE",
              "UNPLUGGED",
              "UNPLUGGED_NOT_CHARGING",
              "UNPLUGGED_CHARGING",
              "PLUGGED_IN_NOT_CHARGING",
              "PLUGGED_IN_SUSPENDED_EV",
              "PLUGGED_IN_CHARGING",
              "CHARGING_COMPLETE",
              "CUSTOM_CHARGER",
              "CUSTOM_VEHICLE",
              "FINISHING"
            ],
            "description": "Current status of the port"
          }
        }
      },
      "ExternalAPIReportChargerStatus": {
        "type": "object",
        "required": [
          "location",
          "meter_type",
          "ports"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true,
            "description": "Unique identifier for the charger"
          },
          "charger_health": {
            "type": "string",
            "readOnly": true,
            "description": "Health status of the charger"
          },
          "ocpp_protocol_version": {
            "type": "string",
            "readOnly": true,
            "description": "Version of the OCPP protocol"
          },
          "operating_voltages": {
            "type": "number",
            "readOnly": true,
            "description": "Operating voltage"
          },
          "location": {
            "type": "string",
            "minLength": 1,
            "nullable": true,
            "description": "Location name"
          },
          "meter_type": {
            "type": "string",
            "minLength": 1,
            "description": "Type of meter"
          },
          "status": {
            "type": "string",
            "enum": [
              "DISABLED",
              "AVAILABLE",
              "STANDBY",
              "CHARGING",
              "OFFLINE",
              "FAULTED",
              "RESERVED",
              "UNAVAILABLE",
              "UNDEFINED",
              "NOT_CHARGING",
              "COMPLETE",
              "ASLEEP",
              "STARTING",
              "STOPPING",
              "WAITING_CHARGER",
              "WAITING_VEHICLE",
              "IN_PROGRESS",
              "FAILED_START",
              "FAILED_STOP",
              "NO_SESSION",
              "PREPARING",
              "SUSPENDED_EV",
              "SUSPENDED_EVSE",
              "UNPLUGGED",
              "UNPLUGGED_NOT_CHARGING",
              "UNPLUGGED_CHARGING",
              "PLUGGED_IN_NOT_CHARGING",
              "PLUGGED_IN_SUSPENDED_EV",
              "PLUGGED_IN_CHARGING",
              "CHARGING_COMPLETE",
              "CUSTOM_CHARGER",
              "CUSTOM_VEHICLE",
              "FINISHING"
            ],
            "description": "Current status of the charger"
          },
          "ports": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExternalAPIReportChargerPort"
            },
            "description": "List of ports on this charger"
          }
        }
      },
      "ReportCharger": {
        "type": "object",
        "required": [
          "tenant",
          "charger_id",
          "charger_name",
          "site_name",
          "commission_date",
          "report_date",
          "driver_emails"
        ],
        "properties": {
          "tenant": {
            "type": "string",
            "minLength": 1,
            "description": "Tenant name"
          },
          "charger_id": {
            "type": "string",
            "minLength": 1,
            "description": "Charger identifier"
          },
          "charger_name": {
            "type": "string",
            "minLength": 1,
            "description": "Name of the charger"
          },
          "site_name": {
            "type": "string",
            "minLength": 1,
            "description": "Name of the site"
          },
          "address": {
            "type": "string",
            "readOnly": true,
            "description": "Physical address"
          },
          "city": {
            "type": "string",
            "readOnly": true,
            "description": "City"
          },
          "state": {
            "type": "string",
            "readOnly": true,
            "description": "State or province"
          },
          "zip": {
            "type": "string",
            "readOnly": true,
            "description": "ZIP or postal code"
          },
          "country": {
            "type": "string",
            "readOnly": true,
            "description": "Country"
          },
          "owner": {
            "type": "string",
            "readOnly": true,
            "description": "Owner of the charger"
          },
          "utility": {
            "type": "string",
            "readOnly": true,
            "description": "Utility provider"
          },
          "commission_date": {
            "type": "string",
            "format": "date-time",
            "description": "Date when the charger was commissioned"
          },
          "operating_status": {
            "type": "string",
            "readOnly": true,
            "description": "Current operating status"
          },
          "total_power": {
            "type": "number",
            "readOnly": true,
            "description": "Total power consumption"
          },
          "report_date": {
            "type": "string",
            "format": "date-time",
            "description": "Date of the report"
          },
          "driver_emails": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "email",
              "minLength": 1
            },
            "description": "Email addresses of drivers"
          }
        }
      },
      "ReportChargingSession": {
        "type": "object",
        "required": [
          "tenant",
          "session_id",
          "plug_in_start_datetime",
          "plug_in_end_datetime",
          "charging_start_datetime",
          "charging_end_datetime",
          "driver_emails"
        ],
        "properties": {
          "tenant": {
            "type": "string",
            "minLength": 1,
            "description": "Tenant name"
          },
          "session_id": {
            "type": "string",
            "minLength": 1,
            "description": "Unique identifier for the session"
          },
          "charger_id": {
            "type": "string",
            "readOnly": true,
            "description": "Charger identifier"
          },
          "port_id": {
            "type": "string",
            "readOnly": true,
            "description": "Port identifier"
          },
          "charger_manufacturer": {
            "type": "string",
            "readOnly": true,
            "description": "Manufacturer of the charger"
          },
          "charger_model": {
            "type": "string",
            "readOnly": true,
            "description": "Model of the charger"
          },
          "charger_name": {
            "type": "string",
            "readOnly": true,
            "description": "Name of the charger"
          },
          "plug_in_start_datetime": {
            "type": "string",
            "format": "date-time",
            "description": "When vehicle was plugged in"
          },
          "plug_in_end_datetime": {
            "type": "string",
            "format": "date-time",
            "description": "When vehicle was unplugged"
          },
          "charging_start_datetime": {
            "type": "string",
            "format": "date-time",
            "description": "When charging started"
          },
          "charging_end_datetime": {
            "type": "string",
            "format": "date-time",
            "description": "When charging ended"
          },
          "charging_time": {
            "type": "integer",
            "readOnly": true,
            "description": "Duration of charging in minutes"
          },
          "energy_delivered_to_electric_vehicle_kwh": {
            "type": "number",
            "readOnly": true,
            "description": "Energy delivered in kWh"
          },
          "cost_per_session_usd": {
            "type": "number",
            "readOnly": true,
            "description": "Cost of the session in USD"
          },
          "driver_emails": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "email",
              "minLength": 1
            },
            "description": "Email addresses of drivers"
          }
        }
      },
      "ReportFaults": {
        "type": "object",
        "properties": {
          "charger": {
            "type": "string",
            "readOnly": true,
            "description": "Charger identifier"
          },
          "charger_id": {
            "type": "string",
            "readOnly": true,
            "description": "Charger ID"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "When the fault was created"
          },
          "error_code": {
            "type": "string",
            "readOnly": true,
            "description": "Error code"
          },
          "error_info": {
            "type": "string",
            "readOnly": true,
            "description": "Detailed error information"
          },
          "status": {
            "type": "string",
            "readOnly": true,
            "description": "Current status"
          }
        }
      },
      "ReportTransaction": {
        "type": "object",
        "required": [
          "charger",
          "charger_name",
          "charger_id",
          "plug_in_datetime",
          "start_datetime",
          "stop_datetime",
          "timezone"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true,
            "description": "Unique identifier for the transaction"
          },
          "charger": {
            "type": "string",
            "format": "uuid",
            "description": "Charger UUID"
          },
          "charger_name": {
            "type": "string",
            "minLength": 1,
            "description": "Name of the charger"
          },
          "charger_id": {
            "type": "string",
            "minLength": 1,
            "description": "Charger identifier"
          },
          "plug_in_datetime": {
            "type": "string",
            "format": "date-time",
            "description": "When vehicle was plugged in"
          },
          "start_datetime": {
            "type": "string",
            "format": "date-time",
            "description": "When charging started"
          },
          "stop_datetime": {
            "type": "string",
            "format": "date-time",
            "description": "When charging stopped"
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "description": "Timezone"
          },
          "total_energy_imported": {
            "type": "number",
            "readOnly": true,
            "description": "Total energy imported in kWh"
          },
          "power_units": {
            "type": "string",
            "readOnly": true,
            "description": "Units of power measurement"
          }
        }
      },
      "ExternalAPIUser": {
        "type": "object",
        "required": [
          "email"
        ],
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "readOnly": true,
            "description": "Unique identifier for the user"
          },
          "email": {
            "type": "string",
            "format": "email",
            "minLength": 1,
            "description": "Email address"
          },
          "first_name": {
            "type": "string",
            "readOnly": true,
            "minLength": 1,
            "description": "First name"
          },
          "last_name": {
            "type": "string",
            "readOnly": true,
            "minLength": 1,
            "description": "Last name"
          },
          "attached_id_tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "description": "RFID tags attached to this user"
          },
          "attached_chargers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "description": "Chargers accessible to this user"
          }
        }
      },
      "ChargerCreate": {
        "type": "object",
        "required": [
          "charger_point_id",
          "manufacturer",
          "model",
          "ports",
          "rfid_required"
        ],
        "properties": {
          "charger_point_id": {
            "type": "string",
            "description": "Unique identifier for the charger point"
          },
          "manufacturer": {
            "type": "string",
            "description": "Manufacturer key (e.g., 'epic_ocpp', 'generic_ocpp')"
          },
          "model": {
            "type": "string",
            "description": "Model key"
          },
          "custom_id": {
            "type": "string",
            "description": "Custom identifier for the charger"
          },
          "sim_card": {
            "type": "string",
            "description": "SIM card identifier"
          },
          "location": {
            "type": "string",
            "format": "uuid",
            "description": "UUID of the location where the charger is installed"
          },
          "ports": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "connector_id",
                "connector_type"
              ],
              "properties": {
                "connector_id": {
                  "type": "integer",
                  "description": "Connector identifier (usually 1, 2, 3, etc.)"
                },
                "connector_type": {
                  "type": "string",
                  "enum": [
                    "J1772",
                    "CCS",
                    "CHADEMO",
                    "NACS",
                    "SHUKO",
                    "TYPE_2",
                    "CCS_COMBO_2"
                  ],
                  "description": "Type of connector"
                },
                "max_current": {
                  "type": "number",
                  "description": "Maximum current in amperes (required for AC chargers)"
                },
                "current": {
                  "type": "number",
                  "description": "Default current in amperes (required for AC chargers)"
                },
                "max_power": {
                  "type": "number",
                  "description": "Maximum power in kW (required for DC chargers)"
                },
                "power": {
                  "type": "number",
                  "description": "Default power in kW (required for DC chargers)"
                }
              }
            }
          },
          "connectivity": {
            "type": "string",
            "enum": [
              "WIFI",
              "ETHERNET",
              "CELLULAR",
              "NONE"
            ],
            "description": "Connectivity type"
          },
          "current_type": {
            "type": "string",
            "enum": [
              "AC",
              "DC",
              "NACS"
            ],
            "description": "Current type"
          },
          "payment_type": {
            "type": "string",
            "enum": [
              "PAID",
              "FREE"
            ],
            "description": "Whether charging is paid or free"
          },
          "number_phases": {
            "type": "integer",
            "enum": [
              1,
              3
            ],
            "description": "Number of electrical phases"
          },
          "id_tag_required": {
            "type": "boolean",
            "description": "Whether ID tag is required to use this charger"
          },
          "phase_connection_type": {
            "type": "string",
            "enum": [
              "DELTA",
              "WYE"
            ],
            "description": "Phase connection type"
          },
          "rfid_required": {
            "type": "boolean",
            "description": "Whether RFID is required to use this charger"
          }
        }
      },
      "LocationCreate": {
        "type": "object",
        "required": [
          "custom_id",
          "formatted_address",
          "places_api_data"
        ],
        "properties": {
          "custom_id": {
            "type": "string",
            "description": "Custom identifier for the location"
          },
          "formatted_address": {
            "type": "string",
            "description": "Formatted address of the location"
          },
          "company_name": {
            "type": "string",
            "description": "Name of the company"
          },
          "website": {
            "type": "string",
            "description": "Company website"
          },
          "contact_name": {
            "type": "string",
            "description": "Contact person name"
          },
          "contact_phone": {
            "type": "string",
            "description": "Contact phone number"
          },
          "is_members_only": {
            "type": "boolean",
            "description": "Location Available only for tenants users"
          },
          "contact_email": {
            "type": "string",
            "format": "email",
            "description": "Contact email address"
          },
          "location": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "description": "Geographic coordinates [latitude, longitude]"
          },
          "places_api_data": {
            "type": "object",
            "required": [
              "place_id",
              "formatted_address",
              "geometry"
            ],
            "properties": {
              "place_id": {
                "type": "string",
                "description": "Google Places API place ID"
              },
              "formatted_address": {
                "type": "string",
                "description": "Formatted address from Places API"
              },
              "geometry": {
                "type": "object",
                "required": [
                  "location"
                ],
                "properties": {
                  "location": {
                    "type": "object",
                    "required": [
                      "lat",
                      "lng"
                    ],
                    "properties": {
                      "lat": {
                        "type": "number",
                        "description": "Latitude"
                      },
                      "lng": {
                        "type": "number",
                        "description": "Longitude"
                      }
                    }
                  }
                }
              },
              "address_components": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "long_name": {
                      "type": "string"
                    },
                    "short_name": {
                      "type": "string"
                    },
                    "types": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              },
              "utc_offset": {
                "type": "integer",
                "description": "UTC offset in minutes"
              }
            }
          },
          "connectivity_write": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "sim_card",
                "router_number",
                "fleet"
              ],
              "properties": {
                "sim_card": {
                  "type": "string",
                  "description": "SIM card identifier"
                },
                "router_number": {
                  "type": "string",
                  "description": "Router number"
                },
                "fleet": {
                  "type": "string",
                  "description": "Fleet name"
                }
              }
            }
          }
        }
      },
      "Location": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true,
            "description": "Unique identifier for the location"
          },
          "custom_id": {
            "type": "string",
            "description": "Custom identifier for the location"
          },
          "formatted_address": {
            "type": "string",
            "description": "Formatted address"
          },
          "location": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "description": "Geographic coordinates [latitude, longitude]"
          },
          "company_name": {
            "type": "string",
            "description": "Company name"
          },
          "website": {
            "type": "string",
            "description": "Company website"
          },
          "contact_name": {
            "type": "string",
            "description": "Contact person name"
          },
          "contact_phone": {
            "type": "string",
            "description": "Contact phone number"
          },
          "contact_email": {
            "type": "string",
            "format": "email",
            "description": "Contact email address"
          },
          "share_mode": {
            "type": "string",
            "readOnly": true,
            "description": "Sharing mode"
          },
          "share_info": {
            "type": "string",
            "readOnly": true,
            "description": "Sharing information"
          },
          "available_count": {
            "type": "integer",
            "readOnly": true,
            "description": "Count of available chargers"
          },
          "standby_count": {
            "type": "integer",
            "readOnly": true,
            "description": "Count of standby chargers"
          },
          "charging_count": {
            "type": "integer",
            "readOnly": true,
            "description": "Count of charging chargers"
          },
          "offline_count": {
            "type": "integer",
            "readOnly": true,
            "description": "Count of offline chargers"
          },
          "faulted_count": {
            "type": "integer",
            "readOnly": true,
            "description": "Count of faulted chargers"
          },
          "out_of_order_count": {
            "type": "integer",
            "readOnly": true,
            "description": "Count of out-of-order chargers"
          }
        }
      },
      "BulkLocationDiscountDelete": {
        "required": [
          "location_discounts"
        ],
        "type": "object",
        "properties": {
          "location_discounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChildLocationDiscountDelete"
            }
          }
        }
      },
      "BulkLocationDiscount": {
        "required": [
          "location_discounts"
        ],
        "type": "object",
        "properties": {
          "location_discounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LocationDiscount"
            }
          }
        }
      },
      "BulkUpdateLocationDiscount": {
        "required": [
          "location_discounts"
        ],
        "type": "object",
        "properties": {
          "location_discounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LocationDiscountUpdate"
            }
          }
        }
      },
      "UserBulkCreationResponse": {
        "type": "object",
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserCreate"
            },
            "readOnly": true
          }
        }
      },
      "UserCreate": {
        "required": [
          "email",
          "driver",
          "role",
          "id_tags"
        ],
        "type": "object",
        "properties": {
          "uuid": {
            "title": "UUID",
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "first_name": {
            "title": "First name",
            "type": "string",
            "maxLength": 100,
            "x-nullable": true
          },
          "last_name": {
            "title": "Last name",
            "type": "string",
            "maxLength": 100,
            "x-nullable": true
          },
          "avatar": {
            "title": "User Avatar",
            "type": "string",
            "readOnly": true,
            "x-nullable": true,
            "format": "uri"
          },
          "email": {
            "title": "Email",
            "type": "string",
            "format": "email",
            "maxLength": 255,
            "minLength": 1
          },
          "is_email_real": {
            "title": "Is email real",
            "type": "boolean"
          },
          "phone_number": {
            "title": "Phone number",
            "type": "string",
            "maxLength": 128,
            "x-nullable": true
          },
          "location": {
            "title": "Location",
            "type": "string",
            "x-nullable": true
          },
          "location_name": {
            "title": "Location name",
            "type": "string",
            "maxLength": 255
          },
          "mailing_address": {
            "title": "Mailing address",
            "type": "string",
            "maxLength": 255
          },
          "status": {
            "title": "Status",
            "type": "string",
            "enum": [
              "add",
              "inv",
              "act",
              "deact"
            ]
          },
          "driver": {
            "$ref": "#/components/schemas/Driver"
          },
          "role": {
            "title": "Role",
            "type": "string",
            "enum": [
              "partner",
              "tenant_owner",
              "admin",
              "driver"
            ]
          },
          "mobile_chargers": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "uniqueItems": true
          },
          "chargers": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "uniqueItems": true
          },
          "vehicles": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "uniqueItems": true
          },
          "id_tags": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "uniqueItems": true
          },
          "notification_settings": {
            "title": "Notification Settings",
            "type": "string",
            "enum": [
              "NO_NOTIFICATIONS",
              "CHARGER_WARNINGS_AND_ALERTS"
            ]
          },
          "is_two_factor_authentication": {
            "title": "Is two factor authentication",
            "type": "boolean",
            "readOnly": true
          },
          "should_send_invitation_email": {
            "title": "Should send invitation email",
            "type": "boolean"
          },
          "has_payout_access": {
            "title": "Has payout access",
            "type": "boolean",
            "x-nullable": true
          },
          "can_manage_payout_access": {
            "title": "Can manage payout access",
            "type": "string",
            "readOnly": true
          }
        }
      },
      "Driver": {
        "type": "object",
        "properties": {
          "driver_license": {
            "title": "Driver License",
            "type": "string"
          },
          "is_allow_id_tag_activation": {
            "title": "Is allow ID Tag activation",
            "type": "boolean"
          }
        }
      },
      "ChildLocationDiscountDelete": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "title": "Id",
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "LocationDiscountUpdate": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "title": "Id",
            "type": "string",
            "format": "uuid"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "discount_percent": {
            "title": "Discount Percent",
            "type": "number",
            "maximum": 100,
            "minimum": 0
          },
          "domain_email": {
            "title": "Domain email",
            "type": "string",
            "minLength": 1
          }
        }
      },
      "LocationDiscount": {
        "required": [
          "location",
          "domain_email"
        ],
        "type": "object",
        "properties": {
          "id": {
            "title": "Id",
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "location": {
            "title": "Location",
            "type": "string",
            "format": "uuid"
          },
          "discount_percent": {
            "title": "Discount Percent",
            "type": "number",
            "maximum": 100,
            "minimum": 0
          },
          "domain_email": {
            "title": "Domain email",
            "type": "string",
            "maxLength": 320,
            "minLength": 1
          }
        }
      }
    }
  }
}