runbot icon indicating copy to clipboard operation
runbot copied to clipboard

[IMP] runbot: public API

Open Williambraecky opened this issue 7 months ago • 0 comments

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.

Williambraecky avatar Mar 13 '25 15:03 Williambraecky