Timeoff data model

Updated:

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

FieldTypeRequiredDescription
idstringNo
created_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
updated_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
user_idstringYesemployee ID (reference to HrisEmployee)
company_idstringNo(reference to HrisCompany)
start_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
end_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
is_paidbooleanNo
statusenumNoValues: APPROVED, PENDING, DENIED, CANCELLED
approver_user_idstringNo(reference to HrisEmployee)
approved_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
commentsstringNo
reasonstringNo
original_typestringNointegration leave-type label before normalization
typeenumNoValues: VACATION, SICK, HOLIDAY, BEREAVEMENT, PARENTAL, UNPAID, IN_LIEU, OTHER
durationnumberNo
duration_typeenumNoValues: HOUR, DAY
attachmentsHrisAttachment[]Nosupporting documents (eg. doctor's notes) attached to the leave request
attachments[].idstringNo
attachments[].filenamestringNo
attachments[].content_typestringNo
attachments[].sizenumberNofile size in bytes
attachments[].download_urlstringNo
metadataHrisMetadata[]No
metadata[].idstringNoThe ID of the custom field definition (from the metadata/metadata endpoint).
metadata[].valueobjectNoThe field's value, typed by format: DATE as ISO-8601 (YYYY-MM-DD, or YYYY-MM-DDTHH:MM:SSZ for date-times); NUMBER, PRICE and CURRENCY as a number; BOOLEAN and YES_NO as true/false; MULTIPLE_SELECT as an array of option values; otherwise a string.
metadata[].namespacestringNo
metadata[].formatenumNoThe data type of the custom field, which determines how value is formatted. Values: TEXT, NUMBER, DATE, BOOLEAN, FILE, TEXTAREA, SINGLE_SELECT, MULTIPLE_SELECT, MEASUREMENT, PRICE, YES_NO, CURRENCY, URL
metadata[].extra_dataobjectNo
metadata[].slugstringNoThe integration's API name (key) of an existing custom field. List valid slugs for this object with the metadata/metadata endpoint; unknown slugs are rejected by the integration.

TypeScript

TypeScript
export type HrisTimeoff = {
	id?: string;
	created_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	updated_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	user_id: string; // employee ID (reference to HrisEmployee)
	company_id?: string; // (reference to HrisCompany)
	start_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	end_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	is_paid?: boolean;
	status?: 'APPROVED' | 'PENDING' | 'DENIED' | 'CANCELLED';
	approver_user_id?: string; // (reference to HrisEmployee)
	approved_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	comments?: string;
	reason?: string;
	original_type?: string; // integration leave-type label before normalization
	type?: 'VACATION' | 'SICK' | 'HOLIDAY' | 'BEREAVEMENT' | 'PARENTAL' | 'UNPAID' | 'IN_LIEU' | 'OTHER';
	duration?: number;
	duration_type?: 'HOUR' | 'DAY';
	attachments?: []; // supporting documents (eg. doctor's notes) attached to the leave request
	metadata?: [];
	raw?: any;
} 

Zod

Zod
import { z } from 'zod';

export const ZodHrisTimeoff = z.object({
	id: z.string().optional(),
	created_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	updated_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	user_id: z.string().describe("employee ID (reference to HrisEmployee)"),
	company_id: z.string().optional().describe("(reference to HrisCompany)"),
	start_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	end_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	is_paid: z.boolean().optional(),
	status: z.enum("APPROVED", "PENDING", "DENIED", "CANCELLED").optional(),
	approver_user_id: z.string().optional().describe("(reference to HrisEmployee)"),
	approved_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	comments: z.string().optional(),
	reason: z.string().optional(),
	original_type: z.string().optional().describe("integration leave-type label before normalization"),
	type: z.enum("VACATION", "SICK", "HOLIDAY", "BEREAVEMENT", "PARENTAL", "UNPAID", "IN_LIEU", "OTHER").optional(),
	duration: z.number().optional(),
	duration_type: z.enum("HOUR", "DAY").optional(),
	attachments: z.array().optional().describe("supporting documents (eg. doctor's notes) attached to the leave request"),
	metadata: z.array().optional(),

});

Python

Python
import dataclasses

@dataclasses.dataclass
class HrisTimeoffStatus(str, Enum):
	APPROVED = 'APPROVED'
	PENDING = 'PENDING'
	DENIED = 'DENIED'
	CANCELLED = 'CANCELLED'

@dataclasses.dataclass
class HrisTimeoffType(str, Enum):
	VACATION = 'VACATION'
	SICK = 'SICK'
	HOLIDAY = 'HOLIDAY'
	BEREAVEMENT = 'BEREAVEMENT'
	PARENTAL = 'PARENTAL'
	UNPAID = 'UNPAID'
	IN_LIEU = 'IN_LIEU'
	OTHER = 'OTHER'

@dataclasses.dataclass
class HrisTimeoffDuration_type(str, Enum):
	HOUR = 'HOUR'
	DAY = 'DAY'

@dataclasses.dataclass
class HrisTimeoff:
	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]
	"""employee ID (reference to HrisEmployee)"""
	user_id: str
	"""(reference to HrisCompany)"""
	company_id: 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_paid: Optional[bool]
	status: Optional[HrisTimeoffStatus]
	"""(reference to HrisEmployee)"""
	approver_user_id: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	approved_at: Optional[str]
	comments: Optional[str]
	reason: Optional[str]
	"""integration leave-type label before normalization"""
	original_type: Optional[str]
	type: Optional[HrisTimeoffType]
	duration: Optional[int]
	duration_type: Optional[HrisTimeoffDuration_type]
	"""supporting documents (eg. doctor's notes) attached to the leave request"""
	attachments: Optional[PropertyHrisTimeoffAttachments]
	metadata: Optional[PropertyHrisTimeoffMetadata]
Are we missing anything? Let us know
Was this page helpful?