-
Notifications
You must be signed in to change notification settings - Fork 52
Description
Currently, all methods are grouped into ~20 so-called resources (such as meetings, webinars, phone, etc.). The problem is that each of these resources can have a high number of methods which is not great for discoverability and clarity. For example, there are approximately 60 methods in the Meetings resource as of this writing, and we have implemented only about 50% of the meetings related endpoints from the Zoom API. This means that, when we implement all endpoints there will be probably more than 120 methods in the resource.
@MacgyverH suggested we should create "sub-resources" in the exiting 20 or so resources to logically group methods. These sub-resources would roughly correspond to the categories in the Zoom API documentation. If we look at the Meetings resource as an example, the documentation groups all endpoints into 19 categories such as:
- Archiving
- Cloud Recording
- Devices
- H323 Devices
- In-Meeting Apps
- In-Meeting Features
- Invitation & Registration
- etc.
From a developer standpoint, this means that instead of invoking myZoomNetClient.Meetings.GetSurveyAsync(...) you would invoke myZoomNetClient.Meetings.Surveys.GetAsync(...)
I am conscious that this would be a painful breaking change. To ease the transition, I would leave the existing methods for a certain period of time, and decorate them with something along the lines of `[Obsolete("Please use Meeting.Surveys.GetAsync")]. This would ensure that Visual Studio would display a warning to the developer about the breaking change (I am assuming other IDEs do the same thing) and give them a reasonable amount to make the transition before the methods they have relied on for so many years are permanently removed from the library.