Ir a la referencia
JPlug DevelopersPortal de desarrolladores ↗

Frontend API Manager (Cookie Auth) (1.0.0)

Download OpenAPI specification:

Entry OpenAPI document for manager controllers exposed through the /manager route group.

Authentication is cookie-based and role-gated:

  • Cookie: Authorization
  • Required role: ROLE_ADMIN

Source layout note:

  • Shared management operations, schemas, examples, and responses are authored in docs/openapi/common/management.yaml.
  • Validation with kin-openapi checks references only and does not emit a bundled artifact.

API Keys

List API keys

Returns all API keys associated with the authenticated user.

Authorizations:
CookieAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create API key

Creates a new API key for the authenticated user.

Authorizations:
CookieAuth
Request Body schema: application/json
required
Role
string
ExpiresAt
string

Go duration string

Responses

Request samples

Content type
application/json
{
  • "Role": "ROLE_USER",
  • "ExpiresAt": "8760h0m0s"
}

Response samples

Content type
application/json
{
  • "ID": "123e4567-e89b-12d3-a456-426614174010",
  • "Key": "jp_live_example_key",
  • "Role": "ROLE_USER",
  • "ExpiresAt": "2027-04-14T00:00:00Z"
}

Delete API key

Deletes an API key by its ID.

Authorizations:
CookieAuth
path Parameters
apiKeyId
required
string <uuid>

API key UUID.

Responses

Response samples

Content type
application/json
{
  • "Error": "Invalid request body"
}

Auth Codes

List ID tags

Returns all ID tags for the authenticated user.

Authorizations:
CookieAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create ID tag

Creates an ID tag for the authenticated user.

Authorizations:
CookieAuth
Request Body schema: application/json
required
ID
string
Name
string
Type
required
string
Status
string
OrganizationID
string or null <uuid>
ExpiryDate
string <date-time>

Responses

Request samples

Content type
application/json
{
  • "ID": "TAG001",
  • "Name": "Reception Tag",
  • "Type": "RFID",
  • "Status": "Accepted"
}

Response samples

Content type
application/json
{
  • "ID": "TAG001",
  • "Name": "Reception Tag",
  • "Type": "RFID",
  • "Status": "Accepted"
}

Get ID tag by ID

Returns a specific ID tag for the authenticated user.

Authorizations:
CookieAuth
path Parameters
id
required
string

ID tag identifier.

Responses

Response samples

Content type
application/json
{
  • "ID": "TAG001",
  • "Name": "Reception Tag",
  • "Type": "RFID",
  • "Status": "Accepted"
}

Update ID tag

Updates an existing ID tag by ID.

Authorizations:
CookieAuth
path Parameters
id
required
string

ID tag identifier.

Request Body schema: application/json
required
ID
string
Name
string
Type
required
string
Status
string
OrganizationID
string or null <uuid>
ExpiryDate
string <date-time>

Responses

Request samples

Content type
application/json
{
  • "Name": "Updated Tag",
  • "Type": "RFID",
  • "Status": "Blocked"
}

Response samples

Content type
application/json
{
  • "ID": "TAG001",
  • "Name": "Main ID Tag",
  • "Type": "RFID",
  • "Status": "Accepted",
  • "OrganizationID": "2d34b1c1-8109-40c1-88f9-fdcfb32ea178",
  • "ExpiryDate": "2019-08-24T14:15:22Z"
}

Delete ID tag

Deletes an ID tag by ID.

Authorizations:
CookieAuth
path Parameters
id
required
string

ID tag identifier.

Responses

Response samples

Content type
application/json
{
  • "Error": "Invalid request body"
}

Billing Models

List billing models

Returns all billing models available to the authenticated user.

Authorizations:
CookieAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create billing model

Creates a billing model for the authenticated user.

Authorizations:
CookieAuth
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "Name": "Standard Plan",
  • "DefaultKWHRate": 0.2,
  • "DefaultTimeRate": 0.1
}

Response samples

Content type
application/json
{ }

Get billing model

Authorizations:
CookieAuth
path Parameters
modelId
required
string <uuid>

Billing model UUID.

Responses

Response samples

Content type
application/json
{ }

Update billing model

Authorizations:
CookieAuth
path Parameters
modelId
required
string <uuid>

Billing model UUID.

Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "ID": "123e4567-e89b-12d3-a456-426614174020",
  • "Name": "Updated Plan"
}

Response samples

Content type
application/json
{ }

Delete billing model

Authorizations:
CookieAuth
path Parameters
modelId
required
string <uuid>

Billing model UUID.

Responses

Response samples

Content type
application/json
{
  • "Error": "Invalid request body"
}

Charge Boxes

List charge boxes

Returns charge boxes owned/visible to the authenticated user with optional filters.

Authorizations:
CookieAuth
query Parameters
ID
string
UUID
string <uuid>
Name
string
UserID
string <uuid>
ChargePointVendor
string
ChargePointModel
string
ProtocolVersion
string
AddressID
string <uuid>

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create charge box

Creates a charge box with a required billing model owned by the authenticated user.

Authorizations:
CookieAuth
Request Body schema: application/json
required
ID
required
string
Name
string
BillingModelID
required
string <uuid>

Required billing model assigned to the charge box. Must identify an existing billing model owned by the authenticated user.

OrganizationID
string or null <uuid>

Responses

Request samples

Content type
application/json
{
  • "ID": "CHARGEBOX001",
  • "Name": "Main Charger",
  • "BillingModelID": "123e4567-e89b-12d3-a456-426614174003"
}

Response samples

Content type
application/json
{
  • "ID": "CHARGEBOX001",
  • "UUID": "123e4567-e89b-12d3-a456-426614174000",
  • "Name": "Main Charger",
  • "UserID": "123e4567-e89b-12d3-a456-426614174099",
  • "ChargePointVendor": "ACME",
  • "ChargePointModel": "JPLUG-FAST",
  • "ProtocolVersion": "OCPP 1.6",
  • "Description": "Parking lot charger",
  • "Timezone": "UTC",
  • "BillingModelID": "123e4567-e89b-12d3-a456-426614174003"
}

Get charge box by ID or name

Authorizations:
CookieAuth
path Parameters
chargeBoxIdOrName
required
string

Charge box ID or Name.

Responses

Response samples

Content type
application/json
{
  • "ID": "CHARGEBOX001",
  • "UUID": "123e4567-e89b-12d3-a456-426614174000",
  • "Name": "Main Charger",
  • "UserID": "123e4567-e89b-12d3-a456-426614174099",
  • "ChargePointVendor": "ACME",
  • "ChargePointModel": "JPLUG-FAST",
  • "ProtocolVersion": "OCPP 1.6",
  • "Description": "Parking lot charger",
  • "Timezone": "UTC",
  • "BillingModelID": "123e4567-e89b-12d3-a456-426614174003"
}

Update charge box

Updates a charge box. The resulting charge box must have a billing model owned by the authenticated user.

Authorizations:
CookieAuth
path Parameters
chargeBoxIdOrName
required
string

Charge box ID or Name.

Request Body schema: application/json
required
ID
required
string
Name
string
Description
string
Timezone
string
BillingModelID
string <uuid>

Billing model assigned to the charge box. Updates must leave the charge box with an existing billing model owned by the authenticated user.

AddressID
string <uuid>
object
MaxPower
number or null <double>

Maximum charging power in watts. Set to null to disable the setting.

Responses

Request samples

Content type
application/json
{
  • "ID": "CHARGEBOX001",
  • "Name": "Main Charger Updated",
  • "Description": "Parking lot charger",
  • "Timezone": "UTC",
  • "BillingModelID": "123e4567-e89b-12d3-a456-426614174003"
}

Response samples

Content type
application/json
{
  • "ID": "string",
  • "UUID": "f50af7e0-0dd5-4361-ab96-2e04f7bc7e30",
  • "Name": "string",
  • "UserID": "08aac8e3-775d-4513-8aaa-658f6ba9bbcd",
  • "OrganizationID": "2d34b1c1-8109-40c1-88f9-fdcfb32ea178",
  • "ChargePointVendor": "string",
  • "ChargePointModel": "string",
  • "ProtocolVersion": "string",
  • "MaxPower": 0.1,
  • "Description": "string",
  • "Timezone": "string",
  • "BillingModelID": "d8cf3116-a720-430b-bdfc-68ec490fe2ed",
  • "AddressID": "bfc25713-e79a-4614-a229-6a83766a0388"
}

Delete charge box

Authorizations:
CookieAuth
path Parameters
chargeBoxIdOrName
required
string

Charge box ID or Name.

Responses

Response samples

Content type
application/json
{
  • "Error": "Invalid request body"
}

Send charging profile

Asks the broker to send a charging profile (SetChargingProfile) to the charge box. Without a request body the default charging profile is sent. With a body, the supplied OCPP 1.6 profile is validated (400 on failure) and sent instead. Waits for the charger's reply (up to CHARGER_COMMAND_TIMEOUT, default 5s) and returns its status.

Authorizations:
CookieAuth
path Parameters
chargeBoxIdOrName
required
string

Charge box ID or Name.

Request Body schema: application/json
optional
connectorId
integer >= 0
Default: 0

Target connector (0 = whole charge point). Must be 0 for ChargePointMaxProfile.

required
object

Responses

Request samples

Content type
application/json
{
  • "connectorId": 0,
  • "csChargingProfiles": {
    }
}

Response samples

Content type
application/json
{
  • "status": "Accepted"
}

Clear charging profiles

Asks the broker to send a ClearChargingProfile (OCPP 1.6) to the charge box. Body fields are optional filters; an empty body clears every profile. Waits for the charger's reply (up to CHARGER_COMMAND_TIMEOUT, default 5s) and returns its status.

Authorizations:
CookieAuth
path Parameters
chargeBoxIdOrName
required
string

Charge box ID or Name.

Request Body schema: application/json
optional
id
integer >= 0

ID of the charging profile to clear.

connectorId
integer >= 0
chargingProfilePurpose
string
Enum: "ChargePointMaxProfile" "TxDefaultProfile" "TxProfile"
stackLevel
integer >= 0

Responses

Request samples

Content type
application/json
{
  • "id": 0,
  • "connectorId": 0,
  • "chargingProfilePurpose": "ChargePointMaxProfile",
  • "stackLevel": 0
}

Response samples

Content type
application/json
{
  • "status": "Accepted"
}

Request composite charging schedule

Asks the broker to send a GetCompositeSchedule (OCPP 1.6) to the charge box and waits for the reply (up to CHARGER_COMMAND_TIMEOUT, default 5s).

Authorizations:
CookieAuth
path Parameters
chargeBoxIdOrName
required
string

Charge box ID or Name.

Request Body schema: application/json
required
connectorId
required
integer >= 0

Connector to report on (0 = whole charge point).

duration
required
integer >= 1

Length of the requested schedule in seconds.

chargingRateUnit
string
Enum: "W" "A"

Responses

Request samples

Content type
application/json
{
  • "connectorId": 0,
  • "duration": 1,
  • "chargingRateUnit": "W"
}

Response samples

Content type
application/json
{
  • "status": "Accepted",
  • "connectorId": 0,
  • "scheduleStart": "2019-08-24T14:15:22Z",
  • "chargingSchedule": { }
}

Debug

Get request debug info

Returns plaintext diagnostic output for the authenticated request.

Authorizations:
CookieAuth

Responses

Response samples

Content type
application/json
{
  • "Error": "API key is required"
}

Invoices

List invoices

Supports invoice filtering through query params including metadata[key] style filters.

Authorizations:
CookieAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get invoice by ID

Authorizations:
CookieAuth
path Parameters
invoiceId
required
string <uuid>

Invoice UUID.

Responses

Response samples

Content type
application/json
{
  • "ID": "123e4567-e89b-12d3-a456-426614174060",
  • "UserID": "123e4567-e89b-12d3-a456-426614174099",
  • "Subtotal": 20,
  • "Total": 22,
  • "CurrencyCode": "CAD",
  • "Metadata": {
    }
}

Get invoice summary

Returns invoice line item totals and quantities grouped by currency, then by line item type.

Authorizations:
CookieAuth
query Parameters
month
string^\d{4}-(0[1-9]|1[0-2])$

Restrict the summary to a month (YYYY-MM).

Responses

Response samples

Content type
application/json
{
  • "InvoiceSummaries": [
    ]
}

Organizations

List organizations available to current user

Authorizations:
CookieAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create organization

Authorizations:
CookieAuth
Request Body schema: application/json
required
Name
required
string
Slug
string
Domain
string
Settings
string

Responses

Request samples

Content type
application/json
{
  • "Name": "Acme Charging",
  • "Slug": "acme-charging",
  • "Domain": "acme.example.com",
  • "Settings": "{\"timezone\":\"UTC\"}"
}

Response samples

Content type
application/json
{
  • "ID": "123e4567-e89b-12d3-a456-426614174030",
  • "Name": "Acme Charging",
  • "Slug": "acme-charging",
  • "Domain": "acme.example.com",
  • "IsActive": true,
  • "Settings": "{\"timezone\":\"UTC\"}",
  • "CreatedAt": "2026-04-14T10:00:00Z",
  • "UpdatedAt": "2026-04-14T10:00:00Z"
}

Get organization by ID

Authorizations:
CookieAuth
path Parameters
organizationId
required
string <uuid>

Organization UUID.

Responses

Response samples

Content type
application/json
{
  • "ID": "123e4567-e89b-12d3-a456-426614174030",
  • "Name": "Acme Charging",
  • "Slug": "acme-charging",
  • "Domain": "acme.example.com",
  • "IsActive": true,
  • "Settings": "{\"timezone\":\"UTC\"}",
  • "CreatedAt": "2026-04-14T10:00:00Z",
  • "UpdatedAt": "2026-04-14T10:00:00Z"
}

Payments

Create a card setup intent

Manager-only operation requiring the Authorization cookie and ROLE_ADMIN. Gets or creates the authenticated user's Stripe customer and creates an off-session card setup intent. No request body is required. Use the ClientSecret with Stripe.js to collect card details directly with Stripe; do not send card numbers or CVCs to this API.

Authorizations:
CookieAuth

Responses

Response samples

Content type
application/json
{
  • "ClientSecret": "seti_secret",
  • "SetupIntentID": "seti_123"
}

List saved payment methods

Manager-only operation requiring the Authorization cookie and ROLE_ADMIN. Returns saved card metadata for the authenticated user's Stripe customer, never full card numbers or CVCs. Returns an empty array when no Stripe customer ID exists. When exactly one card exists and the customer has no default payment method, the API attempts to set that card as the Stripe default; on success it is returned with IsDefault true, and if the update fails the cards are still returned with IsDefault false.

Authorizations:
CookieAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Set the default payment method

Manager-only operation requiring the Authorization cookie and ROLE_ADMIN. Updates the authenticated user's Stripe customer invoice settings to use the supplied payment method.

Authorizations:
CookieAuth
path Parameters
paymentMethodId
required
string

Stripe payment method ID.

Responses

Response samples

Content type
application/json
{
  • "Message": "Payment method set as default successfully"
}

Delete a payment method

Manager-only operation requiring the Authorization cookie and ROLE_ADMIN. Detaches the supplied payment method from Stripe. Requires the authenticated user to have a Stripe customer ID. The current implementation does not verify that the supplied payment method belongs to that customer.

Authorizations:
CookieAuth
path Parameters
paymentMethodId
required
string

Stripe payment method ID.

Responses

Response samples

Content type
application/json
{
  • "Message": "Payment method deleted successfully"
}

Authorize a payment with a saved card

Manager-only operation requiring the Authorization cookie and ROLE_ADMIN. Creates and confirms an off-session Stripe payment intent with manual capture using the authenticated user's Stripe customer. Requires an existing Stripe customer ID. This endpoint authorizes only and does not capture funds.

Authorizations:
CookieAuth
path Parameters
paymentMethodId
required
string

Stripe payment method ID.

Request Body schema: application/json
required
Currency
required
string

Supported currency code, such as CAD. Numeric currency identifiers are not accepted.

Amount
required
number <double>

Amount in major currency units. The converted minor-unit amount must be greater than 50.

Responses

Request samples

Content type
application/json
{
  • "Currency": "CAD",
  • "Amount": 20
}

Response samples

Content type
application/json
{
  • "PaymentIntentID": "pi_123"
}

Tax Jurisdictions

List tax jurisdictions

Authorizations:
CookieAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Themes

List themes

Returns themes belonging to organizations owned by the authenticated user.

Authorizations:
CookieAuth
query Parameters
domain
string
is_active
boolean

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create theme

Creates a theme for an organization owned by the authenticated user and generates its immutable hostname.

Authorizations:
CookieAuth
Request Body schema: application/json
required
OrganizationID
required
string <uuid>

Organization that will own the theme. The authenticated user must be an owner.

Name
required
string
Description
string
required
object (ThemeConfig)

Responses

Request samples

Content type
application/json
{
  • "OrganizationID": "123e4567-e89b-12d3-a456-426614174030",
  • "Name": "Example Theme",
  • "Description": "Theme for the Example charging network",
  • "Config": {
    }
}

Response samples

Content type
application/json
{
  • "ID": "123e4567-e89b-12d3-a456-426614174040",
  • "OrganizationID": "123e4567-e89b-12d3-a456-426614174030",
  • "Domain": "spark-cyan-harbor.jplug.app",
  • "Name": "Example Theme",
  • "Description": "Theme for the Example charging network",
  • "IsActive": true,
  • "Config": {
    },
  • "CreatedAt": "2026-04-14T10:10:00Z",
  • "UpdatedAt": "2026-04-14T10:10:00Z"
}

Get theme by ID

Returns a theme only when the authenticated user owns its organization.

Authorizations:
CookieAuth
path Parameters
themeId
required
string <uuid>

Theme UUID.

Responses

Response samples

Content type
application/json
{
  • "ID": "123e4567-e89b-12d3-a456-426614174040",
  • "OrganizationID": "123e4567-e89b-12d3-a456-426614174030",
  • "Domain": "spark-cyan-harbor.jplug.app",
  • "Name": "Example Theme",
  • "Description": "Theme for the Example charging network",
  • "IsActive": true,
  • "Config": {
    },
  • "CreatedAt": "2026-04-14T10:10:00Z",
  • "UpdatedAt": "2026-04-14T10:10:00Z"
}

Update theme

Updates a theme only when the authenticated user owns its organization.

Authorizations:
CookieAuth
path Parameters
themeId
required
string <uuid>

Theme UUID.

Request Body schema: application/json
required
Name
string
Description
string
IsActive
boolean
object (ThemeConfig)

Responses

Request samples

Content type
application/json
{
  • "Name": "Updated Theme",
  • "IsActive": true,
  • "Config": {
    }
}

Response samples

Content type
application/json
{
  • "ID": "3892eb50-4697-4c72-aadc-32b766bce3c0",
  • "OrganizationID": "2d34b1c1-8109-40c1-88f9-fdcfb32ea178",
  • "Domain": "string",
  • "Name": "string",
  • "Description": "string",
  • "IsActive": true,
  • "Config": { },
  • "CreatedAt": "2019-08-24T14:15:22Z",
  • "UpdatedAt": "2019-08-24T14:15:22Z"
}

Delete theme

Deletes a theme only when the authenticated user owns its organization.

Authorizations:
CookieAuth
path Parameters
themeId
required
string <uuid>

Theme UUID.

Responses

Response samples

Content type
application/json
{
  • "Error": "Invalid request body"
}

Theme Assets

Upload a theme asset

Uploads the multipart file field as a PNG or JPEG, up to 2 MiB, to one of four supported slots on a theme owned by the authenticated user. Returns the public asset URL without updating the theme configuration.

Authorizations:
CookieAuth
path Parameters
themeId
required
string <uuid>
slot
required
string
Enum: "logo" "logo-dark" "favicon" "og-image"
Request Body schema: multipart/form-data
required
file
required
string <binary> <= 2097152 characters

PNG or JPEG file no larger than 2 MiB.

Responses

Response samples

Content type
application/json

Transactions

List transactions

Returns transactions with optional filters.

Authorizations:
CookieAuth
query Parameters
ChargeBoxID
string
idTag
string <= 20 characters
ConnectorID
integer
TimestampStart
string <date-time>
TimestampStop
string <date-time>

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Start transaction

Authorizations:
CookieAuth
Request Body schema: application/json
required
ChargeBoxID
required
string
ConnectorID
integer
IDTag
required
string <= 20 characters

Responses

Request samples

Content type
application/json
{
  • "ChargeBoxID": "CHARGEBOX001",
  • "ConnectorID": 1,
  • "IDTag": "TAG001"
}

Response samples

Content type
application/json
{
  • "TransactionID": "123e4567-e89b-12d3-a456-426614174050"
}

Get transaction by UUID

Authorizations:
CookieAuth
path Parameters
transactionUUID
required
string <uuid>

Transaction UUID.

Responses

Response samples

Content type
application/json
{
  • "UUID": "123e4567-e89b-12d3-a456-426614174050",
  • "ChargeBoxID": "CHARGEBOX001",
  • "ConnectorID": 1,
  • "IDTag": "TAG001",
  • "TimestampStart": "2026-04-14T10:20:00Z",
  • "TimestampStop": null,
  • "MeterStart": 12345,
  • "MeterStop": null
}

Stop transaction

Authorizations:
CookieAuth
path Parameters
transactionUUID
required
string <uuid>

Transaction UUID.

Responses

Response samples

Content type
application/json
{
  • "Message": "Transaction stopped"
}