The current xivo-dao Git repository contains the basis of the future services Python API. The
API is split between different resources available in Wazo, such as users, groups, schedules… For
each resource, there are different modules :

service: the public module, providing possible actions. It contains only business logic and no
technical logic. There must be no file name, no SQL queries and no URLs in this module.

dao: the private Data Access Object. It knows where to get data and how to update it, such as SQL queries,
file names, URLs, but has no business logic.

model: the public class used to represent the resource. It must be self-contained and have almost no
methods, except for computed fields based on other fields in the same object.

notifier: private, it knows to whom and in which format events must be sent.

validator: private, it checks input parameters from the service module.