Skip to main content
GET
Get details about a user's wallbox

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Path Parameters

org_id
string<uuid>
required

The organization ID of the user's organization

user_id
string<uuid>
required

The user ID of the user whom the wallbox belongs to

wallbox_id
string<uuid>
required

The ID of the specified wallbox

Query Parameters

include_deleted
boolean
default:false

If true, includes soft-deleted

Response

200 - application/json

OK

connection_status
enum<string>
required
Available options:
ok,
warning,
error,
unknown
monitoring_status
enum<string>
required
Available options:
ok,
warning,
error,
unknown
steering_status
enum<string>
required
Available options:
ok,
warning,
error,
unknown
device_model
DeviceModelOutput · object | null
required
owner
OwnerOutput · object
required
created_at
string<date-time>
required
updated_at
string<date-time>
required
mode
enum<string>
required

User-facing wallbox state pill. Derived from is_authenticated, is_plugged_in, and is_charging. See Wallbox.mode for the truth table.

Available options:
READY,
PLUGGED_IN,
CHARGING,
UNAVAILABLE,
UNKNOWN
connection
enum<string>
required

User-facing wallbox WS-presence dot. Derived from is_authenticated + is_ocpp_connected. See Wallbox.connection for the truth table.

Available options:
online,
offline,
never_connected
price_zone
enum<string>
default:AT
Available options:
AT,
AT_HOURLY,
BE,
CH,
EE,
DE_LU,
HR,
HU,
IT_CNOR,
IT_CSUD,
IT_NORD,
IT_PUN,
IT_SARD,
IT_SICI,
IT_SUD,
PT,
RO,
SE_1,
SE_2,
SE_3,
SE_4,
UK
is_authenticated
boolean | null
default:false
is_smart_optimization_active
boolean
default:false
is_inverter_forced_mode_enabled
boolean
default:false
actual_steering_state
string
default:unknown
Maximum string length: 20
id
string<uuid> | null
deleted_at
string<date-time> | null

When set, the device is considered deleted.

pause_power_until
string<date-time> | null
is_pause_power_active
boolean
default:false
external_device_id
string | null
default:""
Maximum string length: 255
optimization_score
number | null
current_mode
string | null
comment
string | null
Maximum string length: 300
current_state_last_updated_at
string<date-time> | null
last_monitoring_executed_at
string<date-time> | null
is_inverter_forced_mode_active
boolean
default:false
inverter_forced_mode_since
string<date-time> | null
default:0001-01-01T00:00:00Z
charge_target_min
integer | null
default:50
charge_target_max
integer | null
default:80
charge_power_max_w
integer
default:7000
battery_capacity_kwh
supports_current_modulation
boolean
default:false
supports_phase_switching
boolean
default:false
phases
integer
default:1
min_amps
integer
default:6
max_amps
integer
default:16
capabilities_last_refreshed_at
string<date-time> | null
electricals_source
string
default:installer_default
Maximum string length: 20
electricals_updated_at
string<date-time> | null
hems_min_export_to_start_w
integer
default:1380
hems_max_import_before_stopping_w
integer
default:300
firmware_version
string | null
Maximum string length: 32
is_ocpp_connected
boolean
default:false
ocpp_connected_last_updated_at
string<date-time> | null
total_energy_delivered_wh
integer | null
is_charge_policy_enabled
boolean | null
default:false
charge_policy_last_updated_at
string<date-time> | null
minimum_charge_limit
integer | null
default:80
charge_deadline_at
string<time> | null

Local wall-clock time in the wallbox's price zone, applied to every session. Empty falls back to the fleet default hour.

is_over_charge_allowed
boolean | null
default:false
charge_time_remaining
integer | null
charge_rate_w
number | null
is_fully_charged
boolean | null
default:false
is_plugged_in
boolean | null
default:false
is_charging
boolean | null
default:false
boost_stop_requested_at
string<date-time> | null

Timestamp the API signalled a boost cancel (owned by the API, not the workflow). Drives BoostState.STOPPING until the workflow ends the boost and clears boost_active_at. Cleared by the API on an un-cancel (re-tap).

boost_for_next_session
boolean
default:false
car_suspended_at
string<date-time> | null

Timestamp the car itself stopped accepting charge (OCPP SuspendedEV). NULL when not suspended. Drives the not_charging_reason status field.

car_suspension_last_updated_at
string<date-time> | null
charge_state_last_updated_at
string<date-time> | null
consumption_last_day_kwh
consumption_last_week_kwh
consumption_last_month_kwh
consumption_last_updated_at
string<date-time> | null
information_notifications
string[] | null
embeddable_url
string | null

URL to embeddable onboarding form

authorization_url
string | null

Base URL for authorizing with the Podero server

action_needed
boolean
default:false

True when at least one action is pending against this device and the partner must take that action before the device can resume normal operation. The actions field on the detail response carries the specifics.

has_notification
boolean
default:false

True when the device has at least one unread information notification for the owner.

boost_state
enum<string>
default:unavailable

Pure boost lifecycle, shared by EVs and wallboxes (SC-154). Describes only the boost, not whether the device is charging — normal optimizer-driven charging is AVAILABLE (boostable), not ONGOING.

Available options:
available,
requested,
unavailable,
ongoing,
stopping
boost_feature_enabled
boolean
default:true
last_boost_triggered_at
string<date-time> | null
last_boost_ended_at
string<date-time> | null
last_boost_end_reason
string | null
actions
(ReauthenticateProjection · object | InformationActionProjection · object | SocInputRequestedProjection · object)[]

Pending actions the partner can take on this device. Each item carries a code discriminator that determines its remaining fields — different action codes can use different resolution mechanisms (URL flow, webhook, in-band command, ...). Empty when nothing is pending.

Action requiring the partner to reauthenticate the user against an upstream provider.

Once more action codes are introduced, expose them as sibling classes (e.g. FooAction with code: Literal["foo"]) and combine them into a discriminated union (Annotated[ReauthenticateAction | FooAction, Field(discriminator="code")]) so OpenAPI consumers can branch on code to select the right shape.