From 5bae16be638322dfc130782ef8a00a0f742bb0a4 Mon Sep 17 00:00:00 2001
From: Pascal Bleser
Date: Thu, 30 Apr 2026 10:51:14 +0200
Subject: [PATCH] groupware: API documentation updates
---
pkg/jmap/model_examples.go | 55 ++++++++++++++++++++++++++
services/groupware/apidoc.yml | 7 ++--
services/groupware/package.json | 2 +-
services/groupware/pnpm-lock.yaml | 64 +++++++++++++++----------------
4 files changed, 92 insertions(+), 36 deletions(-)
diff --git a/pkg/jmap/model_examples.go b/pkg/jmap/model_examples.go
index c9a886d43f..699de596bf 100644
--- a/pkg/jmap/model_examples.go
+++ b/pkg/jmap/model_examples.go
@@ -2275,6 +2275,61 @@ func (e Exemplar) Objects() Objects {
}
}
+func (e Exemplar) IdentityChanges() IdentityChanges {
+ i := e.Identity()
+ return IdentityChanges{
+ HasMoreChanges: true,
+ OldState: "eu4niez2",
+ NewState: "oj4aix4o",
+ Updated: []Identity{i},
+ }
+}
+
+func (e Exemplar) CalendarChanges() CalendarChanges {
+ c := e.Calendar()
+ return CalendarChanges{
+ HasMoreChanges: false,
+ OldState: "sai9choo",
+ NewState: "eeth7eid",
+ Updated: []Calendar{c},
+ Destroyed: []string{"df", "dt"},
+ }
+}
+
+func (e Exemplar) CalendarEventChanges() CalendarEventChanges {
+ ev := e.CalendarEvent()
+ return CalendarEventChanges{
+ HasMoreChanges: false,
+ OldState: "reem5ovu",
+ NewState: "oopu1eev",
+ Updated: []CalendarEvent{ev},
+ Destroyed: []string{"zxa", "zxe", "zyy"},
+ }
+}
+
+func (e Exemplar) CalendarEventSearchResults() CalendarEventSearchResults {
+ ev := e.CalendarEvent()
+ return CalendarEventSearchResults{
+ Results: []CalendarEvent{ev},
+ CanCalculateChanges: true,
+ Position: ptr(uint(3)),
+ Limit: ptr(uint(10)),
+ Total: ptr(uint(4)),
+ }
+}
+
+func (e Exemplar) ContactCardSearchResults() ContactCardSearchResults {
+ c1 := e.ContactCard()
+ c2, _, _ := e.IndividualContactCard()
+ return ContactCardSearchResults{
+ Results: []ContactCard{c1, c2},
+ CanCalculateChanges: true,
+ Position: ptr(uint(3)),
+ Limit: ptr(uint(10)),
+ Total: ptr(uint(4)),
+ }
+}
+
func copyTo[B any, A any](a A) B {
if b, err := json.Marshal(a); err != nil {
panic(err)
diff --git a/services/groupware/apidoc.yml b/services/groupware/apidoc.yml
index 8b198633d1..a707325108 100644
--- a/services/groupware/apidoc.yml
+++ b/services/groupware/apidoc.yml
@@ -1,8 +1,9 @@
openapi: 3.0.4
info:
- title: the title
- summary: the summary
- description: this is the description
+ title: OpenCloud Groupware API
+ summary: OpenCloud Groupware API
+ description: |-
+ This is the API documentation for the OpenCloud Groupware service.
servers:
- url: https://localhost:9200/
description: Local Development Server
diff --git a/services/groupware/package.json b/services/groupware/package.json
index d1cec61936..355bafd1bb 100644
--- a/services/groupware/package.json
+++ b/services/groupware/package.json
@@ -1,6 +1,6 @@
{
"dependencies": {
- "@redocly/cli": "^2.30.2",
+ "@redocly/cli": "^2.30.3",
"@types/js-yaml": "^4.0.9",
"cheerio": "^1.2.0",
"js-yaml": "^4.1.1",
diff --git a/services/groupware/pnpm-lock.yaml b/services/groupware/pnpm-lock.yaml
index 9d18b5c1be..429d65c315 100644
--- a/services/groupware/pnpm-lock.yaml
+++ b/services/groupware/pnpm-lock.yaml
@@ -9,8 +9,8 @@ importers:
.:
dependencies:
'@redocly/cli':
- specifier: ^2.30.2
- version: 2.30.2(@opentelemetry/api@1.9.1)(core-js@3.45.1)
+ specifier: ^2.30.3
+ version: 2.30.3(@opentelemetry/api@1.9.1)(core-js@3.45.1)
'@types/js-yaml':
specifier: ^4.0.9
version: 4.0.9
@@ -191,14 +191,14 @@ packages:
'@redocly/ajv@8.11.2':
resolution: {integrity: sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==}
- '@redocly/ajv@8.18.0':
- resolution: {integrity: sha512-F+LMD2IDIXuHxgpLJh3nkLj9+tSaEzoUWd+7fONGq5pe2169FUDjpEkOfEpoGLz1sbZni/69p07OsecNfAOpqA==}
+ '@redocly/ajv@8.18.1':
+ resolution: {integrity: sha512-Ifm/pP/tul1qmAecpbVxCBluVE32rKfjf8gYXH4xI2gCv9mRWFhJMHzkPDM4TXlxwPQYIFegymlsy8lXz7optA==}
'@redocly/cli-otel@0.1.2':
resolution: {integrity: sha512-Bg7BoO5t1x3lVK+KhA5aGPmeXpQmdf6WtTYHhelKJCsQ+tRMiJoFAQoKHoBHAoNxXrhlS3K9lKFLHGmtxsFQfA==}
- '@redocly/cli@2.30.2':
- resolution: {integrity: sha512-DWTydfVgEJkqDMcriRuy+MX+IYaEPU0AvV/nKuT1/1ajTugofkxlClHfZOK8Kwv47qAHvZ9w3oF+WCP/fVyW2g==}
+ '@redocly/cli@2.30.3':
+ resolution: {integrity: sha512-z2T4+v4qwyEl1Cb2bRS77sK3jiYDOnIVZUYF8/3OWA1N+4znGIvs85xm5pAqQE0kltoIJuisekqERMvhdG6Z4w==}
engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'}
hasBin: true
@@ -212,12 +212,12 @@ packages:
resolution: {integrity: sha512-4Tm4ysZkexx6ZTX7knqSZTqPlNgIvXc7Ha0pd30I694/GD0KtJE2xrElycfPds0vCLFAqoKyIzBtOF1xrLo8KA==}
engines: {node: '>=18.17.0', npm: '>=9.5.0'}
- '@redocly/openapi-core@2.30.2':
- resolution: {integrity: sha512-J1UB/I1s9eRpirIVgzH/B1Jj+hYQHYExruLk+edPOqneFIlFc38wKiTRkj/TVpwcmzRHJNu5SSI6NTrrfPa4BA==}
+ '@redocly/openapi-core@2.30.3':
+ resolution: {integrity: sha512-roSwxkitl+JY3LajLEg6n9ujaFkCB4cqtjgrjXxedgk57Qde5t0Vn4HBYkOomw1bHOI7W+Ux2qfPQOpzK7BnLg==}
engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'}
- '@redocly/respect-core@2.30.2':
- resolution: {integrity: sha512-4dVg57ItG19MGsLWDPmbUid81kHEbGqLcSSp1Q/8wHGJVzxmFgX9JOkqEw059/dwCYjP+txPhcMDORh0pK9ivQ==}
+ '@redocly/respect-core@2.30.3':
+ resolution: {integrity: sha512-9bEETk86ECE6n/0g/6MEQ3RryamTOv6mdZ0WDmHUmO3PfVUzHKFRgNcFnvyTWEC2nApdO9GbnYLjZcwyPwUdOw==}
engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'}
'@tsconfig/node10@1.0.12':
@@ -289,9 +289,9 @@ packages:
resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
engines: {node: 18 || 20 || >=22}
- better-ajv-errors@1.2.0:
- resolution: {integrity: sha512-UW+IsFycygIo7bclP9h5ugkNH8EjCSgqyFB/yQ4Hqqa1OEYDtb0uFIkYE0b6+CjkgJYVM5UKI/pJPxjYe9EZlA==}
- engines: {node: '>= 12.13.0'}
+ better-ajv-errors@2.0.3:
+ resolution: {integrity: sha512-t1vxUP+vYKsaYi/BbKo2K98nEAZmfi4sjwvmRT8aOPDzPJeAtLurfoIDazVkLILxO4K+Sw4YrLYnBQ46l6pePg==}
+ engines: {node: '>= 18.20.6'}
peerDependencies:
ajv: 4.11.8 - 8
@@ -1122,7 +1122,7 @@ snapshots:
require-from-string: 2.0.2
uri-js-replace: 1.0.1
- '@redocly/ajv@8.18.0':
+ '@redocly/ajv@8.18.1':
dependencies:
fast-deep-equal: 3.1.3
fast-uri: 3.1.0
@@ -1133,17 +1133,17 @@ snapshots:
dependencies:
ulid: 2.4.0
- '@redocly/cli@2.30.2(@opentelemetry/api@1.9.1)(core-js@3.45.1)':
+ '@redocly/cli@2.30.3(@opentelemetry/api@1.9.1)(core-js@3.45.1)':
dependencies:
'@opentelemetry/exporter-trace-otlp-http': 0.214.0(@opentelemetry/api@1.9.1)
'@opentelemetry/resources': 2.6.1(@opentelemetry/api@1.9.1)
'@opentelemetry/sdk-trace-node': 2.6.1(@opentelemetry/api@1.9.1)
'@opentelemetry/semantic-conventions': 1.40.0
'@redocly/cli-otel': 0.1.2
- '@redocly/openapi-core': 2.30.2
- '@redocly/respect-core': 2.30.2
- ajv: '@redocly/ajv@8.18.0'
- ajv-formats: 3.0.1(@redocly/ajv@8.18.0)
+ '@redocly/openapi-core': 2.30.3
+ '@redocly/respect-core': 2.30.3
+ ajv: '@redocly/ajv@8.18.1'
+ ajv-formats: 3.0.1(@redocly/ajv@8.18.1)
colorette: 1.4.0
cookie: 0.7.2
dotenv: 16.4.7
@@ -1192,12 +1192,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@redocly/openapi-core@2.30.2':
+ '@redocly/openapi-core@2.30.3':
dependencies:
- '@redocly/ajv': 8.18.0
+ '@redocly/ajv': 8.18.1
'@redocly/config': 0.48.1
- ajv: '@redocly/ajv@8.18.0'
- ajv-formats: 3.0.1(@redocly/ajv@8.18.0)
+ ajv: '@redocly/ajv@8.18.1'
+ ajv-formats: 3.0.1(@redocly/ajv@8.18.1)
colorette: 1.4.0
js-levenshtein: 1.1.6
js-yaml: 4.1.1
@@ -1205,14 +1205,14 @@ snapshots:
pluralize: 8.0.0
yaml-ast-parser: 0.0.43
- '@redocly/respect-core@2.30.2':
+ '@redocly/respect-core@2.30.3':
dependencies:
'@faker-js/faker': 7.6.0
'@noble/hashes': 1.8.0
- '@redocly/ajv': 8.18.0
- '@redocly/openapi-core': 2.30.2
- ajv: '@redocly/ajv@8.18.0'
- better-ajv-errors: 1.2.0(@redocly/ajv@8.18.0)
+ '@redocly/ajv': 8.18.1
+ '@redocly/openapi-core': 2.30.3
+ ajv: '@redocly/ajv@8.18.1'
+ better-ajv-errors: 2.0.3(@redocly/ajv@8.18.1)
colorette: 2.0.20
json-pointer: 0.6.2
jsonpath-rfc9535: 1.3.0
@@ -1249,9 +1249,9 @@ snapshots:
agent-base@7.1.4: {}
- ajv-formats@3.0.1(@redocly/ajv@8.18.0):
+ ajv-formats@3.0.1(@redocly/ajv@8.18.1):
optionalDependencies:
- ajv: '@redocly/ajv@8.18.0'
+ ajv: '@redocly/ajv@8.18.1'
ansi-regex@5.0.1: {}
@@ -1267,11 +1267,11 @@ snapshots:
balanced-match@4.0.4: {}
- better-ajv-errors@1.2.0(@redocly/ajv@8.18.0):
+ better-ajv-errors@2.0.3(@redocly/ajv@8.18.1):
dependencies:
'@babel/code-frame': 7.29.0
'@humanwhocodes/momoa': 2.0.4
- ajv: '@redocly/ajv@8.18.0'
+ ajv: '@redocly/ajv@8.18.1'
chalk: 4.1.2
jsonpointer: 5.0.1
leven: 3.1.0