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
JwtAuthGuardauf Controller-Ebene. - Ereignis-CRUD-Routen verwenden explizit
JwtAuthGuardfür jede Methode außerGET /api/events/calendar/:calendarId. - Quellhinweis:
GET /api/events/calendar/:calendarIdliest immer nochreq.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
| Methode | Pfad | Zweck | Anfrage oder Anfrage | Auth | Quelle |
|---|---|---|---|---|---|
POST | /api/events | Erstellen Sie ein Ereignis. | Körper: Ereignisfelder | JWT oder Benutzerschlüssel API | events/events.controller.ts |
POST | /api/events/recurring | Erstellen Sie eine wiederkehrende Veranstaltungsreihe. | Text: Felder für wiederkehrende Ereignisse | JWT oder Benutzerschlüssel API | events/events.controller.ts |
GET | /api/events | Listen Sie zugängliche Ereignisse in einem optionalen Datumsbereich auf. | Abfrage: startDate,endDate | JWT oder Benutzerschlüssel API | events/events.controller.ts |
GET | /api/events/:id | Holen Sie sich eine Veranstaltung. | Pfad: id | JWT oder Benutzerschlüssel API | events/events.controller.ts |
PATCH | /api/events/:id | Aktualisieren Sie ein Ereignis oder ein wiederkehrendes Ereignis. | Pfad: id, Text: Teilereignisfelder plus updateMode | JWT oder Benutzerschlüssel API | events/events.controller.ts |
DELETE | /api/events/:id | Ein Ereignis löschen. | Pfad: id | JWT oder Benutzerschlüssel API | events/events.controller.ts |
PATCH | /api/events/:id/recurring | Aktualisieren Sie eine wiederkehrende Serie mit explizitem Umfang. | Pfad: id, Text: wiederkehrende Aktualisierungsfelder plus updateScope | JWT oder Benutzerschlüssel API | events/events.controller.ts |
GET | /api/events/calendar/:calendarId | Listen Sie Ereignisse für einen Kalender auf. | Pfad: calendarId | Als authentifiziert behandeln | events/events.controller.ts |
Veranstaltungskommentare
| Methode | Pfad | Zweck | Anfrage oder Anfrage | Auth | Quelle |
|---|---|---|---|---|---|
GET | /api/events/:eventId/comments | Listen Sie Kommentare zu einem Ereignis auf. | Pfad: eventId | JWT oder Benutzerschlüssel API | events/event-comments.controller.ts |
POST | /api/events/:eventId/comments | Erstellen Sie einen Kommentar. | Pfad: eventId, Text: content,templateKey,parentCommentId,isFlagged | JWT oder Benutzerschlüssel API | events/event-comments.controller.ts |
POST | /api/events/:eventId/comments/track-open | Verfolgen Sie, dass ein Benutzer ein Ereignis geöffnet hat. | Pfad: eventId, Text: note | JWT oder Benutzerschlüssel API | events/event-comments.controller.ts |
PATCH | /api/events/:eventId/comments/:commentId | Aktualisieren Sie einen Kommentar. | Pfad: eventId,commentId, Text: content | JWT oder Benutzerschlüssel API | events/event-comments.controller.ts |
PATCH | /api/events/:eventId/comments/:commentId/flag | Markieren Sie einen Kommentar oder heben Sie die Markierung auf. | Pfad: eventId,commentId, Text: isFlagged | JWT oder Benutzerschlüssel API | events/event-comments.controller.ts |
POST | /api/events/:eventId/comments/:commentId/replies | Auf einen Kommentar antworten. | Pfad: eventId,commentId, Text: Kommentarfelder erstellen | JWT oder Benutzerschlüssel API | events/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, Zeichenfolgedescription: optionale ZeichenfolgestartDate: beim Erstellen erforderlich, ISO-DatumstartTime: optionale ZeichenfolgeendDate: optionales ISO-DatumendTime: optionale ZeichenfolgeisAllDay: optionaler boolescher Wertlocation: optionale Zeichenfolgestatus: optionale Aufzählungconfirmed|tentative|cancelledrecurrenceType: optionale Aufzählungnone|daily|weekly|monthly|yearlyrecurrenceRule: optionale JSON-Nutzlastcolor: optionale Zeichenfolgeicon: optionale Zeichenfolgenotes: optionale Zeichenfolgetags: optionales String-Array, jeweils maximal 64 Zeichenlabels: optionaler Alias fürtagscalendarId: optionale NummerupdateMode: Nur-Update-Enumerationsingle|all|future
Grenzwerte auf Entitätsebene ab backend-nestjs/src/entities/event.entity.ts
titleLänge: 300locationLänge: 200iconLänge: 10colorLänge: 7
Wiederkehrende Serie
CreateRecurringEventDto und UpdateRecurringEventDto in backend-nestjs/src/dto/recurrence.dto.ts
calendarId: beim Erstellen erforderlichrecurrence.type: erforderliche Enumerationnone|daily|weekly|monthly|yearlyrecurrence.interval: optionale Nummer, Standard1recurrence.daysOfWeek: optionales Enum-ArraySU|MO|TU|WE|TH|FR|SArecurrence.dayOfMonth: optionale Nummerrecurrence.monthOfYear: optionale Nummerrecurrence.endType: optionalnever|count|daterecurrence.count: optionale Nummerrecurrence.endDate: optionales ISO-Datumrecurrence.timezone: optionale ZeichenfolgeupdateScope: Nur-Update-Enumerationthis|future|all
Listenabfrage
ListEventsQueryDto.startDate: optionales ISO-DatumListEventsQueryDto.endDate: optionales ISO-Datum
Kommentare
CreateEventCommentDto in backend-nestjs/src/dto/event-comment.dto.ts
content: optionale ZeichenfolgetemplateKey: optionale AufzählungCommentTemplateKeyparentCommentId: optionale NummerisFlagged: optionaler boolescher Wert
Andere Kommentar-DTOs:
UpdateEventCommentDto.content: erforderliche ZeichenfolgeFlagCommentDto.isFlagged: erforderlicher boolescher WertTrackEventOpenDto.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 einecreatedBy-Zusammenfassung. tagsundlabelssind 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/:idverwendetupdateModemitsingle|all|futurePATCH /api/events/:id/recurringverwendetupdateScopemitthis|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.