Frontend API (1.0.0)
Download OpenAPI specification:
API documentation for the frontend application.
Login
Allows users to log in. The optional Realm field targets the user pool — omit it (or pass "frontend") for end-user app accounts. Pass "dashboard" to authenticate as a dashboard operator; the request returns 403 if the account lacks ROLE_ADMIN.
Request Body schema: application/jsonrequired
| Email required | string |
| Password required | string |
| Realm | string Default: "frontend" Enum: "frontend" "dashboard" Target user pool. Defaults to "frontend". Pass "dashboard" for operator login. |
Responses
Request samples
- Payload
{- "Email": "user@example.com",
- "Password": "password123"
}Register
Registers a new user. The optional Realm field targets the user pool — omit it (or pass "frontend") to create an end-user account with ROLE_USER. Pass "dashboard" to create a dashboard operator account; the account is automatically assigned ROLE_ADMIN.
Request Body schema: application/jsonrequired
| FirstName | string |
| LastName | string |
| Email required | string |
| Password required | string |
| Phone | string |
| Realm | string Default: "frontend" Enum: "frontend" "dashboard" Target user pool. Defaults to "frontend". Pass "dashboard" to register a dashboard operator (auto-assigns ROLE_ADMIN). |
Responses
Request samples
- Payload
{- "FirstName": "John",
- "LastName": "Doe",
- "Email": "user@example.com",
- "Password": "password123",
- "Phone": "+1234567890"
}Request password reset token
Sends a password-reset token to the provided email address. The optional Realm field scopes the lookup to the correct user pool — defaults to "frontend". Pass "dashboard" to target a dashboard operator account.
Request Body schema: application/jsonrequired
| Type required | string Value: "password-reset" |
| Email required | string |
| Realm | string Default: "frontend" Enum: "frontend" "dashboard" Target user pool. Defaults to "frontend". |
Responses
Request samples
- Payload
{- "Type": "password-reset",
- "Email": "user@example.com"
}Response samples
- 200
[- {
- "ID": "CHARGER001",
- "UUID": "123e4567-e89b-12d3-a456-426614174000",
- "Name": "Main Charger",
- "UserID": "123e4567-e89b-12d3-a456-426614174001",
- "EndpointAddress": "192.168.1.1",
- "ChargePointVendor": "Vendor A",
- "ChargePointModel": "Model X",
- "ProtocolVersion": "OCPP 1.6",
- "FWVersion": "1.0.0",
- "FWUpdateStatus": "Updated"
}
]Get charger details
Retrieves details of a specific charger.
Authorizations:
path Parameters
| chargerId required | string |
Responses
Response samples
- 200
{- "ID": "CHARGER001",
- "UUID": "123e4567-e89b-12d3-a456-426614174000",
- "Name": "Main Charger",
- "UserID": "123e4567-e89b-12d3-a456-426614174001",
- "EndpointAddress": "192.168.1.1",
- "ChargePointVendor": "Vendor A",
- "ChargePointModel": "Model X",
- "ProtocolVersion": "OCPP 1.6",
- "FWVersion": "1.0.0",
- "FWUpdateStatus": "Updated"
}Get connector details
Retrieves details of a specific connector by charger and connector ID.
Authorizations:
path Parameters
| chargerId required | string |
| connectorId required | string |
Responses
Response samples
- 200
{- "ChargeBoxID": "CHARGEBOX001",
- "ConnectorID": 1,
- "ConnectorType": "Type1",
- "Status": "Available",
- "CreatedAt": "2023-01-01T12:00:00Z"
}Update connector
Updates a specific connector.
Authorizations:
path Parameters
| chargerId required | string |
| connectorId required | string |
Request Body schema: application/jsonrequired
| ChargeBoxID | string |
| ConnectorID | integer |
| ConnectorType | string |
| Status | string |
Responses
Request samples
- Payload
{- "ChargeBoxID": "CHARGEBOX001",
- "ConnectorID": 1,
- "ConnectorType": "Type2",
- "Status": "Charging"
}Get sessions for a connector
Retrieves all sessions for a specific charger and connector.
Authorizations:
path Parameters
| chargerId required | string |
| connectorId required | string |
Responses
Response samples
- 200
[- {
- "ID": 1,
- "UUID": "123e4567-e89b-12d3-a456-426614174000",
- "UserID": "123e4567-e89b-12d3-a456-426614174001",
- "ChargeBoxID": "CHARGEBOX001",
- "ConnectorID": 1,
- "MeterStart": 100,
- "MeterStop": 150,
- "TimestampStart": "2023-01-01T12:00:00Z",
- "TimestampStop": "2023-01-01T14:00:00Z"
}
]Start a session for a connector
Starts a new session for a specific charger and connector.
Authorizations:
path Parameters
| chargerId required | string |
| connectorId required | string |
Request Body schema: application/jsonrequired
| AuthCode | string |
| PaymentMethodID | string |
| Credits | number <float> |
| Currency | string |
Responses
Request samples
- Payload
{- "AuthCode": "ID12345"
}Response samples
- 409
{- "Error": "Connector not ready for RemoteStart"
}Get session details
Retrieves details of a specific session.
Authorizations:
path Parameters
| sessionId required | string |
Responses
Response samples
- 200
{- "ID": 1,
- "UUID": "123e4567-e89b-12d3-a456-426614174000",
- "UserID": "123e4567-e89b-12d3-a456-426614174001",
- "ChargeBoxID": "CHARGEBOX001",
- "ConnectorID": 1,
- "MeterStart": 100,
- "MeterStop": 150,
- "TimestampStart": "2023-01-01T12:00:00Z",
- "TimestampStop": "2023-01-01T14:00:00Z"
}Update user info
Updates information about a specific user.
Authorizations:
path Parameters
| userId required | string |
Request Body schema: application/jsonrequired
| FirstName | string |
| LastName | string |
string |
Responses
Request samples
- Payload
{- "FirstName": "John",
- "LastName": "Doe",
- "Email": "john.doe@example.com"
}Add credit to user account
Adds credit to the authenticated user's account using a two-phase commit. Credits are added to the balance first, then the payment token is committed via the payment adapter (CommitToken). If either step fails the credit is rolled back and the payment token is cancelled through the payment adapter.
Authorizations:
Request Body schema: application/jsonrequired
| Currency required | string Currency code (e.g., CAD, AMD) |
| Amount required | number <float> |
| PaymentProcessorID required | string Stripe PaymentIntent ID, Arcaipay order ID, or Wevend token ID |
| PaymentProcessor required | string Enum: "Stripe" "Arcaipay" "Wevend" |
Responses
Request samples
- Payload
{- "Currency": "CAD",
- "Amount": 10,
- "PaymentProcessorID": "pi_123456789",
- "PaymentProcessor": "Stripe"
}Response samples
- 200
- 400
- 401
- 500
{- "Message": "Credit added successfully"
}Get credit balances
Retrieves all credit balances for the authenticated user, optionally filtered by currency.
Authorizations:
query Parameters
| Currency | string Example: Currency=CAD Currency code to filter by (e.g., CAD) |
Responses
Response samples
- 200
- 400
- 401
[- {
- "CurrencyCode": "CAD",
- "AvailableBalance": 15.59,
- "ReservedBalance": 10.01,
- "CreatedAt": "2019-08-24T14:15:22Z",
- "UpdatedAt": "2019-08-24T14:15:22Z"
}
]Get credit transaction history
Retrieves the credit transaction history for the authenticated user.
Authorizations:
Responses
Response samples
- 200
- 401
[- {
- "ID": "3892eb50-4697-4c72-aadc-32b766bce3c0",
- "UserID": "08aac8e3-775d-4513-8aaa-658f6ba9bbcd",
- "CurrencyCode": "CAD",
- "Amount": 10,
- "TransactionType": "add_credit",
- "ReferenceID": "25c4d93c-5853-4e1c-8397-0685e76ea05b",
- "Description": "Added credit 10.00 CAD",
- "CreatedAt": "2019-08-24T14:15:22Z"
}
]Create billing profile
Creates a billing profile for a specific user.
Authorizations:
path Parameters
| userId required | string |
Request Body schema: application/jsonrequired
| name | string |
| rate_per_kw | number <float> |
| rate_per_minute | number <float> |
| idle_rate_per_minute | number <float> |
| idle_grace_period_min | integer |
| tax_jurisdiction_id | string |
Responses
Request samples
- Payload
{- "name": "Standard Plan",
- "rate_per_kw": 0.15,
- "rate_per_minute": 0.05,
- "idle_rate_per_minute": 0.1,
- "idle_grace_period_min": 5,
- "tax_jurisdiction_id": "123e4567-e89b-12d3-a456-426614174002"
}Update billing profile
Updates a specific billing profile for a user.
Authorizations:
path Parameters
| userId required | string |
| profileId required | string |
Request Body schema: application/jsonrequired
| id | string |
| name | string |
| rate_per_kw | number <float> |
| rate_per_minute | number <float> |
| idle_rate_per_minute | number <float> |
| idle_grace_period_min | integer |
| tax_jurisdiction_id | string |
Responses
Request samples
- Payload
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Updated Plan",
- "rate_per_kw": 0.2,
- "rate_per_minute": 0.07,
- "idle_rate_per_minute": 0.12,
- "idle_grace_period_min": 10,
- "tax_jurisdiction_id": "123e4567-e89b-12d3-a456-426614174002"
}Create charge session
Creates a new charge session for the authenticated user.
Authorizations:
Request Body schema: application/jsonrequired
| transaction_id | integer |
| charge_box_id | string |
| connector_id | integer |
| user_id | string |
Responses
Request samples
- Payload
{- "transaction_id": 1,
- "charge_box_id": "CHARGEBOX001",
- "connector_id": 1,
- "user_id": "123e4567-e89b-12d3-a456-426614174001"
}Update charge session
Updates a specific charge session.
Authorizations:
path Parameters
| sessionId required | string |
Request Body schema: application/jsonrequired
| id | string |
| transaction_id | integer |
| charge_box_id | string |
| connector_id | integer |
| user_id | string |
Responses
Request samples
- Payload
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "transaction_id": 1,
- "charge_box_id": "CHARGEBOX001",
- "connector_id": 1,
- "user_id": "123e4567-e89b-12d3-a456-426614174001"
}Create a charging profile
Creates a new charging profile.
Authorizations:
Request Body schema: application/jsonrequired
| ChargeBoxID | string |
| ChargingProfileID | integer |
| StackLevel | integer |
| ChargingProfilePurpose | string |
| ChargingProfileKind | string |
| ChargingSchedule | string |
Responses
Request samples
- Payload
{- "ChargeBoxID": "CHARGEBOX001",
- "ChargingProfileID": 1,
- "StackLevel": 1,
- "ChargingProfilePurpose": "TxProfile",
- "ChargingProfileKind": "Absolute",
- "ChargingSchedule": "{\"duration\":3600,\"startSchedule\":\"2023-01-01T12:00:00Z\"}"
}Update a charging profile
Updates a specific charging profile.
Authorizations:
path Parameters
| profileId required | string |
Request Body schema: application/jsonrequired
| ID | string |
| ChargeBoxID | string |
| StackLevel | integer |
| ChargingProfilePurpose | string |
| ChargingProfileKind | string |
| ChargingSchedule | string |
Responses
Request samples
- Payload
{- "ID": "123e4567-e89b-12d3-a456-426614174000",
- "ChargeBoxID": "CHARGEBOX001",
- "StackLevel": 2,
- "ChargingProfilePurpose": "TxProfile",
- "ChargingProfileKind": "Relative",
- "ChargingSchedule": "{\"duration\":1800,\"startSchedule\":\"2023-01-01T13:00:00Z\"}"
}Get theme configuration by domain
Returns the active theme configuration for a given domain. Public endpoint — no authentication required.
query Parameters
| domain required | string Example: domain=app.jplug.io The domain to look up the theme for (e.g. app.jplug.io). |
Responses
Response samples
- 200
{- "Domain": "app.jplug.io",
- "Theme": {
- "ID": "3892eb50-4697-4c72-aadc-32b766bce3c0",
- "Name": "string",
- "Description": "string",
- "IsActive": true,
- "Config": {
- "themeKey": "default",
- "language": "en",
- "companyName": "string",
- "companyDetails": [
- "string"
], - "countryCallingCode": "CA +1",
- "supportLink": "string",
- "termsUrl": "string",
- "logoImage": "string",
- "logoImageDark": "string",
- "logoAlt": "string",
- "title": "string",
- "description": "string",
- "favicon": "string",
- "chargerNamePrefix": "string",
- "og": {
- "title": "string",
- "description": "string",
- "image": "string"
}, - "designTokens": {
- "light": {
- "property1": "string",
- "property2": "string"
}, - "dark": {
- "property1": "string",
- "property2": "string"
}
}
}
}
}