Skip to main content

ghl_models/v2/
contacts.rs

1// @generated by xtask/generate_models.py — do not edit by hand.
2// Source: https://github.com/GoHighLevel/highlevel-api-docs
3// Doc comments are HighLevel's own field descriptions, reflowed verbatim, so
4// they aren't held to rustdoc's markdown conventions.
5#![allow(
6    missing_docs,
7    clippy::doc_lazy_continuation,
8    clippy::doc_overindented_list_items
9)]
10
11use serde::{Deserialize, Serialize};
12
13/// `AddContactToCampaignDto` from the GoHighLevel OpenAPI spec.
14#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15pub struct AddContactToCampaignDto {
16    /// The spec defines no fields for this schema.
17    #[serde(flatten)]
18    pub extra: serde_json::Map<String, serde_json::Value>,
19}
20
21/// `AttributionSource` from the GoHighLevel OpenAPI spec.
22#[derive(Debug, Clone, Default, Serialize, Deserialize)]
23pub struct AttributionSource {
24    /// Required by the API.
25    pub url: String,
26    #[serde(default, skip_serializing_if = "Option::is_none")]
27    pub campaign: Option<String>,
28    #[serde(rename = "utmSource", default, skip_serializing_if = "Option::is_none")]
29    pub utm_source: Option<String>,
30    #[serde(rename = "utmMedium", default, skip_serializing_if = "Option::is_none")]
31    pub utm_medium: Option<String>,
32    #[serde(
33        rename = "utmContent",
34        default,
35        skip_serializing_if = "Option::is_none"
36    )]
37    pub utm_content: Option<String>,
38    #[serde(default, skip_serializing_if = "Option::is_none")]
39    pub referrer: Option<String>,
40    #[serde(
41        rename = "campaignId",
42        default,
43        skip_serializing_if = "Option::is_none"
44    )]
45    pub campaign_id: Option<String>,
46    #[serde(default, skip_serializing_if = "Option::is_none")]
47    pub fbclid: Option<String>,
48    #[serde(default, skip_serializing_if = "Option::is_none")]
49    pub gclid: Option<String>,
50    #[serde(default, skip_serializing_if = "Option::is_none")]
51    pub msclikid: Option<String>,
52    #[serde(default, skip_serializing_if = "Option::is_none")]
53    pub dclid: Option<String>,
54    #[serde(default, skip_serializing_if = "Option::is_none")]
55    pub fbc: Option<String>,
56    #[serde(default, skip_serializing_if = "Option::is_none")]
57    pub fbp: Option<String>,
58    #[serde(rename = "fbEventId", default, skip_serializing_if = "Option::is_none")]
59    pub fb_event_id: Option<String>,
60    #[serde(rename = "userAgent", default, skip_serializing_if = "Option::is_none")]
61    pub user_agent: Option<String>,
62    #[serde(default, skip_serializing_if = "Option::is_none")]
63    pub ip: Option<String>,
64    #[serde(default, skip_serializing_if = "Option::is_none")]
65    pub medium: Option<String>,
66    #[serde(rename = "mediumId", default, skip_serializing_if = "Option::is_none")]
67    pub medium_id: Option<String>,
68}
69
70/// `CheckboxField` from the GoHighLevel OpenAPI spec.
71#[derive(Debug, Clone, Default, Serialize, Deserialize)]
72pub struct CheckboxField {
73    /// Required by the API.
74    pub id: String,
75    #[serde(default, skip_serializing_if = "Option::is_none")]
76    pub key: Option<String>,
77    #[serde(default, skip_serializing_if = "Vec::is_empty")]
78    pub field_value: Vec<String>,
79}
80
81/// `ContactsBulkUpateResponse` from the GoHighLevel OpenAPI spec.
82#[derive(Debug, Clone, Default, Serialize, Deserialize)]
83pub struct ContactsBulkUpateResponse {
84    /// Required by the API.
85    pub success: bool,
86    /// Required by the API.
87    #[serde(default, skip_serializing_if = "Vec::is_empty")]
88    pub ids: Vec<String>,
89}
90
91/// `ContactsBusinessUpdate` from the GoHighLevel OpenAPI spec.
92#[derive(Debug, Clone, Default, Serialize, Deserialize)]
93pub struct ContactsBusinessUpdate {
94    /// Required by the API.
95    #[serde(rename = "locationId")]
96    pub location_id: String,
97    /// Required by the API.
98    #[serde(default, skip_serializing_if = "Vec::is_empty")]
99    pub ids: Vec<String>,
100    /// Required by the API.
101    #[serde(rename = "businessId")]
102    pub business_id: String,
103}
104
105/// `ContactsByIdSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
106#[derive(Debug, Clone, Default, Serialize, Deserialize)]
107pub struct ContactsByIdSuccessfulResponseDto {
108    #[serde(default, skip_serializing_if = "Option::is_none")]
109    pub contact: Option<GetContectByIdSchema>,
110}
111
112/// `ContactsMetaSchema` from the GoHighLevel OpenAPI spec.
113#[derive(Debug, Clone, Default, Serialize, Deserialize)]
114pub struct ContactsMetaSchema {
115    #[serde(default, skip_serializing_if = "Option::is_none")]
116    pub total: Option<f64>,
117    #[serde(
118        rename = "nextPageUrl",
119        default,
120        skip_serializing_if = "Option::is_none"
121    )]
122    pub next_page_url: Option<String>,
123    #[serde(
124        rename = "startAfterId",
125        default,
126        skip_serializing_if = "Option::is_none"
127    )]
128    pub start_after_id: Option<String>,
129    #[serde(
130        rename = "startAfter",
131        default,
132        skip_serializing_if = "Option::is_none"
133    )]
134    pub start_after: Option<f64>,
135    #[serde(
136        rename = "currentPage",
137        default,
138        skip_serializing_if = "Option::is_none"
139    )]
140    pub current_page: Option<f64>,
141    #[serde(rename = "nextPage", default, skip_serializing_if = "Option::is_none")]
142    pub next_page: Option<f64>,
143    #[serde(rename = "prevPage", default, skip_serializing_if = "Option::is_none")]
144    pub prev_page: Option<f64>,
145}
146
147/// `ContactsSearchSchema` from the GoHighLevel OpenAPI spec.
148#[derive(Debug, Clone, Default, Serialize, Deserialize)]
149pub struct ContactsSearchSchema {
150    #[serde(default, skip_serializing_if = "Option::is_none")]
151    pub id: Option<String>,
152    #[serde(
153        rename = "locationId",
154        default,
155        skip_serializing_if = "Option::is_none"
156    )]
157    pub location_id: Option<String>,
158    #[serde(default, skip_serializing_if = "Option::is_none")]
159    pub email: Option<String>,
160    #[serde(default, skip_serializing_if = "Option::is_none")]
161    pub timezone: Option<String>,
162    #[serde(default, skip_serializing_if = "Option::is_none")]
163    pub country: Option<String>,
164    #[serde(default, skip_serializing_if = "Option::is_none")]
165    pub source: Option<String>,
166    #[serde(rename = "dateAdded", default, skip_serializing_if = "Option::is_none")]
167    pub date_added: Option<String>,
168    #[serde(
169        rename = "customFields",
170        default,
171        skip_serializing_if = "Vec::is_empty"
172    )]
173    pub custom_fields: Vec<CustomFieldSchema>,
174    #[serde(default, skip_serializing_if = "Vec::is_empty")]
175    pub tags: Vec<String>,
176    #[serde(
177        rename = "businessId",
178        default,
179        skip_serializing_if = "Option::is_none"
180    )]
181    pub business_id: Option<String>,
182    #[serde(default, skip_serializing_if = "Vec::is_empty")]
183    pub attributions: Vec<AttributionSource>,
184    #[serde(default, skip_serializing_if = "Vec::is_empty")]
185    pub followers: Vec<String>,
186}
187
188/// `ContactsSearchSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
189#[derive(Debug, Clone, Default, Serialize, Deserialize)]
190pub struct ContactsSearchSuccessfulResponseDto {
191    #[serde(default, skip_serializing_if = "Vec::is_empty")]
192    pub contacts: Vec<ContactsSearchSchema>,
193    #[serde(default, skip_serializing_if = "Option::is_none")]
194    pub count: Option<f64>,
195}
196
197/// `ContactsWorkflowSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
198#[derive(Debug, Clone, Default, Serialize, Deserialize)]
199pub struct ContactsWorkflowSuccessfulResponseDto {
200    #[serde(default, skip_serializing_if = "Option::is_none")]
201    pub succeded: Option<bool>,
202}
203
204/// `CreateAddFollowersSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
205#[derive(Debug, Clone, Default, Serialize, Deserialize)]
206pub struct CreateAddFollowersSuccessfulResponseDto {
207    #[serde(default, skip_serializing_if = "Vec::is_empty")]
208    pub followers: Vec<String>,
209    #[serde(
210        rename = "followersAdded",
211        default,
212        skip_serializing_if = "Vec::is_empty"
213    )]
214    pub followers_added: Vec<String>,
215}
216
217/// `CreateAddTagSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
218#[derive(Debug, Clone, Default, Serialize, Deserialize)]
219pub struct CreateAddTagSuccessfulResponseDto {
220    #[serde(default, skip_serializing_if = "Vec::is_empty")]
221    pub tags: Vec<String>,
222}
223
224/// `CreateContactDto` from the GoHighLevel OpenAPI spec.
225#[derive(Debug, Clone, Default, Serialize, Deserialize)]
226pub struct CreateContactDto {
227    #[serde(rename = "firstName", default, skip_serializing_if = "Option::is_none")]
228    pub first_name: Option<String>,
229    #[serde(rename = "lastName", default, skip_serializing_if = "Option::is_none")]
230    pub last_name: Option<String>,
231    #[serde(default, skip_serializing_if = "Option::is_none")]
232    pub name: Option<String>,
233    #[serde(default, skip_serializing_if = "Option::is_none")]
234    pub email: Option<String>,
235    /// Required by the API.
236    #[serde(rename = "locationId")]
237    pub location_id: String,
238    #[serde(default, skip_serializing_if = "Option::is_none")]
239    pub gender: Option<String>,
240    #[serde(default, skip_serializing_if = "Option::is_none")]
241    pub phone: Option<String>,
242    #[serde(default, skip_serializing_if = "Option::is_none")]
243    pub address1: Option<String>,
244    #[serde(default, skip_serializing_if = "Option::is_none")]
245    pub city: Option<String>,
246    #[serde(default, skip_serializing_if = "Option::is_none")]
247    pub state: Option<String>,
248    #[serde(
249        rename = "postalCode",
250        default,
251        skip_serializing_if = "Option::is_none"
252    )]
253    pub postal_code: Option<String>,
254    #[serde(default, skip_serializing_if = "Option::is_none")]
255    pub website: Option<String>,
256    #[serde(default, skip_serializing_if = "Option::is_none")]
257    pub timezone: Option<String>,
258    #[serde(default, skip_serializing_if = "Option::is_none")]
259    pub dnd: Option<bool>,
260    #[serde(
261        rename = "dndSettings",
262        default,
263        skip_serializing_if = "Option::is_none"
264    )]
265    pub dnd_settings: Option<DndSettingsSchema>,
266    #[serde(
267        rename = "inboundDndSettings",
268        default,
269        skip_serializing_if = "Option::is_none"
270    )]
271    pub inbound_dnd_settings: Option<InboundDndSettingsSchema>,
272    #[serde(default, skip_serializing_if = "Vec::is_empty")]
273    pub tags: Vec<String>,
274    /// Multiple possible shapes in the spec; raw JSON.
275    #[serde(
276        rename = "customFields",
277        default,
278        skip_serializing_if = "Vec::is_empty"
279    )]
280    pub custom_fields: Vec<serde_json::Value>,
281    #[serde(default, skip_serializing_if = "Option::is_none")]
282    pub source: Option<String>,
283    /// The birth date of the contact. Supported formats: YYYY/MM/DD, MM/DD/YYYY, YYYY-MM-DD,
284    /// MM-DD-YYYY, YYYY.MM.DD, MM.DD.YYYY, YYYY_MM_DD, MM_DD_YYYY
285    #[serde(
286        rename = "dateOfBirth",
287        default,
288        skip_serializing_if = "Option::is_none"
289    )]
290    pub date_of_birth: Option<serde_json::Value>,
291    #[serde(default, skip_serializing_if = "Option::is_none")]
292    pub country: Option<String>,
293    #[serde(
294        rename = "companyName",
295        default,
296        skip_serializing_if = "Option::is_none"
297    )]
298    pub company_name: Option<String>,
299    /// User's Id
300    #[serde(
301        rename = "assignedTo",
302        default,
303        skip_serializing_if = "Option::is_none"
304    )]
305    pub assigned_to: Option<String>,
306}
307
308/// `CreateContactSchema` from the GoHighLevel OpenAPI spec.
309#[derive(Debug, Clone, Default, Serialize, Deserialize)]
310pub struct CreateContactSchema {
311    #[serde(default, skip_serializing_if = "Option::is_none")]
312    pub id: Option<String>,
313    #[serde(rename = "dateAdded", default, skip_serializing_if = "Option::is_none")]
314    pub date_added: Option<String>,
315    #[serde(
316        rename = "dateUpdated",
317        default,
318        skip_serializing_if = "Option::is_none"
319    )]
320    pub date_updated: Option<String>,
321    #[serde(default, skip_serializing_if = "Option::is_none")]
322    pub deleted: Option<bool>,
323    #[serde(default, skip_serializing_if = "Vec::is_empty")]
324    pub tags: Vec<String>,
325    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
326    pub type_: Option<String>,
327    #[serde(
328        rename = "customFields",
329        default,
330        skip_serializing_if = "Vec::is_empty"
331    )]
332    pub custom_fields: Vec<CustomFieldSchema>,
333    #[serde(
334        rename = "locationId",
335        default,
336        skip_serializing_if = "Option::is_none"
337    )]
338    pub location_id: Option<String>,
339    #[serde(rename = "firstName", default, skip_serializing_if = "Option::is_none")]
340    pub first_name: Option<String>,
341    #[serde(
342        rename = "firstNameLowerCase",
343        default,
344        skip_serializing_if = "Option::is_none"
345    )]
346    pub first_name_lower_case: Option<String>,
347    #[serde(
348        rename = "fullNameLowerCase",
349        default,
350        skip_serializing_if = "Option::is_none"
351    )]
352    pub full_name_lower_case: Option<String>,
353    #[serde(rename = "lastName", default, skip_serializing_if = "Option::is_none")]
354    pub last_name: Option<String>,
355    #[serde(
356        rename = "lastNameLowerCase",
357        default,
358        skip_serializing_if = "Option::is_none"
359    )]
360    pub last_name_lower_case: Option<String>,
361    #[serde(default, skip_serializing_if = "Option::is_none")]
362    pub email: Option<String>,
363    #[serde(
364        rename = "emailLowerCase",
365        default,
366        skip_serializing_if = "Option::is_none"
367    )]
368    pub email_lower_case: Option<String>,
369    #[serde(
370        rename = "bounceEmail",
371        default,
372        skip_serializing_if = "Option::is_none"
373    )]
374    pub bounce_email: Option<bool>,
375    #[serde(
376        rename = "unsubscribeEmail",
377        default,
378        skip_serializing_if = "Option::is_none"
379    )]
380    pub unsubscribe_email: Option<bool>,
381    #[serde(default, skip_serializing_if = "Option::is_none")]
382    pub dnd: Option<bool>,
383    #[serde(
384        rename = "dndSettings",
385        default,
386        skip_serializing_if = "Option::is_none"
387    )]
388    pub dnd_settings: Option<DndSettingsSchema>,
389    #[serde(default, skip_serializing_if = "Option::is_none")]
390    pub phone: Option<String>,
391    #[serde(default, skip_serializing_if = "Option::is_none")]
392    pub address1: Option<String>,
393    #[serde(default, skip_serializing_if = "Option::is_none")]
394    pub city: Option<String>,
395    #[serde(default, skip_serializing_if = "Option::is_none")]
396    pub state: Option<String>,
397    #[serde(default, skip_serializing_if = "Option::is_none")]
398    pub country: Option<String>,
399    #[serde(
400        rename = "postalCode",
401        default,
402        skip_serializing_if = "Option::is_none"
403    )]
404    pub postal_code: Option<String>,
405    #[serde(default, skip_serializing_if = "Option::is_none")]
406    pub website: Option<String>,
407    #[serde(default, skip_serializing_if = "Option::is_none")]
408    pub source: Option<String>,
409    #[serde(
410        rename = "companyName",
411        default,
412        skip_serializing_if = "Option::is_none"
413    )]
414    pub company_name: Option<String>,
415    #[serde(
416        rename = "dateOfBirth",
417        default,
418        skip_serializing_if = "Option::is_none"
419    )]
420    pub date_of_birth: Option<String>,
421    #[serde(
422        rename = "birthMonth",
423        default,
424        skip_serializing_if = "Option::is_none"
425    )]
426    pub birth_month: Option<f64>,
427    #[serde(rename = "birthDay", default, skip_serializing_if = "Option::is_none")]
428    pub birth_day: Option<f64>,
429    #[serde(
430        rename = "lastSessionActivityAt",
431        default,
432        skip_serializing_if = "Option::is_none"
433    )]
434    pub last_session_activity_at: Option<String>,
435    #[serde(default, skip_serializing_if = "Vec::is_empty")]
436    pub offers: Vec<String>,
437    #[serde(default, skip_serializing_if = "Vec::is_empty")]
438    pub products: Vec<String>,
439    #[serde(
440        rename = "businessId",
441        default,
442        skip_serializing_if = "Option::is_none"
443    )]
444    pub business_id: Option<String>,
445    /// User's Id
446    #[serde(
447        rename = "assignedTo",
448        default,
449        skip_serializing_if = "Option::is_none"
450    )]
451    pub assigned_to: Option<String>,
452}
453
454/// `CreateContactsSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
455#[derive(Debug, Clone, Default, Serialize, Deserialize)]
456pub struct CreateContactsSuccessfulResponseDto {
457    #[serde(default, skip_serializing_if = "Option::is_none")]
458    pub contact: Option<CreateContactSchema>,
459}
460
461/// `CreateDeleteCantactsCampaignsSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
462#[derive(Debug, Clone, Default, Serialize, Deserialize)]
463pub struct CreateDeleteCantactsCampaignsSuccessfulResponseDto {
464    #[serde(default, skip_serializing_if = "Option::is_none")]
465    pub succeded: Option<bool>,
466}
467
468/// `CreateDeleteTagSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
469#[derive(Debug, Clone, Default, Serialize, Deserialize)]
470pub struct CreateDeleteTagSuccessfulResponseDto {
471    #[serde(default, skip_serializing_if = "Vec::is_empty")]
472    pub tags: Vec<String>,
473}
474
475/// `CreateTaskParams` from the GoHighLevel OpenAPI spec.
476#[derive(Debug, Clone, Default, Serialize, Deserialize)]
477pub struct CreateTaskParams {
478    /// Required by the API.
479    pub title: String,
480    #[serde(default, skip_serializing_if = "Option::is_none")]
481    pub body: Option<String>,
482    /// Required by the API.
483    #[serde(rename = "dueDate")]
484    pub due_date: String,
485    /// Required by the API.
486    pub completed: bool,
487    #[serde(
488        rename = "assignedTo",
489        default,
490        skip_serializing_if = "Option::is_none"
491    )]
492    pub assigned_to: Option<String>,
493}
494
495/// `CreateWorkflowDto` from the GoHighLevel OpenAPI spec.
496#[derive(Debug, Clone, Default, Serialize, Deserialize)]
497pub struct CreateWorkflowDto {
498    #[serde(
499        rename = "eventStartTime",
500        default,
501        skip_serializing_if = "Option::is_none"
502    )]
503    pub event_start_time: Option<String>,
504}
505
506/// `CustomFieldSchema` from the GoHighLevel OpenAPI spec.
507#[derive(Debug, Clone, Default, Serialize, Deserialize)]
508pub struct CustomFieldSchema {
509    #[serde(default, skip_serializing_if = "Option::is_none")]
510    pub id: Option<String>,
511    #[serde(default, skip_serializing_if = "Option::is_none")]
512    pub value: Option<String>,
513}
514
515/// `DeleteContactsSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
516#[derive(Debug, Clone, Default, Serialize, Deserialize)]
517pub struct DeleteContactsSuccessfulResponseDto {
518    #[serde(default, skip_serializing_if = "Option::is_none")]
519    pub succeded: Option<bool>,
520}
521
522/// `DeleteFollowersSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
523#[derive(Debug, Clone, Default, Serialize, Deserialize)]
524pub struct DeleteFollowersSuccessfulResponseDto {
525    #[serde(default, skip_serializing_if = "Vec::is_empty")]
526    pub followers: Vec<String>,
527    #[serde(
528        rename = "followersRemoved",
529        default,
530        skip_serializing_if = "Vec::is_empty"
531    )]
532    pub followers_removed: Vec<String>,
533}
534
535/// `DeleteNoteSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
536#[derive(Debug, Clone, Default, Serialize, Deserialize)]
537pub struct DeleteNoteSuccessfulResponseDto {
538    #[serde(default, skip_serializing_if = "Option::is_none")]
539    pub succeded: Option<bool>,
540}
541
542/// `DeleteTaskSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
543#[derive(Debug, Clone, Default, Serialize, Deserialize)]
544pub struct DeleteTaskSuccessfulResponseDto {
545    #[serde(default, skip_serializing_if = "Option::is_none")]
546    pub succeded: Option<bool>,
547}
548
549/// `DndSettingSchema` from the GoHighLevel OpenAPI spec.
550#[derive(Debug, Clone, Default, Serialize, Deserialize)]
551pub struct DndSettingSchema {
552    /// Allowed values: `active`, `inactive`, `permanent`.
553    /// Required by the API.
554    pub status: String,
555    #[serde(default, skip_serializing_if = "Option::is_none")]
556    pub message: Option<String>,
557    #[serde(default, skip_serializing_if = "Option::is_none")]
558    pub code: Option<String>,
559}
560
561/// `DndSettingsSchema` from the GoHighLevel OpenAPI spec.
562#[derive(Debug, Clone, Default, Serialize, Deserialize)]
563pub struct DndSettingsSchema {
564    #[serde(rename = "Call", default, skip_serializing_if = "Option::is_none")]
565    pub call: Option<DndSettingSchema>,
566    #[serde(rename = "Email", default, skip_serializing_if = "Option::is_none")]
567    pub email: Option<DndSettingSchema>,
568    #[serde(rename = "SMS", default, skip_serializing_if = "Option::is_none")]
569    pub sms: Option<DndSettingSchema>,
570    #[serde(rename = "WhatsApp", default, skip_serializing_if = "Option::is_none")]
571    pub whats_app: Option<DndSettingSchema>,
572    #[serde(rename = "GMB", default, skip_serializing_if = "Option::is_none")]
573    pub gmb: Option<DndSettingSchema>,
574    #[serde(rename = "FB", default, skip_serializing_if = "Option::is_none")]
575    pub fb: Option<DndSettingSchema>,
576}
577
578/// `FileField` from the GoHighLevel OpenAPI spec.
579#[derive(Debug, Clone, Default, Serialize, Deserialize)]
580pub struct FileField {
581    /// Required by the API.
582    pub id: String,
583    #[serde(default, skip_serializing_if = "Option::is_none")]
584    pub key: Option<String>,
585    #[serde(default, skip_serializing_if = "Option::is_none")]
586    pub field_value: Option<serde_json::Value>,
587}
588
589/// `FollowersDTO` from the GoHighLevel OpenAPI spec.
590#[derive(Debug, Clone, Default, Serialize, Deserialize)]
591pub struct FollowersDTO {
592    /// Required by the API.
593    #[serde(default, skip_serializing_if = "Vec::is_empty")]
594    pub followers: Vec<String>,
595}
596
597/// `GetContectByIdSchema` from the GoHighLevel OpenAPI spec.
598#[derive(Debug, Clone, Default, Serialize, Deserialize)]
599pub struct GetContectByIdSchema {
600    #[serde(default, skip_serializing_if = "Option::is_none")]
601    pub id: Option<String>,
602    #[serde(default, skip_serializing_if = "Option::is_none")]
603    pub name: Option<String>,
604    #[serde(
605        rename = "locationId",
606        default,
607        skip_serializing_if = "Option::is_none"
608    )]
609    pub location_id: Option<String>,
610    #[serde(rename = "firstName", default, skip_serializing_if = "Option::is_none")]
611    pub first_name: Option<String>,
612    #[serde(rename = "lastName", default, skip_serializing_if = "Option::is_none")]
613    pub last_name: Option<String>,
614    #[serde(default, skip_serializing_if = "Option::is_none")]
615    pub email: Option<String>,
616    #[serde(
617        rename = "emailLowerCase",
618        default,
619        skip_serializing_if = "Option::is_none"
620    )]
621    pub email_lower_case: Option<String>,
622    #[serde(default, skip_serializing_if = "Option::is_none")]
623    pub timezone: Option<String>,
624    #[serde(
625        rename = "companyName",
626        default,
627        skip_serializing_if = "Option::is_none"
628    )]
629    pub company_name: Option<String>,
630    #[serde(default, skip_serializing_if = "Option::is_none")]
631    pub phone: Option<String>,
632    #[serde(default, skip_serializing_if = "Option::is_none")]
633    pub dnd: Option<bool>,
634    #[serde(
635        rename = "dndSettings",
636        default,
637        skip_serializing_if = "Option::is_none"
638    )]
639    pub dnd_settings: Option<DndSettingsSchema>,
640    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
641    pub type_: Option<String>,
642    #[serde(default, skip_serializing_if = "Option::is_none")]
643    pub source: Option<String>,
644    #[serde(
645        rename = "assignedTo",
646        default,
647        skip_serializing_if = "Option::is_none"
648    )]
649    pub assigned_to: Option<String>,
650    #[serde(default, skip_serializing_if = "Option::is_none")]
651    pub address1: Option<String>,
652    #[serde(default, skip_serializing_if = "Option::is_none")]
653    pub city: Option<String>,
654    #[serde(default, skip_serializing_if = "Option::is_none")]
655    pub state: Option<String>,
656    #[serde(default, skip_serializing_if = "Option::is_none")]
657    pub country: Option<String>,
658    #[serde(
659        rename = "postalCode",
660        default,
661        skip_serializing_if = "Option::is_none"
662    )]
663    pub postal_code: Option<String>,
664    #[serde(default, skip_serializing_if = "Option::is_none")]
665    pub website: Option<String>,
666    #[serde(default, skip_serializing_if = "Vec::is_empty")]
667    pub tags: Vec<String>,
668    #[serde(
669        rename = "dateOfBirth",
670        default,
671        skip_serializing_if = "Option::is_none"
672    )]
673    pub date_of_birth: Option<String>,
674    #[serde(rename = "dateAdded", default, skip_serializing_if = "Option::is_none")]
675    pub date_added: Option<String>,
676    #[serde(
677        rename = "dateUpdated",
678        default,
679        skip_serializing_if = "Option::is_none"
680    )]
681    pub date_updated: Option<String>,
682    #[serde(default, skip_serializing_if = "Option::is_none")]
683    pub attachments: Option<String>,
684    #[serde(default, skip_serializing_if = "Option::is_none")]
685    pub ssn: Option<String>,
686    #[serde(default, skip_serializing_if = "Option::is_none")]
687    pub keyword: Option<String>,
688    #[serde(
689        rename = "firstNameLowerCase",
690        default,
691        skip_serializing_if = "Option::is_none"
692    )]
693    pub first_name_lower_case: Option<String>,
694    #[serde(
695        rename = "fullNameLowerCase",
696        default,
697        skip_serializing_if = "Option::is_none"
698    )]
699    pub full_name_lower_case: Option<String>,
700    #[serde(
701        rename = "lastNameLowerCase",
702        default,
703        skip_serializing_if = "Option::is_none"
704    )]
705    pub last_name_lower_case: Option<String>,
706    #[serde(
707        rename = "lastActivity",
708        default,
709        skip_serializing_if = "Option::is_none"
710    )]
711    pub last_activity: Option<String>,
712    #[serde(
713        rename = "customFields",
714        default,
715        skip_serializing_if = "Vec::is_empty"
716    )]
717    pub custom_fields: Vec<CustomFieldSchema>,
718    #[serde(
719        rename = "businessId",
720        default,
721        skip_serializing_if = "Option::is_none"
722    )]
723    pub business_id: Option<String>,
724    #[serde(
725        rename = "attributionSource",
726        default,
727        skip_serializing_if = "Option::is_none"
728    )]
729    pub attribution_source: Option<AttributionSource>,
730    #[serde(
731        rename = "lastAttributionSource",
732        default,
733        skip_serializing_if = "Option::is_none"
734    )]
735    pub last_attribution_source: Option<AttributionSource>,
736    /// visitorId is the Unique ID assigned to each Live chat visitor.
737    #[serde(rename = "visitorId", default, skip_serializing_if = "Option::is_none")]
738    pub visitor_id: Option<String>,
739}
740
741/// `GetCreateUpdateNoteSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
742#[derive(Debug, Clone, Default, Serialize, Deserialize)]
743pub struct GetCreateUpdateNoteSuccessfulResponseDto {
744    #[serde(default, skip_serializing_if = "Option::is_none")]
745    pub note: Option<GetNoteSchema>,
746}
747
748/// `GetEventSchema` from the GoHighLevel OpenAPI spec.
749#[derive(Debug, Clone, Default, Serialize, Deserialize)]
750pub struct GetEventSchema {
751    #[serde(default, skip_serializing_if = "Option::is_none")]
752    pub id: Option<String>,
753    #[serde(
754        rename = "calendarId",
755        default,
756        skip_serializing_if = "Option::is_none"
757    )]
758    pub calendar_id: Option<String>,
759    #[serde(default, skip_serializing_if = "Option::is_none")]
760    pub status: Option<String>,
761    #[serde(default, skip_serializing_if = "Option::is_none")]
762    pub title: Option<String>,
763    #[serde(
764        rename = "assignedUserId",
765        default,
766        skip_serializing_if = "Option::is_none"
767    )]
768    pub assigned_user_id: Option<String>,
769    #[serde(default, skip_serializing_if = "Option::is_none")]
770    pub notes: Option<String>,
771    #[serde(rename = "startTime", default, skip_serializing_if = "Option::is_none")]
772    pub start_time: Option<String>,
773    #[serde(rename = "endTime", default, skip_serializing_if = "Option::is_none")]
774    pub end_time: Option<String>,
775    #[serde(default, skip_serializing_if = "Option::is_none")]
776    pub address: Option<String>,
777    #[serde(
778        rename = "locationId",
779        default,
780        skip_serializing_if = "Option::is_none"
781    )]
782    pub location_id: Option<String>,
783    #[serde(rename = "contactId", default, skip_serializing_if = "Option::is_none")]
784    pub contact_id: Option<String>,
785    #[serde(rename = "groupId", default, skip_serializing_if = "Option::is_none")]
786    pub group_id: Option<String>,
787    #[serde(
788        rename = "appointmentStatus",
789        default,
790        skip_serializing_if = "Option::is_none"
791    )]
792    pub appointment_status: Option<String>,
793    #[serde(default, skip_serializing_if = "Vec::is_empty")]
794    pub users: Vec<String>,
795    #[serde(rename = "dateAdded", default, skip_serializing_if = "Option::is_none")]
796    pub date_added: Option<String>,
797    #[serde(
798        rename = "dateUpdated",
799        default,
800        skip_serializing_if = "Option::is_none"
801    )]
802    pub date_updated: Option<String>,
803    #[serde(
804        rename = "assignedResources",
805        default,
806        skip_serializing_if = "Vec::is_empty"
807    )]
808    pub assigned_resources: Vec<String>,
809}
810
811/// `GetEventsSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
812#[derive(Debug, Clone, Default, Serialize, Deserialize)]
813pub struct GetEventsSuccessfulResponseDto {
814    #[serde(default, skip_serializing_if = "Vec::is_empty")]
815    pub events: Vec<GetEventSchema>,
816}
817
818/// `GetNoteSchema` from the GoHighLevel OpenAPI spec.
819#[derive(Debug, Clone, Default, Serialize, Deserialize)]
820pub struct GetNoteSchema {
821    #[serde(default, skip_serializing_if = "Option::is_none")]
822    pub id: Option<String>,
823    #[serde(default, skip_serializing_if = "Option::is_none")]
824    pub body: Option<String>,
825    #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
826    pub user_id: Option<String>,
827    #[serde(rename = "dateAdded", default, skip_serializing_if = "Option::is_none")]
828    pub date_added: Option<String>,
829    #[serde(rename = "contactId", default, skip_serializing_if = "Option::is_none")]
830    pub contact_id: Option<String>,
831    #[serde(default, skip_serializing_if = "Option::is_none")]
832    pub title: Option<String>,
833    #[serde(default, skip_serializing_if = "Option::is_none")]
834    pub color: Option<String>,
835    #[serde(default, skip_serializing_if = "Option::is_none")]
836    pub pinned: Option<bool>,
837}
838
839/// `GetNotesListSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
840#[derive(Debug, Clone, Default, Serialize, Deserialize)]
841pub struct GetNotesListSuccessfulResponseDto {
842    #[serde(default, skip_serializing_if = "Vec::is_empty")]
843    pub notes: Vec<GetNoteSchema>,
844}
845
846/// `InboundDndSettingSchema` from the GoHighLevel OpenAPI spec.
847#[derive(Debug, Clone, Default, Serialize, Deserialize)]
848pub struct InboundDndSettingSchema {
849    /// Allowed values: `active`, `inactive`.
850    /// Required by the API.
851    pub status: String,
852    #[serde(default, skip_serializing_if = "Option::is_none")]
853    pub message: Option<String>,
854}
855
856/// `InboundDndSettingsSchema` from the GoHighLevel OpenAPI spec.
857#[derive(Debug, Clone, Default, Serialize, Deserialize)]
858pub struct InboundDndSettingsSchema {
859    #[serde(default, skip_serializing_if = "Option::is_none")]
860    pub all: Option<InboundDndSettingSchema>,
861}
862
863/// `LargeTextField` from the GoHighLevel OpenAPI spec.
864#[derive(Debug, Clone, Default, Serialize, Deserialize)]
865pub struct LargeTextField {
866    /// Required by the API.
867    pub id: String,
868    #[serde(default, skip_serializing_if = "Option::is_none")]
869    pub key: Option<String>,
870    #[serde(default, skip_serializing_if = "Option::is_none")]
871    pub field_value: Option<String>,
872}
873
874/// `MonetoryField` from the GoHighLevel OpenAPI spec.
875#[derive(Debug, Clone, Default, Serialize, Deserialize)]
876pub struct MonetoryField {
877    /// Required by the API.
878    pub id: String,
879    #[serde(default, skip_serializing_if = "Option::is_none")]
880    pub key: Option<String>,
881    #[serde(default, skip_serializing_if = "Option::is_none")]
882    pub field_value: Option<serde_json::Value>,
883}
884
885/// `MultiSelectField` from the GoHighLevel OpenAPI spec.
886#[derive(Debug, Clone, Default, Serialize, Deserialize)]
887pub struct MultiSelectField {
888    /// Required by the API.
889    pub id: String,
890    #[serde(default, skip_serializing_if = "Option::is_none")]
891    pub key: Option<String>,
892    #[serde(default, skip_serializing_if = "Vec::is_empty")]
893    pub field_value: Vec<String>,
894}
895
896/// `NotesDTO` from the GoHighLevel OpenAPI spec.
897#[derive(Debug, Clone, Default, Serialize, Deserialize)]
898pub struct NotesDTO {
899    #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
900    pub user_id: Option<String>,
901    /// Required by the API.
902    pub body: String,
903    #[serde(default, skip_serializing_if = "Option::is_none")]
904    pub title: Option<String>,
905    #[serde(default, skip_serializing_if = "Option::is_none")]
906    pub color: Option<String>,
907    #[serde(default, skip_serializing_if = "Option::is_none")]
908    pub pinned: Option<bool>,
909}
910
911/// `NumericField` from the GoHighLevel OpenAPI spec.
912#[derive(Debug, Clone, Default, Serialize, Deserialize)]
913pub struct NumericField {
914    /// Required by the API.
915    pub id: String,
916    #[serde(default, skip_serializing_if = "Option::is_none")]
917    pub key: Option<String>,
918    #[serde(default, skip_serializing_if = "Option::is_none")]
919    pub field_value: Option<serde_json::Value>,
920}
921
922/// `RadioField` from the GoHighLevel OpenAPI spec.
923#[derive(Debug, Clone, Default, Serialize, Deserialize)]
924pub struct RadioField {
925    /// Required by the API.
926    pub id: String,
927    #[serde(default, skip_serializing_if = "Option::is_none")]
928    pub key: Option<String>,
929    #[serde(default, skip_serializing_if = "Option::is_none")]
930    pub field_value: Option<String>,
931}
932
933/// `SearchBodyV2DTO` from the GoHighLevel OpenAPI spec.
934#[derive(Debug, Clone, Default, Serialize, Deserialize)]
935pub struct SearchBodyV2DTO {
936    /// The spec defines no fields for this schema.
937    #[serde(flatten)]
938    pub extra: serde_json::Map<String, serde_json::Value>,
939}
940
941/// `SingleSelectField` from the GoHighLevel OpenAPI spec.
942#[derive(Debug, Clone, Default, Serialize, Deserialize)]
943pub struct SingleSelectField {
944    /// Required by the API.
945    pub id: String,
946    #[serde(default, skip_serializing_if = "Option::is_none")]
947    pub key: Option<String>,
948    #[serde(default, skip_serializing_if = "Option::is_none")]
949    pub field_value: Option<String>,
950}
951
952/// `TagsDTO` from the GoHighLevel OpenAPI spec.
953#[derive(Debug, Clone, Default, Serialize, Deserialize)]
954pub struct TagsDTO {
955    /// Required by the API.
956    #[serde(default, skip_serializing_if = "Vec::is_empty")]
957    pub tags: Vec<String>,
958}
959
960/// `TaskByIsSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
961#[derive(Debug, Clone, Default, Serialize, Deserialize)]
962pub struct TaskByIsSuccessfulResponseDto {
963    #[serde(default, skip_serializing_if = "Option::is_none")]
964    pub task: Option<TaskSchema>,
965}
966
967/// `TaskSchema` from the GoHighLevel OpenAPI spec.
968#[derive(Debug, Clone, Default, Serialize, Deserialize)]
969pub struct TaskSchema {
970    #[serde(default, skip_serializing_if = "Option::is_none")]
971    pub id: Option<String>,
972    #[serde(default, skip_serializing_if = "Option::is_none")]
973    pub title: Option<String>,
974    #[serde(default, skip_serializing_if = "Option::is_none")]
975    pub body: Option<String>,
976    #[serde(
977        rename = "assignedTo",
978        default,
979        skip_serializing_if = "Option::is_none"
980    )]
981    pub assigned_to: Option<String>,
982    #[serde(rename = "dueDate", default, skip_serializing_if = "Option::is_none")]
983    pub due_date: Option<String>,
984    #[serde(default, skip_serializing_if = "Option::is_none")]
985    pub completed: Option<bool>,
986    #[serde(rename = "contactId", default, skip_serializing_if = "Option::is_none")]
987    pub contact_id: Option<String>,
988}
989
990/// `TasksListSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
991#[derive(Debug, Clone, Default, Serialize, Deserialize)]
992pub struct TasksListSuccessfulResponseDto {
993    #[serde(default, skip_serializing_if = "Vec::is_empty")]
994    pub tasks: Vec<TaskSchema>,
995}
996
997/// `TextField` from the GoHighLevel OpenAPI spec.
998#[derive(Debug, Clone, Default, Serialize, Deserialize)]
999pub struct TextField {
1000    /// Required by the API.
1001    pub id: String,
1002    #[serde(default, skip_serializing_if = "Option::is_none")]
1003    pub key: Option<String>,
1004    #[serde(default, skip_serializing_if = "Option::is_none")]
1005    pub field_value: Option<String>,
1006}
1007
1008/// `UpdateContactDto` from the GoHighLevel OpenAPI spec.
1009#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1010pub struct UpdateContactDto {
1011    #[serde(rename = "firstName", default, skip_serializing_if = "Option::is_none")]
1012    pub first_name: Option<String>,
1013    #[serde(rename = "lastName", default, skip_serializing_if = "Option::is_none")]
1014    pub last_name: Option<String>,
1015    #[serde(default, skip_serializing_if = "Option::is_none")]
1016    pub name: Option<String>,
1017    #[serde(default, skip_serializing_if = "Option::is_none")]
1018    pub email: Option<String>,
1019    #[serde(default, skip_serializing_if = "Option::is_none")]
1020    pub phone: Option<String>,
1021    #[serde(default, skip_serializing_if = "Option::is_none")]
1022    pub address1: Option<String>,
1023    #[serde(default, skip_serializing_if = "Option::is_none")]
1024    pub city: Option<String>,
1025    #[serde(default, skip_serializing_if = "Option::is_none")]
1026    pub state: Option<String>,
1027    #[serde(
1028        rename = "postalCode",
1029        default,
1030        skip_serializing_if = "Option::is_none"
1031    )]
1032    pub postal_code: Option<String>,
1033    #[serde(default, skip_serializing_if = "Option::is_none")]
1034    pub website: Option<String>,
1035    #[serde(default, skip_serializing_if = "Option::is_none")]
1036    pub timezone: Option<String>,
1037    #[serde(default, skip_serializing_if = "Option::is_none")]
1038    pub dnd: Option<bool>,
1039    #[serde(
1040        rename = "dndSettings",
1041        default,
1042        skip_serializing_if = "Option::is_none"
1043    )]
1044    pub dnd_settings: Option<DndSettingsSchema>,
1045    #[serde(
1046        rename = "inboundDndSettings",
1047        default,
1048        skip_serializing_if = "Option::is_none"
1049    )]
1050    pub inbound_dnd_settings: Option<InboundDndSettingsSchema>,
1051    /// This field will overwrite all current tags associated with the contact. To update a
1052    /// tags, it is recommended to use the Add Tag or Remove Tag API instead.
1053    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1054    pub tags: Vec<String>,
1055    /// Multiple possible shapes in the spec; raw JSON.
1056    #[serde(
1057        rename = "customFields",
1058        default,
1059        skip_serializing_if = "Vec::is_empty"
1060    )]
1061    pub custom_fields: Vec<serde_json::Value>,
1062    #[serde(default, skip_serializing_if = "Option::is_none")]
1063    pub source: Option<String>,
1064    /// The birth date of the contact. Supported formats: YYYY/MM/DD, MM/DD/YYYY, YYYY-MM-DD,
1065    /// MM-DD-YYYY, YYYY.MM.DD, MM.DD.YYYY, YYYY_MM_DD, MM_DD_YYYY
1066    #[serde(
1067        rename = "dateOfBirth",
1068        default,
1069        skip_serializing_if = "Option::is_none"
1070    )]
1071    pub date_of_birth: Option<serde_json::Value>,
1072    #[serde(default, skip_serializing_if = "Option::is_none")]
1073    pub country: Option<String>,
1074    /// User's Id
1075    #[serde(
1076        rename = "assignedTo",
1077        default,
1078        skip_serializing_if = "Option::is_none"
1079    )]
1080    pub assigned_to: Option<String>,
1081}
1082
1083/// `UpdateContactsSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
1084#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1085pub struct UpdateContactsSuccessfulResponseDto {
1086    #[serde(default, skip_serializing_if = "Option::is_none")]
1087    pub succeded: Option<bool>,
1088    #[serde(default, skip_serializing_if = "Option::is_none")]
1089    pub contact: Option<GetContectByIdSchema>,
1090}
1091
1092/// `UpdateNoteDTO` from the GoHighLevel OpenAPI spec.
1093#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1094pub struct UpdateNoteDTO {
1095    #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
1096    pub user_id: Option<String>,
1097    #[serde(default, skip_serializing_if = "Option::is_none")]
1098    pub body: Option<String>,
1099    #[serde(default, skip_serializing_if = "Option::is_none")]
1100    pub title: Option<String>,
1101    #[serde(default, skip_serializing_if = "Option::is_none")]
1102    pub color: Option<String>,
1103    #[serde(default, skip_serializing_if = "Option::is_none")]
1104    pub pinned: Option<bool>,
1105}
1106
1107/// `UpdateTagsDTO` from the GoHighLevel OpenAPI spec.
1108#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1109pub struct UpdateTagsDTO {
1110    /// list of contact ids to be processed
1111    /// Required by the API.
1112    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1113    pub contacts: Vec<String>,
1114    /// list of tags to be added or removed
1115    /// Required by the API.
1116    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1117    pub tags: Vec<String>,
1118    /// location id from where the bulk request is executed
1119    /// Required by the API.
1120    #[serde(rename = "locationId")]
1121    pub location_id: String,
1122    /// Option to implement remove all tags. if true, all tags will be removed from the
1123    /// contacts. Can only be used with remove type.
1124    #[serde(
1125        rename = "removeAllTags",
1126        default,
1127        skip_serializing_if = "Option::is_none"
1128    )]
1129    pub remove_all_tags: Option<bool>,
1130}
1131
1132/// `UpdateTagsResponseDTO` from the GoHighLevel OpenAPI spec.
1133#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1134pub struct UpdateTagsResponseDTO {
1135    /// Indicates if the operation was successful
1136    /// Required by the API.
1137    pub succeded: bool,
1138    /// Number of errors encountered during the operation
1139    /// Required by the API.
1140    #[serde(rename = "errorCount")]
1141    pub error_count: f64,
1142    /// Responses for each contact processed
1143    /// Required by the API.
1144    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1145    pub responses: Vec<String>,
1146}
1147
1148/// `UpdateTaskBody` from the GoHighLevel OpenAPI spec.
1149#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1150pub struct UpdateTaskBody {
1151    #[serde(default, skip_serializing_if = "Option::is_none")]
1152    pub title: Option<String>,
1153    #[serde(default, skip_serializing_if = "Option::is_none")]
1154    pub body: Option<String>,
1155    #[serde(rename = "dueDate", default, skip_serializing_if = "Option::is_none")]
1156    pub due_date: Option<String>,
1157    #[serde(default, skip_serializing_if = "Option::is_none")]
1158    pub completed: Option<bool>,
1159    #[serde(
1160        rename = "assignedTo",
1161        default,
1162        skip_serializing_if = "Option::is_none"
1163    )]
1164    pub assigned_to: Option<String>,
1165}
1166
1167/// `UpdateTaskStatusParams` from the GoHighLevel OpenAPI spec.
1168#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1169pub struct UpdateTaskStatusParams {
1170    /// Required by the API.
1171    pub completed: bool,
1172}
1173
1174/// `UpsertContactDto` from the GoHighLevel OpenAPI spec.
1175#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1176pub struct UpsertContactDto {
1177    #[serde(rename = "firstName", default, skip_serializing_if = "Option::is_none")]
1178    pub first_name: Option<String>,
1179    #[serde(rename = "lastName", default, skip_serializing_if = "Option::is_none")]
1180    pub last_name: Option<String>,
1181    #[serde(default, skip_serializing_if = "Option::is_none")]
1182    pub name: Option<String>,
1183    #[serde(default, skip_serializing_if = "Option::is_none")]
1184    pub email: Option<String>,
1185    /// Required by the API.
1186    #[serde(rename = "locationId")]
1187    pub location_id: String,
1188    #[serde(default, skip_serializing_if = "Option::is_none")]
1189    pub gender: Option<String>,
1190    #[serde(default, skip_serializing_if = "Option::is_none")]
1191    pub phone: Option<String>,
1192    #[serde(default, skip_serializing_if = "Option::is_none")]
1193    pub address1: Option<String>,
1194    #[serde(default, skip_serializing_if = "Option::is_none")]
1195    pub city: Option<String>,
1196    #[serde(default, skip_serializing_if = "Option::is_none")]
1197    pub state: Option<String>,
1198    #[serde(
1199        rename = "postalCode",
1200        default,
1201        skip_serializing_if = "Option::is_none"
1202    )]
1203    pub postal_code: Option<String>,
1204    #[serde(default, skip_serializing_if = "Option::is_none")]
1205    pub website: Option<String>,
1206    #[serde(default, skip_serializing_if = "Option::is_none")]
1207    pub timezone: Option<String>,
1208    #[serde(default, skip_serializing_if = "Option::is_none")]
1209    pub dnd: Option<bool>,
1210    #[serde(
1211        rename = "dndSettings",
1212        default,
1213        skip_serializing_if = "Option::is_none"
1214    )]
1215    pub dnd_settings: Option<DndSettingsSchema>,
1216    #[serde(
1217        rename = "inboundDndSettings",
1218        default,
1219        skip_serializing_if = "Option::is_none"
1220    )]
1221    pub inbound_dnd_settings: Option<InboundDndSettingsSchema>,
1222    /// This field will overwrite all current tags associated with the contact. To update a
1223    /// tags, it is recommended to use the Add Tag or Remove Tag API instead.
1224    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1225    pub tags: Vec<String>,
1226    /// Multiple possible shapes in the spec; raw JSON.
1227    #[serde(
1228        rename = "customFields",
1229        default,
1230        skip_serializing_if = "Vec::is_empty"
1231    )]
1232    pub custom_fields: Vec<serde_json::Value>,
1233    #[serde(default, skip_serializing_if = "Option::is_none")]
1234    pub source: Option<String>,
1235    /// The birth date of the contact. Supported formats: YYYY/MM/DD, MM/DD/YYYY, YYYY-MM-DD,
1236    /// MM-DD-YYYY, YYYY.MM.DD, MM.DD.YYYY, YYYY_MM_DD, MM_DD_YYYY
1237    #[serde(
1238        rename = "dateOfBirth",
1239        default,
1240        skip_serializing_if = "Option::is_none"
1241    )]
1242    pub date_of_birth: Option<serde_json::Value>,
1243    #[serde(default, skip_serializing_if = "Option::is_none")]
1244    pub country: Option<String>,
1245    #[serde(
1246        rename = "companyName",
1247        default,
1248        skip_serializing_if = "Option::is_none"
1249    )]
1250    pub company_name: Option<String>,
1251    /// User's Id
1252    #[serde(
1253        rename = "assignedTo",
1254        default,
1255        skip_serializing_if = "Option::is_none"
1256    )]
1257    pub assigned_to: Option<String>,
1258    /// Controls whether to create a new contact or update an existing duplicate. **Scenario
1259    /// 1:** If this value is `true` and the location allows duplicate contacts, a new contact
1260    /// will be created immediately without checking for duplicates. **Scenario 2:** If this
1261    /// value is `true` but the location does not allow duplicate contacts, this field is
1262    /// ignored and the normal upsert behavior applies: the API will search for an existing
1263    /// duplicate contact, update it if found, or create a new contact if not found. **Scenario
1264    /// 3:** If this value is `false` or not provided, the normal upsert behavior applies
1265    /// regardless of the location's duplicate contact setting.
1266    #[serde(
1267        rename = "createNewIfDuplicateAllowed",
1268        default,
1269        skip_serializing_if = "Option::is_none"
1270    )]
1271    pub create_new_if_duplicate_allowed: Option<bool>,
1272}
1273
1274/// `UpsertContactsSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
1275#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1276pub struct UpsertContactsSuccessfulResponseDto {
1277    #[serde(default, skip_serializing_if = "Option::is_none")]
1278    pub new: Option<bool>,
1279    #[serde(default, skip_serializing_if = "Option::is_none")]
1280    pub contact: Option<GetContectByIdSchema>,
1281    #[serde(rename = "traceId", default, skip_serializing_if = "Option::is_none")]
1282    pub trace_id: Option<String>,
1283}
1284
1285/// `customFieldsInputArraySchema` from the GoHighLevel OpenAPI spec.
1286#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1287pub struct CustomFieldsInputArraySchema {
1288    /// Required by the API.
1289    pub id: String,
1290    #[serde(default, skip_serializing_if = "Option::is_none")]
1291    pub key: Option<String>,
1292    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1293    pub field_value: Vec<String>,
1294}
1295
1296/// `customFieldsInputObjectSchema` from the GoHighLevel OpenAPI spec.
1297#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1298pub struct CustomFieldsInputObjectSchema {
1299    /// Required by the API.
1300    pub id: String,
1301    #[serde(default, skip_serializing_if = "Option::is_none")]
1302    pub key: Option<String>,
1303    #[serde(default, skip_serializing_if = "Option::is_none")]
1304    pub field_value: Option<serde_json::Value>,
1305}
1306
1307/// `customFieldsInputStringSchema` from the GoHighLevel OpenAPI spec.
1308#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1309pub struct CustomFieldsInputStringSchema {
1310    /// Pass either `id` or `key` of custom field
1311    #[serde(default, skip_serializing_if = "Option::is_none")]
1312    pub id: Option<String>,
1313    /// Pass either `id` or `key` of custom field
1314    #[serde(default, skip_serializing_if = "Option::is_none")]
1315    pub key: Option<String>,
1316    #[serde(default, skip_serializing_if = "Option::is_none")]
1317    pub field_value: Option<String>,
1318}