feat(tesla_api_coverage): API.md impl matrix generation

This commit is contained in:
gak 2023-10-25 15:16:44 +11:00
parent 10fe1969c2
commit 514e8ec134
No known key found for this signature in database
3 changed files with 251 additions and 236 deletions

451
API.md
View file

@ -4,10 +4,9 @@ List of all known Tesla APIs, and if this crate supports it, and which of the Te
### Legend ### Legend
- Blank - Unknown - ✅ Supported by Teslatte
- ✅ Supported by this crate - 🔴 API exists but not supported by Teslatte
- 🟢 Supported by specified API - Blank - API doesn't exist
- 🔴 Not supported by specified API
Currently only the Owner API is partially supported by this crate. Currently only the Owner API is partially supported by this crate.
@ -15,226 +14,236 @@ Currently only the Owner API is partially supported by this crate.
<!-- tesla_api_coverage start table --> <!-- tesla_api_coverage start table -->
| API | Teslatte | Timdorr API | Fleet API | Command Mode | | API | Owners API (timdorr) | Fleet API | Command Mode |
| --- | --- | --- | --- | --- | | --- | --- | --- | --- |
| actuate-trunk | | 🟢 | 🟢 | | | actuate-trunk | 🔴 | 🔴 | |
| add-key | | 🟢 | | 🟢 | | add-key | 🔴 | | 🔴 |
| add-key-request | | | | 🟢 | | add-key-request | | | 🔴 |
| add-managed-charging-site | | 🟢 | | | | add-managed-charging-site | 🔴 | | |
| adjust-volume | | 🟢 | 🟢 | | | adjust-volume | 🔴 | 🔴 | |
| app-feedback-entitlements | | 🟢 | | | | app-feedback-entitlements | 🔴 | | |
| app-feedback-logs | | 🟢 | | | | app-feedback-logs | 🔴 | | |
| app-feedback-metadata | | 🟢 | | | | app-feedback-metadata | 🔴 | | |
| auto-conditioning-start | ✅ | 🟢 | 🟢 | | | auto-conditioning-start | ✅ | 🔴 | 🔴 |
| auto-conditioning-stop | ✅ | 🟢 | 🟢 | | | auto-conditioning-stop | ✅ | 🔴 | |
| auto-seat-and-climate | | | | 🟢 | | autosecure-modelx | | | 🔴 |
| autosecure-modelx | | | | 🟢 | | backup-key | | 🔴 | |
| backup-key | | | 🟢 | | | backup-reserve | 🔴 | | |
| backup-reserve | | 🟢 | | | | calendar-history-data | 🔴 | | |
| calendar-history-data | | 🟢 | | | | calendar-sync | 🔴 | | |
| calendar-sync | | 🟢 | | | | cancel-software-update | 🔴 | 🔴 | 🔴 |
| cancel-software-update | | 🟢 | 🟢 | 🟢 | | charge-max-range | ✅ | 🔴 | |
| charge-max-range | ✅ | | 🟢 | | | charge-port-door-close | ✅ | 🔴 | 🔴 |
| charge-port-close | | | | 🟢 | | charge-port-door-open | ✅ | 🔴 | 🔴 |
| charge-port-door-close | ✅ | 🟢 | 🟢 | | | charge-standard | ✅ | 🔴 | |
| charge-port-door-open | ✅ | 🟢 | 🟢 | | | charge-start | ✅ | 🔴 | 🔴 |
| charge-port-open | | | | 🟢 | | charge-stop | ✅ | 🔴 | 🔴 |
| charge-standard | ✅ | | 🟢 | | | charging-sessions-only-for-business-fleet-owners | | 🔴 | |
| charge-start | ✅ | 🟢 | 🟢 | | | check-energy-product-registration | 🔴 | | |
| charge-stop | ✅ | 🟢 | 🟢 | | | climate-off | | | 🔴 |
| charging-sessions-only-for-business-fleet-owners | | | 🟢 | | | climate-on | | | 🔴 |
| charging-set-limit | | | | 🟢 | | climate-set-temp | | | 🔴 |
| charging-start | | | | 🟢 | | create-energy-site-share-invite | 🔴 | | |
| charging-stop | | | | 🟢 | | dashcam-save-clip | 🔴 | | |
| check-energy-product-registration | | 🟢 | | | | deactivate-device-token | 🔴 | | |
| climate-off | | | | 🟢 | | door-lock | ✅ | 🔴 | |
| climate-on | | | | 🟢 | | door-unlock | ✅ | 🔴 | |
| climate-set-temp | | | | 🟢 | | drive | | | 🔴 |
| create-energy-site-share-invite | | 🟢 | | | | driving-plan | 🔴 | | |
| dashcam-save-clip | | 🟢 | | | | energy-event | 🔴 | | |
| deactivate-device-token | | 🟢 | | | | energy-register-product | 🔴 | | |
| door-lock | ✅ | 🟢 | 🟢 | | | energy-site-backup-time-remaining | 🔴 | | |
| door-unlock | ✅ | 🟢 | 🟢 | | | energy-site-command | 🔴 | | |
| drive | | | | 🟢 | | energy-site-enroll-program | 🔴 | | |
| driving-plan | | 🟢 | | | | energy-site-import-export-config | 🔴 | | |
| energy-event | | 🟢 | | | | energy-site-onboarding-tips | 🔴 | | |
| energy-register-product | | 🟢 | | | | energy-site-opt-event | 🔴 | | |
| energy-site-backup-time-remaining | | 🟢 | | | | energy-site-preference | 🔴 | | |
| energy-site-command | | 🟢 | | | | energy-site-program-details | 🔴 | | |
| energy-site-enroll-program | | 🟢 | | | | energy-site-programs | 🔴 | | |
| energy-site-import-export-config | | 🟢 | | | | energy-site-telemetry-history | 🔴 | | |
| energy-site-onboarding-tips | | 🟢 | | | | energy-site-user-settings | 🔴 | | |
| energy-site-opt-event | | 🟢 | | | | energy-sites-calendar-history | ✅ | | |
| energy-site-preference | | 🟢 | | | | energy-sites-live-status | ✅ | | |
| energy-site-program-details | | 🟢 | | | | energy-sites-site-info | ✅ | | |
| energy-site-programs | | 🟢 | | | | energy-sites-site-status | ✅ | | |
| energy-site-telemetry-history | | 🟢 | | | | energy-wall-connector-firmware-download-url | 🔴 | | |
| energy-site-user-settings | | 🟢 | | | | erase-user-data | | 🔴 | |
| energy-sites-calendar-history | ✅ | | | | | feature-config | 🔴 | 🔴 | |
| energy-sites-live-status | ✅ | | | | | fetch-energy-site-share-invites | 🔴 | | |
| energy-sites-site-info | ✅ | | | | | fetch-energy-site-shared-users | 🔴 | | |
| energy-sites-site-status | ✅ | | | | | fetch-vehicle-shared-drivers | 🔴 | | |
| energy-wall-connector-firmware-download-url | | 🟢 | | | | flash-lights | ✅ | 🔴 | 🔴 |
| erase-user-data | | | 🟢 | | | frunk-open | | | 🔴 |
| feature-config | | 🟢 | 🟢 | | | get | | | 🔴 |
| fetch-energy-site-share-invites | | 🟢 | | | | get-charge-on-solar-feature | 🔴 | | |
| fetch-energy-site-shared-users | | 🟢 | | | | get-managed-charging-sites | 🔴 | | |
| fetch-vehicle-shared-drivers | | 🟢 | | | | get-ownership-xp-config | 🔴 | | |
| flash-lights | ✅ | 🟢 | 🟢 | 🟢 | | get-upcoming-service-visit-data | 🔴 | | |
| frunk-open | | | | 🟢 | | guest-mode | | 🔴 | |
| get | | | | 🟢 | | hermes-authorization | 🔴 | | |
| get-charge-on-solar-feature | | 🟢 | | | | hermes-vehicle-authorization | 🔴 | | |
| get-managed-charging-sites | | 🟢 | | | | honk-horn | ✅ | 🔴 | 🔴 |
| get-ownership-xp-config | | 🟢 | | | | list-keys | | | 🔴 |
| get-upcoming-service-visit-data | | 🟢 | | | | lock | | | 🔴 |
| guest-mode | | | 🟢 | | | mattermost | 🔴 | | |
| hermes-authorization | | 🟢 | | | | me | 🔴 | 🔴 | |
| hermes-vehicle-authorization | | 🟢 | | | | media-next-fav | 🔴 | 🔴 | |
| honk | | | | 🟢 | | media-next-track | 🔴 | 🔴 | |
| honk-horn | ✅ | 🟢 | 🟢 | | | media-prev-fav | 🔴 | 🔴 | |
| list-keys | | | | 🟢 | | media-prev-track | 🔴 | 🔴 | |
| lock | | | | 🟢 | | media-set-volume | | | 🔴 |
| mattermost | | 🟢 | | | | media-toggle-playback | 🔴 | 🔴 | |
| me | | 🟢 | 🟢 | | | media-volume-down | 🔴 | 🔴 | |
| media-next-fav | | 🟢 | 🟢 | | | media-volume-up | 🔴 | | |
| media-next-track | | 🟢 | 🟢 | | | message-center-message | 🔴 | | |
| media-prev-fav | | 🟢 | 🟢 | | | message-center-message-action-update | 🔴 | | |
| media-prev-track | | 🟢 | 🟢 | | | message-center-message-count | 🔴 | | |
| media-set-volume | | | | 🟢 | | message-center-message-list | 🔴 | | |
| media-toggle-playback | | 🟢 | 🟢 | | | mobile-enabled | | 🔴 | |
| media-volume-down | | 🟢 | 🟢 | | | navigation-gps-request | 🔴 | 🔴 | |
| media-volume-up | | 🟢 | | | | navigation-request | | 🔴 | |
| message-center-message | | 🟢 | | | | navigation-route | 🔴 | | |
| message-center-message-action-update | | 🟢 | | | | navigation-sc-request | 🔴 | 🔴 | |
| message-center-message-count | | 🟢 | | | | nearby-charging-sites | 🔴 | 🔴 | |
| message-center-message-list | | 🟢 | | | | off-grid-vehicle-charging-reserve | 🔴 | | |
| mobile-enabled | | | 🟢 | | | onboarding-experience | 🔴 | | |
| navigation-gps-request | | 🟢 | 🟢 | | | onboarding-experience-page | 🔴 | | |
| navigation-request | | | 🟢 | | | operation-mode | 🔴 | | |
| navigation-route | | 🟢 | | | | orders | 🔴 | 🔴 | |
| navigation-sc-request | | 🟢 | 🟢 | | | ping | | | 🔴 |
| nearby-charging-sites | | 🟢 | 🟢 | | | place-suggestions | 🔴 | | |
| off-grid-vehicle-charging-reserve | | 🟢 | | | | plan-trip | 🔴 | | |
| onboarding-experience | | 🟢 | | | | post | | | 🔴 |
| onboarding-experience-page | | 🟢 | | | | powerwall-energy-history | ✅ | | |
| operation-mode | | 🟢 | | | | powerwall-order-page | 🔴 | | |
| orders | | 🟢 | 🟢 | | | powerwall-order-session-data | 🔴 | | |
| ping | | | | 🟢 | | powerwall-status | ✅ | | |
| place-suggestions | | 🟢 | | | | product-info | | | 🔴 |
| plan-trip | | 🟢 | | | | products | ✅ | | |
| post | | | | 🟢 | | public-key | | 🔴 | |
| powerwall-energy-history | ✅ | | | | | rate-tariffs | 🔴 | | |
| powerwall-order-page | | 🟢 | | | | redeem-energy-site-share-invite | 🔴 | | |
| powerwall-order-session-data | | 🟢 | | | | redeem-vehicle-share-invite | 🔴 | | |
| powerwall-status | ✅ | | | | | referral-data | 🔴 | | |
| product-info | | | | 🟢 | | referral-page | 🔴 | | |
| products | ✅ | 🟢 | | | | region | | 🔴 | |
| public-key | | | 🟢 | | | register | | 🔴 | |
| rate-tariffs | | 🟢 | | | | release-notes | 🔴 | | |
| redeem-energy-site-share-invite | | 🟢 | | | | remote-auto-seat-climate-request | 🔴 | 🔴 | |
| redeem-vehicle-share-invite | | 🟢 | | | | remote-auto-steering-wheel-heat-climate-request | 🔴 | 🔴 | |
| referral-data | | 🟢 | | | | remote-boombox | 🔴 | 🔴 | |
| referral-page | | 🟢 | | | | remote-seat-cooler-request | 🔴 | 🔴 | |
| region | | | 🟢 | | | remote-seat-heater-request | 🔴 | 🔴 | |
| register | | | 🟢 | | | remote-start-drive | ✅ | 🔴 | |
| release-notes | | 🟢 | | | | remote-steering-wheel-heat-level-request | 🔴 | 🔴 | |
| remote-auto-seat-climate-request | | 🟢 | 🟢 | | | remote-steering-wheel-heater-request | 🔴 | 🔴 | |
| remote-auto-steering-wheel-heat-climate-request | | 🟢 | 🟢 | | | remove-energy-site-share-user | 🔴 | | |
| remote-boombox | | 🟢 | 🟢 | | | remove-key | | | 🔴 |
| remote-seat-cooler-request | | 🟢 | 🟢 | | | remove-managed-charging-site | 🔴 | | |
| remote-seat-heater-request | | 🟢 | 🟢 | | | remove-vehicle-share-driver | 🔴 | | |
| remote-start-drive | ✅ | 🟢 | 🟢 | | | rename-key | | | 🔴 |
| remote-steering-wheel-heat-level-request | | 🟢 | 🟢 | | | reset-pin-to-drive-pin | | 🔴 | |
| remote-steering-wheel-heater-request | | 🟢 | 🟢 | | | reset-valet-pin | 🔴 | 🔴 | |
| remove-energy-site-share-user | | 🟢 | | | | retrieve-notification-preferences | 🔴 | | |
| remove-key | | | | 🟢 | | reverse-geocoding | 🔴 | | |
| remove-managed-charging-site | | 🟢 | | | | revoke-energy-site-share-invite | 🔴 | | |
| remove-vehicle-share-driver | | 🟢 | | | | revoke-vehicle-share-invite | 🔴 | | |
| rename-key | | | | 🟢 | | roadside-assistance-data | 🔴 | | |
| reset-pin-to-drive-pin | | | 🟢 | | | roadside-assistance-page | 🔴 | | |
| reset-valet-pin | | 🟢 | 🟢 | | | schedule-software-update | 🔴 | 🔴 | |
| retrieve-notification-preferences | | 🟢 | | | | seat-heater | | | 🔴 |
| reverse-geocoding | | 🟢 | | | | send-device-key | 🔴 | | |
| revoke-energy-site-share-invite | | 🟢 | | | | send-notification-confirmation | 🔴 | | |
| revoke-vehicle-share-invite | | 🟢 | | | | send-notification-preferences | 🔴 | | |
| roadside-assistance-data | | 🟢 | | | | send-to-vehicle | 🔴 | | |
| roadside-assistance-page | | 🟢 | | | | sentry-mode | | | 🔴 |
| schedule-software-update | | 🟢 | 🟢 | | | service-data | 🔴 | 🔴 | |
| seat-heater | | | | 🟢 | | session-info | | | 🔴 |
| send-device-key | | 🟢 | | | | set-bioweapon-mode | 🔴 | 🔴 | |
| send-notification-confirmation | | 🟢 | | | | set-cabin-overheat-protection | 🔴 | 🔴 | |
| send-notification-preferences | | 🟢 | | | | set-charge-limit | ✅ | 🔴 | 🔴 |
| send-to-vehicle | | 🟢 | | | | set-charging-amps | ✅ | 🔴 | |
| sentry-mode | | | | 🟢 | | set-climate-keeper-mode | 🔴 | 🔴 | |
| service-data | | 🟢 | 🟢 | | | set-cop-temp | 🔴 | 🔴 | |
| session-info | | | | 🟢 | | set-managed-charge-current-request | | 🔴 | |
| set-bioweapon-mode | | 🟢 | 🟢 | | | set-managed-charger-location | | 🔴 | |
| set-cabin-overheat-protection | | 🟢 | 🟢 | | | set-managed-scheduled-charging-time | | 🔴 | |
| set-charge-limit | ✅ | 🟢 | 🟢 | | | set-pin-to-drive | | 🔴 | |
| set-charging-amps | ✅ | 🟢 | 🟢 | | | set-preconditioning-max | 🔴 | 🔴 | |
| set-climate-keeper-mode | | 🟢 | 🟢 | | | set-scheduled-charging | ✅ | 🔴 | |
| set-cop-temp | | 🟢 | 🟢 | | | set-scheduled-departure | ✅ | 🔴 | |
| set-managed-charge-current-request | | | 🟢 | | | set-sentry-mode | 🔴 | 🔴 | |
| set-managed-charger-location | | | 🟢 | | | set-temps | ✅ | 🔴 | |
| set-managed-scheduled-charging-time | | | 🟢 | | | set-valet-mode | 🔴 | 🔴 | |
| set-pin-to-drive | | | 🟢 | | | set-vehicle-name | | 🔴 | |
| set-preconditioning-max | | 🟢 | 🟢 | | | share-invites | 🔴 | 🔴 | |
| set-scheduled-charging | ✅ | 🟢 | 🟢 | | | share-invites-create | 🔴 | 🔴 | |
| set-scheduled-departure | ✅ | 🟢 | 🟢 | | | share-invites-revoke | | 🔴 | |
| set-sentry-mode | | 🟢 | 🟢 | | | site-address | 🔴 | | |
| set-temps | ✅ | 🟢 | 🟢 | | | site-config | 🔴 | | |
| set-valet-mode | | 🟢 | 🟢 | | | site-data | 🔴 | | |
| set-vehicle-name | | | 🟢 | | | site-name | 🔴 | | |
| share-invites | | 🟢 | 🟢 | | | site-tariff | 🔴 | | |
| share-invites-create | | 🟢 | 🟢 | | | software-update-start | | | 🔴 |
| share-invites-revoke | | | 🟢 | | | solar-savings-forecast | 🔴 | | |
| site-address | | 🟢 | | | | speed-limit-activate | 🔴 | 🔴 | |
| site-config | | 🟢 | | | | speed-limit-clear-pin | 🔴 | 🔴 | |
| site-data | | 🟢 | | | | speed-limit-deactivate | 🔴 | 🔴 | |
| site-name | | 🟢 | | | | speed-limit-set-limit | 🔴 | 🔴 | |
| site-tariff | | 🟢 | | | | splunk-telemetry | 🔴 | | |
| software-update-start | | | | 🟢 | | static-charger-file | 🔴 | | |
| solar-savings-forecast | | 🟢 | | | | static-supercharger-file | 🔴 | | |
| speed-limit-activate | | 🟢 | 🟢 | | | status | 🔴 | | |
| speed-limit-clear-pin | | 🟢 | 🟢 | | | steering-wheel-heater | | | 🔴 |
| speed-limit-deactivate | | 🟢 | 🟢 | | | storm-mode-settings | 🔴 | | |
| speed-limit-set-limit | | 🟢 | 🟢 | | | sun-roof-control | 🔴 | 🔴 | |
| splunk-telemetry | | 🟢 | | | | take-drivenote | 🔴 | 🔴 | |
| static-charger-file | | 🟢 | | | | time-of-use-settings | 🔴 | | |
| static-supercharger-file | | 🟢 | | | | trigger-homelink | 🔴 | 🔴 | |
| status | | 🟢 | | | | trigger-vehicle-screenshot | 🔴 | | |
| steering-wheel-heater | | | | 🟢 | | trunk-close | | | 🔴 |
| storm-mode-settings | | 🟢 | | | | trunk-move | | | 🔴 |
| sun-roof-control | | 🟢 | 🟢 | | | trunk-open | | | 🔴 |
| take-drivenote | | 🟢 | 🟢 | | | unlock | | | 🔴 |
| time-of-use-settings | | 🟢 | | | | update-calendar-entries | | 🔴 | |
| trigger-homelink | | 🟢 | 🟢 | | | update-charge-on-solar-feature | 🔴 | | |
| trigger-vehicle-screenshot | | 🟢 | | | | user-account-upload-profile-picture | 🔴 | | |
| trunk-close | | | | 🟢 | | user-reset-vault | 🔴 | | |
| trunk-move | | | | 🟢 | | vehicle | | 🔴 | |
| trunk-open | | | | 🟢 | | vehicle-charge-history | 🔴 | | |
| unlock | | | | 🟢 | | vehicle-data | ✅ | 🔴 | |
| update-calendar-entries | | | 🟢 | | | vehicle-download-vault | 🔴 | | |
| update-charge-on-solar-feature | | 🟢 | | | | vehicle-energy-sites | 🔴 | | |
| user-account-upload-profile-picture | | 🟢 | | | | vehicle-subscriptions | | 🔴 | |
| user-reset-vault | | 🟢 | | | | vehicle-subscriptions-set | | 🔴 | |
| vehicle | | | 🟢 | | | vehicle-summary | 🔴 | | |
| vehicle-charge-history | | 🟢 | | | | vehicle-upload-vault | 🔴 | | |
| vehicle-data | ✅ | 🟢 | 🟢 | | | vehicles | ✅ | 🔴 | |
| vehicle-download-vault | | 🟢 | | | | wake-up | ✅ | 🔴 | 🔴 |
| vehicle-energy-sites | | 🟢 | | | | warranty-details | | 🔴 | |
| vehicle-subscriptions | | | 🟢 | | | window-control | 🔴 | 🔴 | |
| vehicle-subscriptions-set | | | 🟢 | |
| vehicle-summary | | 🟢 | | |
| vehicle-upload-vault | | 🟢 | | |
| vehicles | ✅ | 🟢 | 🟢 | |
| wake | | | | 🟢 |
| wake-up | ✅ | 🟢 | 🟢 | |
| warranty-details | | | 🟢 | |
| window-control | | 🟢 | 🟢 | |
<!-- tesla_api_coverage end table --> <!-- tesla_api_coverage end table -->

View file

@ -29,8 +29,8 @@ pub fn generate(merged: &HashMap<String, Endpoint>) -> anyhow::Result<()> {
let after = parts.next().unwrap(); let after = parts.next().unwrap();
let mut table = vec![]; let mut table = vec![];
table.push("| API | Teslatte | Timdorr API | Fleet API | Command Mode |".to_string()); table.push("| API | Owners API (timdorr) | Fleet API | Command Mode |".to_string());
table.push("| --- | --- | --- | --- | --- |".to_string()); table.push("| --- | --- | --- | --- |".to_string());
// Sort by URL for into a Vec for now. Keep the key. // Sort by URL for into a Vec for now. Keep the key.
let mut endpoints = merged.iter().collect::<Vec<(&String, &Endpoint)>>(); let mut endpoints = merged.iter().collect::<Vec<(&String, &Endpoint)>>();
@ -40,26 +40,22 @@ pub fn generate(merged: &HashMap<String, Endpoint>) -> anyhow::Result<()> {
let mut row = vec![]; let mut row = vec![];
row.push(format!("{}", name)); row.push(format!("{}", name));
if endpoint.teslatte.is_some() { if endpoint.teslatte_owners_api.is_some() {
row.push("".to_string()); row.push("".to_string());
} else { } else if endpoint.timdorr.is_some() {
row.push("".to_string()); row.push("🔴".to_string());
}
if endpoint.timdorr.is_some() {
row.push("🟢".to_string());
} else { } else {
row.push("".to_string()); row.push("".to_string());
} }
if endpoint.fleet.is_some() { if endpoint.fleet.is_some() {
row.push("🟢".to_string()); row.push("🔴".to_string());
} else { } else {
row.push("".to_string()); row.push("".to_string());
} }
if endpoint.vehicle_command.is_some() { if endpoint.vehicle_command.is_some() {
row.push("🟢".to_string()); row.push("🔴".to_string());
} else { } else {
row.push("".to_string()); row.push("".to_string());
} }

View file

@ -93,7 +93,17 @@ async fn main() {
} }
fn rename_vehicle_command(endpoints: &mut HashMap<String, VehicleCommandEndpoint>) { fn rename_vehicle_command(endpoints: &mut HashMap<String, VehicleCommandEndpoint>) {
let mut renames = vec![("software-update-cancel", "cancel-software-update")]; let mut renames = vec![
("auto-seat-and-climate", "auto-conditioning-start"),
("charging-set-limit", "set-charge-limit"),
("charging-start", "charge-start"),
("charging-stop", "charge-stop"),
("charge-port-open", "charge-port-door-open"),
("charge-port-close", "charge-port-door-close"),
("honk", "honk-horn"),
("software-update-cancel", "cancel-software-update"),
("wake", "wake-up"),
];
for (old_key, new_key) in renames { for (old_key, new_key) in renames {
let endpoint = endpoints.remove(old_key).unwrap(); let endpoint = endpoints.remove(old_key).unwrap();
@ -153,7 +163,7 @@ fn ensure_timdorr_matches_fleet(merged: &HashMap<String, Endpoint>) {
} }
} }
if !perfect { if !perfect {
panic!("Fleet and Timdorr don't match. See errors above."); panic!("Fleet and timdorr don't match. See errors above.");
} }
} }
@ -180,7 +190,7 @@ pub fn remove_unwanted_endpoints(mut endpoints: &mut HashMap<String, Endpoint>)
#[derive(Debug)] #[derive(Debug)]
pub struct Endpoint { pub struct Endpoint {
pub name: String, pub name: String,
pub teslatte: Option<TeslatteEndpoint>, pub teslatte_owners_api: Option<TeslatteEndpoint>,
pub fleet: Option<FleetEndpoint>, pub fleet: Option<FleetEndpoint>,
pub vehicle_command: Option<VehicleCommandEndpoint>, pub vehicle_command: Option<VehicleCommandEndpoint>,
pub timdorr: Option<TimdorrEndpoint>, pub timdorr: Option<TimdorrEndpoint>,
@ -213,7 +223,7 @@ pub fn merge(
let endpoint = Endpoint { let endpoint = Endpoint {
name, name,
teslatte, teslatte_owners_api: teslatte,
fleet, fleet,
vehicle_command, vehicle_command,
timdorr, timdorr,