Zum Hauptinhalt springen
Was this helpful?

Ereignis API

Ereignisse und Ereigniskommentare

Erstellen Sie Ereignisse, verwalten Sie wiederkehrende Serien und arbeiten Sie über Kommentare zusammen

Diese Seite dokumentiert die Ereignis-CRUD-Oberfläche, die Behandlung wiederkehrender Ereignisse und kalenderbezogene Ereignisse liest, und die an Ereignisse angehängten Kommentar-Thread-Endpunkte.

JWT oder Benutzer API SchlüsselWiederkehrende UpdatesKalenderbereichsabfragenKommentarthreads

Quelle

  • Ereigniscontroller: backend-nestjs/src/events/events.controller.ts
  • Controller für Ereigniskommentare: backend-nestjs/src/events/event-comments.controller.ts
  • DTOs: backend-nestjs/src/dto/event.dto.ts, backend-nestjs/src/dto/recurrence.dto.ts, backend-nestjs/src/dto/event-comment.dto.ts, backend-nestjs/src/events/dto/list-events.query.dto.ts
  • Ereignisentitätsaufzählungen: backend-nestjs/src/entities/event.entity.ts

Authentifizierung und Berechtigungen

  • Alle Routen auf dieser Seite sollen authentifiziert werden.
  • Ereigniskommentare verwenden JwtAuthGuard auf Controller-Ebene.
  • Ereignis-CRUD-Routen verwenden explizit JwtAuthGuard für jede Methode außer GET /api/events/calendar/:calendarId.
  • Quellhinweis: GET /api/events/calendar/:calendarId liest immer noch req.user.id, behandeln Sie es also als authentifizierte Route, auch wenn der Dekorator in der Controller-Quelle fehlt.
  • Der Zugriff auf Ereignisse und Kommentare wird durch den Eigentümer von Ereignissen und Kalendern oder durch Freigabeberechtigungen in der Serviceschicht erzwungen.

Endpunktreferenz

Veranstaltungen

MethodePfadZweckAnfrage oder AnfrageAuthQuelle
POST/api/eventsErstellen Sie ein Ereignis.Körper: EreignisfelderJWT oder Benutzerschlüssel APIevents/events.controller.ts
POST/api/events/recurringErstellen Sie eine wiederkehrende Veranstaltungsreihe.Text: Felder für wiederkehrende EreignisseJWT oder Benutzerschlüssel APIevents/events.controller.ts
GET/api/eventsListen Sie zugängliche Ereignisse in einem optionalen Datumsbereich auf.Abfrage: startDate,endDateJWT oder Benutzerschlüssel APIevents/events.controller.ts
GET/api/events/:idHolen Sie sich eine Veranstaltung.Pfad: idJWT oder Benutzerschlüssel APIevents/events.controller.ts
PATCH/api/events/:idAktualisieren Sie ein Ereignis oder ein wiederkehrendes Ereignis.Pfad: id, Text: Teilereignisfelder plus updateModeJWT oder Benutzerschlüssel APIevents/events.controller.ts
DELETE/api/events/:idEin Ereignis löschen.Pfad: idJWT oder Benutzerschlüssel APIevents/events.controller.ts
PATCH/api/events/:id/recurringAktualisieren Sie eine wiederkehrende Serie mit explizitem Umfang.Pfad: id, Text: wiederkehrende Aktualisierungsfelder plus updateScopeJWT oder Benutzerschlüssel APIevents/events.controller.ts
GET/api/events/calendar/:calendarIdListen Sie Ereignisse für einen Kalender auf.Pfad: calendarIdAls authentifiziert behandelnevents/events.controller.ts

Veranstaltungskommentare

MethodePfadZweckAnfrage oder AnfrageAuthQuelle
GET/api/events/:eventId/commentsListen Sie Kommentare zu einem Ereignis auf.Pfad: eventIdJWT oder Benutzerschlüssel APIevents/event-comments.controller.ts
POST/api/events/:eventId/commentsErstellen Sie einen Kommentar.Pfad: eventId, Text: content,templateKey,parentCommentId,isFlaggedJWT oder Benutzerschlüssel APIevents/event-comments.controller.ts
POST/api/events/:eventId/comments/track-openVerfolgen Sie, dass ein Benutzer ein Ereignis geöffnet hat.Pfad: eventId, Text: noteJWT oder Benutzerschlüssel APIevents/event-comments.controller.ts
PATCH/api/events/:eventId/comments/:commentIdAktualisieren Sie einen Kommentar.Pfad: eventId,commentId, Text: contentJWT oder Benutzerschlüssel APIevents/event-comments.controller.ts
PATCH/api/events/:eventId/comments/:commentId/flagMarkieren Sie einen Kommentar oder heben Sie die Markierung auf.Pfad: eventId,commentId, Text: isFlaggedJWT oder Benutzerschlüssel APIevents/event-comments.controller.ts
POST/api/events/:eventId/comments/:commentId/repliesAuf einen Kommentar antworten.Pfad: eventId,commentId, Text: Kommentarfelder erstellenJWT oder Benutzerschlüssel APIevents/event-comments.controller.ts

Fordern Sie Formen an

Ereignis erstellen und aktualisieren

CreateEventDto und UpdateEventDto in backend-nestjs/src/dto/event.dto.ts

  • title: beim Erstellen erforderlich, Zeichenfolge
  • description: optionale Zeichenfolge
  • startDate: beim Erstellen erforderlich, ISO-Datum
  • startTime: optionale Zeichenfolge
  • endDate: optionales ISO-Datum
  • endTime: optionale Zeichenfolge
  • isAllDay: optionaler boolescher Wert
  • location: optionale Zeichenfolge
  • status: optionale Aufzählung confirmed|tentative|cancelled
  • recurrenceType: optionale Aufzählung none|daily|weekly|monthly|yearly
  • recurrenceRule: optionale JSON-Nutzlast
  • color: optionale Zeichenfolge
  • icon: optionale Zeichenfolge
  • notes: optionale Zeichenfolge
  • tags: optionales String-Array, jeweils maximal 64 Zeichen
  • labels: optionaler Alias für tags
  • calendarId: optionale Nummer
  • updateMode: Nur-Update-Enumeration single|all|future

Grenzwerte auf Entitätsebene ab backend-nestjs/src/entities/event.entity.ts

  • title Länge: 300
  • location Länge: 200
  • icon Länge: 10
  • color Länge: 7

Wiederkehrende Serie

CreateRecurringEventDto und UpdateRecurringEventDto in backend-nestjs/src/dto/recurrence.dto.ts

  • calendarId: beim Erstellen erforderlich
  • recurrence.type: erforderliche Enumeration none|daily|weekly|monthly|yearly
  • recurrence.interval: optionale Nummer, Standard 1
  • recurrence.daysOfWeek: optionales Enum-Array SU|MO|TU|WE|TH|FR|SA
  • recurrence.dayOfMonth: optionale Nummer
  • recurrence.monthOfYear: optionale Nummer
  • recurrence.endType: optional never|count|date
  • recurrence.count: optionale Nummer
  • recurrence.endDate: optionales ISO-Datum
  • recurrence.timezone: optionale Zeichenfolge
  • updateScope: Nur-Update-Enumeration this|future|all

Listenabfrage

  • ListEventsQueryDto.startDate: optionales ISO-Datum
  • ListEventsQueryDto.endDate: optionales ISO-Datum

Kommentare

CreateEventCommentDto in backend-nestjs/src/dto/event-comment.dto.ts

  • content: optionale Zeichenfolge
  • templateKey: optionale Aufzählung CommentTemplateKey
  • parentCommentId: optionale Nummer
  • isFlagged: optionaler boolescher Wert

Andere Kommentar-DTOs:

  • UpdateEventCommentDto.content: erforderliche Zeichenfolge
  • FlagCommentDto.isFlagged: erforderlicher boolescher Wert
  • TrackEventOpenDto.note: optionale Zeichenfolge

Beispielanrufe

Erstellen Sie ein Kalenderereignis

curl -X POST "$PRIMECAL_API/api/events" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "School pickup",
"startDate": "2026-03-30",
"startTime": "15:30",
"endDate": "2026-03-30",
"endTime": "16:00",
"calendarId": 5,
"tags": ["family", "kids"]
}'

Erstellen Sie eine wiederkehrende Veranstaltungsreihe

curl -X POST "$PRIMECAL_API/api/events/recurring" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Soccer practice",
"startDate": "2026-04-01",
"startTime": "17:00",
"endDate": "2026-04-01",
"endTime": "18:30",
"calendarId": 5,
"recurrence": {
"type": "weekly",
"interval": 1,
"daysOfWeek": ["WE"],
"endType": "date",
"endDate": "2026-06-30"
}
}'

Aktualisieren Sie ein einzelnes Vorkommen in einer wiederkehrenden Serie

curl -X PATCH "$PRIMECAL_API/api/events/42" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"startTime": "17:30",
"endTime": "19:00",
"updateMode": "single"
}'

Fügen Sie einen Kommentar hinzu

curl -X POST "$PRIMECAL_API/api/events/42/comments" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"content": "Running 10 minutes late."
}'

Hinweise zu Reaktion und Verhalten

  • Zu den Ereignisantworten gehören eine calendar-Zusammenfassung und eine createdBy-Zusammenfassung.
  • tags und labels sind parallele Eingänge; Kunden sollten sich für eine Konvention entscheiden und konsequent bleiben.
  • Für wiederkehrende Serienaktualisierungen gibt es zwei unterschiedliche Modelle:
    • PATCH /api/events/:id verwendet updateMode mit single|all|future
    • PATCH /api/events/:id/recurring verwendet updateScope mit this|future|all
  • Zu den Kommentarantworten gehören verschachtelte Antworten, Reporter-Metadaten, Sichtbarkeit und Flaggenstatus.

Best Practices

  • Datums- und Uhrzeitfelder separat senden; Das Backend modelliert sie als separate Eigenschaften.
  • Bevorzugen Sie GET /api/events?startDate=...&endDate=... für Kalenderansichten und -exporte.
  • Halten Sie wiederkehrende Änderungen explizit fest. Gehen Sie nicht davon aus, dass die Client-Standardeinstellung mit der Absicht des Benutzers übereinstimmt.
  • Normalisieren Sie Ereignisbezeichnungen auf dem Client, wenn Sie auch wiederverwendbare Bezeichnungen über den Benutzereinstellungsfluss verfügbar machen.
  • Verwenden Sie Kommentare für Kollaborationsmetadaten und sichtbare Diskussionen, nicht als versteckten Maschinenzustandskanal.