Data models¶
The canonical BetterFleet VDV 261 types live in src/vdv_261/models.py. The
schema endpoints and generated OpenAPI publish the same models.
Configuration models¶
| Model | Purpose |
|---|---|
V2ICPVehicleConfig |
Vehicle endpoint address, optional path, and password. |
V2ICPBackendConfig |
Backend address, path, preconditioning policy, and VIN-indexed credentials. |
V2ICPCredential |
Password-policy model for one VIN. |
Wire models¶
| Model | Purpose |
|---|---|
VehicleParameterSet |
Vehicle telemetry and requirements. Unknown fields are accepted and ignored. |
BackendParameterSet |
Depot directives and context. Unknown fields are accepted and ignored. |
V2ICPVehicleRequest |
Flat request for /vdv261/v2icp/messages; it includes the vehicle fields directly. |
V2ICPBackendResponse |
Flat response with backend fields directly. |
DiagnosticEvent |
BetterFleet extension submitted to /vdv261/v2icp/diagnostics. |
Key enums and constraints¶
AddressType:0disabled,1fixed IP,2URL.PreconditioningMode:0vehicle selects the type;1backend selects it.BatteryStatus:-1SNA,0okay,1not okay,2critical.HvacDirectivevalue3means no climate preconditioning. It does not mean automatic climate mode.seqis0..255.vinis exactly 17 ASCII bytes.evccidis exactly 12 hexadecimal characters without separators.driveoffis0..288in five-minute units;-1is SNA.- Every request includes
h2_statandbat_stat, includingseq = 0. prec_eamountis required or estimated preconditioning energy, not an accumulated-energy counter.
bprec_eamount is absent from the 05/2023 VDV field tables and is not part of
the VDV wire model. A future BetterFleet battery-preconditioning field needs an
explicit extension contract.
Generated artifacts live at schema/openapi.json and are
rendered by the API reference.