Skip to main content

ghl_models/v3/
locations.rs

1//! `locations` data models for GoHighLevel API V3 (53 types).
2//!
3//! Generated from HighLevel's official OpenAPI spec for the
4//! **Locations** module. Every endpoint that uses these types, with its
5//! parameters, required scopes and enum values, is documented in the
6//! [`locations` API reference](https://github.com/Shahroz/ghl-rs/blob/main/docs/api/locations.md).
7//!
8//! Enable with `features = ["locations"]`.
9// @generated by xtask/generate_models.py — do not edit by hand.
10// Source: https://github.com/GoHighLevel/highlevel-api-docs
11// Doc comments are HighLevel's own field descriptions, reflowed verbatim, so
12// they aren't held to rustdoc's markdown conventions.
13#![allow(
14    missing_docs,
15    clippy::doc_lazy_continuation,
16    clippy::doc_overindented_list_items
17)]
18
19use serde::{Deserialize, Serialize};
20
21/// `BusinessSchema` from the GoHighLevel OpenAPI spec.
22#[derive(Debug, Clone, Default, Serialize, Deserialize)]
23pub struct BusinessSchema {
24    #[serde(default, skip_serializing_if = "Option::is_none")]
25    pub name: Option<String>,
26    #[serde(default, skip_serializing_if = "Option::is_none")]
27    pub address: Option<String>,
28    #[serde(default, skip_serializing_if = "Option::is_none")]
29    pub city: Option<String>,
30    #[serde(default, skip_serializing_if = "Option::is_none")]
31    pub state: Option<String>,
32    #[serde(default, skip_serializing_if = "Option::is_none")]
33    pub country: Option<String>,
34    #[serde(
35        rename = "postalCode",
36        default,
37        skip_serializing_if = "Option::is_none"
38    )]
39    pub postal_code: Option<String>,
40    #[serde(default, skip_serializing_if = "Option::is_none")]
41    pub website: Option<String>,
42    #[serde(default, skip_serializing_if = "Option::is_none")]
43    pub timezone: Option<String>,
44    #[serde(rename = "logoUrl", default, skip_serializing_if = "Option::is_none")]
45    pub logo_url: Option<String>,
46}
47
48/// `ConversationChannelEntrySchema` from the GoHighLevel OpenAPI spec.
49#[derive(Debug, Clone, Default, Serialize, Deserialize)]
50pub struct ConversationChannelEntrySchema {
51    /// Required by the API.
52    /// (Optional here so responses that omit it still parse.)
53    #[serde(
54        rename = "conversationProvider",
55        default,
56        skip_serializing_if = "Option::is_none"
57    )]
58    pub conversation_provider: Option<ConversationProviderSchema>,
59}
60
61/// `ConversationChannelSchema` from the GoHighLevel OpenAPI spec.
62#[derive(Debug, Clone, Default, Serialize, Deserialize)]
63pub struct ConversationChannelSchema {
64    /// List of SMS providers configured for this location
65    #[serde(rename = "SMS", default, skip_serializing_if = "Vec::is_empty")]
66    pub sms: Vec<ConversationChannelEntrySchema>,
67    /// List of Email providers configured for this location
68    #[serde(rename = "Email", default, skip_serializing_if = "Vec::is_empty")]
69    pub email: Vec<ConversationChannelEntrySchema>,
70}
71
72/// `ConversationProviderSchema` from the GoHighLevel OpenAPI spec.
73#[derive(Debug, Clone, Default, Serialize, Deserialize)]
74pub struct ConversationProviderSchema {
75    /// Provider ID
76    /// Required by the API.
77    /// (Optional here so responses that omit it still parse.)
78    #[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
79    pub id: Option<String>,
80    /// Provider name
81    /// Required by the API.
82    /// (Optional here so responses that omit it still parse.)
83    #[serde(default, skip_serializing_if = "Option::is_none")]
84    pub name: Option<String>,
85    /// Provider type
86    /// Allowed values: `SMS`, `Email`.
87    /// Required by the API.
88    /// (Optional here so responses that omit it still parse.)
89    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
90    pub type_: Option<String>,
91    /// Whether this is the default provider
92    /// Required by the API.
93    /// (Optional here so responses that omit it still parse.)
94    #[serde(default, skip_serializing_if = "Option::is_none")]
95    pub default: Option<bool>,
96}
97
98/// `CreateCustomFieldsDTO` from the GoHighLevel OpenAPI spec.
99#[derive(Debug, Clone, Default, Serialize, Deserialize)]
100pub struct CreateCustomFieldsDTO {
101    /// Required by the API.
102    pub name: String,
103    /// Required by the API.
104    #[serde(rename = "dataType")]
105    pub data_type: String,
106    #[serde(default, skip_serializing_if = "Option::is_none")]
107    pub placeholder: Option<String>,
108    #[serde(
109        rename = "acceptedFormat",
110        default,
111        skip_serializing_if = "Vec::is_empty"
112    )]
113    pub accepted_format: Vec<String>,
114    #[serde(
115        rename = "isMultipleFile",
116        default,
117        skip_serializing_if = "Option::is_none"
118    )]
119    pub is_multiple_file: Option<bool>,
120    #[serde(
121        rename = "maxNumberOfFiles",
122        default,
123        skip_serializing_if = "Option::is_none"
124    )]
125    pub max_number_of_files: Option<f64>,
126    /// Multiple possible shapes in the spec; raw JSON.
127    #[serde(
128        rename = "textBoxListOptions",
129        default,
130        skip_serializing_if = "Vec::is_empty"
131    )]
132    pub text_box_list_options: Vec<serde_json::Value>,
133    #[serde(default, skip_serializing_if = "Option::is_none")]
134    pub position: Option<f64>,
135    /// Model of the custom field you want to create
136    /// Allowed values: `contact`, `opportunity`.
137    #[serde(default, skip_serializing_if = "Option::is_none")]
138    pub model: Option<String>,
139}
140
141/// `CreateLocationDto` from the GoHighLevel OpenAPI spec.
142#[derive(Debug, Clone, Default, Serialize, Deserialize)]
143pub struct CreateLocationDto {
144    /// The name for the sub-account/location
145    /// Required by the API.
146    pub name: String,
147    /// The phone number of the business for which sub-account is created with the appropriate
148    /// country-code
149    #[serde(default, skip_serializing_if = "Option::is_none")]
150    pub phone: Option<String>,
151    /// Company/Agency Id
152    /// Required by the API.
153    #[serde(rename = "companyId")]
154    pub company_id: String,
155    /// The address of the business for which sub-account is created
156    #[serde(default, skip_serializing_if = "Option::is_none")]
157    pub address: Option<String>,
158    /// The city where the business is located for which sub-account is created
159    #[serde(default, skip_serializing_if = "Option::is_none")]
160    pub city: Option<String>,
161    /// The state in which the business operates for which sub-account is created
162    #[serde(default, skip_serializing_if = "Option::is_none")]
163    pub state: Option<String>,
164    /// The 2 letter country-code in which the business is present for which sub-account is
165    /// created
166    /// Allowed values: `AF`, `AX`, `AL`, `DZ`, `AS`, `AD`, `AO`, `AI`, `AQ`, `AG`, `AR`, `AM`.
167    #[serde(default, skip_serializing_if = "Option::is_none")]
168    pub country: Option<String>,
169    /// The postal code of the business for which sub-account is created
170    #[serde(
171        rename = "postalCode",
172        default,
173        skip_serializing_if = "Option::is_none"
174    )]
175    pub postal_code: Option<String>,
176    /// The website of the business for which sub-account is created
177    #[serde(default, skip_serializing_if = "Option::is_none")]
178    pub website: Option<String>,
179    /// The timezone of the business for which sub-account is created
180    #[serde(default, skip_serializing_if = "Option::is_none")]
181    pub timezone: Option<String>,
182    #[serde(
183        rename = "prospectInfo",
184        default,
185        skip_serializing_if = "Option::is_none"
186    )]
187    pub prospect_info: Option<ProspectInfoDto>,
188    /// The default settings for location
189    #[serde(default, skip_serializing_if = "Option::is_none")]
190    pub settings: Option<SettingsSchema>,
191    /// The social media links for location
192    #[serde(default, skip_serializing_if = "Option::is_none")]
193    pub social: Option<SocialSchema>,
194    /// (DEPRECATED) The twilio credentials for location
195    #[serde(default, skip_serializing_if = "Option::is_none")]
196    pub twilio: Option<TwilioSchema>,
197    /// The mailgun credentials for location
198    #[serde(default, skip_serializing_if = "Option::is_none")]
199    pub mailgun: Option<MailgunSchema>,
200    /// The snapshot ID to be loaded into the location.
201    #[serde(
202        rename = "snapshotId",
203        default,
204        skip_serializing_if = "Option::is_none"
205    )]
206    pub snapshot_id: Option<String>,
207}
208
209/// `CreateLocationSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
210#[derive(Debug, Clone, Default, Serialize, Deserialize)]
211pub struct CreateLocationSuccessfulResponseDto {
212    /// Location Id
213    #[serde(default, skip_serializing_if = "Option::is_none")]
214    pub id: Option<String>,
215    /// Company/Agency Id
216    #[serde(rename = "companyId", default, skip_serializing_if = "Option::is_none")]
217    pub company_id: Option<String>,
218    /// The name for the sub-account/location
219    #[serde(default, skip_serializing_if = "Option::is_none")]
220    pub name: Option<String>,
221    /// The phone number of the business for which sub-account is created
222    #[serde(default, skip_serializing_if = "Option::is_none")]
223    pub phone: Option<String>,
224    /// The email for the sub-account/location
225    #[serde(default, skip_serializing_if = "Option::is_none")]
226    pub email: Option<String>,
227    /// The address of the business for which sub-account is created
228    #[serde(default, skip_serializing_if = "Option::is_none")]
229    pub address: Option<String>,
230    /// The city where the business is located for which sub-account is created
231    #[serde(default, skip_serializing_if = "Option::is_none")]
232    pub city: Option<String>,
233    /// The state in which the business operates for which sub-account is created
234    #[serde(default, skip_serializing_if = "Option::is_none")]
235    pub state: Option<String>,
236    #[serde(default, skip_serializing_if = "Option::is_none")]
237    pub domain: Option<String>,
238    /// The country in which the business is present for which sub-account is created
239    /// Allowed values: `AF`, `AX`, `AL`, `DZ`, `AS`, `AD`, `AO`, `AI`, `AQ`, `AG`, `AR`, `AM`.
240    #[serde(default, skip_serializing_if = "Option::is_none")]
241    pub country: Option<String>,
242    /// The postal code of the business for which sub-account is created
243    #[serde(
244        rename = "postalCode",
245        default,
246        skip_serializing_if = "Option::is_none"
247    )]
248    pub postal_code: Option<String>,
249    /// The website of the business for which sub-account is created
250    #[serde(default, skip_serializing_if = "Option::is_none")]
251    pub website: Option<String>,
252    /// The timezone of the business for which sub-account is created
253    #[serde(default, skip_serializing_if = "Option::is_none")]
254    pub timezone: Option<String>,
255    /// The default settings for location
256    #[serde(default, skip_serializing_if = "Option::is_none")]
257    pub settings: Option<SettingsSchema>,
258    /// The social media links for location
259    #[serde(default, skip_serializing_if = "Option::is_none")]
260    pub social: Option<SocialSchema>,
261}
262
263/// `CustomFieldDeleteSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
264#[derive(Debug, Clone, Default, Serialize, Deserialize)]
265pub struct CustomFieldDeleteSuccessfulResponseDto {
266    #[serde(default, skip_serializing_if = "Option::is_none")]
267    pub succeded: Option<bool>,
268}
269
270/// `CustomFieldSchema` from the GoHighLevel OpenAPI spec.
271#[derive(Debug, Clone, Default, Serialize, Deserialize)]
272pub struct CustomFieldSchema {
273    #[serde(default, skip_serializing_if = "Option::is_none")]
274    pub id: Option<String>,
275    #[serde(default, skip_serializing_if = "Option::is_none")]
276    pub name: Option<String>,
277    #[serde(rename = "fieldKey", default, skip_serializing_if = "Option::is_none")]
278    pub field_key: Option<String>,
279    #[serde(default, skip_serializing_if = "Option::is_none")]
280    pub placeholder: Option<String>,
281    #[serde(rename = "dataType", default, skip_serializing_if = "Option::is_none")]
282    pub data_type: Option<String>,
283    #[serde(default, skip_serializing_if = "Option::is_none")]
284    pub position: Option<f64>,
285    #[serde(
286        rename = "picklistOptions",
287        default,
288        skip_serializing_if = "Vec::is_empty"
289    )]
290    pub picklist_options: Vec<String>,
291    #[serde(
292        rename = "picklistImageOptions",
293        default,
294        skip_serializing_if = "Vec::is_empty"
295    )]
296    pub picklist_image_options: Vec<String>,
297    #[serde(
298        rename = "isAllowedCustomOption",
299        default,
300        skip_serializing_if = "Option::is_none"
301    )]
302    pub is_allowed_custom_option: Option<bool>,
303    #[serde(
304        rename = "isMultiFileAllowed",
305        default,
306        skip_serializing_if = "Option::is_none"
307    )]
308    pub is_multi_file_allowed: Option<bool>,
309    #[serde(
310        rename = "maxFileLimit",
311        default,
312        skip_serializing_if = "Option::is_none"
313    )]
314    pub max_file_limit: Option<f64>,
315    #[serde(
316        rename = "locationId",
317        default,
318        skip_serializing_if = "Option::is_none"
319    )]
320    pub location_id: Option<String>,
321    /// Model of the custom field
322    /// Allowed values: `contact`, `opportunity`.
323    #[serde(default, skip_serializing_if = "Option::is_none")]
324    pub model: Option<String>,
325}
326
327/// `CustomFieldSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
328#[derive(Debug, Clone, Default, Serialize, Deserialize)]
329pub struct CustomFieldSuccessfulResponseDto {
330    #[serde(
331        rename = "customField",
332        default,
333        skip_serializing_if = "Option::is_none"
334    )]
335    pub custom_field: Option<CustomFieldSchema>,
336}
337
338/// `CustomFieldsListSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
339#[derive(Debug, Clone, Default, Serialize, Deserialize)]
340pub struct CustomFieldsListSuccessfulResponseDto {
341    #[serde(
342        rename = "customFields",
343        default,
344        skip_serializing_if = "Vec::is_empty"
345    )]
346    pub custom_fields: Vec<CustomFieldSchema>,
347}
348
349/// `CustomRRulesOptions` from the GoHighLevel OpenAPI spec.
350#[derive(Debug, Clone, Default, Serialize, Deserialize)]
351pub struct CustomRRulesOptions {
352    /// Allowed values: `yearly`, `monthly`, `weekly`, `daily`, `hourly`.
353    /// Required by the API.
354    /// (Optional here so responses that omit it still parse.)
355    #[serde(
356        rename = "intervalType",
357        default,
358        skip_serializing_if = "Option::is_none"
359    )]
360    pub interval_type: Option<String>,
361    /// Required by the API.
362    /// (Optional here so responses that omit it still parse.)
363    #[serde(default, skip_serializing_if = "Option::is_none")]
364    pub interval: Option<f64>,
365    /// Start Date
366    /// Required by the API.
367    /// (Optional here so responses that omit it still parse.)
368    #[serde(rename = "startDate", default, skip_serializing_if = "Option::is_none")]
369    pub start_date: Option<String>,
370    /// End Date
371    #[serde(rename = "endDate", default, skip_serializing_if = "Option::is_none")]
372    pub end_date: Option<String>,
373    /// 1, 2, 3, ..., 27, 31
374    #[serde(
375        rename = "dayOfMonth",
376        default,
377        skip_serializing_if = "Option::is_none"
378    )]
379    pub day_of_month: Option<f64>,
380    /// Allowed values: `MO`, `TU`, `WE`, `TH`, `FR`, `SA`, `SU`.
381    #[serde(rename = "dayOfWeek", default, skip_serializing_if = "Option::is_none")]
382    pub day_of_week: Option<String>,
383    /// 1, 2, ....., 11, 12
384    #[serde(
385        rename = "monthOfYear",
386        default,
387        skip_serializing_if = "Option::is_none"
388    )]
389    pub month_of_year: Option<f64>,
390    /// Max number of task executions
391    #[serde(default, skip_serializing_if = "Option::is_none")]
392    pub count: Option<f64>,
393    /// Create Task If Over Due
394    #[serde(
395        rename = "createTaskIfOverDue",
396        default,
397        skip_serializing_if = "Option::is_none"
398    )]
399    pub create_task_if_over_due: Option<bool>,
400    /// Due after seconds
401    /// Required by the API.
402    /// (Optional here so responses that omit it still parse.)
403    #[serde(
404        rename = "dueAfterSeconds",
405        default,
406        skip_serializing_if = "Option::is_none"
407    )]
408    pub due_after_seconds: Option<f64>,
409}
410
411/// `CustomValueDeleteSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
412#[derive(Debug, Clone, Default, Serialize, Deserialize)]
413pub struct CustomValueDeleteSuccessfulResponseDto {
414    #[serde(default, skip_serializing_if = "Option::is_none")]
415    pub succeded: Option<bool>,
416}
417
418/// `CustomValueIdSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
419#[derive(Debug, Clone, Default, Serialize, Deserialize)]
420pub struct CustomValueIdSuccessfulResponseDto {
421    #[serde(
422        rename = "customValue",
423        default,
424        skip_serializing_if = "Option::is_none"
425    )]
426    pub custom_value: Option<CustomValueSchema>,
427}
428
429/// `CustomValueSchema` from the GoHighLevel OpenAPI spec.
430#[derive(Debug, Clone, Default, Serialize, Deserialize)]
431pub struct CustomValueSchema {
432    #[serde(default, skip_serializing_if = "Option::is_none")]
433    pub id: Option<String>,
434    #[serde(default, skip_serializing_if = "Option::is_none")]
435    pub name: Option<String>,
436    #[serde(rename = "fieldKey", default, skip_serializing_if = "Option::is_none")]
437    pub field_key: Option<String>,
438    #[serde(default, skip_serializing_if = "Option::is_none")]
439    pub value: Option<String>,
440    #[serde(
441        rename = "locationId",
442        default,
443        skip_serializing_if = "Option::is_none"
444    )]
445    pub location_id: Option<String>,
446}
447
448/// `CustomValuesListSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
449#[derive(Debug, Clone, Default, Serialize, Deserialize)]
450pub struct CustomValuesListSuccessfulResponseDto {
451    #[serde(
452        rename = "customValues",
453        default,
454        skip_serializing_if = "Vec::is_empty"
455    )]
456    pub custom_values: Vec<CustomValueSchema>,
457}
458
459/// `DeleteRecurringTaskResponseDTO` from the GoHighLevel OpenAPI spec.
460#[derive(Debug, Clone, Default, Serialize, Deserialize)]
461pub struct DeleteRecurringTaskResponseDTO {
462    /// Recurring Task Id
463    /// Required by the API.
464    /// (Optional here so responses that omit it still parse.)
465    #[serde(default, skip_serializing_if = "Option::is_none")]
466    pub id: Option<String>,
467    /// Success
468    /// Required by the API.
469    /// (Optional here so responses that omit it still parse.)
470    #[serde(default, skip_serializing_if = "Option::is_none")]
471    pub success: Option<bool>,
472}
473
474/// `EmailTemplateSchema` from the GoHighLevel OpenAPI spec.
475#[derive(Debug, Clone, Default, Serialize, Deserialize)]
476pub struct EmailTemplateSchema {
477    #[serde(default, skip_serializing_if = "Option::is_none")]
478    pub subject: Option<String>,
479    #[serde(default, skip_serializing_if = "Vec::is_empty")]
480    pub attachments: Vec<Vec<serde_json::Value>>,
481    #[serde(default, skip_serializing_if = "Option::is_none")]
482    pub html: Option<String>,
483}
484
485/// `FileUploadBody` from the GoHighLevel OpenAPI spec.
486#[derive(Debug, Clone, Default, Serialize, Deserialize)]
487pub struct FileUploadBody {
488    /// Id(Contact Id/Opportunity Id/Custom Field Id)
489    #[serde(default, skip_serializing_if = "Option::is_none")]
490    pub id: Option<String>,
491    /// Max number of files
492    #[serde(rename = "maxFiles", default, skip_serializing_if = "Option::is_none")]
493    pub max_files: Option<String>,
494}
495
496/// `FileUploadResponseDto` from the GoHighLevel OpenAPI spec.
497#[derive(Debug, Clone, Default, Serialize, Deserialize)]
498pub struct FileUploadResponseDto {
499    /// Uploaded files
500    #[serde(
501        rename = "uploadedFiles",
502        default,
503        skip_serializing_if = "Option::is_none"
504    )]
505    pub uploaded_files: Option<serde_json::Value>,
506    /// Meta data of uploaded files
507    #[serde(default, skip_serializing_if = "Vec::is_empty")]
508    pub meta: Vec<String>,
509}
510
511/// `GetConversationChannelListSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
512#[derive(Debug, Clone, Default, Serialize, Deserialize)]
513pub struct GetConversationChannelListSuccessfulResponseDto {
514    /// Required by the API.
515    /// (Optional here so responses that omit it still parse.)
516    #[serde(
517        rename = "conversationChannel",
518        default,
519        skip_serializing_if = "Option::is_none"
520    )]
521    pub conversation_channel: Option<ConversationChannelSchema>,
522}
523
524/// `GetEmailTemplateResponseSchema` from the GoHighLevel OpenAPI spec.
525#[derive(Debug, Clone, Default, Serialize, Deserialize)]
526pub struct GetEmailTemplateResponseSchema {
527    #[serde(default, skip_serializing_if = "Option::is_none")]
528    pub id: Option<String>,
529    #[serde(default, skip_serializing_if = "Option::is_none")]
530    pub name: Option<String>,
531    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
532    pub type_: Option<String>,
533    #[serde(rename = "dateAdded", default, skip_serializing_if = "Option::is_none")]
534    pub date_added: Option<String>,
535    #[serde(default, skip_serializing_if = "Option::is_none")]
536    pub template: Option<EmailTemplateSchema>,
537    #[serde(
538        rename = "locationId",
539        default,
540        skip_serializing_if = "Option::is_none"
541    )]
542    pub location_id: Option<String>,
543}
544
545/// `GetLocationByIdSchema` from the GoHighLevel OpenAPI spec.
546#[derive(Debug, Clone, Default, Serialize, Deserialize)]
547pub struct GetLocationByIdSchema {
548    #[serde(default, skip_serializing_if = "Option::is_none")]
549    pub id: Option<String>,
550    #[serde(rename = "companyId", default, skip_serializing_if = "Option::is_none")]
551    pub company_id: Option<String>,
552    #[serde(default, skip_serializing_if = "Option::is_none")]
553    pub name: Option<String>,
554    #[serde(default, skip_serializing_if = "Option::is_none")]
555    pub domain: Option<String>,
556    #[serde(default, skip_serializing_if = "Option::is_none")]
557    pub address: Option<String>,
558    #[serde(default, skip_serializing_if = "Option::is_none")]
559    pub city: Option<String>,
560    #[serde(default, skip_serializing_if = "Option::is_none")]
561    pub state: Option<String>,
562    #[serde(rename = "logoUrl", default, skip_serializing_if = "Option::is_none")]
563    pub logo_url: Option<String>,
564    #[serde(default, skip_serializing_if = "Option::is_none")]
565    pub country: Option<String>,
566    #[serde(
567        rename = "postalCode",
568        default,
569        skip_serializing_if = "Option::is_none"
570    )]
571    pub postal_code: Option<String>,
572    #[serde(default, skip_serializing_if = "Option::is_none")]
573    pub website: Option<String>,
574    #[serde(default, skip_serializing_if = "Option::is_none")]
575    pub timezone: Option<String>,
576    #[serde(rename = "firstName", default, skip_serializing_if = "Option::is_none")]
577    pub first_name: Option<String>,
578    #[serde(rename = "lastName", default, skip_serializing_if = "Option::is_none")]
579    pub last_name: Option<String>,
580    #[serde(default, skip_serializing_if = "Option::is_none")]
581    pub email: Option<String>,
582    #[serde(default, skip_serializing_if = "Option::is_none")]
583    pub phone: Option<String>,
584    #[serde(default, skip_serializing_if = "Option::is_none")]
585    pub business: Option<BusinessSchema>,
586    #[serde(default, skip_serializing_if = "Option::is_none")]
587    pub social: Option<SocialSchema>,
588    #[serde(default, skip_serializing_if = "Option::is_none")]
589    pub settings: Option<SettingsSchema>,
590    #[serde(default, skip_serializing_if = "Option::is_none")]
591    pub reseller: Option<serde_json::Value>,
592}
593
594/// `GetLocationByIdSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
595#[derive(Debug, Clone, Default, Serialize, Deserialize)]
596pub struct GetLocationByIdSuccessfulResponseDto {
597    #[serde(default, skip_serializing_if = "Option::is_none")]
598    pub location: Option<GetLocationByIdSchema>,
599}
600
601/// `GetLocationSchema` from the GoHighLevel OpenAPI spec.
602#[derive(Debug, Clone, Default, Serialize, Deserialize)]
603pub struct GetLocationSchema {
604    /// Location Id
605    #[serde(default, skip_serializing_if = "Option::is_none")]
606    pub id: Option<String>,
607    /// The name for the sub-account/location
608    #[serde(default, skip_serializing_if = "Option::is_none")]
609    pub name: Option<String>,
610    /// The phone number of the business for which sub-account is created
611    #[serde(default, skip_serializing_if = "Option::is_none")]
612    pub phone: Option<String>,
613    /// The email for the sub-account/location
614    #[serde(default, skip_serializing_if = "Option::is_none")]
615    pub email: Option<String>,
616    /// The address of the business for which sub-account is created
617    #[serde(default, skip_serializing_if = "Option::is_none")]
618    pub address: Option<String>,
619    /// The city where the business is located for which sub-account is created
620    #[serde(default, skip_serializing_if = "Option::is_none")]
621    pub city: Option<String>,
622    /// The state in which the business operates for which sub-account is created
623    #[serde(default, skip_serializing_if = "Option::is_none")]
624    pub state: Option<String>,
625    /// The country in which the business is present for which sub-account is created
626    #[serde(default, skip_serializing_if = "Option::is_none")]
627    pub country: Option<String>,
628    /// The postal code of the business for which sub-account is created
629    #[serde(
630        rename = "postalCode",
631        default,
632        skip_serializing_if = "Option::is_none"
633    )]
634    pub postal_code: Option<String>,
635    /// The website of the business for which sub-account is created
636    #[serde(default, skip_serializing_if = "Option::is_none")]
637    pub website: Option<String>,
638    /// The timezone of the business for which sub-account is created
639    #[serde(default, skip_serializing_if = "Option::is_none")]
640    pub timezone: Option<String>,
641    /// The default settings for location
642    #[serde(default, skip_serializing_if = "Option::is_none")]
643    pub settings: Option<SettingsSchema>,
644    /// The social media links for location
645    #[serde(default, skip_serializing_if = "Option::is_none")]
646    pub social: Option<SocialSchema>,
647}
648
649/// `GetSmsTemplateResponseSchema` from the GoHighLevel OpenAPI spec.
650#[derive(Debug, Clone, Default, Serialize, Deserialize)]
651pub struct GetSmsTemplateResponseSchema {
652    #[serde(default, skip_serializing_if = "Option::is_none")]
653    pub id: Option<String>,
654    #[serde(default, skip_serializing_if = "Option::is_none")]
655    pub name: Option<String>,
656    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
657    pub type_: Option<String>,
658    #[serde(default, skip_serializing_if = "Option::is_none")]
659    pub template: Option<SmsTemplateSchema>,
660    #[serde(rename = "dateAdded", default, skip_serializing_if = "Option::is_none")]
661    pub date_added: Option<String>,
662    #[serde(
663        rename = "locationId",
664        default,
665        skip_serializing_if = "Option::is_none"
666    )]
667    pub location_id: Option<String>,
668    #[serde(
669        rename = "urlAttachments",
670        default,
671        skip_serializing_if = "Vec::is_empty"
672    )]
673    pub url_attachments: Vec<String>,
674}
675
676/// `GetTemplatesSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
677#[derive(Debug, Clone, Default, Serialize, Deserialize)]
678pub struct GetTemplatesSuccessfulResponseDto {
679    /// Multiple possible shapes in the spec; raw JSON.
680    #[serde(default, skip_serializing_if = "Vec::is_empty")]
681    pub templates: Vec<serde_json::Value>,
682    #[serde(
683        rename = "totalCount",
684        default,
685        skip_serializing_if = "Option::is_none"
686    )]
687    pub total_count: Option<f64>,
688}
689
690/// `LocationDeletedSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
691#[derive(Debug, Clone, Default, Serialize, Deserialize)]
692pub struct LocationDeletedSuccessfulResponseDto {
693    /// Success status of the API
694    /// Required by the API.
695    /// (Optional here so responses that omit it still parse.)
696    #[serde(default, skip_serializing_if = "Option::is_none")]
697    pub success: Option<bool>,
698    /// Success message of the API
699    /// Required by the API.
700    /// (Optional here so responses that omit it still parse.)
701    #[serde(default, skip_serializing_if = "Option::is_none")]
702    pub message: Option<String>,
703}
704
705/// `LocationTagDeleteSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
706#[derive(Debug, Clone, Default, Serialize, Deserialize)]
707pub struct LocationTagDeleteSuccessfulResponseDto {
708    #[serde(default, skip_serializing_if = "Option::is_none")]
709    pub succeded: Option<bool>,
710}
711
712/// `LocationTagSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
713#[derive(Debug, Clone, Default, Serialize, Deserialize)]
714pub struct LocationTagSuccessfulResponseDto {
715    #[serde(default, skip_serializing_if = "Option::is_none")]
716    pub tag: Option<LocationTagsSchema>,
717}
718
719/// `LocationTagsSchema` from the GoHighLevel OpenAPI spec.
720#[derive(Debug, Clone, Default, Serialize, Deserialize)]
721pub struct LocationTagsSchema {
722    #[serde(default, skip_serializing_if = "Option::is_none")]
723    pub name: Option<String>,
724    #[serde(
725        rename = "locationId",
726        default,
727        skip_serializing_if = "Option::is_none"
728    )]
729    pub location_id: Option<String>,
730    #[serde(default, skip_serializing_if = "Option::is_none")]
731    pub id: Option<String>,
732}
733
734/// `LocationTagsSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
735#[derive(Debug, Clone, Default, Serialize, Deserialize)]
736pub struct LocationTagsSuccessfulResponseDto {
737    #[serde(default, skip_serializing_if = "Vec::is_empty")]
738    pub tags: Vec<LocationTagsSchema>,
739}
740
741/// `LocationTaskListSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
742#[derive(Debug, Clone, Default, Serialize, Deserialize)]
743pub struct LocationTaskListSuccessfulResponseDto {
744    #[serde(default, skip_serializing_if = "Vec::is_empty")]
745    pub tasks: Vec<Vec<serde_json::Value>>,
746}
747
748/// `MailgunSchema` from the GoHighLevel OpenAPI spec.
749#[derive(Debug, Clone, Default, Serialize, Deserialize)]
750pub struct MailgunSchema {
751    /// API key provided by Mailgun
752    /// Required by the API.
753    #[serde(rename = "apiKey")]
754    pub api_key: String,
755    /// Domain connected with Mailgun
756    /// Required by the API.
757    pub domain: String,
758}
759
760/// `PermissionsResponseDto` from the GoHighLevel OpenAPI spec.
761#[derive(Debug, Clone, Default, Serialize, Deserialize)]
762pub struct PermissionsResponseDto {
763    /// Enabled permission names for the sub-account
764    /// Allowed values: `2-way-text-messaging`, `gmb-messaging`, `web-chat`,
765    /// `reputation-management`, `facebook-messenger`, `gmb-call-tracking`,
766    /// `missed-call-text-back`, `text-to-pay`, `calendar`, `crm`, `opportunities`,
767    /// `email-marketing`.
768    /// Required by the API.
769    /// (Optional here so responses that omit it still parse.)
770    #[serde(default, skip_serializing_if = "Vec::is_empty")]
771    pub permissions: Vec<String>,
772}
773
774/// `ProspectInfoDto` from the GoHighLevel OpenAPI spec.
775#[derive(Debug, Clone, Default, Serialize, Deserialize)]
776pub struct ProspectInfoDto {
777    /// First name of the prospect
778    /// Required by the API.
779    #[serde(rename = "firstName")]
780    pub first_name: String,
781    /// Last name of the prospect
782    /// Required by the API.
783    #[serde(rename = "lastName")]
784    pub last_name: String,
785    /// Email of the prospect
786    /// Required by the API.
787    pub email: String,
788}
789
790/// `RecurringTaskCreateDTO` from the GoHighLevel OpenAPI spec.
791#[derive(Debug, Clone, Default, Serialize, Deserialize)]
792pub struct RecurringTaskCreateDTO {
793    /// Name of the task
794    /// Required by the API.
795    pub title: String,
796    /// Description of the task
797    #[serde(default, skip_serializing_if = "Option::is_none")]
798    pub description: Option<String>,
799    /// Contact Id
800    #[serde(rename = "contactIds", default, skip_serializing_if = "Vec::is_empty")]
801    pub contact_ids: Vec<String>,
802    /// Assigned To
803    #[serde(default, skip_serializing_if = "Vec::is_empty")]
804    pub owners: Vec<String>,
805    /// Recurring rules
806    /// Required by the API.
807    #[serde(rename = "rruleOptions")]
808    pub rrule_options: CustomRRulesOptions,
809    /// Create initial task or not
810    #[serde(
811        rename = "ignoreTaskCreation",
812        default,
813        skip_serializing_if = "Option::is_none"
814    )]
815    pub ignore_task_creation: Option<bool>,
816}
817
818/// `RecurringTaskResponseDTO` from the GoHighLevel OpenAPI spec.
819#[derive(Debug, Clone, Default, Serialize, Deserialize)]
820pub struct RecurringTaskResponseDTO {
821    /// Recurring Task Id
822    /// Required by the API.
823    /// (Optional here so responses that omit it still parse.)
824    #[serde(default, skip_serializing_if = "Option::is_none")]
825    pub id: Option<String>,
826    /// Name of the task
827    /// Required by the API.
828    /// (Optional here so responses that omit it still parse.)
829    #[serde(default, skip_serializing_if = "Option::is_none")]
830    pub title: Option<String>,
831    /// Description of the task
832    /// Required by the API.
833    /// (Optional here so responses that omit it still parse.)
834    #[serde(default, skip_serializing_if = "Option::is_none")]
835    pub description: Option<String>,
836    /// Location Id
837    /// Required by the API.
838    /// (Optional here so responses that omit it still parse.)
839    #[serde(
840        rename = "locationId",
841        default,
842        skip_serializing_if = "Option::is_none"
843    )]
844    pub location_id: Option<String>,
845    /// Updated At
846    /// Required by the API.
847    /// (Optional here so responses that omit it still parse.)
848    #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
849    pub updated_at: Option<String>,
850    /// Created At
851    /// Required by the API.
852    /// (Optional here so responses that omit it still parse.)
853    #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
854    pub created_at: Option<String>,
855    /// Recurring rules
856    /// Required by the API.
857    /// (Optional here so responses that omit it still parse.)
858    #[serde(
859        rename = "rruleOptions",
860        default,
861        skip_serializing_if = "Option::is_none"
862    )]
863    pub rrule_options: Option<CustomRRulesOptions>,
864    /// Total Occurrence
865    /// Required by the API.
866    /// (Optional here so responses that omit it still parse.)
867    #[serde(
868        rename = "totalOccurrence",
869        default,
870        skip_serializing_if = "Option::is_none"
871    )]
872    pub total_occurrence: Option<f64>,
873    /// Deleted
874    /// Required by the API.
875    /// (Optional here so responses that omit it still parse.)
876    #[serde(default, skip_serializing_if = "Option::is_none")]
877    pub deleted: Option<bool>,
878    /// Assigned To
879    #[serde(
880        rename = "assignedTo",
881        default,
882        skip_serializing_if = "Option::is_none"
883    )]
884    pub assigned_to: Option<String>,
885    /// Contact Id
886    #[serde(rename = "contactId", default, skip_serializing_if = "Option::is_none")]
887    pub contact_id: Option<String>,
888}
889
890/// `RecurringTaskSingleResponseDTO` from the GoHighLevel OpenAPI spec.
891#[derive(Debug, Clone, Default, Serialize, Deserialize)]
892pub struct RecurringTaskSingleResponseDTO {
893    /// Recurring Tasks
894    /// Required by the API.
895    /// (Optional here so responses that omit it still parse.)
896    #[serde(
897        rename = "recurringTask",
898        default,
899        skip_serializing_if = "Option::is_none"
900    )]
901    pub recurring_task: Option<RecurringTaskResponseDTO>,
902}
903
904/// `RecurringTaskUpdateDTO` from the GoHighLevel OpenAPI spec.
905#[derive(Debug, Clone, Default, Serialize, Deserialize)]
906pub struct RecurringTaskUpdateDTO {
907    /// Name of the task
908    #[serde(default, skip_serializing_if = "Option::is_none")]
909    pub title: Option<String>,
910    /// Description of the task
911    #[serde(default, skip_serializing_if = "Option::is_none")]
912    pub description: Option<String>,
913    /// Contact Id
914    #[serde(rename = "contactIds", default, skip_serializing_if = "Vec::is_empty")]
915    pub contact_ids: Vec<String>,
916    /// Assigned To
917    #[serde(default, skip_serializing_if = "Vec::is_empty")]
918    pub owners: Vec<String>,
919    /// Recurring rules
920    #[serde(
921        rename = "rruleOptions",
922        default,
923        skip_serializing_if = "Option::is_none"
924    )]
925    pub rrule_options: Option<CustomRRulesOptions>,
926    /// Create initial task or not
927    #[serde(
928        rename = "ignoreTaskCreation",
929        default,
930        skip_serializing_if = "Option::is_none"
931    )]
932    pub ignore_task_creation: Option<bool>,
933}
934
935/// `SearchSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
936#[derive(Debug, Clone, Default, Serialize, Deserialize)]
937pub struct SearchSuccessfulResponseDto {
938    #[serde(default, skip_serializing_if = "Vec::is_empty")]
939    pub locations: Vec<GetLocationSchema>,
940}
941
942/// `SettingsSchema` from the GoHighLevel OpenAPI spec.
943#[derive(Debug, Clone, Default, Serialize, Deserialize)]
944pub struct SettingsSchema {
945    #[serde(
946        rename = "allowDuplicateContact",
947        default,
948        skip_serializing_if = "Option::is_none"
949    )]
950    pub allow_duplicate_contact: Option<bool>,
951    #[serde(
952        rename = "allowDuplicateOpportunity",
953        default,
954        skip_serializing_if = "Option::is_none"
955    )]
956    pub allow_duplicate_opportunity: Option<bool>,
957    #[serde(
958        rename = "allowFacebookNameMerge",
959        default,
960        skip_serializing_if = "Option::is_none"
961    )]
962    pub allow_facebook_name_merge: Option<bool>,
963    #[serde(
964        rename = "disableContactTimezone",
965        default,
966        skip_serializing_if = "Option::is_none"
967    )]
968    pub disable_contact_timezone: Option<bool>,
969}
970
971/// `SmsTemplateSchema` from the GoHighLevel OpenAPI spec.
972#[derive(Debug, Clone, Default, Serialize, Deserialize)]
973pub struct SmsTemplateSchema {
974    #[serde(default, skip_serializing_if = "Option::is_none")]
975    pub body: Option<String>,
976    #[serde(default, skip_serializing_if = "Vec::is_empty")]
977    pub attachments: Vec<Vec<serde_json::Value>>,
978}
979
980/// `SnapshotPutSchema` from the GoHighLevel OpenAPI spec.
981#[derive(Debug, Clone, Default, Serialize, Deserialize)]
982pub struct SnapshotPutSchema {
983    /// Snaptshot ID
984    /// Required by the API.
985    pub id: String,
986    /// If you want override all conflicted assets then pass true. Default value is false.
987    #[serde(rename = "override", default, skip_serializing_if = "Option::is_none")]
988    pub override_: Option<bool>,
989}
990
991/// `SocialSchema` from the GoHighLevel OpenAPI spec.
992#[derive(Debug, Clone, Default, Serialize, Deserialize)]
993pub struct SocialSchema {
994    /// Facebook URL
995    #[serde(
996        rename = "facebookUrl",
997        default,
998        skip_serializing_if = "Option::is_none"
999    )]
1000    pub facebook_url: Option<String>,
1001    /// Googleplus URL
1002    #[serde(
1003        rename = "googlePlus",
1004        default,
1005        skip_serializing_if = "Option::is_none"
1006    )]
1007    pub google_plus: Option<String>,
1008    /// LinkedIn URL
1009    #[serde(rename = "linkedIn", default, skip_serializing_if = "Option::is_none")]
1010    pub linked_in: Option<String>,
1011    /// Foursquare URL
1012    #[serde(default, skip_serializing_if = "Option::is_none")]
1013    pub foursquare: Option<String>,
1014    /// Twitter URL
1015    #[serde(default, skip_serializing_if = "Option::is_none")]
1016    pub twitter: Option<String>,
1017    /// Yelp URL
1018    #[serde(default, skip_serializing_if = "Option::is_none")]
1019    pub yelp: Option<String>,
1020    /// Instagram URL
1021    #[serde(default, skip_serializing_if = "Option::is_none")]
1022    pub instagram: Option<String>,
1023    /// Instagram URL
1024    #[serde(default, skip_serializing_if = "Option::is_none")]
1025    pub youtube: Option<String>,
1026    /// Instagram URL
1027    #[serde(default, skip_serializing_if = "Option::is_none")]
1028    pub pinterest: Option<String>,
1029    /// Instagram URL
1030    #[serde(rename = "blogRss", default, skip_serializing_if = "Option::is_none")]
1031    pub blog_rss: Option<String>,
1032    /// Google Business Places ID
1033    #[serde(
1034        rename = "googlePlacesId",
1035        default,
1036        skip_serializing_if = "Option::is_none"
1037    )]
1038    pub google_places_id: Option<String>,
1039}
1040
1041/// `TaskSearchParamsDto` from the GoHighLevel OpenAPI spec.
1042#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1043pub struct TaskSearchParamsDto {
1044    /// Contact Ids
1045    #[serde(rename = "contactId", default, skip_serializing_if = "Vec::is_empty")]
1046    pub contact_id: Vec<String>,
1047    /// Task Completed Or Pending
1048    #[serde(default, skip_serializing_if = "Option::is_none")]
1049    pub completed: Option<bool>,
1050    /// Assigned User Ids
1051    #[serde(rename = "assignedTo", default, skip_serializing_if = "Vec::is_empty")]
1052    pub assigned_to: Vec<String>,
1053    /// Search Value
1054    #[serde(default, skip_serializing_if = "Option::is_none")]
1055    pub query: Option<String>,
1056    /// Limit To Api
1057    #[serde(default, skip_serializing_if = "Option::is_none")]
1058    pub limit: Option<f64>,
1059    /// Number Of Tasks To Skip
1060    #[serde(default, skip_serializing_if = "Option::is_none")]
1061    pub skip: Option<f64>,
1062    /// Bussiness Id
1063    #[serde(
1064        rename = "businessId",
1065        default,
1066        skip_serializing_if = "Option::is_none"
1067    )]
1068    pub business_id: Option<String>,
1069}
1070
1071/// `TwilioSchema` from the GoHighLevel OpenAPI spec.
1072#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1073pub struct TwilioSchema {
1074    /// SID provided by Twilio
1075    /// Required by the API.
1076    pub sid: String,
1077    /// Auth token provided by Twilio
1078    /// Required by the API.
1079    #[serde(rename = "authToken")]
1080    pub auth_token: String,
1081}
1082
1083/// `UpdateCustomFieldsDTO` from the GoHighLevel OpenAPI spec.
1084#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1085pub struct UpdateCustomFieldsDTO {
1086    /// Required by the API.
1087    pub name: String,
1088    #[serde(default, skip_serializing_if = "Option::is_none")]
1089    pub placeholder: Option<String>,
1090    #[serde(
1091        rename = "acceptedFormat",
1092        default,
1093        skip_serializing_if = "Vec::is_empty"
1094    )]
1095    pub accepted_format: Vec<String>,
1096    #[serde(
1097        rename = "isMultipleFile",
1098        default,
1099        skip_serializing_if = "Option::is_none"
1100    )]
1101    pub is_multiple_file: Option<bool>,
1102    #[serde(
1103        rename = "maxNumberOfFiles",
1104        default,
1105        skip_serializing_if = "Option::is_none"
1106    )]
1107    pub max_number_of_files: Option<f64>,
1108    /// Multiple possible shapes in the spec; raw JSON.
1109    #[serde(
1110        rename = "textBoxListOptions",
1111        default,
1112        skip_serializing_if = "Vec::is_empty"
1113    )]
1114    pub text_box_list_options: Vec<serde_json::Value>,
1115    #[serde(default, skip_serializing_if = "Option::is_none")]
1116    pub position: Option<f64>,
1117    /// Model of the custom field you want to update
1118    /// Allowed values: `contact`, `opportunity`.
1119    #[serde(default, skip_serializing_if = "Option::is_none")]
1120    pub model: Option<String>,
1121}
1122
1123/// `UpdateLocationDto` from the GoHighLevel OpenAPI spec.
1124#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1125pub struct UpdateLocationDto {
1126    /// The name for the sub-account/location
1127    #[serde(default, skip_serializing_if = "Option::is_none")]
1128    pub name: Option<String>,
1129    /// The phone number of the business for which sub-account is created
1130    #[serde(default, skip_serializing_if = "Option::is_none")]
1131    pub phone: Option<String>,
1132    /// Company/Agency Id
1133    /// Required by the API.
1134    #[serde(rename = "companyId")]
1135    pub company_id: String,
1136    /// The address of the business for which sub-account is created
1137    #[serde(default, skip_serializing_if = "Option::is_none")]
1138    pub address: Option<String>,
1139    /// The city where the business is located for which sub-account is created
1140    #[serde(default, skip_serializing_if = "Option::is_none")]
1141    pub city: Option<String>,
1142    /// The state in which the business operates for which sub-account is created
1143    #[serde(default, skip_serializing_if = "Option::is_none")]
1144    pub state: Option<String>,
1145    /// The country in which the business is present for which sub-account is created
1146    /// Allowed values: `AF`, `AX`, `AL`, `DZ`, `AS`, `AD`, `AO`, `AI`, `AQ`, `AG`, `AR`, `AM`.
1147    #[serde(default, skip_serializing_if = "Option::is_none")]
1148    pub country: Option<String>,
1149    /// The postal code of the business for which sub-account is created
1150    #[serde(
1151        rename = "postalCode",
1152        default,
1153        skip_serializing_if = "Option::is_none"
1154    )]
1155    pub postal_code: Option<String>,
1156    /// The website of the business for which sub-account is created
1157    #[serde(default, skip_serializing_if = "Option::is_none")]
1158    pub website: Option<String>,
1159    /// The timezone of the business for which sub-account is created
1160    #[serde(default, skip_serializing_if = "Option::is_none")]
1161    pub timezone: Option<String>,
1162    #[serde(
1163        rename = "prospectInfo",
1164        default,
1165        skip_serializing_if = "Option::is_none"
1166    )]
1167    pub prospect_info: Option<ProspectInfoDto>,
1168    /// The default settings for location
1169    #[serde(default, skip_serializing_if = "Option::is_none")]
1170    pub settings: Option<SettingsSchema>,
1171    /// The social media links for location
1172    #[serde(default, skip_serializing_if = "Option::is_none")]
1173    pub social: Option<SocialSchema>,
1174    /// (DEPRECATED) The twilio credentials for location
1175    #[serde(default, skip_serializing_if = "Option::is_none")]
1176    pub twilio: Option<TwilioSchema>,
1177    /// The mailgun credentials for location
1178    #[serde(default, skip_serializing_if = "Option::is_none")]
1179    pub mailgun: Option<MailgunSchema>,
1180    /// The snapshot to be updated in the location.
1181    #[serde(default, skip_serializing_if = "Option::is_none")]
1182    pub snapshot: Option<SnapshotPutSchema>,
1183}
1184
1185/// `UpdatePermissionsDto` from the GoHighLevel OpenAPI spec.
1186#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1187pub struct UpdatePermissionsDto {
1188    /// Permission plan values to apply for the sub-account
1189    /// Allowed values: `2-way-text-messaging`, `gmb-messaging`, `web-chat`,
1190    /// `reputation-management`, `facebook-messenger`, `gmb-call-tracking`,
1191    /// `missed-call-text-back`, `text-to-pay`, `calendar`, `crm`, `opportunities`,
1192    /// `email-marketing`.
1193    /// Required by the API.
1194    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1195    pub permissions: Vec<String>,
1196}
1197
1198/// `customValuesDTO` from the GoHighLevel OpenAPI spec.
1199#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1200pub struct CustomValuesDTO {
1201    /// Required by the API.
1202    pub name: String,
1203    /// Required by the API.
1204    pub value: String,
1205}
1206
1207/// `tagBody` from the GoHighLevel OpenAPI spec.
1208#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1209pub struct TagBody {
1210    /// Tag name
1211    /// Required by the API.
1212    pub name: String,
1213}
1214
1215/// `textBoxListOptionsSchema` from the GoHighLevel OpenAPI spec.
1216#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1217pub struct TextBoxListOptionsSchema {
1218    #[serde(default, skip_serializing_if = "Option::is_none")]
1219    pub label: Option<String>,
1220    #[serde(
1221        rename = "prefillValue",
1222        default,
1223        skip_serializing_if = "Option::is_none"
1224    )]
1225    pub prefill_value: Option<String>,
1226}