Skip to main content

ghl_models/v2/
users.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/// `CreateUserDto` from the GoHighLevel OpenAPI spec.
14#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15pub struct CreateUserDto {
16    /// Required by the API.
17    #[serde(rename = "companyId")]
18    pub company_id: String,
19    /// Required by the API.
20    #[serde(rename = "firstName")]
21    pub first_name: String,
22    /// Required by the API.
23    #[serde(rename = "lastName")]
24    pub last_name: String,
25    /// Required by the API.
26    pub email: String,
27    /// Required by the API.
28    pub password: String,
29    #[serde(default, skip_serializing_if = "Option::is_none")]
30    pub phone: Option<String>,
31    /// Required by the API.
32    #[serde(rename = "type")]
33    pub type_: String,
34    /// Required by the API.
35    pub role: String,
36    /// Required by the API.
37    #[serde(rename = "locationIds", default, skip_serializing_if = "Vec::is_empty")]
38    pub location_ids: Vec<String>,
39    #[serde(default, skip_serializing_if = "Option::is_none")]
40    pub permissions: Option<PermissionsDto>,
41    /// Scopes allowed for users. Only scopes that have been passed will be enabled. Note:- If
42    /// passed empty all the scopes will be get disabled
43    /// Allowed values: `campaigns.readonly`, `campaigns.write`, `calendars.readonly`,
44    /// `calendars/events.write`, `calendars/groups.write`, `calendars.write`, `contacts.write`,
45    /// `contacts/bulkActions.write`, `workflows.readonly`, `workflows.write`, `triggers.write`,
46    /// `funnels.write`.
47    #[serde(default, skip_serializing_if = "Vec::is_empty")]
48    pub scopes: Vec<String>,
49    /// Assigned Scopes allowed for users. Only scopes that have been passed will be enabled. If
50    /// passed empty all the assigned scopes will be get disabled
51    /// Allowed values: `campaigns.readonly`, `campaigns.write`, `calendars.readonly`,
52    /// `calendars/events.write`, `calendars/groups.write`, `calendars.write`, `contacts.write`,
53    /// `contacts/bulkActions.write`, `workflows.readonly`, `workflows.write`, `triggers.write`,
54    /// `funnels.write`.
55    #[serde(
56        rename = "scopesAssignedToOnly",
57        default,
58        skip_serializing_if = "Vec::is_empty"
59    )]
60    pub scopes_assigned_to_only: Vec<String>,
61    #[serde(
62        rename = "profilePhoto",
63        default,
64        skip_serializing_if = "Option::is_none"
65    )]
66    pub profile_photo: Option<String>,
67    /// Per-location inbound Twilio number in E.164 format, keyed by location id (Call and
68    /// Voicemail Inbound Number for direct Twilio, not LC Phone). Replacement semantics: if you
69    /// send twilioPhone in the request body, the stored map is replaced entirely with this
70    /// object (not merged). Any location id omitted from the object is removed from the saved
71    /// map. Omit the twilioPhone property entirely to leave existing numbers unchanged. Send an
72    /// empty object {} to clear all per-location numbers. To clear a single location only, set
73    /// that location id to an empty string "".
74    #[serde(
75        rename = "twilioPhone",
76        default,
77        skip_serializing_if = "Option::is_none"
78    )]
79    pub twilio_phone: Option<serde_json::Value>,
80    /// Platform language preference for the user
81    /// Allowed values: `en_US`, `es`, `fr_CA`, `fr_FR`, `nl`, `de`, `pt_PT`, `pt_BR`, `it`,
82    /// `sv`, `da`, `fi`.
83    #[serde(
84        rename = "platformLanguage",
85        default,
86        skip_serializing_if = "Option::is_none"
87    )]
88    pub platform_language: Option<String>,
89}
90
91/// `DeleteUserSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
92#[derive(Debug, Clone, Default, Serialize, Deserialize)]
93pub struct DeleteUserSuccessfulResponseDto {
94    #[serde(default, skip_serializing_if = "Option::is_none")]
95    pub succeded: Option<bool>,
96    #[serde(default, skip_serializing_if = "Option::is_none")]
97    pub message: Option<String>,
98}
99
100/// `FilterByEmailDto` from the GoHighLevel OpenAPI spec.
101#[derive(Debug, Clone, Default, Serialize, Deserialize)]
102pub struct FilterByEmailDto {
103    /// Company ID to filter users
104    /// Required by the API.
105    #[serde(rename = "companyId")]
106    pub company_id: String,
107    /// Comma-separated list of email addresses to filter users
108    /// Required by the API.
109    pub emails: String,
110    /// Filter deleted users
111    #[serde(default, skip_serializing_if = "Option::is_none")]
112    pub deleted: Option<bool>,
113    /// No of results to be skipped before returning the result
114    #[serde(default, skip_serializing_if = "Option::is_none")]
115    pub skip: Option<String>,
116    /// No of results to be limited before returning the result
117    #[serde(default, skip_serializing_if = "Option::is_none")]
118    pub limit: Option<String>,
119    /// Projection fields to return. Use "all" for all fields, or specify comma-separated field
120    /// names. Default returns only id and email
121    #[serde(default, skip_serializing_if = "Option::is_none")]
122    pub projection: Option<String>,
123}
124
125/// `LocationSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
126#[derive(Debug, Clone, Default, Serialize, Deserialize)]
127pub struct LocationSuccessfulResponseDto {
128    #[serde(default, skip_serializing_if = "Vec::is_empty")]
129    pub users: Vec<UserSchema>,
130}
131
132/// `PermissionsDto` from the GoHighLevel OpenAPI spec.
133#[derive(Debug, Clone, Default, Serialize, Deserialize)]
134pub struct PermissionsDto {
135    #[serde(
136        rename = "campaignsEnabled",
137        default,
138        skip_serializing_if = "Option::is_none"
139    )]
140    pub campaigns_enabled: Option<bool>,
141    #[serde(
142        rename = "campaignsReadOnly",
143        default,
144        skip_serializing_if = "Option::is_none"
145    )]
146    pub campaigns_read_only: Option<bool>,
147    #[serde(
148        rename = "contactsEnabled",
149        default,
150        skip_serializing_if = "Option::is_none"
151    )]
152    pub contacts_enabled: Option<bool>,
153    #[serde(
154        rename = "workflowsEnabled",
155        default,
156        skip_serializing_if = "Option::is_none"
157    )]
158    pub workflows_enabled: Option<bool>,
159    #[serde(
160        rename = "workflowsReadOnly",
161        default,
162        skip_serializing_if = "Option::is_none"
163    )]
164    pub workflows_read_only: Option<bool>,
165    #[serde(
166        rename = "triggersEnabled",
167        default,
168        skip_serializing_if = "Option::is_none"
169    )]
170    pub triggers_enabled: Option<bool>,
171    #[serde(
172        rename = "funnelsEnabled",
173        default,
174        skip_serializing_if = "Option::is_none"
175    )]
176    pub funnels_enabled: Option<bool>,
177    #[serde(
178        rename = "websitesEnabled",
179        default,
180        skip_serializing_if = "Option::is_none"
181    )]
182    pub websites_enabled: Option<bool>,
183    #[serde(
184        rename = "opportunitiesEnabled",
185        default,
186        skip_serializing_if = "Option::is_none"
187    )]
188    pub opportunities_enabled: Option<bool>,
189    #[serde(
190        rename = "dashboardStatsEnabled",
191        default,
192        skip_serializing_if = "Option::is_none"
193    )]
194    pub dashboard_stats_enabled: Option<bool>,
195    #[serde(
196        rename = "bulkRequestsEnabled",
197        default,
198        skip_serializing_if = "Option::is_none"
199    )]
200    pub bulk_requests_enabled: Option<bool>,
201    #[serde(
202        rename = "appointmentsEnabled",
203        default,
204        skip_serializing_if = "Option::is_none"
205    )]
206    pub appointments_enabled: Option<bool>,
207    #[serde(
208        rename = "reviewsEnabled",
209        default,
210        skip_serializing_if = "Option::is_none"
211    )]
212    pub reviews_enabled: Option<bool>,
213    #[serde(
214        rename = "onlineListingsEnabled",
215        default,
216        skip_serializing_if = "Option::is_none"
217    )]
218    pub online_listings_enabled: Option<bool>,
219    #[serde(
220        rename = "phoneCallEnabled",
221        default,
222        skip_serializing_if = "Option::is_none"
223    )]
224    pub phone_call_enabled: Option<bool>,
225    #[serde(
226        rename = "conversationsEnabled",
227        default,
228        skip_serializing_if = "Option::is_none"
229    )]
230    pub conversations_enabled: Option<bool>,
231    #[serde(
232        rename = "assignedDataOnly",
233        default,
234        skip_serializing_if = "Option::is_none"
235    )]
236    pub assigned_data_only: Option<bool>,
237    #[serde(
238        rename = "adwordsReportingEnabled",
239        default,
240        skip_serializing_if = "Option::is_none"
241    )]
242    pub adwords_reporting_enabled: Option<bool>,
243    #[serde(
244        rename = "membershipEnabled",
245        default,
246        skip_serializing_if = "Option::is_none"
247    )]
248    pub membership_enabled: Option<bool>,
249    #[serde(
250        rename = "facebookAdsReportingEnabled",
251        default,
252        skip_serializing_if = "Option::is_none"
253    )]
254    pub facebook_ads_reporting_enabled: Option<bool>,
255    #[serde(
256        rename = "attributionsReportingEnabled",
257        default,
258        skip_serializing_if = "Option::is_none"
259    )]
260    pub attributions_reporting_enabled: Option<bool>,
261    #[serde(
262        rename = "settingsEnabled",
263        default,
264        skip_serializing_if = "Option::is_none"
265    )]
266    pub settings_enabled: Option<bool>,
267    #[serde(
268        rename = "tagsEnabled",
269        default,
270        skip_serializing_if = "Option::is_none"
271    )]
272    pub tags_enabled: Option<bool>,
273    #[serde(
274        rename = "leadValueEnabled",
275        default,
276        skip_serializing_if = "Option::is_none"
277    )]
278    pub lead_value_enabled: Option<bool>,
279    #[serde(
280        rename = "marketingEnabled",
281        default,
282        skip_serializing_if = "Option::is_none"
283    )]
284    pub marketing_enabled: Option<bool>,
285    #[serde(
286        rename = "agentReportingEnabled",
287        default,
288        skip_serializing_if = "Option::is_none"
289    )]
290    pub agent_reporting_enabled: Option<bool>,
291    #[serde(
292        rename = "botService",
293        default,
294        skip_serializing_if = "Option::is_none"
295    )]
296    pub bot_service: Option<bool>,
297    #[serde(
298        rename = "socialPlanner",
299        default,
300        skip_serializing_if = "Option::is_none"
301    )]
302    pub social_planner: Option<bool>,
303    #[serde(
304        rename = "bloggingEnabled",
305        default,
306        skip_serializing_if = "Option::is_none"
307    )]
308    pub blogging_enabled: Option<bool>,
309    #[serde(
310        rename = "invoiceEnabled",
311        default,
312        skip_serializing_if = "Option::is_none"
313    )]
314    pub invoice_enabled: Option<bool>,
315    #[serde(
316        rename = "affiliateManagerEnabled",
317        default,
318        skip_serializing_if = "Option::is_none"
319    )]
320    pub affiliate_manager_enabled: Option<bool>,
321    #[serde(
322        rename = "contentAiEnabled",
323        default,
324        skip_serializing_if = "Option::is_none"
325    )]
326    pub content_ai_enabled: Option<bool>,
327    #[serde(
328        rename = "refundsEnabled",
329        default,
330        skip_serializing_if = "Option::is_none"
331    )]
332    pub refunds_enabled: Option<bool>,
333    #[serde(
334        rename = "recordPaymentEnabled",
335        default,
336        skip_serializing_if = "Option::is_none"
337    )]
338    pub record_payment_enabled: Option<bool>,
339    #[serde(
340        rename = "cancelSubscriptionEnabled",
341        default,
342        skip_serializing_if = "Option::is_none"
343    )]
344    pub cancel_subscription_enabled: Option<bool>,
345    #[serde(
346        rename = "paymentsEnabled",
347        default,
348        skip_serializing_if = "Option::is_none"
349    )]
350    pub payments_enabled: Option<bool>,
351    #[serde(
352        rename = "communitiesEnabled",
353        default,
354        skip_serializing_if = "Option::is_none"
355    )]
356    pub communities_enabled: Option<bool>,
357    #[serde(
358        rename = "exportPaymentsEnabled",
359        default,
360        skip_serializing_if = "Option::is_none"
361    )]
362    pub export_payments_enabled: Option<bool>,
363}
364
365/// `RoleSchema` from the GoHighLevel OpenAPI spec.
366#[derive(Debug, Clone, Default, Serialize, Deserialize)]
367pub struct RoleSchema {
368    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
369    pub type_: Option<String>,
370    #[serde(default, skip_serializing_if = "Option::is_none")]
371    pub role: Option<String>,
372    #[serde(rename = "locationIds", default, skip_serializing_if = "Vec::is_empty")]
373    pub location_ids: Vec<String>,
374    #[serde(
375        rename = "restrictSubAccount",
376        default,
377        skip_serializing_if = "Option::is_none"
378    )]
379    pub restrict_sub_account: Option<bool>,
380}
381
382/// `SearchUserSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
383#[derive(Debug, Clone, Default, Serialize, Deserialize)]
384pub struct SearchUserSuccessfulResponseDto {
385    #[serde(default, skip_serializing_if = "Vec::is_empty")]
386    pub users: Vec<UserSchema>,
387    #[serde(default, skip_serializing_if = "Option::is_none")]
388    pub count: Option<f64>,
389}
390
391/// `UpdateUserDto` from the GoHighLevel OpenAPI spec.
392#[derive(Debug, Clone, Default, Serialize, Deserialize)]
393pub struct UpdateUserDto {
394    #[serde(rename = "firstName", default, skip_serializing_if = "Option::is_none")]
395    pub first_name: Option<String>,
396    #[serde(rename = "lastName", default, skip_serializing_if = "Option::is_none")]
397    pub last_name: Option<String>,
398    /// Email update is no longer supported due to security reasons.
399    #[serde(default, skip_serializing_if = "Option::is_none")]
400    pub email: Option<String>,
401    #[serde(default, skip_serializing_if = "Option::is_none")]
402    pub password: Option<String>,
403    #[serde(default, skip_serializing_if = "Option::is_none")]
404    pub phone: Option<String>,
405    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
406    pub type_: Option<String>,
407    #[serde(default, skip_serializing_if = "Option::is_none")]
408    pub role: Option<String>,
409    /// Company/Agency Id. Required for Agency Level access
410    #[serde(rename = "companyId", default, skip_serializing_if = "Option::is_none")]
411    pub company_id: Option<String>,
412    #[serde(rename = "locationIds", default, skip_serializing_if = "Vec::is_empty")]
413    pub location_ids: Vec<String>,
414    #[serde(default, skip_serializing_if = "Option::is_none")]
415    pub permissions: Option<PermissionsDto>,
416    /// Scopes allowed for users. Only scopes that have been passed will be enabled. If passed
417    /// empty all the scopes will be get disabled
418    /// Allowed values: `campaigns.readonly`, `campaigns.write`, `calendars.readonly`,
419    /// `calendars/events.write`, `calendars/groups.write`, `calendars.write`, `contacts.write`,
420    /// `contacts/bulkActions.write`, `workflows.readonly`, `workflows.write`, `triggers.write`,
421    /// `funnels.write`.
422    #[serde(default, skip_serializing_if = "Vec::is_empty")]
423    pub scopes: Vec<String>,
424    /// Assigned Scopes allowed for users. Only scopes that have been passed will be enabled. If
425    /// passed empty all the assigned scopes will be get disabled
426    /// Allowed values: `campaigns.readonly`, `campaigns.write`, `calendars.readonly`,
427    /// `calendars/events.write`, `calendars/groups.write`, `calendars.write`, `contacts.write`,
428    /// `contacts/bulkActions.write`, `workflows.readonly`, `workflows.write`, `triggers.write`,
429    /// `funnels.write`.
430    #[serde(
431        rename = "scopesAssignedToOnly",
432        default,
433        skip_serializing_if = "Vec::is_empty"
434    )]
435    pub scopes_assigned_to_only: Vec<String>,
436    #[serde(
437        rename = "profilePhoto",
438        default,
439        skip_serializing_if = "Option::is_none"
440    )]
441    pub profile_photo: Option<String>,
442    /// Per-location inbound Twilio number in E.164 format, keyed by location id (Call and
443    /// Voicemail Inbound Number for direct Twilio, not LC Phone). Replacement semantics: if you
444    /// send twilioPhone in the request body, the stored map is replaced entirely with this
445    /// object (not merged). Any location id omitted from the object is removed from the saved
446    /// map. Omit the twilioPhone property entirely to leave existing numbers unchanged. Send an
447    /// empty object {} to clear all per-location numbers. To clear a single location only, set
448    /// that location id to an empty string "".
449    #[serde(
450        rename = "twilioPhone",
451        default,
452        skip_serializing_if = "Option::is_none"
453    )]
454    pub twilio_phone: Option<serde_json::Value>,
455    /// Platform language preference for the user
456    /// Allowed values: `en_US`, `es`, `fr_CA`, `fr_FR`, `nl`, `de`, `pt_PT`, `pt_BR`, `it`,
457    /// `sv`, `da`, `fi`.
458    #[serde(
459        rename = "platformLanguage",
460        default,
461        skip_serializing_if = "Option::is_none"
462    )]
463    pub platform_language: Option<String>,
464}
465
466/// `UserSchema` from the GoHighLevel OpenAPI spec.
467#[derive(Debug, Clone, Default, Serialize, Deserialize)]
468pub struct UserSchema {
469    #[serde(default, skip_serializing_if = "Option::is_none")]
470    pub id: Option<String>,
471    #[serde(default, skip_serializing_if = "Option::is_none")]
472    pub name: Option<String>,
473    #[serde(rename = "firstName", default, skip_serializing_if = "Option::is_none")]
474    pub first_name: Option<String>,
475    #[serde(rename = "lastName", default, skip_serializing_if = "Option::is_none")]
476    pub last_name: Option<String>,
477    #[serde(default, skip_serializing_if = "Option::is_none")]
478    pub email: Option<String>,
479    #[serde(default, skip_serializing_if = "Option::is_none")]
480    pub phone: Option<String>,
481    #[serde(default, skip_serializing_if = "Option::is_none")]
482    pub extension: Option<String>,
483    #[serde(default, skip_serializing_if = "Option::is_none")]
484    pub permissions: Option<PermissionsDto>,
485    /// Allowed values: `campaigns.readonly`, `campaigns.write`, `calendars.readonly`,
486    /// `calendars/events.write`, `calendars/groups.write`, `calendars.write`, `contacts.write`,
487    /// `contacts/bulkActions.write`, `workflows.readonly`, `workflows.write`, `triggers.write`,
488    /// `funnels.write`.
489    #[serde(default, skip_serializing_if = "Option::is_none")]
490    pub scopes: Option<String>,
491    #[serde(default, skip_serializing_if = "Option::is_none")]
492    pub roles: Option<RoleSchema>,
493    #[serde(default, skip_serializing_if = "Option::is_none")]
494    pub deleted: Option<bool>,
495    /// LC Phone Inbound Phone Numbers
496    #[serde(rename = "lcPhone", default, skip_serializing_if = "Option::is_none")]
497    pub lc_phone: Option<serde_json::Value>,
498    /// Platform language preference for the user
499    /// Allowed values: `en_US`, `es`, `fr_CA`, `fr_FR`, `nl`, `de`, `pt_PT`, `pt_BR`, `it`,
500    /// `sv`, `da`, `fi`.
501    #[serde(
502        rename = "platformLanguage",
503        default,
504        skip_serializing_if = "Option::is_none"
505    )]
506    pub platform_language: Option<String>,
507}
508
509/// `UserSuccessfulResponseDto` from the GoHighLevel OpenAPI spec.
510#[derive(Debug, Clone, Default, Serialize, Deserialize)]
511pub struct UserSuccessfulResponseDto {
512    #[serde(default, skip_serializing_if = "Option::is_none")]
513    pub id: Option<String>,
514    #[serde(default, skip_serializing_if = "Option::is_none")]
515    pub name: Option<String>,
516    #[serde(rename = "firstName", default, skip_serializing_if = "Option::is_none")]
517    pub first_name: Option<String>,
518    #[serde(rename = "lastName", default, skip_serializing_if = "Option::is_none")]
519    pub last_name: Option<String>,
520    #[serde(default, skip_serializing_if = "Option::is_none")]
521    pub email: Option<String>,
522    #[serde(default, skip_serializing_if = "Option::is_none")]
523    pub phone: Option<String>,
524    #[serde(default, skip_serializing_if = "Option::is_none")]
525    pub extension: Option<String>,
526    #[serde(default, skip_serializing_if = "Option::is_none")]
527    pub permissions: Option<PermissionsDto>,
528    /// Allowed values: `campaigns.readonly`, `campaigns.write`, `calendars.readonly`,
529    /// `calendars/events.write`, `calendars/groups.write`, `calendars.write`, `contacts.write`,
530    /// `contacts/bulkActions.write`, `workflows.readonly`, `workflows.write`, `triggers.write`,
531    /// `funnels.write`.
532    #[serde(default, skip_serializing_if = "Option::is_none")]
533    pub scopes: Option<String>,
534    #[serde(default, skip_serializing_if = "Option::is_none")]
535    pub roles: Option<RoleSchema>,
536    /// LC Phone Inbound Phone Numbers
537    #[serde(rename = "lcPhone", default, skip_serializing_if = "Option::is_none")]
538    pub lc_phone: Option<serde_json::Value>,
539    /// Platform language preference for the user
540    /// Allowed values: `en_US`, `es`, `fr_CA`, `fr_FR`, `nl`, `de`, `pt_PT`, `pt_BR`, `it`,
541    /// `sv`, `da`, `fi`.
542    #[serde(
543        rename = "platformLanguage",
544        default,
545        skip_serializing_if = "Option::is_none"
546    )]
547    pub platform_language: Option<String>,
548}