Toyota: the status route the car answers, not the one it retired

Toyota put the /v1/global/remote read routes behind AWS SigV4 in mid-2026. A
bearer token is no longer a credential there, so the doors-and-windows card has
been asking a gateway that answers 403 — the one section of the provider tab
that could only ever have been in error. The MyToyota app reads that state from
/v1/vehicle/status now and pytoyoda followed it in 5.2.0; so does the connector.
The electric route did not move, and the comment above the endpoint block says
which of the two namespaces each one lives in, because the obvious tidy — sweep
the rest onto /v1/vehicle/* — would break the ones that still work.

The same migration gave the climate reads a home worth porting: /v1/vehicle/
climate-status is what the cabin is doing, climate-settings the preset it was
told to do it at. Both are GETs with a vin, both are new cards on the tab, and
their headings are in all three languages on both apps. Nothing about the tab's
plumbing changed to hold them — a section is an id, an action, and whatever JSON
comes back, which is the point of that shape.

Left where they are: the POST wake calls. Upstream refreshes a stale reading by
waking the modem, and this connector is documented as read-only, so climate and
status show what the car last reported rather than what it would say if asked
twice. The cost is a reading that can be hours old, and it is the honest one to
pay for a connector that promises not to touch the vehicle.

Two tests keep the migration from being undone by hand: one fails if any
advertised capability points back at a retired route, the other if a capability
is advertised without being wired into Invoke, which is the way the next
endpoint would go missing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
tajniak81
2026-08-29 19:40:31 +02:00
co-authored by Claude Opus 5
parent a203414ceb
commit 22a22ec43a
9 changed files with 90 additions and 10 deletions
+2
View File
@@ -419,6 +419,8 @@
"telemetry": "Kilometerstand og rækkevidde",
"electric": "Batteri og opladning",
"status": "Døre, ruder og lys",
"climate": "Klimaanlæg",
"climateSettings": "Klimaindstillinger",
"health": "Køretøjets tilstand",
"location": "Sidst kendte position",
"serviceHistory": "Servicehistorik hos forhandler",
+2
View File
@@ -418,6 +418,8 @@
"telemetry": "Odometer & range",
"electric": "Battery & charging",
"status": "Doors, windows & lights",
"climate": "Climate",
"climateSettings": "Climate presets",
"health": "Vehicle health",
"location": "Last known location",
"serviceHistory": "Dealer service history",
+2
View File
@@ -423,6 +423,8 @@
"telemetry": "Przebieg i zasięg",
"electric": "Akumulator i ładowanie",
"status": "Drzwi, szyby i światła",
"climate": "Klimatyzacja",
"climateSettings": "Ustawienia klimatyzacji",
"health": "Stan pojazdu",
"location": "Ostatnia znana lokalizacja",
"serviceHistory": "Historia serwisowa u dealera",