Skip to main content

highlevel_api/apis/calendars/
types.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4#[serde(rename_all = "camelCase")]
5pub struct Calendar {
6    pub id: String,
7    pub location_id: String,
8    pub name: String,
9    #[serde(skip_serializing_if = "Option::is_none")]
10    pub description: Option<String>,
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub slug: Option<String>,
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub group_id: Option<String>,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub event_type: Option<String>,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub event_title: Option<String>,
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub slot_duration: Option<u32>,
21    #[serde(skip_serializing_if = "Option::is_none")]
22    pub slot_buffer: Option<u32>,
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub pre_buffer_unit: Option<String>,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub appointment_per_slot: Option<u32>,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub appointment_per_day: Option<u32>,
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub is_active: Option<bool>,
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize)]
34pub struct GetCalendarsResponse {
35    pub calendars: Vec<Calendar>,
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize)]
39pub struct GetCalendarResponse {
40    pub calendar: Calendar,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize, Default)]
44#[serde(rename_all = "camelCase")]
45pub struct CreateCalendarParams {
46    pub location_id: String,
47    pub name: String,
48    #[serde(skip_serializing_if = "Option::is_none")]
49    pub description: Option<String>,
50    #[serde(skip_serializing_if = "Option::is_none")]
51    pub slug: Option<String>,
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub event_type: Option<String>,
54    #[serde(skip_serializing_if = "Option::is_none")]
55    pub slot_duration: Option<u32>,
56    #[serde(skip_serializing_if = "Option::is_none")]
57    pub slot_buffer: Option<u32>,
58    #[serde(skip_serializing_if = "Option::is_none")]
59    pub appointment_per_slot: Option<u32>,
60}
61
62#[derive(Debug, Clone, Serialize, Deserialize, Default)]
63#[serde(rename_all = "camelCase")]
64pub struct UpdateCalendarParams {
65    #[serde(skip_serializing_if = "Option::is_none")]
66    pub name: Option<String>,
67    #[serde(skip_serializing_if = "Option::is_none")]
68    pub description: Option<String>,
69    #[serde(skip_serializing_if = "Option::is_none")]
70    pub slug: Option<String>,
71    #[serde(skip_serializing_if = "Option::is_none")]
72    pub event_type: Option<String>,
73    #[serde(skip_serializing_if = "Option::is_none")]
74    pub slot_duration: Option<u32>,
75    #[serde(skip_serializing_if = "Option::is_none")]
76    pub slot_buffer: Option<u32>,
77    #[serde(skip_serializing_if = "Option::is_none")]
78    pub appointment_per_slot: Option<u32>,
79    #[serde(skip_serializing_if = "Option::is_none")]
80    pub is_active: Option<bool>,
81}
82
83#[derive(Debug, Clone, Serialize, Deserialize)]
84pub struct DeleteCalendarResponse {
85    pub succeded: bool,
86}
87
88// ── Free slots ───────────────────────────────────────────────────────────────
89
90#[derive(Debug, Clone, Serialize, Deserialize, Default)]
91#[serde(rename_all = "camelCase")]
92pub struct GetFreeSlotsParams {
93    pub location_id: String,
94    pub start_date: String,
95    pub end_date: String,
96    #[serde(skip_serializing_if = "Option::is_none")]
97    pub timezone: Option<String>,
98    #[serde(skip_serializing_if = "Option::is_none")]
99    pub user_id: Option<String>,
100}
101
102#[derive(Debug, Clone, Serialize, Deserialize)]
103#[serde(rename_all = "camelCase")]
104pub struct Slot {
105    pub slots: Vec<String>,
106}
107
108#[derive(Debug, Clone, Serialize, Deserialize)]
109pub struct FreeSlotsResponse {
110    #[serde(flatten)]
111    pub dates: std::collections::HashMap<String, Slot>,
112}
113
114// ── Events / Appointments ────────────────────────────────────────────────────
115
116#[derive(Debug, Clone, Serialize, Deserialize, Default)]
117#[serde(rename_all = "camelCase")]
118pub struct GetEventsParams {
119    pub location_id: String,
120    #[serde(skip_serializing_if = "Option::is_none")]
121    pub calendar_id: Option<String>,
122    #[serde(skip_serializing_if = "Option::is_none")]
123    pub group_id: Option<String>,
124    #[serde(skip_serializing_if = "Option::is_none")]
125    pub start_time: Option<i64>,
126    #[serde(skip_serializing_if = "Option::is_none")]
127    pub end_time: Option<i64>,
128    #[serde(skip_serializing_if = "Option::is_none")]
129    pub user_id: Option<String>,
130    #[serde(skip_serializing_if = "Option::is_none")]
131    pub contact_id: Option<String>,
132    #[serde(skip_serializing_if = "Option::is_none")]
133    pub limit: Option<u32>,
134    #[serde(skip_serializing_if = "Option::is_none")]
135    pub skip: Option<u32>,
136}
137
138#[derive(Debug, Clone, Serialize, Deserialize)]
139#[serde(rename_all = "camelCase")]
140pub struct CalendarEvent {
141    pub id: String,
142    pub location_id: String,
143    #[serde(skip_serializing_if = "Option::is_none")]
144    pub calendar_id: Option<String>,
145    pub contact_id: String,
146    #[serde(skip_serializing_if = "Option::is_none")]
147    pub title: Option<String>,
148    pub start_time: String,
149    pub end_time: String,
150    #[serde(skip_serializing_if = "Option::is_none")]
151    pub status: Option<String>,
152    #[serde(skip_serializing_if = "Option::is_none")]
153    pub appointment_status: Option<String>,
154    #[serde(skip_serializing_if = "Option::is_none")]
155    pub assigned_user_id: Option<String>,
156    #[serde(skip_serializing_if = "Option::is_none")]
157    pub address: Option<String>,
158    #[serde(skip_serializing_if = "Option::is_none")]
159    pub notes: Option<String>,
160}
161
162#[derive(Debug, Clone, Serialize, Deserialize)]
163pub struct GetEventsResponse {
164    pub events: Vec<CalendarEvent>,
165}
166
167#[derive(Debug, Clone, Serialize, Deserialize)]
168pub struct GetEventResponse {
169    pub event: CalendarEvent,
170}
171
172#[derive(Debug, Clone, Serialize, Deserialize, Default)]
173#[serde(rename_all = "camelCase")]
174pub struct CreateEventParams {
175    pub calendar_id: String,
176    pub location_id: String,
177    pub contact_id: String,
178    pub start_time: String,
179    pub end_time: String,
180    #[serde(skip_serializing_if = "Option::is_none")]
181    pub title: Option<String>,
182    #[serde(skip_serializing_if = "Option::is_none")]
183    pub appointment_status: Option<String>,
184    #[serde(skip_serializing_if = "Option::is_none")]
185    pub assigned_user_id: Option<String>,
186    #[serde(skip_serializing_if = "Option::is_none")]
187    pub address: Option<String>,
188    #[serde(skip_serializing_if = "Option::is_none")]
189    pub notes: Option<String>,
190    #[serde(skip_serializing_if = "Option::is_none")]
191    pub timezone: Option<String>,
192    #[serde(skip_serializing_if = "Option::is_none")]
193    pub ignore_date_range: Option<bool>,
194    #[serde(skip_serializing_if = "Option::is_none")]
195    pub to_notify: Option<bool>,
196}
197
198#[derive(Debug, Clone, Serialize, Deserialize, Default)]
199#[serde(rename_all = "camelCase")]
200pub struct UpdateEventParams {
201    #[serde(skip_serializing_if = "Option::is_none")]
202    pub start_time: Option<String>,
203    #[serde(skip_serializing_if = "Option::is_none")]
204    pub end_time: Option<String>,
205    #[serde(skip_serializing_if = "Option::is_none")]
206    pub title: Option<String>,
207    #[serde(skip_serializing_if = "Option::is_none")]
208    pub appointment_status: Option<String>,
209    #[serde(skip_serializing_if = "Option::is_none")]
210    pub assigned_user_id: Option<String>,
211    #[serde(skip_serializing_if = "Option::is_none")]
212    pub address: Option<String>,
213    #[serde(skip_serializing_if = "Option::is_none")]
214    pub notes: Option<String>,
215}
216
217#[derive(Debug, Clone, Serialize, Deserialize)]
218pub struct DeleteEventResponse {
219    pub succeded: bool,
220}