Generic representation method for objects
We should have a generic way of representing any object in any format. The rough roadmap is:
- Provide a generic endpoint for finding a model (#871 (closed))
- Introduce a UUID for every object (#868)
-
Make
get_absolute_url
return the generic URL for every object -
Add a generic method on
ExtensibleModel
to build a representation, e.g.render_as
- Support for content negotiation using MIME types
- MIME-type-to-renderer registry
- Generic adherence to permissions/rules
- Migrate GraphQL to use renderer system
-
Add
text/html
renderer that redirects to frontend URL (through aget_frontend_url
method)
-
Allow renderers to run in background
- Revisit background task status notification (through HTTP status, etc.)
This allows a quite big set of use cases:
- Adding representations for JSON-LD, to start implementing ActivityPub
- Adding generic JSON APIs to objects
- Generically retrieve any object in a print version as PDF