Refactor `api.py` into sub-modules
The entire API is currently implemented in api.py, which consists of almost 3k lines. This makes maintenance, extension, and gaining a general overview difficult. It would be beneficial to separate the implementation of endpoints or groups of endpoints into individual files and then reference them in NativeApi/DataAccessApi.
I suggest grouping similar endpoints into modules to improve the user experience. Currently, all endpoints are accessible through the NativeApi interface, which means one must know if a certain function is related to a dataset, collection, and so on. This results in a naming problem as we rely on encoding this information into the function name. Making the API more intuitive would involve something like the following:
native_api = NativeApi(...)
# Get the version
native_api.info.version()
# Create a dataset
native_api.datasets.create()
By utilizing this approach, collaborative work is streamlined, enabling team members to independently focus on different components without the concern of conflicting changes or merge issues.