Commit Graph

13 Commits

Author SHA1 Message Date
Pascal Bleser
e772f46c97 groupware: omit "position" when "anchor" is specified in queries
* the "position" attribute is always set to 0 when using an anchor for
   pagination, but it does not accurately reflect the position and thus
   we decided to remove the attribute from the resulting object for
   clarity

 * omit "canCalculateChanges" attribute when its value is "true", which
   is going to be the case in 100% of calls against Stalwart
2026-06-16 16:51:37 +02:00
Pascal Bleser
0bed356966 groupware: fix typos and minor issues
- fix a bunch of minor issues and typos that were found using GoLand
   and gosec

 - add a gosec Makefile target for Groupware related files, in
   services/groupware/Makefile

 - enable checking JMAP session capabilities for events and contacts,
   and only enable skipping that check for tasks until those are
   implemented in Stalwart as well

 - fix a CWE-190 (integer overflow or wraparound) found by gosec

 - consistently use struct references for methods of Groupware and
   Request, instead of mixing up references and copies

 - always log errors when unable to register a Prometheus metric
2026-06-16 16:51:37 +02:00
Pascal Bleser
984a15f379 groupware: add jscontact examples, and move them to jmap/model_examples.go to avoid dependency recursion 2026-06-16 16:50:52 +02:00
Pascal Bleser
48b00db7a7 groupware: more API examples 2026-06-16 16:50:52 +02:00
Pascal Bleser
f5cbda1a66 groupware: change Makefile to use groupware-apidocs instead of go-swagger 2026-06-16 16:50:52 +02:00
Pascal Bleser
ef7b1d4a72 API documentation changes for groupware-apidocs
* add example generator infrastructure, with some examples for pkg/jmap
   and pkg/groupware, with more needing to be done

 * alter the apidoc Makefile to stop using go-swagger but, instead, use
   the openapi.yml file that must be dropped into that directory using
   groupware-apidocs (will improve the integration there later)

 * add Makefile target to generate examples

 * bump redocly from 2.4.0 to 2.14.5

 * introduce Request.PathParam() and .PathParamDoc() to improve API
   documentation, as well as future-proofing

 * improve X-Request-ID and Trace-Id header handling in the middleware
   by logging it safely when an error occurs in the middleware
2026-06-16 16:50:11 +02:00
Viktor Scharf
067ec169ad fixed connection reset issue. adapted make file to generate swagger docs on mac 2026-06-16 16:49:43 +02:00
Pascal Bleser
e6cf66aac8 groupware: add mock endpoints for addressbooks and contacts 2026-06-16 16:49:43 +02:00
Pascal Bleser
e377dfc2b9 docs(groupware): OpenAPI improvements
* refactor some pkg/jmap and groupware methods to make more sense from
   an API point-of-view

 * add path parameter documentation, but automate it by injecting their
   definition into the OpenAPI YAML tree that is extracted from the
   source code using go-swagger as it is too cumbersome, repetitive and
   error-prine to document them in the source code; wrote a TypeScript
   file apidoc-process.ts to do so

 * add generating an offline HTML file for the OpenAPI documentation
   using redocly, and injecting a favicon into the resulting HTML; wrote
   a TypeScript file apidoc-postprocess-html.ts to do so
2026-06-16 16:49:43 +02:00
Pascal Bleser
870ea388a4 groupware: swagger API documentation improvements
* add more documentation for properties

 * fixes after a bit of trial-and-error with go-swagger

 * fix email filter marshalling when there are no search criteria

 * introduce an apidoc.yml that contains Swagger data and is merged when
   generating the swagger.yml from sources
2026-06-16 16:48:31 +02:00
Pascal Bleser
7b4aafad34 refactored the Session object, refactored the services/groupware directory, and started Swagger documentation implementation 2026-06-16 16:48:31 +02:00
Pascal Bleser
26505f7443 add an auth-api service to make an exemplary implementation of an external authentication API for third party services such as Stalwart 2026-06-16 16:48:30 +02:00
Pascal Bleser
91d2fb92e1 WIP: initial implementation of the groupware service 2026-06-16 16:48:30 +02:00