Zum Hauptinhalt springen
War diese Seite hilfreich?

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

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

Kalendergruppen​

MethodePfadZweckAnfrage oder AnfrageAuth
POST/api/calendar-groupsErstellen Sie eine Gruppe.Körper: name,isVisibleJWT oder Benutzerschlüssel API
GET/api/calendar-groupsListen Sie Gruppen mit zugänglichen Kalendern auf.KeineJWT oder Benutzerschlüssel API
PATCH/api/calendar-groups/:idBenennen Sie eine Gruppe um oder schalten Sie die Sichtbarkeit um.Pfad: id, Text: name,isVisibleJWT oder Benutzerschlüssel API
DELETE/api/calendar-groups/:idLöschen Sie eine Gruppe, ohne ihre Kalender zu löschen.Pfad: idJWT oder Benutzerschlüssel API
POST/api/calendar-groups/:id/calendarsKalender einer Gruppe zuweisen.Pfad: id, Text: calendarIdsJWT oder Benutzerschlüssel API
POST/api/calendar-groups/:id/calendars/unassignKalender aus einer Gruppe entfernen.Pfad: id, Text: calendarIdsJWT oder Benutzerschlüssel API
POST/api/calendar-groups/:id/shareGeben Sie alle Kalender in einer Gruppe frei.Pfad: id, Text: userIds,permissionJWT oder Benutzerschlüssel API
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 API

Fordern Sie Formen an​

Kalender-DTOs​

CreateCalendarDto und UpdateCalendarDto

  • 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

Hinweise:

  • 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

  • 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.