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

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 solar inverter belongs to

inverter_id
string<uuid>
required

The ID of the specified solar inverter

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
tone
required

The device's console health tone, and the only verdict a client should render: action_required when a partner-resolvable action is pending, else the worst of connection and monitoring, with not_steered for a healthy device nobody optimizes. Do not re-derive it from connection_status/monitoring_status/steering_status — those three are cue-blind and would report a device asking for reauthentication as healthy. The status filter on GET /org/{org_id}/devices and the tone counts on …/devices/summary grade the three statuses only, so a device with a pending action reads action_required here while being counted and filtered under its status tone.

Available options:
good,
warning,
critical,
not_steered
device_model
DeviceModelOutput · object | null
required
owner
OwnerOutput · object
required
created_at
string<date-time>
required
updated_at
string<date-time>
required
has_household_load
boolean
required

False for an asset with no household load behind the meter

has_on_site_pv
boolean
required

False for an asset with no on-site PV array

action_needed
boolean
default:false
deprecated

Deprecated — use GET /org/{org_id}/notifications/status for per-device-type counts, or GET /org/{org_id}/notifications/actions?device_id=… for the specifics. 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.

price_zone
enum<string>
default:AT
Available options:
AT,
AT_HOURLY,
BE,
CH,
EE,
DE_LU,
HR,
HU,
IE_SEM,
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
estimated_pv_capacity_kwp
number | null

PV array peak capacity in kWp inferred from observed solar production. Null until a supported fit is available; onboarding default assumptions are excluded.

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
integration_credential
string<uuid> | null
solar_power_rating_kw
battery_capacity_kwh
is_battery_connected
boolean | null
default:false
max_charge_power_w
number | null
max_discharge_power_w
number | null
is_curtailment_active
boolean | null
default:false
max_battery_charge
min_battery_charge
charge_efficiency
number | null
discharge_efficiency
number | null
degradation_cost_eur_per_kwh
number | null
grid_fee_eur_per_kwh
number | null
user_limits_enabled
boolean | null
default:false
information_last_updated_at
string<date-time> | null
battery_policy
string | null
default:Optimize self consumption
Maximum string length: 100
battery_policy_last_updated_at
string<date-time> | null
current_solar_production_w
current_power_to_grid_w
household_consumption_w
solar_surplus_w
battery_charge_discharge_power_w
battery_charge_level_percent
production_last_day_kwh
production_last_week_kwh
production_last_month_kwh
production_last_updated_at
string<date-time> | null
inferred_max_charge_power_w
number | null
inferred_max_discharge_power_w
number | null
inferred_min_battery_soc_percent
number | null
inferred_battery_capacity_kwh
number | null
inferred_params_updated_at
string<date-time> | null
ac_rated_power_w
integer | null
export_power_limit_w
integer | null
inferred_export_limit_w
number | null
has_ev_in_household
boolean | null
ev_inferred_at
string<date-time> | null
ev_inference_confidence
number | null

0.0–1.0; saturates at 16 EV-charging bouts in 30 days

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

has_notification
boolean
default:false
deprecated

Deprecated — use GET /org/{org_id}/notifications/status or GET /org/{org_id}/notifications/information?device_id=…. True when the device has at least one unread information notification for the owner.

actions
(ReauthenticateProjection · object | InformationActionProjection · object | SocInputRequestedProjection · object)[]
deprecated

Deprecated — use GET /org/{org_id}/notifications/actions?device_id=… instead. 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.