API · v1 · stabil
CODEMETA OSDeveloper Center
Konsole öffnen
Entity · calendar_events

Calendar Event Schema

Schema-ID
calendar_event
Collection
calendar_events
Permissions
  • Lesencalendar_event_view
  • Anlegencalendar_event_create
  • Änderncalendar_event_edit
  • Löschencalendar_event_delete
Beziehungen

Felder

Calendar Event Schema

calendar_events4 Permissions

Schema for validating calendar_event entities (collection calendar_events)

titlestringerforderlich

Event title

1–200 Zeichen
descriptionstringoptional

Event description

max 5000 Zeichennullable
startAtdatetimeerforderlich

Event start date-time (ISO format)

endAtdatetimeerforderlich

Event end date-time (ISO format)

allDaybooleanerforderlich

Whether this is an all-day event

showAsstringoptional

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_elsewhere
nullable
visibilitystringoptional

Event visibility. PRIVATE events are only visible to their creator and listed participants (participants.userId). Outlook-style private-appointment flag.

PUBLICPRIVATE
Default: "PUBLIC"
locationstringoptional

Event location

max 255 Zeichennullable
participantsobject[]optional

Event participants: internal users, CRM contact persons, or external emails

Default: []nullable
typestringerforderlich
userpartyemail
userIduuidoptional
nullable
partyIduuidoptional
nullable
emailemailoptional
nullable
displayNamestringoptional
max 200 Zeichennullable
isOrganizerbooleanoptional
nullable
linkedPartyIduuidoptional

Linked party/company UUID (Firma)

nullable
linkedTicketIduuidoptional→ ticket

Linked ticket UUID

nullable
linkedProjectIduuidoptional→ project

Linked project UUID

nullable
linkedOpportunityIduuidoptional

Linked opportunity UUID (Vertriebschance). Set when an appointment is created from the opportunity "Termine" tab; lists events for that opportunity.

nullable
linkedTaskIduuidoptional

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.

nullable
linkedPerformanceReviewIduuidoptional

Linked performance_review UUID. When set, changes to this event mirror back to review.meeting and deletion resets the review to AWAITING_MEETING.

nullable
positionIduuidoptional

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.

nullable
partyAddressIduuidoptional

Linked party address UUID — references an address entry within the linked party (for on-site appointments)

nullable
locationIduuidoptional

Linked internal location UUID (building/room from locations entity)

nullable
travelBeforeMinutesintegeroptional

Travel time before event in minutes (Anfahrt)

0 – 480nullable
travelAfterMinutesintegeroptional

Travel time after event in minutes (Abfahrt)

0 – 480nullable
travelAutoCalculatedbooleanoptional

True when travel times were auto-computed from party.travelConfig / OpenRouteService. Set to false to suppress future auto-updates.

nullable
travelDistanceKmnumberoptional

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.

0 – 10000nullable
referenceTypestringoptional

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_SESSIONOPPORTUNITY
nullable
referenceIduuidoptional

Polymorphic reference ID (Auftrag) — same as time records

nullable
assetIdsuuid[]optional

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

Default: []nullable
linkedVehicleIdsuuid[]optional

Reserved vehicle UUIDs (Fahrzeuge) — prevents double-booking

Default: []nullable
driverIduuidoptional

Fleet driver UUID — set when event is a vehicle reservation

nullable
reservationStatusstringoptional

Reservation workflow status — relevant when linkedVehicleIds or linkedResourceIds is set

REQUESTEDCONFIRMEDACTIVECOMPLETEDCANCELLEDNO_SHOW
nullable
reservationPurposestringoptional

Purpose/reason for the reservation

max 500 Zeichennullable
linkedResourceIdsuuid[]optional

Reserved pool resource UUIDs (rooms, devices, tools) — prevents double-booking

Default: []nullable
resourceNamestringoptional

Denormalized resource name for display

max 200 Zeichennullable
resourceCategorystringoptional

Category of the linked pool resource (denormalized)

POOL_DEVICETOOLROOMnull
nullable
bookerUserIduuidoptional

User who booked the resource (may differ from event creator)

nullable
bookerUserNamestringoptional

Denormalized booker name for display

max 200 Zeichennullable
resourceHalfDaystringoptional

Half-day mode for HALF_DAY booking resources

FULLMORNINGAFTERNOONnull
nullable
attendeeCountintegeroptional

Number of attendees (room bookings)

≥ 1nullable
cateringRequestedbooleanoptional

Whether catering was requested

nullable
cateringNotesstringoptional

Catering requests

max 1000 Zeichennullable
setupNotesstringoptional

Room setup instructions

max 1000 Zeichennullable
cancellationReasonstringoptional

Reason for cancellation

max 1000 Zeichennullable
cancelledAtdatetimeoptional

When the booking was cancelled

nullable
cancelledByuuidoptional

User who cancelled the booking

nullable
linkedToolIdsuuid[]optional

Reserved tool/equipment UUIDs (Werkzeug)

Default: []nullable
materialsobject[]optional

Planned materials for this event (linked to articles)

Default: []nullable
articleIduuiderforderlich
articleNumberstringoptional
max 50 Zeichennullable
articleNamestringerforderlich
1–200 Zeichen
quantitynumbererforderlich
≥ 0
unitstringoptional
max 50 Zeichennullable
notesstringoptional
max 500 Zeichennullable
microsoftEventIdstringoptional

Microsoft Graph Calendar event ID (synced from Outlook)

nullable
iCalUIdstringoptional

Microsoft Graph iCalUId — stable, mailbox-independent meeting identifier used to deduplicate the same meeting across attendees and across event-id rotation (ADR 0168)

nullable
microsoftChangeKeystringoptional

Microsoft Graph changeKey for echo-suppression

nullable
onlineMeetingUrlstringoptional

Teams meeting join URL

nullable
isTeamsMeetingbooleanoptional

Whether this event includes a Teams meeting

nullable
syncSourcestringoptional

Origin of the calendar event

localmicrosoft
nullable
lastSyncedAtdatetimeoptional

Last time this event was synced with Microsoft

nullable
recurrenceTypestringoptional

Recurrence pattern type

nonedailyweeklymonthlyyearly
nullable
recurrenceIntervalintegeroptional

Recurrence interval (e.g. every 2 weeks)

1 – 99nullable
recurrenceDaysOfWeekinteger[]optional

Days of week for weekly recurrence (0=Sun, 1=Mon, ..., 6=Sat)

nullable
recurrenceEndDatedatetimeoptional

End date for recurrence series

nullable
recurrenceCountintegeroptional

Number of occurrences for recurrence series

1 – 365nullable
recurrenceSeriesIduuidoptional

UUID grouping events in the same recurrence series

nullable
remindersobject[]optional

Reminders before event start (notification triggers)

Default: []nullable
minutesBeforeintegererforderlich
0 – 10080
bookingLinkIduuidoptional

Reference to the booking link used

nullable
bookingServiceIduuidoptional

Reference to the booking service

nullable
bookingCustomerFirstNamestringoptional

Customer first name (denormalized)

max 100 Zeichennullable
bookingCustomerLastNamestringoptional

Customer last name (denormalized)

max 100 Zeichennullable
bookingCustomerEmailemailoptional

Customer email (deduplication key for party)

max 254 Zeichennullable
bookingCustomerPhonestringoptional

Customer phone in E.164-like format

max 30 Zeichennullable
bookingCustomerCompanystringoptional

Customer company name

max 200 Zeichennullable
bookingFormDataobjectoptional

Custom field answers from the booking form

nullable
bookingManagementTokenHashstringoptional

SHA-256 hash of the self-service management token

nullable
bookingManagementTokenExpiresAtdatetimeoptional

Expiry of the management token

nullable
bookingSourcestringoptional

How the booking was created

linkportaladmin
nullable
bookingConfirmedAtdatetimeoptional

When the booking was confirmed

nullable
bookingConfirmedBystringoptional

userId or "auto"

max 200 Zeichennullable
bookingCancelledViastringoptional

Who initiated the cancellation

customeradminsystem
nullable
bookingTimezonestringoptional

IANA timezone of the customer at booking time

max 100 Zeichennullable
bookingIpAddressstringoptional

Customer IP address (audit only, not exposed in API)

max 45 Zeichennullable
bookingUserAgentstringoptional

Customer user agent (audit only, not exposed in API)

max 500 Zeichennullable
bookingParticipantCountintegeroptional

Number of participants for group bookings

1 – 100nullable
bookingParticipantNamesstring[]optional

Optional list of participant names for group bookings

nullable
bookingIsGroupSlotbooleanoptional

Whether this is a group booking slot

nullable
bookingFollowUpSentAtdatetimeoptional

When the follow-up email was sent

nullable
bookingNpsRatingintegeroptional

NPS rating (0-10) provided by customer after appointment

0 – 10nullable
bookingNpsFeedbackstringoptional

Free-text feedback from NPS follow-up

max 2000 Zeichennullable
rescheduleTrackingobjectoptional

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

read-onlynullable
crossDayMoveCountintegererforderlich

Counted self cross-day moves. Approval does NOT reset this.

≥ 0
anchorStartAtdatetimeoptional

Last sanctioned start: creation, a bypass-holder move, or an approved reschedule request

nullable
logobject[]optional

Capped audit trail of policed moves (newest last)

max 20 Itemsnullable
atdatetimeerforderlich
byUserIdstringerforderlich
fromStartAtdatetimeerforderlich
toStartAtdatetimeerforderlich
crossDaybooleanerforderlich

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 + filterbar
  • GET /api/v1/calendar_events/<id> — Einzelne Entity
  • POST /api/v1/calendar_events — Anlegen
  • PATCH /api/v1/calendar_events/<id> — Teil-Update
  • DELETE /api/v1/calendar_events/<id> — Soft-Delete
  • GET /api/v1/calendar_events/<id>/timeline — Audit + Aktivitäten

Suche