Zum Hauptinhalt springen
Was this helpful?

Kalender API

Kalender und Kalendergruppen

Erstellen Sie Kalender, organisieren Sie sie in Gruppen und verwalten Sie die Freigabe

PrimeCal teilt die Kalenderverwaltung zwischen /api/calendars und auf /api/calendar-groups. Diese Seite hält beide Routenfamilien zusammen, sodass die Der gesamte Kalenderverwaltungs-Workflow wird an einem Ort dokumentiert.

JWT oder Benutzer API SchlüsselEigene und freigegebene KalenderGruppenaliase unter /calendars/groupsFreigabeberechtigungen

Quelle

  • Kalender-Controller: backend-nestjs/src/calendars/calendars.controller.ts
  • Kalendergruppen-Controller: backend-nestjs/src/calendars/calendar-groups.controller.ts
  • DTOs: backend-nestjs/src/dto/calendar.dto.ts, backend-nestjs/src/dto/calendar-group.dto.ts, backend-nestjs/src/calendars/dto/calendar-sharing.dto.ts
  • Entitätsaufzählungen: backend-nestjs/src/entities/calendar.entity.ts

Authentifizierung und Berechtigungen

  • Alle Endpunkte auf dieser Seite erfordern eine Authentifizierung.
  • Eigentums- oder Freigabeberechtigungen werden in der Serviceschicht durchgesetzt.
  • Für Freigabevorgänge werden die Berechtigungsstufen read, write und admin verwendet.
  • Das Löschen des Kalenders ist ein vorläufiges Löschen.
  • Durch das Löschen einer Gruppe werden keine Kalender innerhalb der Gruppe gelöscht.

Endpunktreferenz

Kalender

MethodePfadZweckAnfrage oder AnfrageAuthQuelle
POST/api/calendarsErstellen Sie einen Kalender.Körper: name,description,color,icon,visibility,groupId,rankJWT oder Benutzerschlüssel APIcalendars/calendars.controller.ts
GET/api/calendarsEigene und freigegebene Kalender auflisten.KeineJWT oder Benutzerschlüssel APIcalendars/calendars.controller.ts
GET/api/calendars/:idHolen Sie sich einen Kalender.Pfad: idJWT oder Benutzerschlüssel APIcalendars/calendars.controller.ts
PATCH/api/calendars/:idAktualisieren Sie einen Kalender.Pfad: id, Text: TeilkalenderfelderJWT oder Benutzerschlüssel APIcalendars/calendars.controller.ts
DELETE/api/calendars/:idEinen Kalender vorläufig löschen.Pfad: idJWT oder Benutzerschlüssel APIcalendars/calendars.controller.ts
POST/api/calendars/:id/shareGeben Sie einen Kalender für Benutzer frei.Pfad: id, Text: userIds,permissionJWT oder Benutzerschlüssel APIcalendars/calendars.controller.ts
DELETE/api/calendars/:id/shareHeben Sie die Freigabe eines Kalenders für Benutzer auf.Pfad: id, Text: userIdsJWT oder Benutzerschlüssel APIcalendars/calendars.controller.ts
GET/api/calendars/:id/shared-usersListen Sie die Benutzer auf, für die der Kalender freigegeben ist.Pfad: idJWT oder Benutzerschlüssel APIcalendars/calendars.controller.ts
GET/api/calendars/groupsAlias ​​zum Auflisten von Kalendergruppen.KeineJWT oder Benutzerschlüssel APIcalendars/calendars.controller.ts
POST/api/calendars/groupsAlias ​​zum Erstellen einer Kalendergruppe.Körper: name,isVisibleJWT oder Benutzerschlüssel APIcalendars/calendars.controller.ts

Kalendergruppen

MethodePfadZweckAnfrage oder AnfrageAuthQuelle
POST/api/calendar-groupsErstellen Sie eine Gruppe.Körper: name,isVisibleJWT oder Benutzerschlüssel APIcalendars/calendar-groups.controller.ts
GET/api/calendar-groupsListen Sie Gruppen mit zugänglichen Kalendern auf.KeineJWT oder Benutzerschlüssel APIcalendars/calendar-groups.controller.ts
PATCH/api/calendar-groups/:idBenennen Sie eine Gruppe um oder schalten Sie die Sichtbarkeit um.Pfad: id, Text: name,isVisibleJWT oder Benutzerschlüssel APIcalendars/calendar-groups.controller.ts
DELETE/api/calendar-groups/:idLöschen Sie eine Gruppe, ohne ihre Kalender zu löschen.Pfad: idJWT oder Benutzerschlüssel APIcalendars/calendar-groups.controller.ts
POST/api/calendar-groups/:id/calendarsKalender einer Gruppe zuweisen.Pfad: id, Text: calendarIdsJWT oder Benutzerschlüssel APIcalendars/calendar-groups.controller.ts
POST/api/calendar-groups/:id/calendars/unassignKalender aus einer Gruppe entfernen.Pfad: id, Text: calendarIdsJWT oder Benutzerschlüssel APIcalendars/calendar-groups.controller.ts
POST/api/calendar-groups/:id/shareGeben Sie alle Kalender in einer Gruppe frei.Pfad: id, Text: userIds,permissionJWT oder Benutzerschlüssel APIcalendars/calendar-groups.controller.ts
DELETE/api/calendar-groups/:id/shareHeben Sie die Freigabe aller Kalender in einer Gruppe für Benutzer auf.Pfad: id, Text: userIdsJWT oder Benutzerschlüssel APIcalendars/calendar-groups.controller.ts

Fordern Sie Formen an

Kalender-DTOs

CreateCalendarDto und UpdateCalendarDto in backend-nestjs/src/dto/calendar.dto.ts

  • name: beim Erstellen erforderlich, Zeichenfolge
  • description: optionale Zeichenfolge
  • color: optionale Zeichenfolge, standardmäßig auf Entitätsebene #3b82f6
  • icon: optionale Zeichenfolge
  • visibility: optionale Aufzählung private|shared|public
  • groupId: optionale Nummer oder null
  • rank: optionale Nummer, standardmäßig auf Entitätsebene 0

Entitätsnotizen von backend-nestjs/src/entities/calendar.entity.ts

  • name Länge: 200
  • description Länge: 500
  • color Länge: 7
  • icon Länge: 10

DTOs teilen

  • ShareCalendarDto.userIds: erforderliches Zahlenarray
  • ShareCalendarDto.permission: erforderliche Enumeration read|write|admin
  • UnshareCalendarUsersDto.userIds: erforderliches eindeutiges Ganzzahl-Array, maximal 100 Elemente, mindestens 1

Gruppen-DTOs

CreateCalendarGroupDto und UpdateCalendarGroupDto in backend-nestjs/src/dto/calendar-group.dto.ts

  • name: beim Erstellen erforderlich, mindestens 2 Zeichen
  • isVisible: optionaler boolescher Wert
  • AssignCalendarsToGroupDto.calendarIds: erforderliches Zahlenarray
  • ShareCalendarGroupDto.userIds: erforderliches Zahlenarray
  • ShareCalendarGroupDto.permission: erforderliche Enumeration read|write|admin

Beispielanrufe

Erstellen Sie einen Kalender

curl -X POST "$PRIMECAL_API/api/calendars" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Family",
"description": "Shared household planning",
"color": "#14b8a6",
"visibility": "private",
"rank": 10
}'

Erstellen Sie eine Gruppe und weisen Sie Kalender zu

curl -X POST "$PRIMECAL_API/api/calendar-groups" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Late Family",
"isVisible": true
}'
curl -X POST "$PRIMECAL_API/api/calendar-groups/3/calendars" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"calendarIds": [5, 7]
}'

Teilen Sie einen Kalender

curl -X POST "$PRIMECAL_API/api/calendars/5/share" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"userIds": [42],
"permission": "write"
}'

Hinweise zu Reaktion und Verhalten

  • Kalenderantworten können Gruppenmetadaten und von Benutzern gemeinsam genutzte Zusammenfassungen enthalten.
  • GET /api/calendars ist die Haupt-Bootstrap-Route für den Kalenderarbeitsbereich.
  • /api/calendars/groups existiert als Kompatibilitätsalias; Der kanonische Gruppencontroller befindet sich unter /api/calendar-groups.
  • rank beeinflusst das Reihenfolge- und Prioritätsverhalten in kalenderorientierten Ansichten.
  • isTasksCalendar und isReservationCalendar existieren auf Entitätsebene, werden jedoch nicht direkt über die hier dokumentierten Erstellungs-/Aktualisierungs-DTOs verwaltet.

Best Practices

  • Verwenden Sie GET /api/calendars und GET /api/calendar-groups zusammen, wenn Sie den linken Kalenderbaum erstellen.
  • Bevorzugen Sie die Gruppenfreigabe nur dann, wenn mehrere Kalender unter demselben Berechtigungsmodell ausgerichtet bleiben sollen.
  • Behandeln Sie DELETE /api/calendars/:id als vorläufiges Löschen und aktualisieren Sie den lokalen Status nach der Mutation.
  • Verwenden Sie User API GET /api/users?search=..., um die Personenauswahl für Freigabedialoge zu aktivieren.
  • Halten Sie visibility und Freigabeberechtigungen in Clients konzeptionell getrennt: Sichtbarkeit ist das Sichtbarkeitsmodell des Kalenders, während die Freigabe den Benutzern konkreten Zugriff gewährt.