runbot
runbot copied to clipboard
[IMP] runbot: public API
Until now api routes on runbot have been created through custom website
pages in production.
We want to unify the API by making a 'public' api, inspired by the way
web_search_read works.
This commit adds:
- A route to list all publicly available models
- A route to do a read on a public model
- A route to fetch the publicly available specification for a model
- A public model mixin that provides all the tools required to support the above mentionned routes.
The mixin adds the ability to add the public attribute on fields.
Any field marked as public can then be publicly queried through the
controller.
Relational fields work in a nested manner (fields key in the field's
sub-specification) (up to a depth of 10).
The public api does not allow going through a relationship back and
front (parent->child->parent is NOT allowed).
Because we are based on web_search_read, we heavily focus on
validating the specification, for security reasons, and offset the load
of reading to the web_read function (we currently don't provide limit
metadata).
NOTE: this PR focuses on the public api feature, not the implementation so information might be lacking as of writing this.