openapi: 3.0.3 info: title: 'EV Charging Point Management System API Documentation' description: 'API documentation for OCPP Charging Point Management System' version: 1.0.0 servers: - url: 'http://127.0.0.1:8000' tags: - name: Endpoints description: '' paths: /api/health: get: summary: '' operationId: getApiHealth description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: success: true status: healthy timestamp: '2026-05-27T07:22:36+00:00' version: 1.0.0 properties: success: type: boolean example: true status: type: string example: healthy timestamp: type: string example: '2026-05-27T07:22:36+00:00' version: type: string example: 1.0.0 tags: - Endpoints security: [] /api/ocpp/remote-start: post: summary: "POST /api/ocpp/remote-start - Send RemoteStartTransaction to connected charger\nUses new ConnectionRegistry for ReactPHP WebSocket connections" operationId: pOSTapiocppremoteStartSendRemoteStartTransactionToConnectedChargerUsesNewConnectionRegistryForReactPHPWebSocketConnections description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/ocpp/remote-stop: post: summary: "POST /api/ocpp/remote-stop - Send RemoteStopTransaction to connected charger\nUses new ConnectionRegistry for ReactPHP WebSocket connections" operationId: pOSTapiocppremoteStopSendRemoteStopTransactionToConnectedChargerUsesNewConnectionRegistryForReactPHPWebSocketConnections description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/mobile/register: post: summary: '' operationId: postApiMobileRegister description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq email: type: string description: 'Must be a valid email address.' example: kunde.eloisa@example.com phone: type: string description: 'Must not be greater than 20 characters.' example: hfqcoynlazghdtqtq required: - name - email - phone security: [] /api/mobile/send-otp: post: summary: '' operationId: postApiMobileSendOtp description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: phone: type: string description: '' example: consequatur required: - phone security: [] /api/mobile/verify-otp: post: summary: '' operationId: postApiMobileVerifyOtp description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: phone: type: string description: '' example: consequatur otp: type: string description: '' example: consequatur required: - phone - otp security: [] /api/mobile/resend-otp: post: summary: '' operationId: postApiMobileResendOtp description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: phone: type: string description: '' example: consequatur required: - phone security: [] /api/mobile/account-linking/initiate: post: summary: "Step 1: Initiate account linking process\nGenerates a temporary linking session for unverified account recovery" operationId: step1InitiateAccountLinkingProcessGeneratesATemporaryLinkingSessionForUnverifiedAccountRecovery description: "POST /api/mobile/account-linking/initiate\nBody: { \"phone\": \"9840753503\" }\nResponse: linking_session_id for use in verification" parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: phone: type: string description: 'Must not be greater than 20 characters.' example: vmqeopfuudtdsufvy required: - phone security: [] /api/mobile/account-linking/verify-otp: post: summary: "Step 2: Verify OTP for account linking\nValidates the OTP sent to the registered phone number" operationId: step2VerifyOTPForAccountLinkingValidatesTheOTPSentToTheRegisteredPhoneNumber description: "POST /api/mobile/account-linking/verify-otp\nBody: {\n \"linking_session_id\": \"link_xxx\",\n \"phone\": \"9840753503\",\n \"otp\": \"1234\"\n}" parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: linking_session_id: type: string description: '' example: consequatur phone: type: string description: 'Must not be greater than 20 characters.' example: mqeopfuudtdsufvyv otp: type: string description: 'Must be 4 digits.' example: '8107' required: - linking_session_id - phone - otp security: [] /api/mobile/account-linking/link: post: summary: "Step 3: Link/Update account with new information\nMerges the new registration data with existing account" operationId: step3LinkUpdateAccountWithNewInformationMergesTheNewRegistrationDataWithExistingAccount description: "POST /api/mobile/account-linking/link\nBody: {\n \"linking_session_id\": \"link_xxx\",\n \"name\": \"Wahid A\",\n \"email\": \"newemail@example.com\", // optional - can add alternate email\n \"action\": \"update\" | \"login_only\"\n}\n\nActions:\n- \"update\": Update account with new details\n- \"login_only\": Just verify account ownership, don't update details" parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: linking_session_id: type: string description: '' example: consequatur name: type: string description: 'Must not be greater than 255 characters.' example: mqeopfuudtdsufvyvddqa nullable: true email: type: string description: 'Must be a valid email address.' example: eloisa.harber@example.com nullable: true action: type: string description: '' example: update enum: - update - login_only required: - linking_session_id - action security: [] /api/mobile/account-linking/cancel: post: summary: 'Cancel account linking session' operationId: cancelAccountLinkingSession description: "POST /api/mobile/account-linking/cancel\nBody: { \"linking_session_id\": \"link_xxx\" }" parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: linking_session_id: type: string description: '' example: consequatur required: - linking_session_id security: [] /api/mobile/profile: get: summary: '' operationId: getApiMobileProfile description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/mobile/update-profile: post: summary: '' operationId: postApiMobileUpdateProfile description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: true email: type: string description: '' example: null phone: type: string description: '' example: null security: [] /api/mobile/add-vehicle: post: summary: '' operationId: postApiMobileAddVehicle description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: manufacturer: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq model: type: string description: 'Must not be greater than 255 characters.' example: amniihfqcoynlazghdtqt registration_number: type: string description: '' example: consequatur required: - manufacturer - model - registration_number security: [] /api/mobile/vehicles: get: summary: '' operationId: getApiMobileVehicles description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] '/api/mobile/update-vehicle/{id}': post: summary: '' operationId: postApiMobileUpdateVehicleId description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: manufacturer: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq model: type: string description: 'Must not be greater than 255 characters.' example: amniihfqcoynlazghdtqt registration_number: type: string description: '' example: null required: - manufacturer - model security: [] parameters: - in: path name: id description: 'The ID of the update vehicle.' example: consequatur required: true schema: type: string '/api/mobile/delete-vehicle/{id}': post: summary: '' operationId: postApiMobileDeleteVehicleId description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the delete vehicle.' example: consequatur required: true schema: type: string /api/mobile/nearby-stations: get: summary: '' operationId: getApiMobileNearbyStations description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] '/api/mobile/station-chargers/{id}': get: summary: "GET /api/chargers/station/{stationId}\nGet chargers by station ID" operationId: gETapichargersstationstationIdGetChargersByStationID description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the station charger.' example: consequatur required: true schema: type: string /api/mobile/stations: get: summary: 'GET /api/mobile/stations - Get all stations for EVtron mobile app' operationId: gETapimobilestationsGetAllStationsForEVtronMobileApp description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] '/api/mobile/stations/{id}': get: summary: 'GET /api/mobile/stations/:id - Get detailed station information for EVtron mobile app' operationId: gETapimobilestationsidGetDetailedStationInformationForEVtronMobileApp description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the station.' example: consequatur required: true schema: type: string /api/mobile/scan/manufacturers: get: summary: 'Get manufacturers list' operationId: getManufacturersList description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/mobile/scan/models: get: summary: 'Get models list based on manufacturer' operationId: getModelsListBasedOnManufacturer description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/mobile/scan/connector-types: get: summary: 'Get connector types list' operationId: getConnectorTypesList description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/mobile/scan/current-types: get: summary: 'Get current types list (AC/DC)' operationId: getCurrentTypesListACDC description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/mobile/scan/save: post: summary: 'Save scan data' operationId: saveScanData description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/mobile/scan/process: post: summary: 'Process scanner data (QR scan or manual ID entry)' operationId: processScannerDataQRScanOrManualIDEntry description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/mobile/scan/validate-next: post: summary: "Validate charger before starting charging session\nPerforms 10 critical validation checks" operationId: validateChargerBeforeStartingChargingSessionPerforms10CriticalValidationChecks description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/mobile/scan/saved: get: summary: 'Get saved charger details for the authenticated user' operationId: getSavedChargerDetailsForTheAuthenticatedUser description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/mobile/scan/test: get: summary: '' operationId: getApiMobileScanTest description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/mobile/wishlist: get: summary: "GET /api/mobile/wishlist - Get user's wishlist with station details" operationId: gETapimobilewishlistGetUsersWishlistWithStationDetails description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] post: summary: 'POST /api/mobile/wishlist - Add station to wishlist' operationId: pOSTapimobilewishlistAddStationToWishlist description: '' parameters: [] responses: { } tags: - Endpoints security: [] '/api/mobile/wishlist/{id}': put: summary: 'PUT /api/mobile/wishlist/{id} - Update wishlist item' operationId: pUTapimobilewishlistidUpdateWishlistItem description: '' parameters: [] responses: { } tags: - Endpoints security: [] delete: summary: 'DELETE /api/mobile/wishlist/{id} - Remove station from wishlist' operationId: dELETEapimobilewishlistidRemoveStationFromWishlist description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the wishlist.' example: consequatur required: true schema: type: string '/api/mobile/wishlist/check/{stationId}': get: summary: "GET /api/mobile/wishlist/check/{stationId} - Check if station is in user's wishlist" operationId: gETapimobilewishlistcheckstationIdCheckIfStationIsInUsersWishlist description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: stationId description: '' example: consequatur required: true schema: type: string /api/mobile/wishlist/favorites: get: summary: 'GET /api/mobile/wishlist/favorites - Get favorite stations only' operationId: gETapimobilewishlistfavoritesGetFavoriteStationsOnly description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/mobile/charging-history: get: summary: 'Get charging history for the last 10 days' operationId: getChargingHistoryForTheLast10Days description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/mobile/charging-history/summary: get: summary: 'Get charging history summary statistics' operationId: getChargingHistorySummaryStatistics description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] '/api/mobile/charging-history/charger/{chargerId}': get: summary: 'Get charging history for a specific charger' operationId: getChargingHistoryForASpecificCharger description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: chargerId description: '' example: consequatur required: true schema: type: string /api/mobile/charging-history/weekly-percentage: get: summary: 'Get weekly charging percentage data (Monday to Sunday)' operationId: getWeeklyChargingPercentageDataMondayToSunday description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/mobile/complaints: post: summary: '' operationId: postApiMobileComplaints description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: subject: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq description: type: string description: 'Must not be greater than 2000 characters.' example: 'Dolores molestias ipsam sit.' required: - subject - description security: [] get: summary: '' operationId: getApiMobileComplaints description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] '/api/mobile/complaints/{id}': get: summary: '' operationId: getApiMobileComplaintsId description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the complaint.' example: consequatur required: true schema: type: string /api/mobile/charging/start: post: summary: "Start a charging session\nPOST /api/mobile/charging/start" operationId: startAChargingSessionPOSTapimobilechargingstart description: '' parameters: [] responses: { } tags: - Endpoints security: [] '/api/mobile/charging/stop/{sessionId}': post: summary: "Stop an active charging session\nPOST /api/mobile/charging/stop/{session_id}" operationId: stopAnActiveChargingSessionPOSTapimobilechargingstopsessionId description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: sessionId description: '' example: consequatur required: true schema: type: string /api/mobile/charging/current: get: summary: "Get active charging session details\nGET /api/mobile/charging/current" operationId: getActiveChargingSessionDetailsGETapimobilechargingcurrent description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/mobile/charging/history: get: summary: "Get charging session history\nGET /api/mobile/charging/history" operationId: getChargingSessionHistoryGETapimobilecharginghistory description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/mobile/charging/live: get: summary: "Get live charging session data (real-time polling)\nGET /api/mobile/charging/live" operationId: getLiveChargingSessionDatarealTimePollingGETapimobilecharginglive description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/public/mobile/stations: get: summary: 'GET /api/mobile/stations - Get all stations for EVtron mobile app' operationId: gETapimobilestationsGetAllStationsForEVtronMobileApp description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: success: true count: 3 pagination: page: 1 limit: 20 total: 3 totalPages: 1 data: - id: 1 station_name: 'Downtown Charging Hub' full_address: '123 Main Street, New York, NY 10001' latitude: '40.7128' longitude: '-74.006' distance_from_user: null status: active station_type: public is_24_7: true estimated_charging_price: '5.00' total_chargers: 2 available_chargers: 1 connector_ports: - type: CCS status: Available max_power: 150 - type: CHAdeMO status: Available max_power: 100 - type: null status: Charging max_power: null - type: Type_2 status: Available max_power: 7 amenities: - WiFi - Cafe - Parking real_time_availability: true wishlist_status: null created_at: '2026-05-14T10:03:55.000000Z' - id: 2 station_name: 'Mall Charging Station' full_address: '456 Oak Avenue, Los Angeles, CA 90001' latitude: '34.0522' longitude: '-118.2437' distance_from_user: null status: active station_type: public is_24_7: false estimated_charging_price: '4.50' total_chargers: 1 available_chargers: 0 connector_ports: - type: CCS status: Available max_power: 120 - type: Type_2 status: Available max_power: 11 amenities: - WiFi - Shopping - Restaurants real_time_availability: false wishlist_status: null created_at: '2026-05-14T10:03:55.000000Z' - id: 3 station_name: 'Airport Charging Depot' full_address: '789 Aviation Boulevard, Chicago, IL 60601' latitude: '41.8781' longitude: '-87.6298' distance_from_user: null status: active station_type: public is_24_7: true estimated_charging_price: '6.00' total_chargers: 1 available_chargers: 0 connector_ports: - type: CCS status: Available max_power: 350 amenities: - Lounge - WiFi - 'Charging Pods' real_time_availability: false wishlist_status: null created_at: '2026-05-14T10:03:55.000000Z' properties: success: type: boolean example: true count: type: integer example: 3 pagination: type: object properties: page: type: integer example: 1 limit: type: integer example: 20 total: type: integer example: 3 totalPages: type: integer example: 1 data: type: array example: - id: 1 station_name: 'Downtown Charging Hub' full_address: '123 Main Street, New York, NY 10001' latitude: '40.7128' longitude: '-74.006' distance_from_user: null status: active station_type: public is_24_7: true estimated_charging_price: '5.00' total_chargers: 2 available_chargers: 1 connector_ports: - type: CCS status: Available max_power: 150 - type: CHAdeMO status: Available max_power: 100 - type: null status: Charging max_power: null - type: Type_2 status: Available max_power: 7 amenities: - WiFi - Cafe - Parking real_time_availability: true wishlist_status: null created_at: '2026-05-14T10:03:55.000000Z' - id: 2 station_name: 'Mall Charging Station' full_address: '456 Oak Avenue, Los Angeles, CA 90001' latitude: '34.0522' longitude: '-118.2437' distance_from_user: null status: active station_type: public is_24_7: false estimated_charging_price: '4.50' total_chargers: 1 available_chargers: 0 connector_ports: - type: CCS status: Available max_power: 120 - type: Type_2 status: Available max_power: 11 amenities: - WiFi - Shopping - Restaurants real_time_availability: false wishlist_status: null created_at: '2026-05-14T10:03:55.000000Z' - id: 3 station_name: 'Airport Charging Depot' full_address: '789 Aviation Boulevard, Chicago, IL 60601' latitude: '41.8781' longitude: '-87.6298' distance_from_user: null status: active station_type: public is_24_7: true estimated_charging_price: '6.00' total_chargers: 1 available_chargers: 0 connector_ports: - type: CCS status: Available max_power: 350 amenities: - Lounge - WiFi - 'Charging Pods' real_time_availability: false wishlist_status: null created_at: '2026-05-14T10:03:55.000000Z' items: type: object properties: id: type: integer example: 1 station_name: type: string example: 'Downtown Charging Hub' full_address: type: string example: '123 Main Street, New York, NY 10001' latitude: type: string example: '40.7128' longitude: type: string example: '-74.006' distance_from_user: type: string example: null nullable: true status: type: string example: active station_type: type: string example: public is_24_7: type: boolean example: true estimated_charging_price: type: string example: '5.00' total_chargers: type: integer example: 2 available_chargers: type: integer example: 1 connector_ports: type: array example: - type: CCS status: Available max_power: 150 - type: CHAdeMO status: Available max_power: 100 - type: null status: Charging max_power: null - type: Type_2 status: Available max_power: 7 items: type: object properties: type: type: string example: CCS status: type: string example: Available max_power: type: integer example: 150 amenities: type: array example: - WiFi - Cafe - Parking items: type: string real_time_availability: type: boolean example: true wishlist_status: type: string example: null nullable: true created_at: type: string example: '2026-05-14T10:03:55.000000Z' tags: - Endpoints security: [] '/api/public/mobile/stations/{id}': get: summary: 'GET /api/mobile/stations/:id - Get detailed station information for EVtron mobile app' operationId: gETapimobilestationsidGetDetailedStationInformationForEVtronMobileApp description: '' parameters: [] responses: 500: description: '' content: application/json: schema: type: object example: success: false error: 'Failed to get station details' properties: success: type: boolean example: false error: type: string example: 'Failed to get station details' tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the station.' example: consequatur required: true schema: type: string /api/public/mobile/scan/manufacturers: get: summary: 'Get manufacturers list' operationId: getManufacturersList description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: success: true data: - id: 1 name: Tesla - id: 2 name: ABB - id: 3 name: Siemens - id: 4 name: 'Schneider Electric' - id: 5 name: ChargePoint - id: 6 name: EVBox - id: 7 name: 'Blink Charging' - id: 8 name: Webasto - id: 9 name: 'Delta Electronics' - id: 10 name: Eaton message: 'Manufacturers retrieved successfully' properties: success: type: boolean example: true data: type: array example: - id: 1 name: Tesla - id: 2 name: ABB - id: 3 name: Siemens - id: 4 name: 'Schneider Electric' - id: 5 name: ChargePoint - id: 6 name: EVBox - id: 7 name: 'Blink Charging' - id: 8 name: Webasto - id: 9 name: 'Delta Electronics' - id: 10 name: Eaton items: type: object properties: id: type: integer example: 1 name: type: string example: Tesla message: type: string example: 'Manufacturers retrieved successfully' tags: - Endpoints security: [] /api/public/mobile/scan/models: get: summary: 'Get models list based on manufacturer' operationId: getModelsListBasedOnManufacturer description: '' parameters: [] responses: 422: description: '' content: application/json: schema: type: object example: success: false error: 'Validation failed' message: manufacturer_id: - 'The manufacturer id field is required.' properties: success: type: boolean example: false error: type: string example: 'Validation failed' message: type: object properties: manufacturer_id: type: array example: - 'The manufacturer id field is required.' items: type: string tags: - Endpoints security: [] /api/public/mobile/scan/connector-types: get: summary: 'Get connector types list' operationId: getConnectorTypesList description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: success: true data: - id: 1 name: 'Type 1 (J1772)' description: 'North America standard' - id: 2 name: 'Type 2 (Mennekes)' description: 'European standard' - id: 3 name: CHAdeMO description: 'Japanese DC fast charging' - id: 4 name: 'CCS (Combined Charging System)' description: 'AC/DC combo' - id: 5 name: CCS2 description: 'European CCS standard' - id: 6 name: 'Tesla Supercharger' description: 'Tesla proprietary' - id: 7 name: 'NACS (North American Charging Standard)' description: 'Tesla standard for others' - id: 8 name: GB/T description: 'Chinese standard' message: 'Connector types retrieved successfully' properties: success: type: boolean example: true data: type: array example: - id: 1 name: 'Type 1 (J1772)' description: 'North America standard' - id: 2 name: 'Type 2 (Mennekes)' description: 'European standard' - id: 3 name: CHAdeMO description: 'Japanese DC fast charging' - id: 4 name: 'CCS (Combined Charging System)' description: 'AC/DC combo' - id: 5 name: CCS2 description: 'European CCS standard' - id: 6 name: 'Tesla Supercharger' description: 'Tesla proprietary' - id: 7 name: 'NACS (North American Charging Standard)' description: 'Tesla standard for others' - id: 8 name: GB/T description: 'Chinese standard' items: type: object properties: id: type: integer example: 1 name: type: string example: 'Type 1 (J1772)' description: type: string example: 'North America standard' message: type: string example: 'Connector types retrieved successfully' tags: - Endpoints security: [] /api/public/mobile/scan/current-types: get: summary: 'Get current types list (AC/DC)' operationId: getCurrentTypesListACDC description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: success: true data: - id: 1 name: AC description: 'Alternating Current' - id: 2 name: DC description: 'Direct Current' message: 'Current types retrieved successfully' properties: success: type: boolean example: true data: type: array example: - id: 1 name: AC description: 'Alternating Current' - id: 2 name: DC description: 'Direct Current' items: type: object properties: id: type: integer example: 1 name: type: string example: AC description: type: string example: 'Alternating Current' message: type: string example: 'Current types retrieved successfully' tags: - Endpoints security: [] /api/public/mobile/scan/saved: get: summary: 'Get saved charger details for the authenticated user' operationId: getSavedChargerDetailsForTheAuthenticatedUser description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: success: true data: [] message: 'No saved charger details (user not authenticated)' properties: success: type: boolean example: true data: type: array example: [] message: type: string example: 'No saved charger details (user not authenticated)' tags: - Endpoints security: [] /api/public/mobile/scan/save: post: summary: 'Save scan data' operationId: saveScanData description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/public/mobile/scan/process: post: summary: 'Process scanner data (QR scan or manual ID entry)' operationId: processScannerDataQRScanOrManualIDEntry description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/public/mobile/charging-history: get: summary: 'Get charging history for the last 10 days' operationId: getChargingHistoryForTheLast10Days description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: success: true data: - station_name: 'Downtown Charging Hub' charger_id: CHR-CP001 model_name: 'Wallbox Pulsar Plus' vehicle_name: 'Not Assigned' units: 0 amount: 0 status: ongoing start_time: '2026-05-22T10:24:33.000000Z' end_time: null - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 0 amount: 0 status: active start_time: '2026-05-22T10:22:04.000000Z' end_time: null - station_name: 'Downtown Charging Hub' charger_id: CHR-CP001 model_name: 'Wallbox Pulsar Plus' vehicle_name: 'Not Assigned' units: 0 amount: 0 status: completed start_time: '2026-05-22T09:35:58.000000Z' end_time: '2026-05-22T09:49:01.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 1.7 amount: 8.5 status: completed start_time: '2026-05-22T09:34:21.000000Z' end_time: '2026-05-22T10:21:56.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 0.9 amount: 4.5 status: completed start_time: '2026-05-22T07:54:10.000000Z' end_time: '2026-05-22T07:54:39.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-CP001 model_name: 'Wallbox Pulsar Plus' vehicle_name: 'Not Assigned' units: 0 amount: 0 status: completed start_time: '2026-05-22T07:33:09.000000Z' end_time: '2026-05-22T07:33:31.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 0 amount: 0 status: active start_time: '2026-05-22T06:24:27.000000Z' end_time: null - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 3.1 amount: 15.5 status: completed start_time: '2026-05-22T05:27:22.000000Z' end_time: '2026-05-22T05:35:01.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 3 amount: 15 status: completed start_time: '2026-05-21T13:27:55.000000Z' end_time: '2026-05-22T07:52:14.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 0 amount: 0 status: active start_time: '2026-05-21T10:19:26.000000Z' end_time: null - station_name: 'Downtown Charging Hub' charger_id: CHR-CP001 model_name: 'Wallbox Pulsar Plus' vehicle_name: 'Not Assigned' units: 40 amount: 200 status: completed start_time: '2026-05-21T10:14:30.000000Z' end_time: '2026-05-21T10:15:37.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-CP001 model_name: 'Wallbox Pulsar Plus' vehicle_name: 'Not Assigned' units: 2000 amount: 10000 status: charging start_time: '2026-05-21T10:10:06.000000Z' end_time: null - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 4 amount: 20 status: completed start_time: '2026-05-21T10:07:56.000000Z' end_time: '2026-05-21T10:08:50.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-CP001 model_name: 'Wallbox Pulsar Plus' vehicle_name: 'Not Assigned' units: 110 amount: 550 status: completed start_time: '2026-05-21T10:03:25.000000Z' end_time: '2026-05-21T10:07:00.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 0 amount: 0 status: active start_time: '2026-05-21T09:56:40.000000Z' end_time: null - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 5 amount: 25 status: completed start_time: '2026-05-21T08:12:36.000000Z' end_time: '2026-05-21T08:34:33.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-CP001 model_name: 'Wallbox Pulsar Plus' vehicle_name: 'Not Assigned' units: 0 amount: 0 status: ongoing start_time: '2026-05-21T05:46:51.000000Z' end_time: null - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Not Assigned' units: 0 amount: 0 status: ongoing start_time: '2026-05-20T11:41:37.000000Z' end_time: null message: 'Charging history retrieved successfully' total_records: 18 date_range: from: '2026-05-17T00:00:00.000000Z' to: '2026-05-27T07:22:38.448852Z' properties: success: type: boolean example: true data: type: array example: - station_name: 'Downtown Charging Hub' charger_id: CHR-CP001 model_name: 'Wallbox Pulsar Plus' vehicle_name: 'Not Assigned' units: 0 amount: 0 status: ongoing start_time: '2026-05-22T10:24:33.000000Z' end_time: null - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 0 amount: 0 status: active start_time: '2026-05-22T10:22:04.000000Z' end_time: null - station_name: 'Downtown Charging Hub' charger_id: CHR-CP001 model_name: 'Wallbox Pulsar Plus' vehicle_name: 'Not Assigned' units: 0 amount: 0 status: completed start_time: '2026-05-22T09:35:58.000000Z' end_time: '2026-05-22T09:49:01.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 1.7 amount: 8.5 status: completed start_time: '2026-05-22T09:34:21.000000Z' end_time: '2026-05-22T10:21:56.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 0.9 amount: 4.5 status: completed start_time: '2026-05-22T07:54:10.000000Z' end_time: '2026-05-22T07:54:39.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-CP001 model_name: 'Wallbox Pulsar Plus' vehicle_name: 'Not Assigned' units: 0 amount: 0 status: completed start_time: '2026-05-22T07:33:09.000000Z' end_time: '2026-05-22T07:33:31.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 0 amount: 0 status: active start_time: '2026-05-22T06:24:27.000000Z' end_time: null - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 3.1 amount: 15.5 status: completed start_time: '2026-05-22T05:27:22.000000Z' end_time: '2026-05-22T05:35:01.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 3 amount: 15 status: completed start_time: '2026-05-21T13:27:55.000000Z' end_time: '2026-05-22T07:52:14.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 0 amount: 0 status: active start_time: '2026-05-21T10:19:26.000000Z' end_time: null - station_name: 'Downtown Charging Hub' charger_id: CHR-CP001 model_name: 'Wallbox Pulsar Plus' vehicle_name: 'Not Assigned' units: 40 amount: 200 status: completed start_time: '2026-05-21T10:14:30.000000Z' end_time: '2026-05-21T10:15:37.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-CP001 model_name: 'Wallbox Pulsar Plus' vehicle_name: 'Not Assigned' units: 2000 amount: 10000 status: charging start_time: '2026-05-21T10:10:06.000000Z' end_time: null - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 4 amount: 20 status: completed start_time: '2026-05-21T10:07:56.000000Z' end_time: '2026-05-21T10:08:50.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-CP001 model_name: 'Wallbox Pulsar Plus' vehicle_name: 'Not Assigned' units: 110 amount: 550 status: completed start_time: '2026-05-21T10:03:25.000000Z' end_time: '2026-05-21T10:07:00.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 0 amount: 0 status: active start_time: '2026-05-21T09:56:40.000000Z' end_time: null - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Wahid A' units: 5 amount: 25 status: completed start_time: '2026-05-21T08:12:36.000000Z' end_time: '2026-05-21T08:34:33.000000Z' - station_name: 'Downtown Charging Hub' charger_id: CHR-CP001 model_name: 'Wallbox Pulsar Plus' vehicle_name: 'Not Assigned' units: 0 amount: 0 status: ongoing start_time: '2026-05-21T05:46:51.000000Z' end_time: null - station_name: 'Downtown Charging Hub' charger_id: CHR-1 model_name: 'Tesla Supercharger V3' vehicle_name: 'Not Assigned' units: 0 amount: 0 status: ongoing start_time: '2026-05-20T11:41:37.000000Z' end_time: null items: type: object properties: station_name: type: string example: 'Downtown Charging Hub' charger_id: type: string example: CHR-CP001 model_name: type: string example: 'Wallbox Pulsar Plus' vehicle_name: type: string example: 'Not Assigned' units: type: integer example: 0 amount: type: integer example: 0 status: type: string example: ongoing start_time: type: string example: '2026-05-22T10:24:33.000000Z' end_time: type: string example: null nullable: true message: type: string example: 'Charging history retrieved successfully' total_records: type: integer example: 18 date_range: type: object properties: from: type: string example: '2026-05-17T00:00:00.000000Z' to: type: string example: '2026-05-27T07:22:38.448852Z' tags: - Endpoints security: [] /api/auth/register: post: summary: 'POST /api/auth/register - Register new user' operationId: pOSTapiauthregisterRegisterNewUser description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/auth/login: post: summary: 'POST /api/auth/login - Login user' operationId: pOSTapiauthloginLoginUser description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/auth/logout: post: summary: 'POST /api/auth/logout - Logout user' operationId: pOSTapiauthlogoutLogoutUser description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/auth/refresh: post: summary: 'POST /api/auth/refresh - Get user info from token' operationId: pOSTapiauthrefreshGetUserInfoFromToken description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/clients/list: get: summary: 'GET /api/clients/list - Get all clients (public endpoint for dropdown)' operationId: gETapiclientslistGetAllClientspublicEndpointForDropdown description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: success: true data: - id: 3 name: 'AutoCharge Systems' - id: 5 name: 'EV Mobility Services' - id: 2 name: 'Green Energy Pvt Ltd' - id: 4 name: 'Smart Grid Networks' - id: 6 name: 'Stacey Dunn' - id: 1 name: 'TechCorp Solutions' properties: success: type: boolean example: true data: type: array example: - id: 3 name: 'AutoCharge Systems' - id: 5 name: 'EV Mobility Services' - id: 2 name: 'Green Energy Pvt Ltd' - id: 4 name: 'Smart Grid Networks' - id: 6 name: 'Stacey Dunn' - id: 1 name: 'TechCorp Solutions' items: type: object properties: id: type: integer example: 3 name: type: string example: 'AutoCharge Systems' tags: - Endpoints security: [] /api/ocpp-charger/boot-notification: post: summary: 'Handle OCPP Boot Notification' operationId: handleOCPPBootNotification description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: charger_id: type: string description: 'The charger_id of an existing record in the chargers table.' example: consequatur firmware_version: type: string description: '' example: consequatur serial_number: type: string description: '' example: consequatur model: type: string description: '' example: consequatur required: - charger_id - firmware_version - serial_number - model security: [] /api/ocpp-charger/heartbeat: post: summary: 'Handle OCPP Heartbeat' operationId: handleOCPPHeartbeat description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: charger_id: type: string description: 'The charger_id of an existing record in the chargers table.' example: consequatur required: - charger_id security: [] /api/ocpp-charger/status-notification: post: summary: 'Handle OCPP Status Notification' operationId: handleOCPPStatusNotification description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: charger_id: type: string description: 'The charger_id of an existing record in the chargers table.' example: consequatur connector_id: type: integer description: '' example: 17 status: type: string description: '' example: Available enum: - Available - Preparing - Charging - Finishing - Faulted - Unavailable error_code: type: string description: '' example: consequatur nullable: true timestamp: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:38' nullable: true required: - charger_id - connector_id - status security: [] /api/ocpp-charger/start-transaction: post: summary: 'Handle OCPP Start Transaction' operationId: handleOCPPStartTransaction description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: charger_id: type: string description: 'The charger_id of an existing record in the chargers table.' example: consequatur connector_id: type: integer description: '' example: 17 id_tag: type: string description: '' example: consequatur meter_start: type: integer description: '' example: 17 timestamp: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:38' required: - charger_id - connector_id - id_tag - meter_start - timestamp security: [] /api/ocpp-charger/stop-transaction: post: summary: 'Handle OCPP Stop Transaction' operationId: handleOCPPStopTransaction description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: transaction_id: type: string description: 'The id of an existing record in the transactions table.' example: consequatur meter_stop: type: integer description: '' example: 17 timestamp: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:38' reason: type: string description: '' example: consequatur nullable: true required: - transaction_id - meter_stop - timestamp security: [] /api/ocpp-charger/meter-values: post: summary: 'Handle OCPP Meter Values' operationId: handleOCPPMeterValues description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: charger_id: type: string description: 'The charger_id of an existing record in the chargers table.' example: consequatur connector_id: type: integer description: '' example: 17 transaction_id: type: string description: 'The id of an existing record in the transactions table.' example: null nullable: true meter_value: type: object description: '' example: [] properties: { } required: - charger_id - connector_id - meter_value security: [] /api/chargers: get: summary: '' operationId: getApiChargers description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] post: summary: '' operationId: postApiChargers description: '' parameters: [] responses: { } tags: - Endpoints security: [] '/api/chargers/{id}': get: summary: '' operationId: getApiChargersId description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] put: summary: '' operationId: putApiChargersId description: '' parameters: [] responses: { } tags: - Endpoints security: [] delete: summary: '' operationId: deleteApiChargersId description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the charger.' example: CHR-3 required: true schema: type: string '/api/chargers/{id}/status': get: summary: '' operationId: getApiChargersIdStatus description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the charger.' example: CHR-3 required: true schema: type: string '/api/chargers/hub/{hubId}': get: summary: '' operationId: getApiChargersHubHubId description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: hubId description: '' example: consequatur required: true schema: type: string /api/chargers/mapping: get: summary: '' operationId: getApiChargersMapping description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/stations/mobile: get: summary: 'GET /api/stations/mobile - Get full station list for mobile app' operationId: gETapistationsmobileGetFullStationListForMobileApp description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/stations/count: get: summary: 'GET /api/stations/count - Get total stations count' operationId: gETapistationscountGetTotalStationsCount description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/stations: get: summary: 'GET /api/stations - Get all stations' operationId: gETapistationsGetAllStations description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] post: summary: 'POST /api/stations - Create new station' operationId: pOSTapistationsCreateNewStation description: '' parameters: [] responses: { } tags: - Endpoints security: [] '/api/stations/{id}': get: summary: 'GET /api/stations/:id - Get specific station' operationId: gETapistationsidGetSpecificStation description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] put: summary: 'PUT /api/stations/:id - Update station' operationId: pUTapistationsidUpdateStation description: '' parameters: [] responses: { } tags: - Endpoints security: [] delete: summary: 'DELETE /api/stations/:id - Delete station' operationId: dELETEapistationsidDeleteStation description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the station.' example: consequatur required: true schema: type: string '/api/stations/{id}/details': get: summary: 'GET /api/stations/:id/details - Get all details for a station' operationId: gETapistationsiddetailsGetAllDetailsForAStation description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the station.' example: consequatur required: true schema: type: string '/api/stations/{id}/chargers': get: summary: 'GET /api/stations/:id/chargers - Get all chargers for a station' operationId: gETapistationsidchargersGetAllChargersForAStation description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the station.' example: consequatur required: true schema: type: string /api/connectors: get: summary: '' operationId: getApiConnectors description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] post: summary: '' operationId: postApiConnectors description: '' parameters: [] responses: { } tags: - Endpoints security: [] '/api/connectors/{id}': get: summary: '' operationId: getApiConnectorsId description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] put: summary: '' operationId: putApiConnectorsId description: '' parameters: [] responses: { } tags: - Endpoints security: [] delete: summary: '' operationId: deleteApiConnectorsId description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the connector.' example: 1 required: true schema: type: integer '/api/connectors/charger/{chargerId}': get: summary: '' operationId: getApiConnectorsChargerChargerId description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: chargerId description: '' example: CHR-3 required: true schema: type: string /api/connectors/mapping: get: summary: '' operationId: getApiConnectorsMapping description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/rfid: get: summary: 'GET /api/rfid - Get all RFID users' operationId: gETapirfidGetAllRFIDUsers description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] post: summary: 'POST /api/rfid - Create new RFID user' operationId: pOSTapirfidCreateNewRFIDUser description: '' parameters: [] responses: { } tags: - Endpoints security: [] '/api/rfid/{id}': get: summary: 'GET /api/rfid/:id - Get specific RFID user' operationId: gETapirfididGetSpecificRFIDUser description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] put: summary: 'PUT /api/rfid/:id - Update RFID user' operationId: pUTapirfididUpdateRFIDUser description: '' parameters: [] responses: { } tags: - Endpoints security: [] delete: summary: 'DELETE /api/rfid/:id - Delete RFID user' operationId: dELETEapirfididDeleteRFIDUser description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the rfid.' example: consequatur required: true schema: type: string /api/users: get: summary: '' operationId: getApiUsers description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/clients: get: summary: 'GET /api/clients - Get all clients' operationId: gETapiclientsGetAllClients description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] post: summary: 'POST /api/clients - Create new client' operationId: pOSTapiclientsCreateNewClient description: '' parameters: [] responses: { } tags: - Endpoints security: [] '/api/clients/{id}': get: summary: 'GET /api/clients/:id - Get specific client' operationId: gETapiclientsidGetSpecificClient description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] put: summary: 'PUT /api/clients/:id - Update client' operationId: pUTapiclientsidUpdateClient description: '' parameters: [] responses: { } tags: - Endpoints security: [] delete: summary: 'DELETE /api/clients/:id - Delete client' operationId: dELETEapiclientsidDeleteClient description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the client.' example: 1 required: true schema: type: integer /api/tariffs: get: summary: 'GET /api/tariffs - Get all tariffs' operationId: gETapitariffsGetAllTariffs description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] post: summary: 'POST /api/tariffs - Create new tariff' operationId: pOSTapitariffsCreateNewTariff description: '' parameters: [] responses: { } tags: - Endpoints security: [] '/api/tariffs/{id}': get: summary: 'GET /api/tariffs/:id - Get specific tariff' operationId: gETapitariffsidGetSpecificTariff description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] put: summary: 'PUT /api/tariffs/:id - Update tariff' operationId: pUTapitariffsidUpdateTariff description: '' parameters: [] responses: { } tags: - Endpoints security: [] delete: summary: 'DELETE /api/tariffs/:id - Delete tariff' operationId: dELETEapitariffsidDeleteTariff description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the tariff.' example: consequatur required: true schema: type: string /api/transactions: get: summary: 'GET /api/transactions - Get all transactions (basic and RFID sessions)' operationId: gETapitransactionsGetAllTransactionsbasicAndRFIDSessions description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/transactions/active: get: summary: 'GET /api/transactions/active - Get all active charging sessions' operationId: gETapitransactionsactiveGetAllActiveChargingSessions description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/transactions/stats: get: summary: 'GET /api/transactions/stats - Get transaction statistics' operationId: gETapitransactionsstatsGetTransactionStatistics description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] '/api/transactions/charger/{chargerId}': get: summary: 'GET /api/transactions/charger/:chargerId - Get transactions for a specific charger' operationId: gETapitransactionschargerchargerIdGetTransactionsForASpecificCharger description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: chargerId description: '' example: CHR-3 required: true schema: type: string '/api/transactions/{id}': get: summary: 'GET /api/transactions/:id - Get specific transaction' operationId: gETapitransactionsidGetSpecificTransaction description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the transaction.' example: 23 required: true schema: type: integer '/api/transactions/rfid/{id}': get: summary: 'GET /api/transactions/rfid/:id - Get specific RFID session' operationId: gETapitransactionsrfididGetSpecificRFIDSession description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the rfid.' example: consequatur required: true schema: type: string /api/payments: get: summary: 'GET /api/payments - Get all payments with required details' operationId: gETapipaymentsGetAllPaymentsWithRequiredDetails description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] '/api/payments/{id}': get: summary: 'GET /api/payments/{id} - Get specific payment details' operationId: gETapipaymentsidGetSpecificPaymentDetails description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] put: summary: 'PUT /api/payments/{id} - Update payment information' operationId: pUTapipaymentsidUpdatePaymentInformation description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the payment.' example: consequatur required: true schema: type: string /api/dashboard: get: summary: 'GET /api/dashboard - Get dashboard statistics' operationId: gETapidashboardGetDashboardStatistics description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/dashboard/summary: get: summary: 'GET /api/dashboard/summary - Enhanced dashboard summary' operationId: gETapidashboardsummaryEnhancedDashboardSummary description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/dashboard/revenue-trend: get: summary: 'GET /api/dashboard/revenue-trend - Revenue trend data for charts' operationId: gETapidashboardrevenueTrendRevenueTrendDataForCharts description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/dashboard/energy-by-station: get: summary: 'GET /api/dashboard/energy-by-station - Energy consumption by station' operationId: gETapidashboardenergyByStationEnergyConsumptionByStation description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/dashboard/recent-sessions: get: summary: 'GET /api/dashboard/recent-sessions - Recent charging sessions' operationId: gETapidashboardrecentSessionsRecentChargingSessions description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/dashboard/stats: get: summary: 'GET /api/dashboard/stats - Comprehensive dashboard statistics' operationId: gETapidashboardstatsComprehensiveDashboardStatistics description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/wallet: get: summary: '' operationId: getApiWallet description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/wallet/recharge: post: summary: '' operationId: postApiWalletRecharge description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: amount: type: number description: 'Must be at least 0.01. Must not be greater than 100000.' example: 21 description: type: string description: 'Must not be greater than 255 characters.' example: 'Dolorum amet iste laborum eius est dolor.' nullable: true required: - amount security: [] /api/wallet/transactions: get: summary: '' operationId: getApiWalletTransactions description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: limit: type: integer description: 'Must be at least 1. Must not be greater than 100.' example: 21 nullable: true type: type: string description: '' example: debit enum: - credit - debit - refund - penalty nullable: true security: [] /api/wallet/status: put: summary: '' operationId: putApiWalletStatus description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: status: type: string description: '' example: suspended enum: - active - suspended - blocked credit_limit: type: number description: 'Must be at least 0. Must not be greater than 100000.' example: 21 nullable: true required: - status security: [] /api/sessions: get: summary: '' operationId: getApiSessions description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: status: type: string description: '' example: interrupted enum: - active - completed - interrupted - failed nullable: true limit: type: integer description: 'Must be at least 1. Must not be greater than 100.' example: 21 nullable: true security: [] post: summary: '' operationId: postApiSessions description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: charger_id: type: string description: 'The id of an existing record in the chargers table.' example: consequatur connector_id: type: string description: 'The id of an existing record in the connectors table.' example: consequatur rfid_user_id: type: string description: 'The id of an existing record in the rfid_users table.' example: null nullable: true required: - charger_id - connector_id security: [] /api/sessions/active: get: summary: '' operationId: getApiSessionsActive description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/sessions/statistics: get: summary: '' operationId: getApiSessionsStatistics description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/sessions/history: get: summary: '' operationId: getApiSessionsHistory description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: start_date: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:39' nullable: true end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2107-06-25' nullable: true limit: type: integer description: 'Must be at least 1. Must not be greater than 100.' example: 13 nullable: true security: [] '/api/sessions/{id}': get: summary: '' operationId: getApiSessionsId description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the session.' example: consequatur required: true schema: type: string '/api/sessions/{id}/end': post: summary: '' operationId: postApiSessionsIdEnd description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: energy_consumed: type: number description: 'Must be at least 0.' example: 73 cost: type: number description: 'Must be at least 0.' example: 45 stop_reason: type: string description: 'Must not be greater than 255 characters.' example: qeopfuudtdsufvyvddqam nullable: true transaction_id: type: string description: 'The id of an existing record in the transactions table.' example: null nullable: true required: - energy_consumed - cost security: [] parameters: - in: path name: id description: 'The ID of the session.' example: consequatur required: true schema: type: string /api/hubs: get: summary: '' operationId: getApiHubs description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] post: summary: '' operationId: postApiHubs description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/hubs/mapping: get: summary: '' operationId: getApiHubsMapping description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] '/api/hubs/client/{clientId}': get: summary: '' operationId: getApiHubsClientClientId description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: clientId description: '' example: 1 required: true schema: type: integer '/api/hubs/{id}': get: summary: '' operationId: getApiHubsId description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] put: summary: '' operationId: putApiHubsId description: '' parameters: [] responses: { } tags: - Endpoints security: [] delete: summary: '' operationId: deleteApiHubsId description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the hub.' example: consequatur required: true schema: type: string '/api/hubs/{hubId}/users': get: summary: '' operationId: getApiHubsHubIdUsers description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] post: summary: '' operationId: postApiHubsHubIdUsers description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: hubId description: '' example: consequatur required: true schema: type: string '/api/hubs/{hubId}/users/{userId}': delete: summary: '' operationId: deleteApiHubsHubIdUsersUserId description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: hubId description: '' example: consequatur required: true schema: type: string - in: path name: userId description: '' example: 1 required: true schema: type: integer '/api/hubs/{hubId}/transactions': get: summary: '' operationId: getApiHubsHubIdTransactions description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: hubId description: '' example: consequatur required: true schema: type: string '/api/hubs/{hubId}/charger-operations': get: summary: '' operationId: getApiHubsHubIdChargerOperations description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: hubId description: '' example: consequatur required: true schema: type: string '/api/ocpp/remote-start/{chargerId}': post: summary: 'POST /api/ocpp/remote-start/:chargerId - Send RemoteStartTransaction' operationId: pOSTapiocppremoteStartchargerIdSendRemoteStartTransaction description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: chargerId description: '' example: consequatur required: true schema: type: string '/api/ocpp/remote-stop/{chargerId}': post: summary: 'POST /api/ocpp/remote-stop/:chargerId - Send RemoteStopTransaction' operationId: pOSTapiocppremoteStopchargerIdSendRemoteStopTransaction description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: chargerId description: '' example: consequatur required: true schema: type: string '/api/ocpp/reset/{chargerId}': post: summary: 'POST /api/ocpp/reset/:chargerId - Send Reset command' operationId: pOSTapiocppresetchargerIdSendResetCommand description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: chargerId description: '' example: consequatur required: true schema: type: string '/api/ocpp/unlock-connector/{chargerId}': post: summary: 'POST /api/ocpp/unlock-connector/:chargerId - Send UnlockConnector' operationId: pOSTapiocppunlockConnectorchargerIdSendUnlockConnector description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: chargerId description: '' example: consequatur required: true schema: type: string '/api/ocpp/logs/{chargerId}': get: summary: 'GET /api/ocpp/logs/:chargerId - Get OCPP logs for a charger' operationId: gETapiocpplogschargerIdGetOCPPLogsForACharger description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: chargerId description: '' example: consequatur required: true schema: type: string /api/ocpp/logs: get: summary: 'GET /api/ocpp/logs - Get all OCPP logs with pagination' operationId: gETapiocpplogsGetAllOCPPLogsWithPagination description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/ocpp/stats: get: summary: 'GET /api/ocpp/stats - Get OCPP statistics' operationId: gETapiocppstatsGetOCPPStatistics description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] '/api/ocpp/log/{id}': get: summary: 'GET /api/ocpp/log/:id - Get single OCPP log detail' operationId: gETapiocpplogidGetSingleOCPPLogDetail description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the log.' example: consequatur required: true schema: type: string /api/ocpp/register-mock: post: summary: 'POST /api/ocpp/register-mock - Register a charger with mock connection for testing' operationId: pOSTapiocppregisterMockRegisterAChargerWithMockConnectionForTesting description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/ocpp-v2/start-charging: post: summary: '' operationId: postApiOcppV2StartCharging description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: charger_id: type: string description: '' example: consequatur connector_id: type: integer description: '' example: 17 idTag: type: string description: '' example: consequatur nullable: true required: - charger_id - connector_id security: [] /api/ocpp-v2/stop-charging: post: summary: '' operationId: postApiOcppV2StopCharging description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: charger_id: type: string description: '' example: consequatur transaction_id: type: integer description: '' example: 17 required: - charger_id - transaction_id security: [] '/api/ocpp-v2/charger-status/{chargerId}': get: summary: '' operationId: getApiOcppV2ChargerStatusChargerId description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: chargerId description: '' example: consequatur required: true schema: type: string /api/ocpp-v2/transaction-history: get: summary: '' operationId: getApiOcppV2TransactionHistory description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: charger_id: type: integer description: '' example: 17 nullable: true status: type: string description: '' example: cancelled enum: - initiated - ongoing - charging - completed - cancelled nullable: true from: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:40' nullable: true to: type: string description: 'Must be a valid date. Must be a date after or equal to from.' example: '2107-06-25' nullable: true limit: type: integer description: 'Must be at least 1. Must not be greater than 500.' example: 13 nullable: true security: [] /api/ocpp-v2/meter-values: get: summary: '' operationId: getApiOcppV2MeterValues description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: charger_id: type: integer description: '' example: 17 nullable: true transaction_id: type: integer description: '' example: 17 nullable: true from: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:40' nullable: true to: type: string description: 'Must be a valid date. Must be a date after or equal to from.' example: '2107-06-25' nullable: true limit: type: integer description: 'Must be at least 1. Must not be greater than 1000.' example: 13 nullable: true security: [] /api/ocpp-v2/connected-chargers: get: summary: '' operationId: getApiOcppV2ConnectedChargers description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/ocpp-v2/active-transactions: get: summary: '' operationId: getApiOcppV2ActiveTransactions description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/reports/sessions: get: summary: 'Sessions Report - Analyze charger usage patterns, user behavior, and operational efficiency' operationId: sessionsReportAnalyzeChargerUsagePatternsUserBehaviorAndOperationalEfficiency description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: start_date: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:40' end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2107-06-25' client_id: type: string description: 'The id of an existing record in the clients table.' example: null nullable: true hub_id: type: string description: 'The id of an existing record in the hubs table.' example: null nullable: true charger_id: type: string description: 'The charger_id of an existing record in the chargers table.' example: null nullable: true status: type: string description: '' example: interrupted enum: - active - completed - interrupted - failed nullable: true required: - start_date - end_date security: [] /api/reports/sessions/export: get: summary: 'Export Sessions Report - Download CSV file of sessions data' operationId: exportSessionsReportDownloadCSVFileOfSessionsData description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: start_date: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:40' end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2107-06-25' client_id: type: string description: 'The id of an existing record in the clients table.' example: null nullable: true hub_id: type: string description: 'The id of an existing record in the hubs table.' example: null nullable: true charger_id: type: string description: 'The charger_id of an existing record in the chargers table.' example: null nullable: true status: type: string description: '' example: active enum: - active - completed - interrupted - failed nullable: true required: - start_date - end_date security: [] /api/reports/energy: get: summary: 'Energy Report - Monitor total energy consumption across locations, hubs, and units' operationId: energyReportMonitorTotalEnergyConsumptionAcrossLocationsHubsAndUnits description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/reports/revenue: get: summary: 'Revenue Report - Track revenue generation for business decisions' operationId: revenueReportTrackRevenueGenerationForBusinessDecisions description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: start_date: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:40' end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2107-06-25' client_id: type: string description: 'The id of an existing record in the clients table.' example: null nullable: true hub_id: type: string description: 'The id of an existing record in the hubs table.' example: null nullable: true group_by: type: string description: '' example: location enum: - location - hub - charger - daily nullable: true required: - start_date - end_date security: [] /api/reports/client-location: get: summary: 'Client & Location Reports - Advanced filtering and reporting' operationId: clientLocationReportsAdvancedFilteringAndReporting description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: start_date: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:40' end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2107-06-25' client_id: type: string description: 'The id of an existing record in the clients table.' example: null nullable: true location_id: type: string description: 'The id of an existing record in the charging_stations table.' example: null nullable: true required: - start_date - end_date security: [] /api/reports/commission: get: summary: 'Commission Reports - Profit, commissions applied, client earnings, platform revenue' operationId: commissionReportsProfitCommissionsAppliedClientEarningsPlatformRevenue description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: start_date: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:40' end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2107-06-25' client_id: type: string description: 'The id of an existing record in the clients table.' example: null nullable: true hub_id: type: string description: 'The id of an existing record in the hubs table.' example: null nullable: true required: - start_date - end_date security: [] /api/firmware/versions: get: summary: 'Get firmware version visibility across all devices' operationId: getFirmwareVersionVisibilityAcrossAllDevices description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: client_id: type: string description: 'The id of an existing record in the clients table.' example: null nullable: true hub_id: type: string description: 'The id of an existing record in the hubs table.' example: null nullable: true status: type: string description: '' example: available enum: - available - charging - faulted - unavailable nullable: true security: [] '/api/firmware/versions/{chargerId}': get: summary: 'Get firmware version details for a specific charger' operationId: getFirmwareVersionDetailsForASpecificCharger description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: chargerId description: '' example: consequatur required: true schema: type: string '/api/firmware/update/{chargerId}': post: summary: 'Trigger firmware update for a specific charger' operationId: triggerFirmwareUpdateForASpecificCharger description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: firmware_version: type: string description: '' example: consequatur firmware_url: type: string description: 'Must be a valid URL.' example: 'https://www.mueller.com/laborum-eius-est-dolor-dolores-minus-voluptatem' priority: type: string description: '' example: high enum: - low - medium - high nullable: true retry_count: type: integer description: 'Must be at least 0. Must not be greater than 5.' example: 4 nullable: true required: - firmware_version - firmware_url security: [] parameters: - in: path name: chargerId description: '' example: consequatur required: true schema: type: string /api/firmware/bulk-update: post: summary: 'Trigger firmware update for multiple chargers (bulk update)' operationId: triggerFirmwareUpdateForMultipleChargersbulkUpdate description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: charger_ids: type: array description: 'The charger_id of an existing record in the chargers table.' example: null items: type: string firmware_version: type: string description: '' example: consequatur firmware_url: type: string description: 'Must be a valid URL.' example: 'https://www.mueller.com/laborum-eius-est-dolor-dolores-minus-voluptatem' priority: type: string description: '' example: high enum: - low - medium - high nullable: true required: - firmware_version - firmware_url security: [] '/api/firmware/status/{chargerId}': get: summary: 'Get firmware update status for a charger' operationId: getFirmwareUpdateStatusForACharger description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: chargerId description: '' example: consequatur required: true schema: type: string /api/firmware/outdated: get: summary: 'Get chargers that need firmware updates (outdated versions)' operationId: getChargersThatNeedFirmwareUpdatesoutdatedVersions description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: target_version: type: string description: '' example: consequatur required: - target_version security: [] /api/ocpp-integration/logs: get: summary: 'Get OCPP logs for a charger' operationId: getOCPPLogsForACharger description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: charger_id: type: string description: 'The charger_id of an existing record in the chargers table.' example: consequatur start_date: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:40' nullable: true end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2107-06-25' nullable: true message_type: type: string description: '' example: consequatur nullable: true required: - charger_id security: [] /api/ocpp-integration/send-command: post: summary: 'Send OCPP command to charger' operationId: sendOCPPCommandToCharger description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: charger_id: type: string description: 'The charger_id of an existing record in the chargers table.' example: consequatur command: type: string description: '' example: ChangeConfiguration enum: - Reset - Unlock - ChangeAvailability - ChangeConfiguration parameters: type: object description: '' example: null properties: { } nullable: true required: - charger_id - command security: [] /api/commissions: get: summary: 'Get all commissions' operationId: getAllCommissions description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] post: summary: 'Create a new commission' operationId: createANewCommission description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: applied_to: type: string description: '' example: hub enum: - client - hub client_id: type: string description: 'This field is required when applied_to is client. The id of an existing record in the clients table.' example: null hub_id: type: string description: 'This field is required when applied_to is hub. The id of an existing record in the hubs table.' example: null commission_type: type: string description: '' example: fixed enum: - percentage - fixed commission_value: type: number description: 'Must be at least 0.' example: 73 is_active: type: boolean description: '' example: true notes: type: string description: '' example: consequatur nullable: true required: - applied_to - commission_type - commission_value security: [] /api/commissions/summary: get: summary: 'Get commission summary statistics' operationId: getCommissionSummaryStatistics description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] /api/commissions/history: get: summary: 'Get commission history' operationId: getCommissionHistory description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: commission_id: type: string description: 'The id of an existing record in the commissions table.' example: null nullable: true start_date: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:40' nullable: true end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2107-06-25' nullable: true security: [] '/api/commissions/client/{clientId}': get: summary: 'Get commission for a specific client' operationId: getCommissionForASpecificClient description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: clientId description: '' example: 1 required: true schema: type: integer '/api/commissions/hub/{hubId}': get: summary: 'Get commission for a specific hub' operationId: getCommissionForASpecificHub description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: hubId description: '' example: consequatur required: true schema: type: string '/api/commissions/{id}': get: summary: 'Get a specific commission' operationId: getASpecificCommission description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] put: summary: 'Update an existing commission' operationId: updateAnExistingCommission description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: commission_type: type: string description: '' example: fixed enum: - percentage - fixed nullable: true commission_value: type: number description: 'Must be at least 0.' example: 73 nullable: true is_active: type: boolean description: '' example: false nullable: true notes: type: string description: '' example: consequatur nullable: true change_reason: type: string description: '' example: consequatur required: - change_reason security: [] delete: summary: 'Delete a commission' operationId: deleteACommission description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the commission.' example: consequatur required: true schema: type: string '/api/commissions/{id}/toggle-status': post: summary: 'Activate/Deactivate commission' operationId: activateDeactivateCommission description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: is_active: type: boolean description: '' example: false change_reason: type: string description: '' example: consequatur required: - is_active - change_reason security: [] parameters: - in: path name: id description: 'The ID of the commission.' example: consequatur required: true schema: type: string /api/business-dashboard/summary: get: summary: 'Get overall dashboard summary' operationId: getOverallDashboardSummary description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: start_date: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:40' nullable: true end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2107-06-25' nullable: true security: [] /api/business-dashboard/clients: get: summary: 'Get client-wise dashboard data' operationId: getClientWiseDashboardData description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: start_date: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:40' nullable: true end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2107-06-25' nullable: true client_id: type: string description: 'The id of an existing record in the clients table.' example: null nullable: true security: [] /api/business-dashboard/hubs: get: summary: 'Get hub-wise dashboard data' operationId: getHubWiseDashboardData description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: start_date: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:40' nullable: true end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2107-06-25' nullable: true hub_id: type: string description: 'The id of an existing record in the hubs table.' example: null nullable: true security: [] '/api/business-dashboard/clients/{id}': get: summary: 'Get detailed dashboard for a specific client' operationId: getDetailedDashboardForASpecificClient description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: start_date: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:41' nullable: true end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2107-06-25' nullable: true security: [] parameters: - in: path name: id description: 'The ID of the client.' example: 1 required: true schema: type: integer '/api/business-dashboard/hubs/{id}': get: summary: 'Get detailed dashboard for a specific hub' operationId: getDetailedDashboardForASpecificHub description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: start_date: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:41' nullable: true end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2107-06-25' nullable: true security: [] parameters: - in: path name: id description: 'The ID of the hub.' example: consequatur required: true schema: type: string /api/business-dashboard/top-clients: get: summary: 'Get top performing clients' operationId: getTopPerformingClients description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: start_date: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:41' nullable: true end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2107-06-25' nullable: true limit: type: integer description: 'Must be at least 1. Must not be greater than 50.' example: 13 nullable: true security: [] /api/business-dashboard/top-hubs: get: summary: 'Get top performing hubs' operationId: getTopPerformingHubs description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: start_date: type: string description: 'Must be a valid date.' example: '2026-05-27T07:22:41' nullable: true end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2107-06-25' nullable: true limit: type: integer description: 'Must be at least 1. Must not be greater than 50.' example: 13 nullable: true security: [] /api/complaints: get: summary: '' operationId: getApiComplaints description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] post: summary: '' operationId: postApiComplaints description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: subject: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq description: type: string description: 'Must not be greater than 2000 characters.' example: 'Dolores molestias ipsam sit.' required: - subject - description security: [] '/api/complaints/{id}': get: summary: '' operationId: getApiComplaintsId description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: success: false error: 'Access token required' properties: success: type: boolean example: false error: type: string example: 'Access token required' tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the complaint.' example: consequatur required: true schema: type: string /api/admin/charger-configurations: get: summary: 'API: Get all charger configurations with details' operationId: aPIGetAllChargerConfigurationsWithDetails description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /api/admin/charger-configurations/manufacturers: get: summary: 'API: Get manufacturers for admin dropdown' operationId: aPIGetManufacturersForAdminDropdown description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /api/admin/charger-configurations/models: get: summary: 'API: Get models by manufacturer for admin dropdown' operationId: aPIGetModelsByManufacturerForAdminDropdown description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /api/admin/charger-configurations/connector-types: get: summary: 'API: Get connector types for admin dropdown' operationId: aPIGetConnectorTypesForAdminDropdown description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /api/admin/charger-configurations/current-types: get: summary: 'API: Get current types for admin dropdown' operationId: aPIGetCurrentTypesForAdminDropdown description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] '/api/admin/charger-configurations/{id}': get: summary: 'API: Get single charger configuration details' operationId: aPIGetSingleChargerConfigurationDetails description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] delete: summary: 'API: Delete charger configuration' operationId: aPIDeleteChargerConfiguration description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the charger configuration.' example: consequatur required: true schema: type: string /api/wallet/deduct: post: summary: '' operationId: postApiWalletDeduct description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: user_id: type: string description: 'The id of an existing record in the users table.' example: null nullable: true amount: type: number description: 'Must be at least 0.01.' example: 73 description: type: string description: 'Must not be greater than 255 characters.' example: 'Dolorum amet iste laborum eius est dolor.' nullable: true reference_type: type: string description: 'Must not be greater than 50 characters.' example: dtdsufvyvddqamniihfqc nullable: true reference_id: type: integer description: '' example: 17 nullable: true required: - amount security: []