* refactor APIs in JMAP and Groupware in order to implement pagination across multiple accountIds and multiple suppliers (currently implemented using a mock supplier for contacts) * requires go 1.26 due to use of self-reflecting generics type constraints * still missing: query criteria and sorting parameters * still missing: multi-accountId support for emails * errors are now all just 'error' in the APIs, instead of the specialized implementations, and are interpreted dynamically where necessary in order to transform them into HTTP responses * remove position, anchor, anchorOffset as individual query parameters as we now only support a 'next=...' token for subsequent pages (except in emails for now), and use jmap.QueryParams instead; those tokens have a header character for the format, followed by a JSON encoded QueryParams map, all wrapped into base62 to make it clearer that it is meant to be an opaque token, and not a parameter clients should tinker with or construct themselves * introduce QueryParamsSupplier as an interface to provide QueryParams for various scenarios (single supplier, multiple supplier, ...) per accountId * implement multi-supplier template methods slist and squery
Groupware
The OpenCloud Groupware service provides a REST API for performing all the backend operations needed by the OpenCloud Groupware frontends.
OpenAPI Documentation
To generate the OpenAPI ("Swagger") documentation of the REST API, pnpm is a pre-requisite,
as well as the groupware-apidocs tool.
After building and installing groupware-apidocs somewhere in your PATH,
run the following command in this directory to generate the swagger.yml OpenAPI definition file:
make apidoc
To generate a static HTML file using Redocly, which will generate a file api.html:
make apidoc-static
Favicon
A favicon is inserted into the static (Redocly) HTML file as part of the build process in the Makefile, using favicon.png as the source, computing its base64 to insert it as an image using a data URL in order to embed it.
That is performed by the script apidoc-postprocess-html.ts (which is done automatically when using then Makefile as described above.)