mattdavis90 / node-tado-client

A Tado API client for Node
MIT License
47 stars 18 forks source link

tado OpenAPI specification #56

Open kritsel opened 3 months ago

kritsel commented 3 months ago

Hi Matt,

I'm abusing this issue to thank you :-)

I've recently started playing around with the tado API, and it let me to the decision to document the API as an OpenAPI specification. Your node-tado-client code was one of the sources which provided valuable input, especially the air conditioning part (as that is not part of my tado set-up).

The specification is maintained in this git repo: https://github.com/kritsel/tado-openapispec-v2. And a Swagger UI version is available here: https://kritsel.github.io/tado-openapispec-v2

Cheers, Kristel

mattdavis90 commented 3 months ago

Hi,

That's really cool! Thanks for tipping me off and I'm glad the repo was helpful.

Did you notice any endpoints that this library is missing?

Thanks

kritsel commented 3 months ago

I didn't really do any cross-check between your library and the OpenAPI spec to be honest, so I do not really know.

I do know that in several areas your library is more extensive, as it also seems to cover some features which use endpoints offered by other domains than my.tado.com. I explicitly left them out of this spec to keep the spec pure.

kritsel commented 3 months ago

Additional note: I did notice that some of your enums contain less values than 'mine' (and for others I was very grateful to learn about other values from your code). So that might be worth looking into.

mattdavis90 commented 3 months ago

No problem - I will try to do a cross reference and see what I'm missing. Thanks

abn commented 3 weeks ago

Just to keep things central. Here area list of endpoints I could scrape, and correspondingly marked the implemented ones. Also note that it seems the default scopes available for the public client secrets do not allow for access to some of these endpoints anyway. So, implementing them would be moot.

Endpoint Status Comments
/api/v2/devices/{serialNo}/identify
/api/v2/homes/{home_id}
/api/v2/homes/{home_id}/awayRadiusInMeters #85
/api/v2/homes/{home_id}/consent
/api/v2/homes/{home_id}/details
/api/v2/homes/{home_id}/presenceLock
/api/v2/homes/{home_id}/state
/api/v2/homes/{home_id}/users
/api/v2/homes/{home_id}/users/{user_name}
/api/v2/homes/{home_id}/deviceList
/api/v2/homes/{home_id}/devices
/api/v2/homes/{home_id}/devices/{serial_number}
/api/v2/homes/{home_id}/incidentDetection #85
/api/v2/homes/{home_id}/heatingSystem #83
/api/v2/homes/{home_id}/heatingSystem/boiler
/api/v2/homes/{home_id}/heatingSystem/underfloorHeating
/api/v2/homes/{home_id}/installations
/api/v2/homes/{home_id}/installations/{installation_id}
/api/v2/homes/{home_id}/installations/{installation_id}/devices
/api/v2/homes/{home_id}/installations/{installation_id}/revision
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup/acSettingRecording
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup/acSettingRecording/confirmation
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup/acSpecs
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup/availableAcModes
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup/availableCommandSets
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup/clcRecording/confirmation
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup/commandSet
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup/commandTableUpload
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup/commandTableUpload/confirmation
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup/commandTest
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup/irRecognition
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup/irRecognition/confirmation
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup/onOffCandidates
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup/onOffCandidates/{candidate_id}
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup/onOffCandidates/{candidate_id}/test
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup/onOffCandidates/confirmation
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup/phase
/api/v2/homes/{home_id}/installations/{installation_id}/acSetup/selectedAcModes
/api/v2/homes/{home_id}/installations/{installation_id}/wirelessRemote/firmwareUpdate/confirmation
/api/v2/homes/{home_id}/installations/{installation_id}/wirelessRemote/installation/confirmation
/api/v2/homes/{home_id}/installations/{installation_id}/wirelessRemote/position/confirmation
/api/v2/homes/{home_id}/invitations #86
/api/v2/homes/{home_id}/invitations/{invitation_token} #86
/api/v2/homes/{home_id}/invitations/{invitation_token}/resend #86
/api/v2/homes/{homeId}/mobileDevices
/api/v2/homes/{homeId}/mobileDevices/{device_id}
/api/v2/homes/{homeId}/mobileDevices/{deviceId}/settings
/api/v2/homes/{home_id}/mobileDevices/{mobile_device_id}
/api/v2/homes/{home_id}/mobileDevices/{mobile_device_id}/geolocationConfig
/api/v2/homes/{home_id}/mobileDevices/{mobile_device_id}/geolocationFix
/api/v2/homes/{home_id}/mobileDevices/{mobile_device_id}/pushNotificationRegistration #84
/api/v2/homes/{home_id}/zones
/api/v2/homes/{home_id}/zoneStates
/api/v2/homes/{home_id}/zones/{zone_id}/awayConfiguration
/api/v2/homes/{home_id}/zones/{zone_id}/capabilities
/api/v2/homes/{home_id}/zones/{zone_id}/control
/api/v2/homes/{home_id}/zones/{zone_id}/details
/api/v2/homes/{home_id}/zones/{zone_id}/devices
/api/v2/homes/{home_id}/zones/{zone_id}/earlyStart #85
/api/v2/homes/{home_id}/zones/{zone_id}/openWindowDetection
/api/v2/homes/{home_id}/zones/{zone_id}/overlay
/api/v2/homes/{home_id}/zones/{zone_id}/schedule/activeTimetable
/api/v2/homes/{home_id}/zones/{zone_id}/schedule/copy
/api/v2/homes/{home_id}/zones/{zone_id}/schedule/setup
/api/v2/homes/{home_id}/zones/{zone_id}/schedule/setup/skip
/api/v2/homes/{home_id}/zones/{zone_id}/schedule/timetables/{timetable_id}/blocks
/api/v2/homes/{home_id}/zones/{zone_id}/schedule/timetables/{timetable_id}/blocks/{day_type}
/api/v2/homes/{home_id}/zones/{zone_id}/state/openWindow
/api/v2/me