Calendar Event Schema
Felder
Calendar Event Schema
Schema for validating calendar_event entities (collection calendar_events)
title
Event title
description
Event description
startAt
Event start date-time (ISO format)
endAt
Event end date-time (ISO format)
allDay
Whether this is an all-day event
showAs
How this event should be shown in free/busy lookups (Outlook-compatible). Defaults to busy for timed events, free for all-day events.
freetentativebusyout_of_officeworking_elsewherevisibility
Event visibility. PRIVATE events are only visible to their creator and listed participants (participants.userId). Outlook-style private-appointment flag.
PUBLICPRIVATElocation
Event location
participants
Event participants: internal users, CRM contact persons, or external emails
type
userpartyemailuserId
partyId
email
displayName
isOrganizer
linkedPartyId
Linked party/company UUID (Firma)
linkedTicketId
Linked ticket UUID
linkedProjectId
Linked project UUID
linkedOpportunityId
Linked opportunity UUID (Vertriebschance). Set when an appointment is created from the opportunity "Termine" tab; lists events for that opportunity.
linkedTaskId
Linked task UUID (ADR 0219). Typed mirror of the polymorphic referenceType:"TASK" + referenceId for symmetry with linkedProjectId/linkedTicketId/linkedOpportunityId. Readers should prefer this and fall back to (referenceType === "TASK" ? referenceId : null) for older events that only carry the polymorphic pair.
linkedPerformanceReviewId
Linked performance_review UUID. When set, changes to this event mirror back to review.meeting and deletion resets the review to AWAITING_MEETING.
positionId
ADR 0310: optional project_position this appointment is billed against, mirroring task.positionId. null = no position (free appointment). Set from the project "Termine" tab so it is clear which position (and thus billingModel flat_rate/time_and_material) time booked off this event belongs to; the positionId is carried onto the time booking when the appointment is verbucht.
partyAddressId
Linked party address UUID — references an address entry within the linked party (for on-site appointments)
locationId
Linked internal location UUID (building/room from locations entity)
travelBeforeMinutes
Travel time before event in minutes (Anfahrt)
travelAfterMinutes
Travel time after event in minutes (Abfahrt)
travelAutoCalculated
True when travel times were auto-computed from party.travelConfig / OpenRouteService. Set to false to suppress future auto-updates.
travelDistanceKm
One-way distance in km between self-company location and customer address, captured from OpenRouteService alongside travelBeforeMinutes/travelAfterMinutes. Displayed on the Anfahrt/Abfahrt strips in the calendar.
referenceType
Polymorphic reference type (Auftrag) — same as time records. HR_TICKET links events to an internal HR-Ticket (Onboarding-Termin, Probezeit-Review, ...). TRAINING_SESSION links auto-generated calendar entries to a Schulungsgruppe (WP-F). OPPORTUNITY links the event to a Vertriebschance; the dialog mirrors the id into linkedOpportunityId so the opportunity "Termine" tab and feed keep working off the typed field.
TICKETHR_TICKETPROJECTTASKCONTACT_PERSONASSETTRAINING_SESSIONOPPORTUNITYreferenceId
Polymorphic reference ID (Auftrag) — same as time records
assetIds
Affected asset/device UUIDs (betroffene Geräte) — lets one appointment cover multiple assets (e.g. updating several firewalls/servers). Independent of the single "Auftrag" referenceType/referenceId, which stays the primary Vorgang (ticket/project/asset).
linkedVehicleIds
Reserved vehicle UUIDs (Fahrzeuge) — prevents double-booking
driverId
Fleet driver UUID — set when event is a vehicle reservation
reservationStatus
Reservation workflow status — relevant when linkedVehicleIds or linkedResourceIds is set
REQUESTEDCONFIRMEDACTIVECOMPLETEDCANCELLEDNO_SHOWreservationPurpose
Purpose/reason for the reservation
linkedResourceIds
Reserved pool resource UUIDs (rooms, devices, tools) — prevents double-booking
resourceName
Denormalized resource name for display
resourceCategory
Category of the linked pool resource (denormalized)
POOL_DEVICETOOLROOMnullbookerUserId
User who booked the resource (may differ from event creator)
bookerUserName
Denormalized booker name for display
resourceHalfDay
Half-day mode for HALF_DAY booking resources
FULLMORNINGAFTERNOONnullattendeeCount
Number of attendees (room bookings)
cateringRequested
Whether catering was requested
cateringNotes
Catering requests
setupNotes
Room setup instructions
cancellationReason
Reason for cancellation
cancelledAt
When the booking was cancelled
cancelledBy
User who cancelled the booking
linkedToolIds
Reserved tool/equipment UUIDs (Werkzeug)
materials
Planned materials for this event (linked to articles)
articleNumber
articleName
quantity
unit
notes
microsoftEventId
Microsoft Graph Calendar event ID (synced from Outlook)
iCalUId
Microsoft Graph iCalUId — stable, mailbox-independent meeting identifier used to deduplicate the same meeting across attendees and across event-id rotation (ADR 0168)
microsoftChangeKey
Microsoft Graph changeKey for echo-suppression
onlineMeetingUrl
Teams meeting join URL
isTeamsMeeting
Whether this event includes a Teams meeting
syncSource
Origin of the calendar event
localmicrosoftlastSyncedAt
Last time this event was synced with Microsoft
recurrenceType
Recurrence pattern type
nonedailyweeklymonthlyyearlyrecurrenceInterval
Recurrence interval (e.g. every 2 weeks)
recurrenceDaysOfWeek
Days of week for weekly recurrence (0=Sun, 1=Mon, ..., 6=Sat)
recurrenceEndDate
End date for recurrence series
recurrenceCount
Number of occurrences for recurrence series
recurrenceSeriesId
UUID grouping events in the same recurrence series
bookingLinkId
Reference to the booking link used
bookingServiceId
Reference to the booking service
bookingCustomerFirstName
Customer first name (denormalized)
bookingCustomerLastName
Customer last name (denormalized)
bookingCustomerEmail
Customer email (deduplication key for party)
bookingCustomerPhone
Customer phone in E.164-like format
bookingCustomerCompany
Customer company name
bookingFormData
Custom field answers from the booking form
bookingManagementTokenHash
SHA-256 hash of the self-service management token
bookingManagementTokenExpiresAt
Expiry of the management token
bookingSource
How the booking was created
linkportaladminbookingConfirmedAt
When the booking was confirmed
bookingConfirmedBy
userId or "auto"
bookingCancelledVia
Who initiated the cancellation
customeradminsystembookingTimezone
IANA timezone of the customer at booking time
bookingIpAddress
Customer IP address (audit only, not exposed in API)
bookingUserAgent
Customer user agent (audit only, not exposed in API)
bookingParticipantCount
Number of participants for group bookings
bookingParticipantNames
Optional list of participant names for group bookings
bookingIsGroupSlot
Whether this is a group booking slot
bookingFollowUpSentAt
When the follow-up email was sent
bookingNpsRating
NPS rating (0-10) provided by customer after appointment
bookingNpsFeedback
Free-text feedback from NPS follow-up
rescheduleTracking
Server-maintained reschedule-policy tracking (ADR 0342, protected field). Absent on events that were never policed — readers must treat absence as crossDayMoveCount 0 (no backfill).
crossDayMoveCount
Counted self cross-day moves. Approval does NOT reset this.
anchorStartAt
Last sanctioned start: creation, a bypass-holder move, or an approved reschedule request
Keine Felder passen zum Filter.
Standard-Endpoints
Diese Resource folgt dem generischen CRUD-Vertrag der Plattform. Lesen Sie die Konventionen für Pagination, Idempotenz, Optimistic Locking und Audit. Die wichtigsten Endpoints:
GET /api/v1/calendar_events— Liste, paginiert + filterbarGET /api/v1/calendar_events/<id>— Einzelne EntityPOST /api/v1/calendar_events— AnlegenPATCH /api/v1/calendar_events/<id>— Teil-UpdateDELETE /api/v1/calendar_events/<id>— Soft-DeleteGET /api/v1/calendar_events/<id>/timeline— Audit + Aktivitäten