node-tado-client icon indicating copy to clipboard operation
node-tado-client copied to clipboard

tado OpenAPI specification

Open kritsel opened this issue 1 year ago • 5 comments

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

kritsel avatar Aug 16 '24 13:08 kritsel

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

mattdavis90 avatar Aug 16 '24 13:08 mattdavis90

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 avatar Aug 16 '24 14:08 kritsel

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.

kritsel avatar Aug 16 '24 14:08 kritsel

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

mattdavis90 avatar Aug 16 '24 14:08 mattdavis90

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

abn avatar Oct 31 '24 22:10 abn