read-api: aktivitaeten
Mittels read-api kann das Aktivitätsprotokoll von Events und anderen Entitäten abgerufen werden – als Änderungssignal für externe Systeme, die co*pilot-Daten regelmäßig synchronisieren.
Mittels read-api kann das Aktivitätsprotokoll von Events und anderen Entitäten abgerufen werden – als Änderungssignal für externe Systeme, die co*pilot-Daten regelmäßig synchronisieren.
Jede fachliche Änderung in co*pilot (Zeitplan, Benutzerfelder, Räume, Kontakte, Dateien, Angebote, …) erzeugt eine Aktivität an der betroffenen Entität. Anders als updatedAt im Event-Payload, das nur die Stammdaten des Events abbildet, erfasst das Aktivitätsprotokoll auch alle Teiländerungen.
Authentifizierung
Infos über Authentifizierung, Status Codes und Code Beispiele
Der Access Token benötigt die Berechtigung read-api. Aktivitäten zu vertraulichen Daten (vertrauliche Benutzerfelder, vertrauliche Dateien) sind nur enthalten, wenn der Token zusätzlich die Berechtigung confidential-api besitzt.
Endpunkte
GET /aktivitaeten/:entitaet(alle Aktivitäten eines Entitätstyps – z.B. „welche Events haben sich seit dem letzten Lauf geändert?")GET /aktivitaeten/:entitaet/:id(Aktivitäten einer einzelnen Entität)
Die maschinenlesbare Spezifikation (OpenAPI) ist unter GET /{instanzId}/api/spec.yaml abrufbar, eine interaktive Oberfläche unter /{instanzId}/api/spec/ui/.
GET /aktivitaeten/:entitaet
Liefert die Aktivitäten aller Entitäten eines Typs, aufsteigend nach id (älteste zuerst).
Entitätstypen
Event, Reihe, Kontakt, Aufgabe, Angebot, Rechnung, Vorlage, Rechnungsvorlage, OptionsGruppe, Promotion, PromotionsKampagne, EventExport, DateiReferenz, Gästeliste, GästelisteKontingent, Artist, ArtistShow, Spielort, InventarArtikel, VfsDokument, Raum
Parameter
| Key | Typ bzw. Wert |
| since | Zeitpunkt im Format RFC 3339 (z.B. "2026-09-17T03:00:00Z") Nur Aktivitäten ab diesem Zeitpunkt (inklusive). Für den ersten Abruf einer Synchronisation. |
| cursor | Wert aus nextCursor der vorherigen AntwortNur Aktivitäten nach diesem Cursor. Damit kann ein späterer Lauf genau dort weiterlesen, wo der letzte aufgehört hat – ohne Zeitvergleich und ohne Lücken. |
| limit | Maximale Anzahl Aktivitäten pro Antwort Default: 50 Maximal: 200 |
Antwort
{
"data": [
{
"id": 4711,
"entitaet": "Event",
"entitaetId": "clx…",
"aktion": "Geändert",
"beschreibung": "hat den Ablauf 'Einlass' von '17.09.2026 19:30' zu '17.09.2026 19:00' verschoben",
"vertraulich": false,
"erstelltAm": "2026-09-17T10:12:33Z",
"erstelltVon": {
"typ": "Benutzer",
"id": "clx…",
"email": "armin@example.org",
"anzeigename": "Armin Hedwig"
}
}
],
"hasMore": true,
"nextCursor": "4711"
}
| Feld | Bedeutung |
| id | Laufende Nummer der Aktivität; identisch mit dem Cursor-Wert |
| entitaet / entitaetId | Betroffene Entität. Deren aktuellen Stand liefert der jeweilige Detail-Endpunkt, z.B. GET /event/:slug mit Header x-param: id |
| aktion | "Erstellt" | "Geändert" | "Gelöscht" | "Gelesen"Erstellt und Gelöscht betreffen die Entität selbst, Geändert jede Teiländerung (Zeitplan, Benutzerfelder, Dateien, Zuordnungen, …) |
| beschreibung | Menschenlesbare Beschreibung, wie sie auch in der Aktivitäten-Timeline in co*pilot erscheint |
| vertraulich | Betrifft vertrauliche Daten (nur mit confidential-api enthalten) |
| erstelltVon | typ = "Benutzer" (mit email/anzeigename) oder "System" für automatische Aktionen |
| hasMore / nextCursor | Es gibt weitere Aktivitäten; mit cursor=nextCursor die nächste Seite abrufen |
Empfohlener Ablauf für eine Synchronisation
- Erster Lauf:
GET /aktivitaeten/Event?since=<Zeitpunkt>– alle Seiten lesen, bishasMorefalseist. - Den letzten
nextCursor(bzw. die höchsteid) speichern. - Jeder weitere Lauf:
GET /aktivitaeten/Event?cursor=<gespeicherter Cursor>. Die Antwort enthält genau die Aktivitäten seit dem letzten Lauf. - Für die enthaltenen
entitaetIds den aktuellen Datenstand über den Detail-Endpunkt nachladen. Der Event-Payload bleibt die fachliche Quelle der Wahrheit; das Aktivitätsprotokoll ist nur das Signal.
GET /aktivitaeten/:entitaet/:id
Liefert die Aktivitäten einer einzelnen Entität, aufsteigend nach id. Parameter und Antwort entsprechen dem Feed-Endpunkt.
curl -i "https://copilot.events/{instanzId}/api/aktivitaeten/Event/{eventId}?limit=20" \
-H "Authorization: Bearer {token}"
Status Codes
| Status Code | Anmerkung |
| 200 | OK |
| 400 | Bad Request (ungültiges Datum in since) |
| 401 | Unauthorized (Invalider oder fehlender Access Token) |
| 403 | Forbidden (Token ohne read-api) |
| 422 | Unprocessable Entity (unbekannter Entitätstyp, ungültiger Cursor) |