Skip to main content

ghl_models/v3/
saas.rs

1//! `saas` data models for GoHighLevel API V3 (25 types).
2//!
3//! Generated from HighLevel's official OpenAPI spec for the
4//! **Saas** module. Every endpoint that uses these types, with its
5//! parameters, required scopes and enum values, is documented in the
6//! [`saas` API reference](https://github.com/Shahroz/ghl-rs/blob/main/docs/api/saas.md).
7//!
8//! Enable with `features = ["saas"]`.
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/// `AgencyPlanResponseDto` from the GoHighLevel OpenAPI spec.
22#[derive(Debug, Clone, Default, Serialize, Deserialize)]
23pub struct AgencyPlanResponseDto {
24    /// Unique identifier for the plan
25    /// Required by the API.
26    #[serde(rename = "planId")]
27    pub plan_id: String,
28    /// Title of the plan
29    /// Required by the API.
30    pub title: String,
31    /// Description of the plan
32    /// Required by the API.
33    pub description: String,
34    /// Array of SaaS products included in the plan
35    /// Required by the API.
36    #[serde(
37        rename = "saasProducts",
38        default,
39        skip_serializing_if = "Vec::is_empty"
40    )]
41    pub saas_products: Vec<String>,
42    /// Array of add-ons included in the plan
43    #[serde(rename = "addOns", default, skip_serializing_if = "Vec::is_empty")]
44    pub add_ons: Vec<String>,
45    /// Level of the plan (0-4)
46    /// Required by the API.
47    #[serde(rename = "planLevel")]
48    pub plan_level: f64,
49    /// Trial period in days
50    /// Required by the API.
51    #[serde(rename = "trialPeriod")]
52    pub trial_period: f64,
53    /// User limit for the plan
54    #[serde(rename = "userLimit", default, skip_serializing_if = "Option::is_none")]
55    pub user_limit: Option<f64>,
56    /// Contact limit for the plan
57    #[serde(
58        rename = "contactLimit",
59        default,
60        skip_serializing_if = "Option::is_none"
61    )]
62    pub contact_limit: Option<f64>,
63    /// Pricing information for the plan
64    /// Nested object; raw JSON (see the API docs for its fields).
65    /// Required by the API.
66    #[serde(default, skip_serializing_if = "Vec::is_empty")]
67    pub prices: Vec<serde_json::Value>,
68    /// Category ID for the plan
69    #[serde(
70        rename = "categoryId",
71        default,
72        skip_serializing_if = "Option::is_none"
73    )]
74    pub category_id: Option<String>,
75    /// Snapshot ID for the plan
76    #[serde(
77        rename = "snapshotId",
78        default,
79        skip_serializing_if = "Option::is_none"
80    )]
81    pub snapshot_id: Option<String>,
82    /// Product ID for the plan
83    #[serde(rename = "productId", default, skip_serializing_if = "Option::is_none")]
84    pub product_id: Option<String>,
85    /// Indicates if this is a SaaS V2 plan
86    /// Required by the API.
87    #[serde(rename = "isSaaSV2")]
88    pub is_saa_sv2: bool,
89    /// Provider location ID
90    #[serde(
91        rename = "providerLocationId",
92        default,
93        skip_serializing_if = "Option::is_none"
94    )]
95    pub provider_location_id: Option<String>,
96    /// Creation timestamp
97    /// Required by the API.
98    #[serde(rename = "createdAt")]
99    pub created_at: String,
100    /// Last update timestamp
101    /// Required by the API.
102    #[serde(rename = "updatedAt")]
103    pub updated_at: String,
104}
105
106/// `AllowAttachRebillingDto` from the GoHighLevel OpenAPI spec.
107#[derive(Debug, Clone, Default, Serialize, Deserialize)]
108pub struct AllowAttachRebillingDto {
109    /// Company ID owning the location
110    /// Required by the API.
111    #[serde(rename = "companyId")]
112    pub company_id: String,
113    /// Map of rebilling product code to its config. When provided, this gets stored on the
114    /// sub-account so it can be applied when the rebilling config is created. Omit to only mark
115    /// the sub-account as awaiting rebilling attach without any pre-configured products.
116    /// Possible product keys: `contentAI`, `workflow_premium_actions`, `workflow_ai`,
117    /// `conversationAI`, `whatsApp`, `reviewsAI`, `EmailVerification`, `funnelAI`,
118    /// `domainPurchase`, `Phone`, `Email`, `agentStudio`, `askai`, `aiStudio`.
119    #[serde(
120        rename = "attachedRebillingConfig",
121        default,
122        skip_serializing_if = "Option::is_none"
123    )]
124    pub attached_rebilling_config: Option<serde_json::Value>,
125}
126
127/// `AllowAttachRebillingResponseDto` from the GoHighLevel OpenAPI spec.
128#[derive(Debug, Clone, Default, Serialize, Deserialize)]
129pub struct AllowAttachRebillingResponseDto {
130    /// Indicates if the allow attach rebilling operation succeeded
131    /// Required by the API.
132    pub success: bool,
133    /// Location ID the rebilling config was attached to
134    /// Required by the API.
135    #[serde(rename = "locationId")]
136    pub location_id: String,
137    /// Stored rebilling configuration on the location. Markup is the internal percentage value
138    /// converted from the request multiplier (e.g. 4 -> 300%, 3 -> 200%).
139    /// Required by the API.
140    #[serde(rename = "attachedRebillingConfig")]
141    pub attached_rebilling_config: serde_json::Value,
142}
143
144/// `AttachedRebillingProductConfigDto` from the GoHighLevel OpenAPI spec.
145#[derive(Debug, Clone, Default, Serialize, Deserialize)]
146pub struct AttachedRebillingProductConfigDto {
147    /// Enable rebilling for the product
148    /// Required by the API.
149    pub enabled: bool,
150    /// Additional value to be added in terms of percentage
151    /// Required by the API.
152    pub markup: f64,
153    /// Product price override
154    #[serde(default, skip_serializing_if = "Option::is_none")]
155    pub price: Option<f64>,
156}
157
158/// `BadRequestDTO` from the GoHighLevel OpenAPI spec.
159#[derive(Debug, Clone, Default, Serialize, Deserialize)]
160pub struct BadRequestDTO {
161    /// Status code
162    #[serde(
163        rename = "statusCode",
164        default,
165        skip_serializing_if = "Option::is_none"
166    )]
167    pub status_code: Option<f64>,
168    /// Error message
169    #[serde(default, skip_serializing_if = "Option::is_none")]
170    pub message: Option<String>,
171}
172
173/// `BulkDisableSaasDto` from the GoHighLevel OpenAPI spec.
174#[derive(Debug, Clone, Default, Serialize, Deserialize)]
175pub struct BulkDisableSaasDto {
176    /// Location IDs
177    /// Required by the API.
178    #[serde(rename = "locationIds", default, skip_serializing_if = "Vec::is_empty")]
179    pub location_ids: Vec<String>,
180}
181
182/// `BulkDisableSaasResponseDto` from the GoHighLevel OpenAPI spec.
183#[derive(Debug, Clone, Default, Serialize, Deserialize)]
184pub struct BulkDisableSaasResponseDto {
185    /// Response data from the bulk disable SaaS operation
186    /// Required by the API.
187    pub data: serde_json::Value,
188}
189
190/// `BulkEnableSaasActionPayloadDto` from the GoHighLevel OpenAPI spec.
191#[derive(Debug, Clone, Default, Serialize, Deserialize)]
192pub struct BulkEnableSaasActionPayloadDto {
193    /// Price ID for the SaaS plan
194    #[serde(rename = "priceId", default, skip_serializing_if = "Option::is_none")]
195    pub price_id: Option<String>,
196    /// Stripe account ID
197    #[serde(
198        rename = "stripeAccountId",
199        default,
200        skip_serializing_if = "Option::is_none"
201    )]
202    pub stripe_account_id: Option<String>,
203    /// SaaS plan ID
204    /// Required by the API.
205    #[serde(rename = "saasPlanId")]
206    pub saas_plan_id: String,
207    /// Provider location ID
208    #[serde(
209        rename = "providerLocationId",
210        default,
211        skip_serializing_if = "Option::is_none"
212    )]
213    pub provider_location_id: Option<String>,
214}
215
216/// `BulkEnableSaasRequestDto` from the GoHighLevel OpenAPI spec.
217#[derive(Debug, Clone, Default, Serialize, Deserialize)]
218pub struct BulkEnableSaasRequestDto {
219    /// Array of location IDs to enable SaaS for
220    /// Required by the API.
221    #[serde(rename = "locationIds", default, skip_serializing_if = "Vec::is_empty")]
222    pub location_ids: Vec<String>,
223    /// Indicates if the SaaS is V2
224    /// Required by the API.
225    #[serde(rename = "isSaaSV2")]
226    pub is_saa_sv2: bool,
227    /// Action payload for the bulk enable SaaS operation
228    /// Required by the API.
229    #[serde(rename = "actionPayload")]
230    pub action_payload: BulkEnableSaasActionPayloadDto,
231}
232
233/// `BulkEnableSaasResponseDto` from the GoHighLevel OpenAPI spec.
234#[derive(Debug, Clone, Default, Serialize, Deserialize)]
235pub struct BulkEnableSaasResponseDto {
236    /// Indicates if the bulk enable SaaS operation was successful
237    /// Required by the API.
238    pub success: bool,
239    /// Message indicating the bulk enable SaaS operation
240    /// Required by the API.
241    pub message: String,
242    /// URL for the bulk enable SaaS operation
243    #[serde(
244        rename = "bulkActionUrl",
245        default,
246        skip_serializing_if = "Option::is_none"
247    )]
248    pub bulk_action_url: Option<String>,
249}
250
251/// `ComplimentaryCreditDTO` from the GoHighLevel OpenAPI spec.
252#[derive(Debug, Clone, Default, Serialize, Deserialize)]
253pub struct ComplimentaryCreditDTO {
254    /// Credit amount to be added
255    #[serde(
256        rename = "complimentaryCreditsAmount",
257        default,
258        skip_serializing_if = "Option::is_none"
259    )]
260    pub complimentary_credits_amount: Option<f64>,
261}
262
263/// `EnableSaasDto` from the GoHighLevel OpenAPI spec.
264#[derive(Debug, Clone, Default, Serialize, Deserialize)]
265pub struct EnableSaasDto {
266    /// Stripe account id(Required only for SaaS V1)
267    #[serde(
268        rename = "stripeAccountId",
269        default,
270        skip_serializing_if = "Option::is_none"
271    )]
272    pub stripe_account_id: Option<String>,
273    /// Name of the stripe customer(Required only for SaaS V1)
274    #[serde(default, skip_serializing_if = "Option::is_none")]
275    pub name: Option<String>,
276    /// Email of the stripe customer(Required only for SaaS V1)
277    #[serde(default, skip_serializing_if = "Option::is_none")]
278    pub email: Option<String>,
279    /// Stripe customer id if exists(Required only for SaaS V1)
280    #[serde(
281        rename = "stripeCustomerId",
282        default,
283        skip_serializing_if = "Option::is_none"
284    )]
285    pub stripe_customer_id: Option<String>,
286    /// Required by the API.
287    #[serde(rename = "companyId")]
288    pub company_id: String,
289    /// Denotes if it is a saas v2 or v1 sub-account
290    /// Required by the API.
291    #[serde(rename = "isSaaSV2")]
292    pub is_saa_sv2: bool,
293    /// Agency subaccount used for payment provider integration(Required Only for SaaS V2)
294    #[serde(rename = "contactId", default, skip_serializing_if = "Option::is_none")]
295    pub contact_id: Option<String>,
296    /// Agency Subaccount ID
297    #[serde(
298        rename = "providerLocationId",
299        default,
300        skip_serializing_if = "Option::is_none"
301    )]
302    pub provider_location_id: Option<String>,
303    /// Description
304    #[serde(default, skip_serializing_if = "Option::is_none")]
305    pub description: Option<String>,
306    /// Required only while pre-configuring saas subscription
307    #[serde(
308        rename = "saasPlanId",
309        default,
310        skip_serializing_if = "Option::is_none"
311    )]
312    pub saas_plan_id: Option<String>,
313    /// Required only while pre-configuring saas subscription
314    #[serde(rename = "priceId", default, skip_serializing_if = "Option::is_none")]
315    pub price_id: Option<String>,
316}
317
318/// `EnableSaasResponseDto` from the GoHighLevel OpenAPI spec.
319#[derive(Debug, Clone, Default, Serialize, Deserialize)]
320pub struct EnableSaasResponseDto {
321    /// Response data from the enable SaaS operation
322    /// Required by the API.
323    pub data: serde_json::Value,
324}
325
326/// `GetSaasLocationsResponseDto` from the GoHighLevel OpenAPI spec.
327#[derive(Debug, Clone, Default, Serialize, Deserialize)]
328pub struct GetSaasLocationsResponseDto {
329    /// Array of SaaS locations
330    /// Required by the API.
331    #[serde(default, skip_serializing_if = "Vec::is_empty")]
332    pub locations: Vec<SaasLocationDto>,
333    /// Nested object; raw JSON (see the API docs for its fields).
334    /// Required by the API.
335    pub pagination: serde_json::Value,
336}
337
338/// `InternalServerErrorDTO` from the GoHighLevel OpenAPI spec.
339#[derive(Debug, Clone, Default, Serialize, Deserialize)]
340pub struct InternalServerErrorDTO {
341    /// Status code
342    #[serde(
343        rename = "statusCode",
344        default,
345        skip_serializing_if = "Option::is_none"
346    )]
347    pub status_code: Option<f64>,
348    /// Error message
349    #[serde(default, skip_serializing_if = "Option::is_none")]
350    pub message: Option<String>,
351}
352
353/// `LocationSubscriptionResponseDto` from the GoHighLevel OpenAPI spec.
354#[derive(Debug, Clone, Default, Serialize, Deserialize)]
355pub struct LocationSubscriptionResponseDto {
356    /// Location ID
357    /// Required by the API.
358    #[serde(rename = "locationId")]
359    pub location_id: String,
360    /// Indicates if the SaaS is V2
361    /// Required by the API.
362    #[serde(rename = "isSaaSV2")]
363    pub is_saa_sv2: bool,
364    /// Company ID
365    /// Required by the API.
366    #[serde(rename = "companyId")]
367    pub company_id: String,
368    /// SaaS mode
369    #[serde(rename = "saasMode", default, skip_serializing_if = "Option::is_none")]
370    pub saas_mode: Option<String>,
371    /// Subscription ID
372    #[serde(
373        rename = "subscriptionId",
374        default,
375        skip_serializing_if = "Option::is_none"
376    )]
377    pub subscription_id: Option<String>,
378    /// Customer ID
379    #[serde(
380        rename = "customerId",
381        default,
382        skip_serializing_if = "Option::is_none"
383    )]
384    pub customer_id: Option<String>,
385    /// Product ID
386    #[serde(rename = "productId", default, skip_serializing_if = "Option::is_none")]
387    pub product_id: Option<String>,
388    /// Price ID
389    #[serde(rename = "priceId", default, skip_serializing_if = "Option::is_none")]
390    pub price_id: Option<String>,
391    /// SaaS plan ID
392    #[serde(
393        rename = "saasPlanId",
394        default,
395        skip_serializing_if = "Option::is_none"
396    )]
397    pub saas_plan_id: Option<String>,
398    /// Subscription status
399    #[serde(
400        rename = "subscriptionStatus",
401        default,
402        skip_serializing_if = "Option::is_none"
403    )]
404    pub subscription_status: Option<String>,
405}
406
407/// `LocationWalletBalanceDto` from the GoHighLevel OpenAPI spec.
408#[derive(Debug, Clone, Default, Serialize, Deserialize)]
409pub struct LocationWalletBalanceDto {
410    /// Wallet Id
411    /// Required by the API.
412    #[serde(rename = "walletId")]
413    pub wallet_id: String,
414    /// Current wallet balance
415    /// Required by the API.
416    pub balance: f64,
417    /// Complimentary credits amount
418    /// Required by the API.
419    #[serde(rename = "complimentaryCredits")]
420    pub complimentary_credits: f64,
421}
422
423/// `PauseLocationDto` from the GoHighLevel OpenAPI spec.
424#[derive(Debug, Clone, Default, Serialize, Deserialize)]
425pub struct PauseLocationDto {
426    /// Paused
427    /// Required by the API.
428    pub paused: bool,
429    /// Company ID
430    /// Required by the API.
431    #[serde(rename = "companyId")]
432    pub company_id: String,
433}
434
435/// `ResourceNotFoundDTO` from the GoHighLevel OpenAPI spec.
436#[derive(Debug, Clone, Default, Serialize, Deserialize)]
437pub struct ResourceNotFoundDTO {
438    /// Status code
439    #[serde(
440        rename = "statusCode",
441        default,
442        skip_serializing_if = "Option::is_none"
443    )]
444    pub status_code: Option<f64>,
445    /// Error message
446    #[serde(default, skip_serializing_if = "Option::is_none")]
447    pub message: Option<String>,
448}
449
450/// `SaasLocationDto` from the GoHighLevel OpenAPI spec.
451#[derive(Debug, Clone, Default, Serialize, Deserialize)]
452pub struct SaasLocationDto {
453    /// Location ID
454    /// Required by the API.
455    #[serde(rename = "locationId")]
456    pub location_id: String,
457    /// Company ID
458    /// Required by the API.
459    #[serde(rename = "companyId")]
460    pub company_id: String,
461    /// SaaS mode
462    /// Required by the API.
463    #[serde(rename = "saasMode")]
464    pub saas_mode: String,
465    /// Subscription ID
466    /// Required by the API.
467    #[serde(rename = "subscriptionId")]
468    pub subscription_id: String,
469    /// Customer ID
470    #[serde(
471        rename = "customerId",
472        default,
473        skip_serializing_if = "Option::is_none"
474    )]
475    pub customer_id: Option<String>,
476    /// Name
477    #[serde(default, skip_serializing_if = "Option::is_none")]
478    pub name: Option<String>,
479    /// Email
480    #[serde(default, skip_serializing_if = "Option::is_none")]
481    pub email: Option<String>,
482    /// Provider location ID
483    #[serde(
484        rename = "providerLocationId",
485        default,
486        skip_serializing_if = "Option::is_none"
487    )]
488    pub provider_location_id: Option<String>,
489    /// Indicates if the SaaS is V2
490    #[serde(rename = "isSaaSV2", default, skip_serializing_if = "Option::is_none")]
491    pub is_saa_sv2: Option<bool>,
492    /// Subscription information
493    #[serde(
494        rename = "subscriptionInfo",
495        default,
496        skip_serializing_if = "Option::is_none"
497    )]
498    pub subscription_info: Option<serde_json::Value>,
499}
500
501/// `SaasPlanResponseDto` from the GoHighLevel OpenAPI spec.
502#[derive(Debug, Clone, Default, Serialize, Deserialize)]
503pub struct SaasPlanResponseDto {
504    /// Unique identifier for the SaaS plan
505    /// Required by the API.
506    #[serde(rename = "planId")]
507    pub plan_id: String,
508    /// Company ID associated with the SaaS plan
509    /// Required by the API.
510    #[serde(rename = "companyId")]
511    pub company_id: String,
512    /// Title of the SaaS plan
513    /// Required by the API.
514    pub title: String,
515    /// Description of the SaaS plan
516    /// Required by the API.
517    pub description: String,
518    /// Array of SaaS products included in the plan
519    /// Required by the API.
520    #[serde(
521        rename = "saasProducts",
522        default,
523        skip_serializing_if = "Vec::is_empty"
524    )]
525    pub saas_products: Vec<String>,
526    /// Array of add-ons included in the plan
527    #[serde(rename = "addOns", default, skip_serializing_if = "Vec::is_empty")]
528    pub add_ons: Vec<String>,
529    /// Level of the plan (0-4)
530    /// Required by the API.
531    #[serde(rename = "planLevel")]
532    pub plan_level: f64,
533    /// Trial period in days
534    /// Required by the API.
535    #[serde(rename = "trialPeriod")]
536    pub trial_period: f64,
537    /// Setup fee for the plan
538    #[serde(rename = "setupFee", default, skip_serializing_if = "Option::is_none")]
539    pub setup_fee: Option<f64>,
540    /// User limit for the plan
541    #[serde(rename = "userLimit", default, skip_serializing_if = "Option::is_none")]
542    pub user_limit: Option<f64>,
543    /// Contact limit for the plan
544    #[serde(
545        rename = "contactLimit",
546        default,
547        skip_serializing_if = "Option::is_none"
548    )]
549    pub contact_limit: Option<f64>,
550    /// Prices for the plan
551    /// Nested object; raw JSON (see the API docs for its fields).
552    /// Required by the API.
553    #[serde(default, skip_serializing_if = "Vec::is_empty")]
554    pub prices: Vec<serde_json::Value>,
555    /// Category ID for the plan
556    #[serde(
557        rename = "categoryId",
558        default,
559        skip_serializing_if = "Option::is_none"
560    )]
561    pub category_id: Option<String>,
562    /// Snapshot ID for the plan
563    #[serde(
564        rename = "snapshotId",
565        default,
566        skip_serializing_if = "Option::is_none"
567    )]
568    pub snapshot_id: Option<String>,
569    /// Provider location ID
570    #[serde(
571        rename = "providerLocationId",
572        default,
573        skip_serializing_if = "Option::is_none"
574    )]
575    pub provider_location_id: Option<String>,
576    /// Product ID for the plan
577    #[serde(rename = "productId", default, skip_serializing_if = "Option::is_none")]
578    pub product_id: Option<String>,
579    /// Indicates if this is a SaaS V2 plan
580    /// Required by the API.
581    #[serde(rename = "isSaaSV2")]
582    pub is_saa_sv2: bool,
583    /// Creation timestamp
584    /// Format: date-time (ISO-8601 string).
585    /// Required by the API.
586    #[serde(rename = "createdAt")]
587    pub created_at: String,
588    /// Last update timestamp
589    /// Format: date-time (ISO-8601 string).
590    /// Required by the API.
591    #[serde(rename = "updatedAt")]
592    pub updated_at: String,
593}
594
595/// `UnauthorizedDTO` from the GoHighLevel OpenAPI spec.
596#[derive(Debug, Clone, Default, Serialize, Deserialize)]
597pub struct UnauthorizedDTO {
598    /// Status code
599    #[serde(
600        rename = "statusCode",
601        default,
602        skip_serializing_if = "Option::is_none"
603    )]
604    pub status_code: Option<f64>,
605    /// Error message
606    #[serde(default, skip_serializing_if = "Option::is_none")]
607    pub message: Option<String>,
608    /// Error message
609    #[serde(default, skip_serializing_if = "Option::is_none")]
610    pub error: Option<String>,
611}
612
613/// `UpdateRebillingDto` from the GoHighLevel OpenAPI spec.
614#[derive(Debug, Clone, Default, Serialize, Deserialize)]
615pub struct UpdateRebillingDto {
616    /// The product to update rebilling for
617    /// Allowed values: `contentAI`, `workflow_premium_actions`, `workflow_ai`,
618    /// `conversationAI`, `EmailNotification`, `whatsApp`, `reviewsAI`, `VERIFIED_CALLER_ID`,
619    /// `WALLET_SALES_TAX`, `NOTIFICATION_SMS`, `EmailSmtp`, `EmailVerification`.
620    /// Required by the API.
621    pub product: String,
622    /// Array of location IDs to update rebilling for
623    /// Required by the API.
624    #[serde(rename = "locationIds", default, skip_serializing_if = "Vec::is_empty")]
625    pub location_ids: Vec<String>,
626    /// Configuration for rebilling settings
627    /// Nested object; raw JSON (see the API docs for its fields).
628    /// Required by the API.
629    pub config: serde_json::Value,
630}
631
632/// `UpdateRebillingResponseDto` from the GoHighLevel OpenAPI spec.
633#[derive(Debug, Clone, Default, Serialize, Deserialize)]
634pub struct UpdateRebillingResponseDto {
635    /// Indicates if the rebilling update was successful
636    /// Required by the API.
637    pub success: bool,
638}
639
640/// `UpdateSubscriptionDto` from the GoHighLevel OpenAPI spec.
641#[derive(Debug, Clone, Default, Serialize, Deserialize)]
642pub struct UpdateSubscriptionDto {
643    /// Subscription ID
644    /// Required by the API.
645    #[serde(rename = "subscriptionId")]
646    pub subscription_id: String,
647    /// Customer ID
648    /// Required by the API.
649    #[serde(rename = "customerId")]
650    pub customer_id: String,
651    /// Company ID
652    /// Required by the API.
653    #[serde(rename = "companyId")]
654    pub company_id: String,
655}