@@ -186,6 +186,25 @@ def format_capabilities(capabilities_list: List[dict]) -> List[Capability]:
186186
187187ChargeLimit = NamedTuple ("ChargeLimit" , [("limit" , float ), ("meta" , namedtuple )])
188188
189+ DiagnosticSystem = NamedTuple (
190+ "DiagnosticSystem" ,
191+ [("system_id" , str ), ("status" , str ), ("description" , Optional [str ])],
192+ )
193+
194+ DiagnosticSystemStatus = NamedTuple (
195+ "DiagnosticSystemStatus" ,
196+ [("systems" , List [DiagnosticSystem ]), ("meta" , namedtuple )],
197+ )
198+
199+ DiagnosticTroubleCode = NamedTuple (
200+ "DiagnosticTroubleCode" , [("code" , str ), ("timestamp" , Optional [datetime .datetime ])]
201+ )
202+
203+ DiagnosticTroubleCodes = NamedTuple (
204+ "DiagnosticTroubleCodes" ,
205+ [("active_codes" , List [DiagnosticTroubleCode ]), ("meta" , namedtuple )],
206+ )
207+
189208
190209class ServiceCost :
191210 total_cost : Optional [float ] = None
@@ -431,6 +450,24 @@ def select_named_tuple(path: str, response_or_dict) -> NamedTuple:
431450 elif path == "service/history" :
432451 return ServiceHistory (data , headers )
433452
453+ elif path == "diagnostics/system_status" :
454+ systems = [
455+ DiagnosticSystem (
456+ system_id = item ["systemId" ],
457+ status = item ["status" ],
458+ description = item .get ("description" ),
459+ )
460+ for item in data ["systems" ]
461+ ]
462+ return DiagnosticSystemStatus (systems = systems , meta = headers )
463+
464+ elif path == "diagnostics/dtcs" :
465+ active_codes = [
466+ DiagnosticTroubleCode (code = item ["code" ], timestamp = item .get ("timestamp" ))
467+ for item in data ["activeCodes" ]
468+ ]
469+ return DiagnosticTroubleCodes (active_codes = active_codes , meta = headers )
470+
434471 elif path == "permissions" :
435472 return Permissions (
436473 data ["permissions" ],
0 commit comments