Event data model

Updated:

View field support, webhooks, and list parameters for each integration on the Supported Integrations page.

FieldTypeRequiredDescription
idstringNo
created_atstringNo(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
updated_atstringNo(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
calendar_idstringNo(reference to CalendarCalendar)
subjectstringNo
start_atstringNo(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
end_atstringNo(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
is_all_daybooleanNo
timezonestringNo
notesstringNo
locationstringNo
is_freebooleanNo
is_privatebooleanNo
statusenumNoValues: CANCELED, CONFIRMED, TENTATIVE
organizerobjectNo
organizer.user_idstringNo(reference to HrisEmployee)
organizer.emailstringNo
organizer.namestringNo
organizer.statusenumNoValues: ACCEPTED, REJECTED, TENTATIVE
organizer.requiredbooleanNo
organizer.is_cohostbooleanNo
attendeesCalendarAttendee[]No
attendees[].user_idstringNo(reference to HrisEmployee)
attendees[].emailstringNo
attendees[].namestringNo
attendees[].statusenumNoValues: ACCEPTED, REJECTED, TENTATIVE
attendees[].requiredbooleanNo
attendees[].is_cohostbooleanNo
recurring_event_idstringNo(reference to CalendarEvent)
recurrenceCalendarEventRecurrence[]No
recurrence[].frequencyenumNoValues: DAILY, WEEKLY, MONTHLY, YEARLY
recurrence[].intervalnumberNohow many "units" between occurrences, defaults to 1
recurrence[].countnumberNohow many occurrences, defaults to undefined (no limit)
recurrence[].end_atstring (date-time)Nountil date, defaults to undefined (no end date) (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
recurrence[].on_daysenum[]Nodays of the week to repeat on, defaults to undefined (every day), only used if frequency is WEEKLY Values: SU, MO, TU, WE, TH, FR, SA
recurrence[].on_monthsobjectNomonths of the year to repeat on, defaults to undefined (every month), only used if frequency is YEARLY, January is 1
recurrence[].on_month_daysobjectNodays of the month to repeat on, defaults to undefined (every day), only used if frequency is MONTHLY
recurrence[].on_weeksobjectNoweek ordinals for BYDAY (e.g., -1 for last, -2 for second-to-last, 1 for first, 2 for second), only used with on_days. 0 is used for days without week ordinals.
recurrence[].on_year_daysobjectNodays of the year to repeat on, defaults to undefined (every day), only used if frequency is YEARLY
recurrence[].week_startenumNoweek start day, defaults to undefined (no week start day) Values: SU, MO, TU, WE, TH, FR, SA
recurrence[].excluded_datesobjectNodates to exclude from the recurrence, defaults to undefined (no exclusions)
recurrence[].included_datesobjectNodates to include in the recurrence, defaults to undefined (no inclusions)
recurrence[].timezonestringNotimezone, defaults to undefined (no timezone)
web_urlstringNo
has_conferencebooleanNo
conferenceCalendarConference[]No
conference[].conference_identifierstringNo
conference[].urlstringNo
conference[].labelstringNo
conference[].telephonestringNo
conference[].participant_access_codestringNo
conference[].host_access_codestringNo
conference[].notesstringNo
conference[].country_codestringNoISO 2-digit country code
conference[].region_codestringNoISO 2-digit region code
attachmentsCalendarAttachment[]No
attachments[].idstringNoID for the storage_fileget endpoint
attachments[].namestringNo
attachments[].mime_typestringNo
attachments[].download_urlstringNo
send_notificationsbooleanNo
matter_idstringNopointer to Legal Matter
metadataCalendarMetadata[]No
metadata[].idstringNo
metadata[].slugstringNo
metadata[].valueobjectNo
metadata[].namespacestringNo
metadata[].formatenumNoValues: TEXT, NUMBER, DATE, BOOLEAN, FILE, TEXTAREA, SINGLE_SELECT, MULTIPLE_SELECT, MEASUREMENT, PRICE, YES_NO, CURRENCY, URL
metadata[].extra_dataobjectNo
roomsCalendarReference[]NoCalendar Rooms booked for this event
rooms[].idstringNopointer to a Calendar Room
rooms[].namestringNo

TypeScript

TypeScript
export type CalendarEvent = {
	id?: string;
	created_at?: string; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	updated_at?: string; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	calendar_id?: string; // (reference to CalendarCalendar)
	subject?: string;
	start_at?: string; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	end_at?: string; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	is_all_day?: boolean;
	timezone?: string;
	notes?: string;
	location?: string;
	is_free?: boolean;
	is_private?: boolean;
	status?: 'CANCELED' | 'CONFIRMED' | 'TENTATIVE';
	organizer?: {
		user_id?: string; // (reference to HrisEmployee) 
		email?: string; 
		name?: string; 
		status?: 'ACCEPTED' | 'REJECTED' | 'TENTATIVE'; 
		required?: boolean; 
		is_cohost?: boolean; 
	};
	attendees?: [];
	recurring_event_id?: string; // (reference to CalendarEvent)
	recurrence?: [];
	web_url?: string;
	has_conference?: boolean;
	conference?: [];
	attachments?: [];
	send_notifications?: boolean;
	matter_id?: string; // pointer to Legal Matter
	metadata?: [];
	rooms?: []; // Calendar Rooms booked for this event
	raw?: any;
} 

Zod

Zod
import { z } from 'zod';

export const ZodCalendarEvent = z.object({
	id: z.string().optional(),
	created_at: z.string().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	updated_at: z.string().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	calendar_id: z.string().optional().describe("(reference to CalendarCalendar)"),
	subject: z.string().optional(),
	start_at: z.string().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	end_at: z.string().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	is_all_day: z.boolean().optional(),
	timezone: z.string().optional(),
	notes: z.string().optional(),
	location: z.string().optional(),
	is_free: z.boolean().optional(),
	is_private: z.boolean().optional(),
	status: z.enum("CANCELED", "CONFIRMED", "TENTATIVE").optional(),
	organizer: z.object({
			user_id: z.string().optional().describe("(reference to HrisEmployee)"),
			email: z.string().optional(),
			name: z.string().optional(),
			status: z.enum("ACCEPTED", "REJECTED", "TENTATIVE").optional(),
			required: z.boolean().optional(),
			is_cohost: z.boolean().optional()
}).optional(),
	attendees: z.array().optional(),
	recurring_event_id: z.string().optional().describe("(reference to CalendarEvent)"),
	recurrence: z.array().optional(),
	web_url: z.string().optional(),
	has_conference: z.boolean().optional(),
	conference: z.array().optional(),
	attachments: z.array().optional(),
	send_notifications: z.boolean().optional(),
	matter_id: z.string().optional().describe("pointer to Legal Matter"),
	metadata: z.array().optional(),
	rooms: z.array().optional().describe("Calendar Rooms booked for this event"),

});

Python

Python
import dataclasses

@dataclasses.dataclass
class CalendarEventStatus(str, Enum):
	CANCELED = 'CANCELED'
	CONFIRMED = 'CONFIRMED'
	TENTATIVE = 'TENTATIVE'

@dataclasses.dataclass
class CalendarEventOrganizerStatus(str, Enum):
	ACCEPTED = 'ACCEPTED'
	REJECTED = 'REJECTED'
	TENTATIVE = 'TENTATIVE'

@dataclasses.dataclass
class PropertyCalendarEventOrganizer:
	"""(reference to HrisEmployee)"""
	user_id: Optional[str]
	email: Optional[str]
	name: Optional[str]
	status: Optional[CalendarEventOrganizerStatus]
	required: Optional[bool]
	is_cohost: Optional[bool]

@dataclasses.dataclass
class CalendarEvent:
	id: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	created_at: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	updated_at: Optional[str]
	"""(reference to CalendarCalendar)"""
	calendar_id: Optional[str]
	subject: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	start_at: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	end_at: Optional[str]
	is_all_day: Optional[bool]
	timezone: Optional[str]
	notes: Optional[str]
	location: Optional[str]
	is_free: Optional[bool]
	is_private: Optional[bool]
	status: Optional[CalendarEventStatus]
	organizer: Optional[PropertyCalendarEventOrganizer]
	attendees: Optional[PropertyCalendarEventAttendees]
	"""(reference to CalendarEvent)"""
	recurring_event_id: Optional[str]
	recurrence: Optional[PropertyCalendarEventRecurrence]
	web_url: Optional[str]
	has_conference: Optional[bool]
	conference: Optional[PropertyCalendarEventConference]
	attachments: Optional[PropertyCalendarEventAttachments]
	send_notifications: Optional[bool]
	"""pointer to Legal Matter"""
	matter_id: Optional[str]
	metadata: Optional[PropertyCalendarEventMetadata]
	"""Calendar Rooms booked for this event"""
	rooms: Optional[PropertyCalendarEventRooms]
Are we missing anything? Let us know
Was this page helpful?