Filters are retrieved in withBookmarkListSelectDataset but we can check
if there's a template context so we know if we can return an error
straight away in an API route.
In a view, the form is attached to the template context and errors are
already visible on the result.
Also removed the server.Server pointer in apiRouter, it hasn't been
needed for a long time now.
resolves#975
- use "details" elements on code examples and flows
- added a custom style in RapiDoc for details in markdown content
- improved bookmark sync and oauth documentation
- split the massive bookmarks/routes.yaml into several files
- moved big markdown contents to individual files
- moved the OAuth documentation to the API description
- fixed a few minor bugs with schemas
- added a "data" definition to file-based import routes
This adds a "features" list in the /info response, which might be much
easier to use than version comparison.
This also advertise whether email sending is available.
- scoped_bookmarks_r -> bookmarks:read
- scoped_bookmarks_w -> bookmarks:write
- scoped_admin_r -> admin:read
- scoped_admin_w -> admin:write
Added a profile:read scope and api:profile:info permission.
profile:read gives access to api:profile:read permission, while
api:profile:info is always granted to authenticated users.
The /api/profile route is always accessible but only returns the
full user profile (email and settings) when api:profile:read is granted.
The /api/auth route will convert the old "scoped_*" roles to their new
names so clients using this route remain compatible for a while.
- Moved method to "routes.yaml" files; it simplifies the api.yaml contents
- Presentation options
- Some API documentation fixes here and there
- Switch to "view" render-style when screen width is less than 814px
resolves#653
A label can be anything and this means you can't always use it as a
path parameter. A label "#/../test" is perfectly valid but, even with
path escaping, it fails in a browser.
We now use the same route ("/labels") for label operations and split
the middlewares and handlers based on the presence of a "name" parameter
in the request URL.
resolves#277 once and for all
- added a Last-Modified header on JSON, html and markdown part
- added a Location header to every "resource" part
- added a Group header to "resource" parts. A Group can be:
- icon
- image
- thumbnail
- embedded
- Added the Content-Length of every resource part
- when resource_prefix is empty, resource URLs become absolute, as they
would appear on a request to /api/bookmarks/{id}/article
This lets a user sets the creation date to any valid date, which could
be useful for a homemade import procedure.
Guards some of the creation form's parameters in the context of the
bookmark's view.
This new field is true when the description is found at the beginning
of the bookmark's plain text content. It doesn't have to be at the very
start but somewhere in len(description)*3
This adds a "omit_description" field to the api/bookmarks/{id} route.
Resolves#378
- returns read_progress in bookmark list
- returns read_progress and read_anchor in bookmark info
- accept read_progress and read_anchor in bookmark update
- Changed from padding to margin in .layout-content block in order
to keep a consistent width when it receives max-w-std
- Added breadcrumbs on all documentation views
- API documentation layout consistency
- Fixed API documentation for POST /auth and GET /profile