Configuration file (default to say essm-tool.yaml), would contain endpoints (testing or production), limits, etc plus a reference to where to get secrets.
{sync actions} would be:
'departments' - sync department from Booker to TermTime
'floors' - ditto for floors
'events' - scheduled events from TT to Booker
'block-bookings' - add/check block bookings in Booker
etc
Caching of API calls so later actions can build on previous ones.
--really-do-it as opposed to an opposite --dry-run flag as by default you don't want to actually update but report what would have been updated?
If {sync action} could be a action that is really a list of other {sync action}s then the standard sync everything from B to TT, could be called, or just bits of it for testing/limited sync.
Before I over engineer this. Start with a tool that can read multiple configuration files and authenticate to APIs. Adding further 'actions' can be then split out.
==> #2 (closed)