thunkmetrc_wrapper/
lib.rs

1pub use thunkmetrc_client::MetrcClient;
2use serde_json::Value;
3use serde::{Deserialize, Serialize};
4use std::error::Error;
5use std::sync::Arc;
6mod ratelimiter;
7use ratelimiter::{MetrcRateLimiter, RateLimiterConfig};
8
9pub struct MetrcWrapper {
10    client: MetrcClient,
11    rate_limiter: Arc<MetrcRateLimiter>,
12}
13
14impl MetrcWrapper {
15    pub fn new(client: MetrcClient) -> Self {
16        MetrcWrapper {
17            client,
18            rate_limiter: Arc::new(MetrcRateLimiter::new(Some(RateLimiterConfig::default()))),
19        }
20    }
21
22    pub fn new_with_config(client: MetrcClient, config: RateLimiterConfig) -> Self {
23        MetrcWrapper {
24            client,
25            rate_limiter: Arc::new(MetrcRateLimiter::new(Some(config))),
26        }
27    }
28
29    /// POST CreateDriver V2
30    /// Creates new driver records for a Facility.
31    /// 
32    ///   Permissions Required:
33    ///   - Manage Transporters
34    ///
35    pub async fn transporters_create_driver_v2(&self, license_number: Option<String>, body: Option<&Vec<TransportersCreateDriverV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
36        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
37        let client = self.client.clone();
38        let body_val = body_val.clone();
39        self.rate_limiter.execute(None, false, move || {
40            let client = client.clone();
41            let license_number = license_number.clone();
42            let body_val = body_val.clone();
43            async move { client.transporters_create_driver_v2(license_number, body_val.as_ref()).await }
44        }).await
45    }
46
47    /// POST CreateVehicle V2
48    /// Creates new vehicle records for a Facility.
49    /// 
50    ///   Permissions Required:
51    ///   - Manage Transporters
52    ///
53    pub async fn transporters_create_vehicle_v2(&self, license_number: Option<String>, body: Option<&Vec<TransportersCreateVehicleV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
54        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
55        let client = self.client.clone();
56        let body_val = body_val.clone();
57        self.rate_limiter.execute(None, false, move || {
58            let client = client.clone();
59            let license_number = license_number.clone();
60            let body_val = body_val.clone();
61            async move { client.transporters_create_vehicle_v2(license_number, body_val.as_ref()).await }
62        }).await
63    }
64
65    /// DELETE DeleteDriver V2
66    /// Archives a Driver record for a Facility.  Please note: The {id} parameter above represents a Driver Id.
67    /// 
68    ///   Permissions Required:
69    ///   - Manage Transporters
70    ///
71    pub async fn transporters_delete_driver_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
72        let id = id.to_string();
73        let client = self.client.clone();
74        let body = body.cloned();
75        self.rate_limiter.execute(None, false, move || {
76            let client = client.clone();
77            let id = id.clone();
78            let license_number = license_number.clone();
79            let body = body.clone();
80            async move { client.transporters_delete_driver_v2(&id, license_number, body.as_ref()).await }
81        }).await
82    }
83
84    /// DELETE DeleteVehicle V2
85    /// Archives a Vehicle for a facility.  Please note: The {id} parameter above represents a Vehicle Id.
86    /// 
87    ///   Permissions Required:
88    ///   - Manage Transporters
89    ///
90    pub async fn transporters_delete_vehicle_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
91        let id = id.to_string();
92        let client = self.client.clone();
93        let body = body.cloned();
94        self.rate_limiter.execute(None, false, move || {
95            let client = client.clone();
96            let id = id.clone();
97            let license_number = license_number.clone();
98            let body = body.clone();
99            async move { client.transporters_delete_vehicle_v2(&id, license_number, body.as_ref()).await }
100        }).await
101    }
102
103    /// GET GetDriver V2
104    /// Retrieves a Driver by its Id, with an optional license number. Please note: The {id} parameter above represents a Driver Id.
105    /// 
106    ///   Permissions Required:
107    ///   - Transporters
108    ///
109    pub async fn transporters_get_driver_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
110        let id = id.to_string();
111        let client = self.client.clone();
112        let body = body.cloned();
113        self.rate_limiter.execute(None, true, move || {
114            let client = client.clone();
115            let id = id.clone();
116            let license_number = license_number.clone();
117            let body = body.clone();
118            async move { client.transporters_get_driver_v2(&id, license_number, body.as_ref()).await }
119        }).await
120    }
121
122    /// GET GetDrivers V2
123    /// Retrieves a list of drivers for a Facility.
124    /// 
125    ///   Permissions Required:
126    ///   - Transporters
127    ///
128    pub async fn transporters_get_drivers_v2(&self, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
129        let client = self.client.clone();
130        let body = body.cloned();
131        self.rate_limiter.execute(None, true, move || {
132            let client = client.clone();
133            let license_number = license_number.clone();
134            let page_number = page_number.clone();
135            let page_size = page_size.clone();
136            let body = body.clone();
137            async move { client.transporters_get_drivers_v2(license_number, page_number, page_size, body.as_ref()).await }
138        }).await
139    }
140
141    /// GET GetVehicle V2
142    /// Retrieves a Vehicle by its Id, with an optional license number. Please note: The {id} parameter above represents a Vehicle Id.
143    /// 
144    ///   Permissions Required:
145    ///   - Transporters
146    ///
147    pub async fn transporters_get_vehicle_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
148        let id = id.to_string();
149        let client = self.client.clone();
150        let body = body.cloned();
151        self.rate_limiter.execute(None, true, move || {
152            let client = client.clone();
153            let id = id.clone();
154            let license_number = license_number.clone();
155            let body = body.clone();
156            async move { client.transporters_get_vehicle_v2(&id, license_number, body.as_ref()).await }
157        }).await
158    }
159
160    /// GET GetVehicles V2
161    /// Retrieves a list of vehicles for a Facility.
162    /// 
163    ///   Permissions Required:
164    ///   - Transporters
165    ///
166    pub async fn transporters_get_vehicles_v2(&self, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
167        let client = self.client.clone();
168        let body = body.cloned();
169        self.rate_limiter.execute(None, true, move || {
170            let client = client.clone();
171            let license_number = license_number.clone();
172            let page_number = page_number.clone();
173            let page_size = page_size.clone();
174            let body = body.clone();
175            async move { client.transporters_get_vehicles_v2(license_number, page_number, page_size, body.as_ref()).await }
176        }).await
177    }
178
179    /// PUT UpdateDriver V2
180    /// Updates existing driver records for a Facility.
181    /// 
182    ///   Permissions Required:
183    ///   - Manage Transporters
184    ///
185    pub async fn transporters_update_driver_v2(&self, license_number: Option<String>, body: Option<&Vec<TransportersUpdateDriverV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
186        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
187        let client = self.client.clone();
188        let body_val = body_val.clone();
189        self.rate_limiter.execute(None, false, move || {
190            let client = client.clone();
191            let license_number = license_number.clone();
192            let body_val = body_val.clone();
193            async move { client.transporters_update_driver_v2(license_number, body_val.as_ref()).await }
194        }).await
195    }
196
197    /// PUT UpdateVehicle V2
198    /// Updates existing vehicle records for a facility.
199    /// 
200    ///   Permissions Required:
201    ///   - Manage Transporters
202    ///
203    pub async fn transporters_update_vehicle_v2(&self, license_number: Option<String>, body: Option<&Vec<TransportersUpdateVehicleV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
204        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
205        let client = self.client.clone();
206        let body_val = body_val.clone();
207        self.rate_limiter.execute(None, false, move || {
208            let client = client.clone();
209            let license_number = license_number.clone();
210            let body_val = body_val.clone();
211            async move { client.transporters_update_vehicle_v2(license_number, body_val.as_ref()).await }
212        }).await
213    }
214
215    /// POST Create V1
216    /// Permissions Required:
217    ///   - Manage Locations
218    ///
219    pub async fn locations_create_v1(&self, license_number: Option<String>, body: Option<&Vec<LocationsCreateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
220        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
221        let client = self.client.clone();
222        let body_val = body_val.clone();
223        self.rate_limiter.execute(None, false, move || {
224            let client = client.clone();
225            let license_number = license_number.clone();
226            let body_val = body_val.clone();
227            async move { client.locations_create_v1(license_number, body_val.as_ref()).await }
228        }).await
229    }
230
231    /// POST Create V2
232    /// Creates new locations for a specified Facility.
233    /// 
234    ///   Permissions Required:
235    ///   - Manage Locations
236    ///
237    pub async fn locations_create_v2(&self, license_number: Option<String>, body: Option<&Vec<LocationsCreateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
238        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
239        let client = self.client.clone();
240        let body_val = body_val.clone();
241        self.rate_limiter.execute(None, false, move || {
242            let client = client.clone();
243            let license_number = license_number.clone();
244            let body_val = body_val.clone();
245            async move { client.locations_create_v2(license_number, body_val.as_ref()).await }
246        }).await
247    }
248
249    /// POST CreateUpdate V1
250    /// Permissions Required:
251    ///   - Manage Locations
252    ///
253    pub async fn locations_create_update_v1(&self, license_number: Option<String>, body: Option<&Vec<LocationsCreateUpdateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
254        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
255        let client = self.client.clone();
256        let body_val = body_val.clone();
257        self.rate_limiter.execute(None, false, move || {
258            let client = client.clone();
259            let license_number = license_number.clone();
260            let body_val = body_val.clone();
261            async move { client.locations_create_update_v1(license_number, body_val.as_ref()).await }
262        }).await
263    }
264
265    /// DELETE Delete V1
266    /// Permissions Required:
267    ///   - Manage Locations
268    ///
269    pub async fn locations_delete_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
270        let id = id.to_string();
271        let client = self.client.clone();
272        let body = body.cloned();
273        self.rate_limiter.execute(None, false, move || {
274            let client = client.clone();
275            let id = id.clone();
276            let license_number = license_number.clone();
277            let body = body.clone();
278            async move { client.locations_delete_v1(&id, license_number, body.as_ref()).await }
279        }).await
280    }
281
282    /// DELETE Delete V2
283    /// Archives a specified Location, identified by its Id, for a Facility.
284    /// 
285    ///   Permissions Required:
286    ///   - Manage Locations
287    ///
288    pub async fn locations_delete_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
289        let id = id.to_string();
290        let client = self.client.clone();
291        let body = body.cloned();
292        self.rate_limiter.execute(None, false, move || {
293            let client = client.clone();
294            let id = id.clone();
295            let license_number = license_number.clone();
296            let body = body.clone();
297            async move { client.locations_delete_v2(&id, license_number, body.as_ref()).await }
298        }).await
299    }
300
301    /// GET Get V1
302    /// Permissions Required:
303    ///   - Manage Locations
304    ///
305    pub async fn locations_get_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
306        let id = id.to_string();
307        let client = self.client.clone();
308        let body = body.cloned();
309        self.rate_limiter.execute(None, true, move || {
310            let client = client.clone();
311            let id = id.clone();
312            let license_number = license_number.clone();
313            let body = body.clone();
314            async move { client.locations_get_v1(&id, license_number, body.as_ref()).await }
315        }).await
316    }
317
318    /// GET Get V2
319    /// Retrieves a Location by its Id.
320    /// 
321    ///   Permissions Required:
322    ///   - Manage Locations
323    ///
324    pub async fn locations_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
325        let id = id.to_string();
326        let client = self.client.clone();
327        let body = body.cloned();
328        self.rate_limiter.execute(None, true, move || {
329            let client = client.clone();
330            let id = id.clone();
331            let license_number = license_number.clone();
332            let body = body.clone();
333            async move { client.locations_get_v2(&id, license_number, body.as_ref()).await }
334        }).await
335    }
336
337    /// GET GetActive V1
338    /// Permissions Required:
339    ///   - Manage Locations
340    ///
341    pub async fn locations_get_active_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
342        let client = self.client.clone();
343        let body = body.cloned();
344        self.rate_limiter.execute(None, true, move || {
345            let client = client.clone();
346            let license_number = license_number.clone();
347            let body = body.clone();
348            async move { client.locations_get_active_v1(license_number, body.as_ref()).await }
349        }).await
350    }
351
352    /// GET GetActive V2
353    /// Retrieves a list of active locations for a specified Facility.
354    /// 
355    ///   Permissions Required:
356    ///   - Manage Locations
357    ///
358    pub async fn locations_get_active_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
359        let client = self.client.clone();
360        let body = body.cloned();
361        self.rate_limiter.execute(None, true, move || {
362            let client = client.clone();
363            let last_modified_end = last_modified_end.clone();
364            let last_modified_start = last_modified_start.clone();
365            let license_number = license_number.clone();
366            let page_number = page_number.clone();
367            let page_size = page_size.clone();
368            let body = body.clone();
369            async move { client.locations_get_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
370        }).await
371    }
372
373    /// GET GetInactive V2
374    /// Retrieves a list of inactive locations for a specified Facility.
375    /// 
376    ///   Permissions Required:
377    ///   - Manage Locations
378    ///
379    pub async fn locations_get_inactive_v2(&self, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
380        let client = self.client.clone();
381        let body = body.cloned();
382        self.rate_limiter.execute(None, true, move || {
383            let client = client.clone();
384            let license_number = license_number.clone();
385            let page_number = page_number.clone();
386            let page_size = page_size.clone();
387            let body = body.clone();
388            async move { client.locations_get_inactive_v2(license_number, page_number, page_size, body.as_ref()).await }
389        }).await
390    }
391
392    /// GET GetTypes V1
393    /// Permissions Required:
394    ///   - Manage Locations
395    ///
396    pub async fn locations_get_types_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
397        let client = self.client.clone();
398        let body = body.cloned();
399        self.rate_limiter.execute(None, true, move || {
400            let client = client.clone();
401            let license_number = license_number.clone();
402            let body = body.clone();
403            async move { client.locations_get_types_v1(license_number, body.as_ref()).await }
404        }).await
405    }
406
407    /// GET GetTypes V2
408    /// Retrieves a list of active location types for a specified Facility.
409    /// 
410    ///   Permissions Required:
411    ///   - Manage Locations
412    ///
413    pub async fn locations_get_types_v2(&self, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
414        let client = self.client.clone();
415        let body = body.cloned();
416        self.rate_limiter.execute(None, true, move || {
417            let client = client.clone();
418            let license_number = license_number.clone();
419            let page_number = page_number.clone();
420            let page_size = page_size.clone();
421            let body = body.clone();
422            async move { client.locations_get_types_v2(license_number, page_number, page_size, body.as_ref()).await }
423        }).await
424    }
425
426    /// PUT Update V2
427    /// Updates existing locations for a specified Facility.
428    /// 
429    ///   Permissions Required:
430    ///   - Manage Locations
431    ///
432    pub async fn locations_update_v2(&self, license_number: Option<String>, body: Option<&Vec<LocationsUpdateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
433        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
434        let client = self.client.clone();
435        let body_val = body_val.clone();
436        self.rate_limiter.execute(None, false, move || {
437            let client = client.clone();
438            let license_number = license_number.clone();
439            let body_val = body_val.clone();
440            async move { client.locations_update_v2(license_number, body_val.as_ref()).await }
441        }).await
442    }
443
444    /// POST Create V1
445    /// Permissions Required:
446    ///   - View Packages
447    ///   - Create/Submit/Discontinue Packages
448    ///
449    pub async fn packages_create_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
450        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
451        let client = self.client.clone();
452        let body_val = body_val.clone();
453        self.rate_limiter.execute(None, false, move || {
454            let client = client.clone();
455            let license_number = license_number.clone();
456            let body_val = body_val.clone();
457            async move { client.packages_create_v1(license_number, body_val.as_ref()).await }
458        }).await
459    }
460
461    /// POST Create V2
462    /// Creates new packages for a specified Facility.
463    /// 
464    ///   Permissions Required:
465    ///   - View Packages
466    ///   - Create/Submit/Discontinue Packages
467    ///
468    pub async fn packages_create_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
469        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
470        let client = self.client.clone();
471        let body_val = body_val.clone();
472        self.rate_limiter.execute(None, false, move || {
473            let client = client.clone();
474            let license_number = license_number.clone();
475            let body_val = body_val.clone();
476            async move { client.packages_create_v2(license_number, body_val.as_ref()).await }
477        }).await
478    }
479
480    /// POST CreateAdjust V1
481    /// Permissions Required:
482    ///   - View Packages
483    ///   - Manage Packages Inventory
484    ///
485    pub async fn packages_create_adjust_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateAdjustV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
486        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
487        let client = self.client.clone();
488        let body_val = body_val.clone();
489        self.rate_limiter.execute(None, false, move || {
490            let client = client.clone();
491            let license_number = license_number.clone();
492            let body_val = body_val.clone();
493            async move { client.packages_create_adjust_v1(license_number, body_val.as_ref()).await }
494        }).await
495    }
496
497    /// POST CreateAdjust V2
498    /// Records a list of adjustments for packages at a specific Facility.
499    /// 
500    ///   Permissions Required:
501    ///   - View Packages
502    ///   - Manage Packages Inventory
503    ///
504    pub async fn packages_create_adjust_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateAdjustV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
505        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
506        let client = self.client.clone();
507        let body_val = body_val.clone();
508        self.rate_limiter.execute(None, false, move || {
509            let client = client.clone();
510            let license_number = license_number.clone();
511            let body_val = body_val.clone();
512            async move { client.packages_create_adjust_v2(license_number, body_val.as_ref()).await }
513        }).await
514    }
515
516    /// POST CreateChangeItem V1
517    /// Permissions Required:
518    ///   - View Packages
519    ///   - Create/Submit/Discontinue Packages
520    ///
521    pub async fn packages_create_change_item_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateChangeItemV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
522        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
523        let client = self.client.clone();
524        let body_val = body_val.clone();
525        self.rate_limiter.execute(None, false, move || {
526            let client = client.clone();
527            let license_number = license_number.clone();
528            let body_val = body_val.clone();
529            async move { client.packages_create_change_item_v1(license_number, body_val.as_ref()).await }
530        }).await
531    }
532
533    /// POST CreateChangeLocation V1
534    /// Permissions Required:
535    ///   - View Packages
536    ///   - Create/Submit/Discontinue Packages
537    ///
538    pub async fn packages_create_change_location_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateChangeLocationV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
539        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
540        let client = self.client.clone();
541        let body_val = body_val.clone();
542        self.rate_limiter.execute(None, false, move || {
543            let client = client.clone();
544            let license_number = license_number.clone();
545            let body_val = body_val.clone();
546            async move { client.packages_create_change_location_v1(license_number, body_val.as_ref()).await }
547        }).await
548    }
549
550    /// POST CreateFinish V1
551    /// Permissions Required:
552    ///   - View Packages
553    ///   - Manage Packages Inventory
554    ///
555    pub async fn packages_create_finish_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateFinishV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
556        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
557        let client = self.client.clone();
558        let body_val = body_val.clone();
559        self.rate_limiter.execute(None, false, move || {
560            let client = client.clone();
561            let license_number = license_number.clone();
562            let body_val = body_val.clone();
563            async move { client.packages_create_finish_v1(license_number, body_val.as_ref()).await }
564        }).await
565    }
566
567    /// POST CreatePlantings V1
568    /// Permissions Required:
569    ///   - View Immature Plants
570    ///   - Manage Immature Plants
571    ///   - View Packages
572    ///   - Manage Packages Inventory
573    ///
574    pub async fn packages_create_plantings_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreatePlantingsV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
575        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
576        let client = self.client.clone();
577        let body_val = body_val.clone();
578        self.rate_limiter.execute(None, false, move || {
579            let client = client.clone();
580            let license_number = license_number.clone();
581            let body_val = body_val.clone();
582            async move { client.packages_create_plantings_v1(license_number, body_val.as_ref()).await }
583        }).await
584    }
585
586    /// POST CreatePlantings V2
587    /// Creates new plantings from packages for a specified Facility.
588    /// 
589    ///   Permissions Required:
590    ///   - View Immature Plants
591    ///   - Manage Immature Plants
592    ///   - View Packages
593    ///   - Manage Packages Inventory
594    ///
595    pub async fn packages_create_plantings_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreatePlantingsV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
596        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
597        let client = self.client.clone();
598        let body_val = body_val.clone();
599        self.rate_limiter.execute(None, false, move || {
600            let client = client.clone();
601            let license_number = license_number.clone();
602            let body_val = body_val.clone();
603            async move { client.packages_create_plantings_v2(license_number, body_val.as_ref()).await }
604        }).await
605    }
606
607    /// POST CreateRemediate V1
608    /// Permissions Required:
609    ///   - View Packages
610    ///   - Manage Packages Inventory
611    ///
612    pub async fn packages_create_remediate_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateRemediateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
613        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
614        let client = self.client.clone();
615        let body_val = body_val.clone();
616        self.rate_limiter.execute(None, false, move || {
617            let client = client.clone();
618            let license_number = license_number.clone();
619            let body_val = body_val.clone();
620            async move { client.packages_create_remediate_v1(license_number, body_val.as_ref()).await }
621        }).await
622    }
623
624    /// POST CreateTesting V1
625    /// Permissions Required:
626    ///   - View Packages
627    ///   - Create/Submit/Discontinue Packages
628    ///
629    pub async fn packages_create_testing_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateTestingV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
630        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
631        let client = self.client.clone();
632        let body_val = body_val.clone();
633        self.rate_limiter.execute(None, false, move || {
634            let client = client.clone();
635            let license_number = license_number.clone();
636            let body_val = body_val.clone();
637            async move { client.packages_create_testing_v1(license_number, body_val.as_ref()).await }
638        }).await
639    }
640
641    /// POST CreateTesting V2
642    /// Creates new packages for testing for a specified Facility.
643    /// 
644    ///   Permissions Required:
645    ///   - View Packages
646    ///   - Create/Submit/Discontinue Packages
647    ///
648    pub async fn packages_create_testing_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateTestingV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
649        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
650        let client = self.client.clone();
651        let body_val = body_val.clone();
652        self.rate_limiter.execute(None, false, move || {
653            let client = client.clone();
654            let license_number = license_number.clone();
655            let body_val = body_val.clone();
656            async move { client.packages_create_testing_v2(license_number, body_val.as_ref()).await }
657        }).await
658    }
659
660    /// POST CreateUnfinish V1
661    /// Permissions Required:
662    ///   - View Packages
663    ///   - Manage Packages Inventory
664    ///
665    pub async fn packages_create_unfinish_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateUnfinishV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
666        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
667        let client = self.client.clone();
668        let body_val = body_val.clone();
669        self.rate_limiter.execute(None, false, move || {
670            let client = client.clone();
671            let license_number = license_number.clone();
672            let body_val = body_val.clone();
673            async move { client.packages_create_unfinish_v1(license_number, body_val.as_ref()).await }
674        }).await
675    }
676
677    /// DELETE Delete V2
678    /// Discontinues a Package at a specific Facility.
679    /// 
680    ///   Permissions Required:
681    ///   - View Packages
682    ///   - Create/Submit/Discontinue Packages
683    ///
684    pub async fn packages_delete_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
685        let id = id.to_string();
686        let client = self.client.clone();
687        let body = body.cloned();
688        self.rate_limiter.execute(None, false, move || {
689            let client = client.clone();
690            let id = id.clone();
691            let license_number = license_number.clone();
692            let body = body.clone();
693            async move { client.packages_delete_v2(&id, license_number, body.as_ref()).await }
694        }).await
695    }
696
697    /// GET Get V1
698    /// Permissions Required:
699    ///   - View Packages
700    ///
701    pub async fn packages_get_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
702        let id = id.to_string();
703        let client = self.client.clone();
704        let body = body.cloned();
705        self.rate_limiter.execute(None, true, move || {
706            let client = client.clone();
707            let id = id.clone();
708            let license_number = license_number.clone();
709            let body = body.clone();
710            async move { client.packages_get_v1(&id, license_number, body.as_ref()).await }
711        }).await
712    }
713
714    /// GET Get V2
715    /// Retrieves a Package by its Id.
716    /// 
717    ///   Permissions Required:
718    ///   - View Packages
719    ///
720    pub async fn packages_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
721        let id = id.to_string();
722        let client = self.client.clone();
723        let body = body.cloned();
724        self.rate_limiter.execute(None, true, move || {
725            let client = client.clone();
726            let id = id.clone();
727            let license_number = license_number.clone();
728            let body = body.clone();
729            async move { client.packages_get_v2(&id, license_number, body.as_ref()).await }
730        }).await
731    }
732
733    /// GET GetActive V1
734    /// Permissions Required:
735    ///   - View Packages
736    ///
737    pub async fn packages_get_active_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
738        let client = self.client.clone();
739        let body = body.cloned();
740        self.rate_limiter.execute(None, true, move || {
741            let client = client.clone();
742            let last_modified_end = last_modified_end.clone();
743            let last_modified_start = last_modified_start.clone();
744            let license_number = license_number.clone();
745            let body = body.clone();
746            async move { client.packages_get_active_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
747        }).await
748    }
749
750    /// GET GetActive V2
751    /// Retrieves a list of active packages for a specified Facility.
752    /// 
753    ///   Permissions Required:
754    ///   - View Packages
755    ///
756    pub async fn packages_get_active_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
757        let client = self.client.clone();
758        let body = body.cloned();
759        self.rate_limiter.execute(None, true, move || {
760            let client = client.clone();
761            let last_modified_end = last_modified_end.clone();
762            let last_modified_start = last_modified_start.clone();
763            let license_number = license_number.clone();
764            let page_number = page_number.clone();
765            let page_size = page_size.clone();
766            let body = body.clone();
767            async move { client.packages_get_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
768        }).await
769    }
770
771    /// GET GetAdjustReasons V1
772    /// Permissions Required:
773    ///   - None
774    ///
775    pub async fn packages_get_adjust_reasons_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
776        let client = self.client.clone();
777        let body = body.cloned();
778        self.rate_limiter.execute(None, true, move || {
779            let client = client.clone();
780            let license_number = license_number.clone();
781            let body = body.clone();
782            async move { client.packages_get_adjust_reasons_v1(license_number, body.as_ref()).await }
783        }).await
784    }
785
786    /// GET GetAdjustReasons V2
787    /// Retrieves a list of adjustment reasons for packages at a specified Facility.
788    /// 
789    ///   Permissions Required:
790    ///   - None
791    ///
792    pub async fn packages_get_adjust_reasons_v2(&self, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
793        let client = self.client.clone();
794        let body = body.cloned();
795        self.rate_limiter.execute(None, true, move || {
796            let client = client.clone();
797            let license_number = license_number.clone();
798            let page_number = page_number.clone();
799            let page_size = page_size.clone();
800            let body = body.clone();
801            async move { client.packages_get_adjust_reasons_v2(license_number, page_number, page_size, body.as_ref()).await }
802        }).await
803    }
804
805    /// GET GetByLabel V1
806    /// Permissions Required:
807    ///   - View Packages
808    ///
809    pub async fn packages_get_by_label_v1(&self, label: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
810        let label = label.to_string();
811        let client = self.client.clone();
812        let body = body.cloned();
813        self.rate_limiter.execute(None, true, move || {
814            let client = client.clone();
815            let label = label.clone();
816            let license_number = license_number.clone();
817            let body = body.clone();
818            async move { client.packages_get_by_label_v1(&label, license_number, body.as_ref()).await }
819        }).await
820    }
821
822    /// GET GetByLabel V2
823    /// Retrieves a Package by its label.
824    /// 
825    ///   Permissions Required:
826    ///   - View Packages
827    ///
828    pub async fn packages_get_by_label_v2(&self, label: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
829        let label = label.to_string();
830        let client = self.client.clone();
831        let body = body.cloned();
832        self.rate_limiter.execute(None, true, move || {
833            let client = client.clone();
834            let label = label.clone();
835            let license_number = license_number.clone();
836            let body = body.clone();
837            async move { client.packages_get_by_label_v2(&label, license_number, body.as_ref()).await }
838        }).await
839    }
840
841    /// GET GetInactive V1
842    /// Permissions Required:
843    ///   - View Packages
844    ///
845    pub async fn packages_get_inactive_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
846        let client = self.client.clone();
847        let body = body.cloned();
848        self.rate_limiter.execute(None, true, move || {
849            let client = client.clone();
850            let last_modified_end = last_modified_end.clone();
851            let last_modified_start = last_modified_start.clone();
852            let license_number = license_number.clone();
853            let body = body.clone();
854            async move { client.packages_get_inactive_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
855        }).await
856    }
857
858    /// GET GetInactive V2
859    /// Retrieves a list of inactive packages for a specified Facility.
860    /// 
861    ///   Permissions Required:
862    ///   - View Packages
863    ///
864    pub async fn packages_get_inactive_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
865        let client = self.client.clone();
866        let body = body.cloned();
867        self.rate_limiter.execute(None, true, move || {
868            let client = client.clone();
869            let last_modified_end = last_modified_end.clone();
870            let last_modified_start = last_modified_start.clone();
871            let license_number = license_number.clone();
872            let page_number = page_number.clone();
873            let page_size = page_size.clone();
874            let body = body.clone();
875            async move { client.packages_get_inactive_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
876        }).await
877    }
878
879    /// GET GetIntransit V2
880    /// Retrieves a list of packages in transit for a specified Facility.
881    /// 
882    ///   Permissions Required:
883    ///   - View Packages
884    ///
885    pub async fn packages_get_intransit_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
886        let client = self.client.clone();
887        let body = body.cloned();
888        self.rate_limiter.execute(None, true, move || {
889            let client = client.clone();
890            let last_modified_end = last_modified_end.clone();
891            let last_modified_start = last_modified_start.clone();
892            let license_number = license_number.clone();
893            let page_number = page_number.clone();
894            let page_size = page_size.clone();
895            let body = body.clone();
896            async move { client.packages_get_intransit_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
897        }).await
898    }
899
900    /// GET GetLabsamples V2
901    /// Retrieves a list of lab sample packages created or sent for testing for a specified Facility.
902    /// 
903    ///   Permissions Required:
904    ///   - View Packages
905    ///
906    pub async fn packages_get_labsamples_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
907        let client = self.client.clone();
908        let body = body.cloned();
909        self.rate_limiter.execute(None, true, move || {
910            let client = client.clone();
911            let last_modified_end = last_modified_end.clone();
912            let last_modified_start = last_modified_start.clone();
913            let license_number = license_number.clone();
914            let page_number = page_number.clone();
915            let page_size = page_size.clone();
916            let body = body.clone();
917            async move { client.packages_get_labsamples_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
918        }).await
919    }
920
921    /// GET GetOnhold V1
922    /// Permissions Required:
923    ///   - View Packages
924    ///
925    pub async fn packages_get_onhold_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
926        let client = self.client.clone();
927        let body = body.cloned();
928        self.rate_limiter.execute(None, true, move || {
929            let client = client.clone();
930            let last_modified_end = last_modified_end.clone();
931            let last_modified_start = last_modified_start.clone();
932            let license_number = license_number.clone();
933            let body = body.clone();
934            async move { client.packages_get_onhold_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
935        }).await
936    }
937
938    /// GET GetOnhold V2
939    /// Retrieves a list of packages on hold for a specified Facility.
940    /// 
941    ///   Permissions Required:
942    ///   - View Packages
943    ///
944    pub async fn packages_get_onhold_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
945        let client = self.client.clone();
946        let body = body.cloned();
947        self.rate_limiter.execute(None, true, move || {
948            let client = client.clone();
949            let last_modified_end = last_modified_end.clone();
950            let last_modified_start = last_modified_start.clone();
951            let license_number = license_number.clone();
952            let page_number = page_number.clone();
953            let page_size = page_size.clone();
954            let body = body.clone();
955            async move { client.packages_get_onhold_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
956        }).await
957    }
958
959    /// GET GetSourceHarvest V2
960    /// Retrieves the source harvests for a Package by its Id.
961    /// 
962    ///   Permissions Required:
963    ///   - View Package Source Harvests
964    ///
965    pub async fn packages_get_source_harvest_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
966        let id = id.to_string();
967        let client = self.client.clone();
968        let body = body.cloned();
969        self.rate_limiter.execute(None, true, move || {
970            let client = client.clone();
971            let id = id.clone();
972            let license_number = license_number.clone();
973            let body = body.clone();
974            async move { client.packages_get_source_harvest_v2(&id, license_number, body.as_ref()).await }
975        }).await
976    }
977
978    /// GET GetTransferred V2
979    /// Retrieves a list of transferred packages for a specific Facility.
980    /// 
981    ///   Permissions Required:
982    ///   - View Packages
983    ///
984    pub async fn packages_get_transferred_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
985        let client = self.client.clone();
986        let body = body.cloned();
987        self.rate_limiter.execute(None, true, move || {
988            let client = client.clone();
989            let last_modified_end = last_modified_end.clone();
990            let last_modified_start = last_modified_start.clone();
991            let license_number = license_number.clone();
992            let page_number = page_number.clone();
993            let page_size = page_size.clone();
994            let body = body.clone();
995            async move { client.packages_get_transferred_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
996        }).await
997    }
998
999    /// GET GetTypes V1
1000    /// Permissions Required:
1001    ///   - None
1002    ///
1003    pub async fn packages_get_types_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1004        let client = self.client.clone();
1005        let body = body.cloned();
1006        self.rate_limiter.execute(None, true, move || {
1007            let client = client.clone();
1008            let no = no.clone();
1009            let body = body.clone();
1010            async move { client.packages_get_types_v1(no, body.as_ref()).await }
1011        }).await
1012    }
1013
1014    /// GET GetTypes V2
1015    /// Retrieves a list of available Package types.
1016    /// 
1017    ///   Permissions Required:
1018    ///   - None
1019    ///
1020    pub async fn packages_get_types_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1021        let client = self.client.clone();
1022        let body = body.cloned();
1023        self.rate_limiter.execute(None, true, move || {
1024            let client = client.clone();
1025            let no = no.clone();
1026            let body = body.clone();
1027            async move { client.packages_get_types_v2(no, body.as_ref()).await }
1028        }).await
1029    }
1030
1031    /// PUT UpdateAdjust V2
1032    /// Set the final quantity for a Package.
1033    /// 
1034    ///   Permissions Required:
1035    ///   - View Packages
1036    ///   - Manage Packages Inventory
1037    ///
1038    pub async fn packages_update_adjust_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateAdjustV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1039        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1040        let client = self.client.clone();
1041        let body_val = body_val.clone();
1042        self.rate_limiter.execute(None, false, move || {
1043            let client = client.clone();
1044            let license_number = license_number.clone();
1045            let body_val = body_val.clone();
1046            async move { client.packages_update_adjust_v2(license_number, body_val.as_ref()).await }
1047        }).await
1048    }
1049
1050    /// PUT UpdateChangeNote V1
1051    /// Permissions Required:
1052    ///   - View Packages
1053    ///   - Manage Packages Inventory
1054    ///   - Manage Package Notes
1055    ///
1056    pub async fn packages_update_change_note_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateChangeNoteV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1057        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1058        let client = self.client.clone();
1059        let body_val = body_val.clone();
1060        self.rate_limiter.execute(None, false, move || {
1061            let client = client.clone();
1062            let license_number = license_number.clone();
1063            let body_val = body_val.clone();
1064            async move { client.packages_update_change_note_v1(license_number, body_val.as_ref()).await }
1065        }).await
1066    }
1067
1068    /// PUT UpdateDecontaminate V2
1069    /// Updates the Product decontaminate information for a list of packages at a specific Facility.
1070    /// 
1071    ///   Permissions Required:
1072    ///   - View Packages
1073    ///   - Manage Packages Inventory
1074    ///
1075    pub async fn packages_update_decontaminate_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateDecontaminateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1076        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1077        let client = self.client.clone();
1078        let body_val = body_val.clone();
1079        self.rate_limiter.execute(None, false, move || {
1080            let client = client.clone();
1081            let license_number = license_number.clone();
1082            let body_val = body_val.clone();
1083            async move { client.packages_update_decontaminate_v2(license_number, body_val.as_ref()).await }
1084        }).await
1085    }
1086
1087    /// PUT UpdateDonationFlag V2
1088    /// Flags one or more packages for donation at the specified Facility.
1089    /// 
1090    ///   Permissions Required:
1091    ///   - View Packages
1092    ///   - Manage Packages Inventory
1093    ///
1094    pub async fn packages_update_donation_flag_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateDonationFlagV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1095        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1096        let client = self.client.clone();
1097        let body_val = body_val.clone();
1098        self.rate_limiter.execute(None, false, move || {
1099            let client = client.clone();
1100            let license_number = license_number.clone();
1101            let body_val = body_val.clone();
1102            async move { client.packages_update_donation_flag_v2(license_number, body_val.as_ref()).await }
1103        }).await
1104    }
1105
1106    /// PUT UpdateDonationUnflag V2
1107    /// Removes the donation flag from one or more packages at the specified Facility.
1108    /// 
1109    ///   Permissions Required:
1110    ///   - View Packages
1111    ///   - Manage Packages Inventory
1112    ///
1113    pub async fn packages_update_donation_unflag_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateDonationUnflagV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1114        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1115        let client = self.client.clone();
1116        let body_val = body_val.clone();
1117        self.rate_limiter.execute(None, false, move || {
1118            let client = client.clone();
1119            let license_number = license_number.clone();
1120            let body_val = body_val.clone();
1121            async move { client.packages_update_donation_unflag_v2(license_number, body_val.as_ref()).await }
1122        }).await
1123    }
1124
1125    /// PUT UpdateExternalid V2
1126    /// Updates the external identifiers for one or more packages at the specified Facility.
1127    /// 
1128    ///   Permissions Required:
1129    ///   - View Packages
1130    ///   - Manage Package Inventory
1131    ///   - External Id Enabled
1132    ///
1133    pub async fn packages_update_externalid_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateExternalidV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1134        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1135        let client = self.client.clone();
1136        let body_val = body_val.clone();
1137        self.rate_limiter.execute(None, false, move || {
1138            let client = client.clone();
1139            let license_number = license_number.clone();
1140            let body_val = body_val.clone();
1141            async move { client.packages_update_externalid_v2(license_number, body_val.as_ref()).await }
1142        }).await
1143    }
1144
1145    /// PUT UpdateFinish V2
1146    /// Updates a list of packages as finished for a specific Facility.
1147    /// 
1148    ///   Permissions Required:
1149    ///   - View Packages
1150    ///   - Manage Packages Inventory
1151    ///
1152    pub async fn packages_update_finish_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateFinishV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1153        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1154        let client = self.client.clone();
1155        let body_val = body_val.clone();
1156        self.rate_limiter.execute(None, false, move || {
1157            let client = client.clone();
1158            let license_number = license_number.clone();
1159            let body_val = body_val.clone();
1160            async move { client.packages_update_finish_v2(license_number, body_val.as_ref()).await }
1161        }).await
1162    }
1163
1164    /// PUT UpdateItem V2
1165    /// Updates the associated Item for one or more packages at the specified Facility.
1166    /// 
1167    ///   Permissions Required:
1168    ///   - View Packages
1169    ///   - Create/Submit/Discontinue Packages
1170    ///
1171    pub async fn packages_update_item_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateItemV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1172        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1173        let client = self.client.clone();
1174        let body_val = body_val.clone();
1175        self.rate_limiter.execute(None, false, move || {
1176            let client = client.clone();
1177            let license_number = license_number.clone();
1178            let body_val = body_val.clone();
1179            async move { client.packages_update_item_v2(license_number, body_val.as_ref()).await }
1180        }).await
1181    }
1182
1183    /// PUT UpdateLabTestRequired V2
1184    /// Updates the list of required lab test batches for one or more packages at the specified Facility.
1185    /// 
1186    ///   Permissions Required:
1187    ///   - View Packages
1188    ///   - Create/Submit/Discontinue Packages
1189    ///
1190    pub async fn packages_update_lab_test_required_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateLabTestRequiredV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1191        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1192        let client = self.client.clone();
1193        let body_val = body_val.clone();
1194        self.rate_limiter.execute(None, false, move || {
1195            let client = client.clone();
1196            let license_number = license_number.clone();
1197            let body_val = body_val.clone();
1198            async move { client.packages_update_lab_test_required_v2(license_number, body_val.as_ref()).await }
1199        }).await
1200    }
1201
1202    /// PUT UpdateLocation V2
1203    /// Updates the Location and Sublocation for one or more packages at the specified Facility.
1204    /// 
1205    ///   Permissions Required:
1206    ///   - View Packages
1207    ///   - Create/Submit/Discontinue Packages
1208    ///
1209    pub async fn packages_update_location_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateLocationV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1210        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1211        let client = self.client.clone();
1212        let body_val = body_val.clone();
1213        self.rate_limiter.execute(None, false, move || {
1214            let client = client.clone();
1215            let license_number = license_number.clone();
1216            let body_val = body_val.clone();
1217            async move { client.packages_update_location_v2(license_number, body_val.as_ref()).await }
1218        }).await
1219    }
1220
1221    /// PUT UpdateNote V2
1222    /// Updates notes associated with one or more packages for the specified Facility.
1223    /// 
1224    ///   Permissions Required:
1225    ///   - View Packages
1226    ///   - Manage Packages Inventory
1227    ///   - Manage Package Notes
1228    ///
1229    pub async fn packages_update_note_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateNoteV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1230        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1231        let client = self.client.clone();
1232        let body_val = body_val.clone();
1233        self.rate_limiter.execute(None, false, move || {
1234            let client = client.clone();
1235            let license_number = license_number.clone();
1236            let body_val = body_val.clone();
1237            async move { client.packages_update_note_v2(license_number, body_val.as_ref()).await }
1238        }).await
1239    }
1240
1241    /// PUT UpdateRemediate V2
1242    /// Updates a list of Product remediations for packages at a specific Facility.
1243    /// 
1244    ///   Permissions Required:
1245    ///   - View Packages
1246    ///   - Manage Packages Inventory
1247    ///
1248    pub async fn packages_update_remediate_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateRemediateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1249        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1250        let client = self.client.clone();
1251        let body_val = body_val.clone();
1252        self.rate_limiter.execute(None, false, move || {
1253            let client = client.clone();
1254            let license_number = license_number.clone();
1255            let body_val = body_val.clone();
1256            async move { client.packages_update_remediate_v2(license_number, body_val.as_ref()).await }
1257        }).await
1258    }
1259
1260    /// PUT UpdateTradesampleFlag V2
1261    /// Flags or unflags one or more packages at the specified Facility as trade samples.
1262    /// 
1263    ///   Permissions Required:
1264    ///   - View Packages
1265    ///   - Manage Packages Inventory
1266    ///
1267    pub async fn packages_update_tradesample_flag_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateTradesampleFlagV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1268        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1269        let client = self.client.clone();
1270        let body_val = body_val.clone();
1271        self.rate_limiter.execute(None, false, move || {
1272            let client = client.clone();
1273            let license_number = license_number.clone();
1274            let body_val = body_val.clone();
1275            async move { client.packages_update_tradesample_flag_v2(license_number, body_val.as_ref()).await }
1276        }).await
1277    }
1278
1279    /// PUT UpdateTradesampleUnflag V2
1280    /// Removes the trade sample flag from one or more packages at the specified Facility.
1281    /// 
1282    ///   Permissions Required:
1283    ///   - View Packages
1284    ///   - Manage Packages Inventory
1285    ///
1286    pub async fn packages_update_tradesample_unflag_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateTradesampleUnflagV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1287        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1288        let client = self.client.clone();
1289        let body_val = body_val.clone();
1290        self.rate_limiter.execute(None, false, move || {
1291            let client = client.clone();
1292            let license_number = license_number.clone();
1293            let body_val = body_val.clone();
1294            async move { client.packages_update_tradesample_unflag_v2(license_number, body_val.as_ref()).await }
1295        }).await
1296    }
1297
1298    /// PUT UpdateUnfinish V2
1299    /// Updates a list of packages as unfinished for a specific Facility.
1300    /// 
1301    ///   Permissions Required:
1302    ///   - View Packages
1303    ///   - Manage Packages Inventory
1304    ///
1305    pub async fn packages_update_unfinish_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateUnfinishV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1306        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1307        let client = self.client.clone();
1308        let body_val = body_val.clone();
1309        self.rate_limiter.execute(None, false, move || {
1310            let client = client.clone();
1311            let license_number = license_number.clone();
1312            let body_val = body_val.clone();
1313            async move { client.packages_update_unfinish_v2(license_number, body_val.as_ref()).await }
1314        }).await
1315    }
1316
1317    /// PUT UpdateUsebydate V2
1318    /// Updates the use-by date for one or more packages at the specified Facility.
1319    /// 
1320    ///   Permissions Required:
1321    ///   - View Packages
1322    ///   - Create/Submit/Discontinue Packages
1323    ///
1324    pub async fn packages_update_usebydate_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateUsebydateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1325        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1326        let client = self.client.clone();
1327        let body_val = body_val.clone();
1328        self.rate_limiter.execute(None, false, move || {
1329            let client = client.clone();
1330            let license_number = license_number.clone();
1331            let body_val = body_val.clone();
1332            async move { client.packages_update_usebydate_v2(license_number, body_val.as_ref()).await }
1333        }).await
1334    }
1335
1336    /// GET GetStatusesByPatientLicenseNumber V1
1337    /// Data returned by this endpoint is cached for up to one minute.
1338    /// 
1339    ///   Permissions Required:
1340    ///   - Lookup Patients
1341    ///
1342    pub async fn patients_status_get_statuses_by_patient_license_number_v1(&self, patient_license_number: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1343        let patient_license_number = patient_license_number.to_string();
1344        let client = self.client.clone();
1345        let body = body.cloned();
1346        self.rate_limiter.execute(None, true, move || {
1347            let client = client.clone();
1348            let patient_license_number = patient_license_number.clone();
1349            let license_number = license_number.clone();
1350            let body = body.clone();
1351            async move { client.patients_status_get_statuses_by_patient_license_number_v1(&patient_license_number, license_number, body.as_ref()).await }
1352        }).await
1353    }
1354
1355    /// GET GetStatusesByPatientLicenseNumber V2
1356    /// Retrieves a list of statuses for a Patient License Number for a specified Facility. Data returned by this endpoint is cached for up to one minute.
1357    /// 
1358    ///   Permissions Required:
1359    ///   - Lookup Patients
1360    ///
1361    pub async fn patients_status_get_statuses_by_patient_license_number_v2(&self, patient_license_number: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1362        let patient_license_number = patient_license_number.to_string();
1363        let client = self.client.clone();
1364        let body = body.cloned();
1365        self.rate_limiter.execute(None, true, move || {
1366            let client = client.clone();
1367            let patient_license_number = patient_license_number.clone();
1368            let license_number = license_number.clone();
1369            let body = body.clone();
1370            async move { client.patients_status_get_statuses_by_patient_license_number_v2(&patient_license_number, license_number, body.as_ref()).await }
1371        }).await
1372    }
1373
1374    /// POST CreateAdditives V1
1375    /// Permissions Required:
1376    ///   - Manage Plants Additives
1377    ///
1378    pub async fn plant_batches_create_additives_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateAdditivesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1379        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1380        let client = self.client.clone();
1381        let body_val = body_val.clone();
1382        self.rate_limiter.execute(None, false, move || {
1383            let client = client.clone();
1384            let license_number = license_number.clone();
1385            let body_val = body_val.clone();
1386            async move { client.plant_batches_create_additives_v1(license_number, body_val.as_ref()).await }
1387        }).await
1388    }
1389
1390    /// POST CreateAdditives V2
1391    /// Records Additive usage details for plant batches at a specific Facility.
1392    /// 
1393    ///   Permissions Required:
1394    ///   - Manage Plants Additives
1395    ///
1396    pub async fn plant_batches_create_additives_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateAdditivesV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1397        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1398        let client = self.client.clone();
1399        let body_val = body_val.clone();
1400        self.rate_limiter.execute(None, false, move || {
1401            let client = client.clone();
1402            let license_number = license_number.clone();
1403            let body_val = body_val.clone();
1404            async move { client.plant_batches_create_additives_v2(license_number, body_val.as_ref()).await }
1405        }).await
1406    }
1407
1408    /// POST CreateAdditivesUsingtemplate V2
1409    /// Records Additive usage for plant batches at a Facility using predefined additive templates.
1410    /// 
1411    ///   Permissions Required:
1412    ///   - Manage Plants Additives
1413    ///
1414    pub async fn plant_batches_create_additives_usingtemplate_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateAdditivesUsingtemplateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1415        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1416        let client = self.client.clone();
1417        let body_val = body_val.clone();
1418        self.rate_limiter.execute(None, false, move || {
1419            let client = client.clone();
1420            let license_number = license_number.clone();
1421            let body_val = body_val.clone();
1422            async move { client.plant_batches_create_additives_usingtemplate_v2(license_number, body_val.as_ref()).await }
1423        }).await
1424    }
1425
1426    /// POST CreateAdjust V1
1427    /// Permissions Required:
1428    ///   - View Immature Plants
1429    ///   - Manage Immature Plants Inventory
1430    ///
1431    pub async fn plant_batches_create_adjust_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateAdjustV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1432        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1433        let client = self.client.clone();
1434        let body_val = body_val.clone();
1435        self.rate_limiter.execute(None, false, move || {
1436            let client = client.clone();
1437            let license_number = license_number.clone();
1438            let body_val = body_val.clone();
1439            async move { client.plant_batches_create_adjust_v1(license_number, body_val.as_ref()).await }
1440        }).await
1441    }
1442
1443    /// POST CreateAdjust V2
1444    /// Applies Facility specific adjustments to plant batches based on submitted reasons and input data.
1445    /// 
1446    ///   Permissions Required:
1447    ///   - View Immature Plants
1448    ///   - Manage Immature Plants Inventory
1449    ///
1450    pub async fn plant_batches_create_adjust_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateAdjustV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1451        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1452        let client = self.client.clone();
1453        let body_val = body_val.clone();
1454        self.rate_limiter.execute(None, false, move || {
1455            let client = client.clone();
1456            let license_number = license_number.clone();
1457            let body_val = body_val.clone();
1458            async move { client.plant_batches_create_adjust_v2(license_number, body_val.as_ref()).await }
1459        }).await
1460    }
1461
1462    /// POST CreateChangegrowthphase V1
1463    /// Permissions Required:
1464    ///   - View Immature Plants
1465    ///   - Manage Immature Plants Inventory
1466    ///   - View Veg/Flower Plants
1467    ///   - Manage Veg/Flower Plants Inventory
1468    ///
1469    pub async fn plant_batches_create_changegrowthphase_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateChangegrowthphaseV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1470        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1471        let client = self.client.clone();
1472        let body_val = body_val.clone();
1473        self.rate_limiter.execute(None, false, move || {
1474            let client = client.clone();
1475            let license_number = license_number.clone();
1476            let body_val = body_val.clone();
1477            async move { client.plant_batches_create_changegrowthphase_v1(license_number, body_val.as_ref()).await }
1478        }).await
1479    }
1480
1481    /// POST CreateGrowthphase V2
1482    /// Updates the growth phase of plants at a specified Facility based on tracking information.
1483    /// 
1484    ///   Permissions Required:
1485    ///   - View Immature Plants
1486    ///   - Manage Immature Plants Inventory
1487    ///   - View Veg/Flower Plants
1488    ///   - Manage Veg/Flower Plants Inventory
1489    ///
1490    pub async fn plant_batches_create_growthphase_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateGrowthphaseV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1491        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1492        let client = self.client.clone();
1493        let body_val = body_val.clone();
1494        self.rate_limiter.execute(None, false, move || {
1495            let client = client.clone();
1496            let license_number = license_number.clone();
1497            let body_val = body_val.clone();
1498            async move { client.plant_batches_create_growthphase_v2(license_number, body_val.as_ref()).await }
1499        }).await
1500    }
1501
1502    /// POST CreatePackage V2
1503    /// Creates packages from plant batches at a Facility, with optional support for packaging from mother plants.
1504    /// 
1505    ///   Permissions Required:
1506    ///   - View Immature Plants
1507    ///   - Manage Immature Plants Inventory
1508    ///   - View Packages
1509    ///   - Create/Submit/Discontinue Packages
1510    ///
1511    pub async fn plant_batches_create_package_v2(&self, is_from_mother_plant: Option<String>, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreatePackageV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1512        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1513        let client = self.client.clone();
1514        let body_val = body_val.clone();
1515        self.rate_limiter.execute(None, false, move || {
1516            let client = client.clone();
1517            let is_from_mother_plant = is_from_mother_plant.clone();
1518            let license_number = license_number.clone();
1519            let body_val = body_val.clone();
1520            async move { client.plant_batches_create_package_v2(is_from_mother_plant, license_number, body_val.as_ref()).await }
1521        }).await
1522    }
1523
1524    /// POST CreatePackageFrommotherplant V1
1525    /// Permissions Required:
1526    ///   - View Immature Plants
1527    ///   - Manage Immature Plants Inventory
1528    ///   - View Packages
1529    ///   - Create/Submit/Discontinue Packages
1530    ///
1531    pub async fn plant_batches_create_package_frommotherplant_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreatePackageFrommotherplantV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1532        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1533        let client = self.client.clone();
1534        let body_val = body_val.clone();
1535        self.rate_limiter.execute(None, false, move || {
1536            let client = client.clone();
1537            let license_number = license_number.clone();
1538            let body_val = body_val.clone();
1539            async move { client.plant_batches_create_package_frommotherplant_v1(license_number, body_val.as_ref()).await }
1540        }).await
1541    }
1542
1543    /// POST CreatePackageFrommotherplant V2
1544    /// Creates packages from mother plants at the specified Facility.
1545    /// 
1546    ///   Permissions Required:
1547    ///   - View Immature Plants
1548    ///   - Manage Immature Plants Inventory
1549    ///   - View Packages
1550    ///   - Create/Submit/Discontinue Packages
1551    ///
1552    pub async fn plant_batches_create_package_frommotherplant_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreatePackageFrommotherplantV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1553        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1554        let client = self.client.clone();
1555        let body_val = body_val.clone();
1556        self.rate_limiter.execute(None, false, move || {
1557            let client = client.clone();
1558            let license_number = license_number.clone();
1559            let body_val = body_val.clone();
1560            async move { client.plant_batches_create_package_frommotherplant_v2(license_number, body_val.as_ref()).await }
1561        }).await
1562    }
1563
1564    /// POST CreatePlantings V2
1565    /// Creates new plantings for a Facility by generating plant batches based on provided planting details.
1566    /// 
1567    ///   Permissions Required:
1568    ///   - View Immature Plants
1569    ///   - Manage Immature Plants Inventory
1570    ///
1571    pub async fn plant_batches_create_plantings_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreatePlantingsV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1572        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1573        let client = self.client.clone();
1574        let body_val = body_val.clone();
1575        self.rate_limiter.execute(None, false, move || {
1576            let client = client.clone();
1577            let license_number = license_number.clone();
1578            let body_val = body_val.clone();
1579            async move { client.plant_batches_create_plantings_v2(license_number, body_val.as_ref()).await }
1580        }).await
1581    }
1582
1583    /// POST CreateSplit V1
1584    /// Permissions Required:
1585    ///   - View Immature Plants
1586    ///   - Manage Immature Plants Inventory
1587    ///
1588    pub async fn plant_batches_create_split_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateSplitV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1589        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1590        let client = self.client.clone();
1591        let body_val = body_val.clone();
1592        self.rate_limiter.execute(None, false, move || {
1593            let client = client.clone();
1594            let license_number = license_number.clone();
1595            let body_val = body_val.clone();
1596            async move { client.plant_batches_create_split_v1(license_number, body_val.as_ref()).await }
1597        }).await
1598    }
1599
1600    /// POST CreateSplit V2
1601    /// Splits an existing Plant Batch into multiple groups at the specified Facility.
1602    /// 
1603    ///   Permissions Required:
1604    ///   - View Immature Plants
1605    ///   - Manage Immature Plants Inventory
1606    ///
1607    pub async fn plant_batches_create_split_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateSplitV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1608        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1609        let client = self.client.clone();
1610        let body_val = body_val.clone();
1611        self.rate_limiter.execute(None, false, move || {
1612            let client = client.clone();
1613            let license_number = license_number.clone();
1614            let body_val = body_val.clone();
1615            async move { client.plant_batches_create_split_v2(license_number, body_val.as_ref()).await }
1616        }).await
1617    }
1618
1619    /// POST CreateWaste V1
1620    /// Permissions Required:
1621    ///   - Manage Plants Waste
1622    ///
1623    pub async fn plant_batches_create_waste_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateWasteV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1624        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1625        let client = self.client.clone();
1626        let body_val = body_val.clone();
1627        self.rate_limiter.execute(None, false, move || {
1628            let client = client.clone();
1629            let license_number = license_number.clone();
1630            let body_val = body_val.clone();
1631            async move { client.plant_batches_create_waste_v1(license_number, body_val.as_ref()).await }
1632        }).await
1633    }
1634
1635    /// POST CreateWaste V2
1636    /// Records waste information for plant batches based on the submitted data for the specified Facility.
1637    /// 
1638    ///   Permissions Required:
1639    ///   - Manage Plants Waste
1640    ///
1641    pub async fn plant_batches_create_waste_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateWasteV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1642        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1643        let client = self.client.clone();
1644        let body_val = body_val.clone();
1645        self.rate_limiter.execute(None, false, move || {
1646            let client = client.clone();
1647            let license_number = license_number.clone();
1648            let body_val = body_val.clone();
1649            async move { client.plant_batches_create_waste_v2(license_number, body_val.as_ref()).await }
1650        }).await
1651    }
1652
1653    /// POST Createpackages V1
1654    /// Permissions Required:
1655    ///   - View Immature Plants
1656    ///   - Manage Immature Plants Inventory
1657    ///   - View Packages
1658    ///   - Create/Submit/Discontinue Packages
1659    ///
1660    pub async fn plant_batches_createpackages_v1(&self, is_from_mother_plant: Option<String>, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreatepackagesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1661        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1662        let client = self.client.clone();
1663        let body_val = body_val.clone();
1664        self.rate_limiter.execute(None, false, move || {
1665            let client = client.clone();
1666            let is_from_mother_plant = is_from_mother_plant.clone();
1667            let license_number = license_number.clone();
1668            let body_val = body_val.clone();
1669            async move { client.plant_batches_createpackages_v1(is_from_mother_plant, license_number, body_val.as_ref()).await }
1670        }).await
1671    }
1672
1673    /// POST Createplantings V1
1674    /// Permissions Required:
1675    ///   - View Immature Plants
1676    ///   - Manage Immature Plants Inventory
1677    ///
1678    pub async fn plant_batches_createplantings_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateplantingsV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1679        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1680        let client = self.client.clone();
1681        let body_val = body_val.clone();
1682        self.rate_limiter.execute(None, false, move || {
1683            let client = client.clone();
1684            let license_number = license_number.clone();
1685            let body_val = body_val.clone();
1686            async move { client.plant_batches_createplantings_v1(license_number, body_val.as_ref()).await }
1687        }).await
1688    }
1689
1690    /// DELETE Delete V1
1691    /// Permissions Required:
1692    ///   - View Immature Plants
1693    ///   - Destroy Immature Plants
1694    ///
1695    pub async fn plant_batches_delete_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1696        let client = self.client.clone();
1697        let body = body.cloned();
1698        self.rate_limiter.execute(None, false, move || {
1699            let client = client.clone();
1700            let license_number = license_number.clone();
1701            let body = body.clone();
1702            async move { client.plant_batches_delete_v1(license_number, body.as_ref()).await }
1703        }).await
1704    }
1705
1706    /// DELETE Delete V2
1707    /// Completes the destruction of plant batches based on the provided input data.
1708    /// 
1709    ///   Permissions Required:
1710    ///   - View Immature Plants
1711    ///   - Destroy Immature Plants
1712    ///
1713    pub async fn plant_batches_delete_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1714        let client = self.client.clone();
1715        let body = body.cloned();
1716        self.rate_limiter.execute(None, false, move || {
1717            let client = client.clone();
1718            let license_number = license_number.clone();
1719            let body = body.clone();
1720            async move { client.plant_batches_delete_v2(license_number, body.as_ref()).await }
1721        }).await
1722    }
1723
1724    /// GET Get V1
1725    /// Permissions Required:
1726    ///   - View Immature Plants
1727    ///
1728    pub async fn plant_batches_get_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1729        let id = id.to_string();
1730        let client = self.client.clone();
1731        let body = body.cloned();
1732        self.rate_limiter.execute(None, true, move || {
1733            let client = client.clone();
1734            let id = id.clone();
1735            let license_number = license_number.clone();
1736            let body = body.clone();
1737            async move { client.plant_batches_get_v1(&id, license_number, body.as_ref()).await }
1738        }).await
1739    }
1740
1741    /// GET Get V2
1742    /// Retrieves a Plant Batch by Id.
1743    /// 
1744    ///   Permissions Required:
1745    ///   - View Immature Plants
1746    ///
1747    pub async fn plant_batches_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1748        let id = id.to_string();
1749        let client = self.client.clone();
1750        let body = body.cloned();
1751        self.rate_limiter.execute(None, true, move || {
1752            let client = client.clone();
1753            let id = id.clone();
1754            let license_number = license_number.clone();
1755            let body = body.clone();
1756            async move { client.plant_batches_get_v2(&id, license_number, body.as_ref()).await }
1757        }).await
1758    }
1759
1760    /// GET GetActive V1
1761    /// Permissions Required:
1762    ///   - View Immature Plants
1763    ///
1764    pub async fn plant_batches_get_active_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1765        let client = self.client.clone();
1766        let body = body.cloned();
1767        self.rate_limiter.execute(None, true, move || {
1768            let client = client.clone();
1769            let last_modified_end = last_modified_end.clone();
1770            let last_modified_start = last_modified_start.clone();
1771            let license_number = license_number.clone();
1772            let body = body.clone();
1773            async move { client.plant_batches_get_active_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
1774        }).await
1775    }
1776
1777    /// GET GetActive V2
1778    /// Retrieves a list of active plant batches for the specified Facility, optionally filtered by last modified date.
1779    /// 
1780    ///   Permissions Required:
1781    ///   - View Immature Plants
1782    ///
1783    pub async fn plant_batches_get_active_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1784        let client = self.client.clone();
1785        let body = body.cloned();
1786        self.rate_limiter.execute(None, true, move || {
1787            let client = client.clone();
1788            let last_modified_end = last_modified_end.clone();
1789            let last_modified_start = last_modified_start.clone();
1790            let license_number = license_number.clone();
1791            let page_number = page_number.clone();
1792            let page_size = page_size.clone();
1793            let body = body.clone();
1794            async move { client.plant_batches_get_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
1795        }).await
1796    }
1797
1798    /// GET GetInactive V1
1799    /// Permissions Required:
1800    ///   - View Immature Plants
1801    ///
1802    pub async fn plant_batches_get_inactive_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1803        let client = self.client.clone();
1804        let body = body.cloned();
1805        self.rate_limiter.execute(None, true, move || {
1806            let client = client.clone();
1807            let last_modified_end = last_modified_end.clone();
1808            let last_modified_start = last_modified_start.clone();
1809            let license_number = license_number.clone();
1810            let body = body.clone();
1811            async move { client.plant_batches_get_inactive_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
1812        }).await
1813    }
1814
1815    /// GET GetInactive V2
1816    /// Retrieves a list of inactive plant batches for the specified Facility, optionally filtered by last modified date.
1817    /// 
1818    ///   Permissions Required:
1819    ///   - View Immature Plants
1820    ///
1821    pub async fn plant_batches_get_inactive_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1822        let client = self.client.clone();
1823        let body = body.cloned();
1824        self.rate_limiter.execute(None, true, move || {
1825            let client = client.clone();
1826            let last_modified_end = last_modified_end.clone();
1827            let last_modified_start = last_modified_start.clone();
1828            let license_number = license_number.clone();
1829            let page_number = page_number.clone();
1830            let page_size = page_size.clone();
1831            let body = body.clone();
1832            async move { client.plant_batches_get_inactive_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
1833        }).await
1834    }
1835
1836    /// GET GetTypes V1
1837    /// Permissions Required:
1838    ///   - None
1839    ///
1840    pub async fn plant_batches_get_types_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1841        let client = self.client.clone();
1842        let body = body.cloned();
1843        self.rate_limiter.execute(None, true, move || {
1844            let client = client.clone();
1845            let no = no.clone();
1846            let body = body.clone();
1847            async move { client.plant_batches_get_types_v1(no, body.as_ref()).await }
1848        }).await
1849    }
1850
1851    /// GET GetTypes V2
1852    /// Retrieves a list of plant batch types.
1853    /// 
1854    ///   Permissions Required:
1855    ///   - None
1856    ///
1857    pub async fn plant_batches_get_types_v2(&self, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1858        let client = self.client.clone();
1859        let body = body.cloned();
1860        self.rate_limiter.execute(None, true, move || {
1861            let client = client.clone();
1862            let page_number = page_number.clone();
1863            let page_size = page_size.clone();
1864            let body = body.clone();
1865            async move { client.plant_batches_get_types_v2(page_number, page_size, body.as_ref()).await }
1866        }).await
1867    }
1868
1869    /// GET GetWaste V2
1870    /// Retrieves waste details associated with plant batches at a specified Facility.
1871    /// 
1872    ///   Permissions Required:
1873    ///   - View Plants Waste
1874    ///
1875    pub async fn plant_batches_get_waste_v2(&self, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1876        let client = self.client.clone();
1877        let body = body.cloned();
1878        self.rate_limiter.execute(None, true, move || {
1879            let client = client.clone();
1880            let license_number = license_number.clone();
1881            let page_number = page_number.clone();
1882            let page_size = page_size.clone();
1883            let body = body.clone();
1884            async move { client.plant_batches_get_waste_v2(license_number, page_number, page_size, body.as_ref()).await }
1885        }).await
1886    }
1887
1888    /// GET GetWasteReasons V1
1889    /// Permissions Required:
1890    ///   - None
1891    ///
1892    pub async fn plant_batches_get_waste_reasons_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1893        let client = self.client.clone();
1894        let body = body.cloned();
1895        self.rate_limiter.execute(None, true, move || {
1896            let client = client.clone();
1897            let license_number = license_number.clone();
1898            let body = body.clone();
1899            async move { client.plant_batches_get_waste_reasons_v1(license_number, body.as_ref()).await }
1900        }).await
1901    }
1902
1903    /// GET GetWasteReasons V2
1904    /// Retrieves a list of valid waste reasons associated with immature plant batches for the specified Facility.
1905    /// 
1906    ///   Permissions Required:
1907    ///   - None
1908    ///
1909    pub async fn plant_batches_get_waste_reasons_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1910        let client = self.client.clone();
1911        let body = body.cloned();
1912        self.rate_limiter.execute(None, true, move || {
1913            let client = client.clone();
1914            let license_number = license_number.clone();
1915            let body = body.clone();
1916            async move { client.plant_batches_get_waste_reasons_v2(license_number, body.as_ref()).await }
1917        }).await
1918    }
1919
1920    /// PUT UpdateLocation V2
1921    /// Moves one or more plant batches to new locations with in a specified Facility.
1922    /// 
1923    ///   Permissions Required:
1924    ///   - View Immature Plants
1925    ///   - Manage Immature Plants
1926    ///
1927    pub async fn plant_batches_update_location_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesUpdateLocationV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1928        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1929        let client = self.client.clone();
1930        let body_val = body_val.clone();
1931        self.rate_limiter.execute(None, false, move || {
1932            let client = client.clone();
1933            let license_number = license_number.clone();
1934            let body_val = body_val.clone();
1935            async move { client.plant_batches_update_location_v2(license_number, body_val.as_ref()).await }
1936        }).await
1937    }
1938
1939    /// PUT UpdateMoveplantbatches V1
1940    /// Permissions Required:
1941    ///   - View Immature Plants
1942    ///
1943    pub async fn plant_batches_update_moveplantbatches_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesUpdateMoveplantbatchesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1944        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1945        let client = self.client.clone();
1946        let body_val = body_val.clone();
1947        self.rate_limiter.execute(None, false, move || {
1948            let client = client.clone();
1949            let license_number = license_number.clone();
1950            let body_val = body_val.clone();
1951            async move { client.plant_batches_update_moveplantbatches_v1(license_number, body_val.as_ref()).await }
1952        }).await
1953    }
1954
1955    /// PUT UpdateName V2
1956    /// Renames plant batches at a specified Facility.
1957    /// 
1958    ///   Permissions Required:
1959    ///   - View Veg/Flower Plants
1960    ///   - Manage Veg/Flower Plants Inventory
1961    ///
1962    pub async fn plant_batches_update_name_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesUpdateNameV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1963        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1964        let client = self.client.clone();
1965        let body_val = body_val.clone();
1966        self.rate_limiter.execute(None, false, move || {
1967            let client = client.clone();
1968            let license_number = license_number.clone();
1969            let body_val = body_val.clone();
1970            async move { client.plant_batches_update_name_v2(license_number, body_val.as_ref()).await }
1971        }).await
1972    }
1973
1974    /// PUT UpdateStrain V2
1975    /// Changes the strain of plant batches at a specified Facility.
1976    /// 
1977    ///   Permissions Required:
1978    ///   - View Veg/Flower Plants
1979    ///   - Manage Veg/Flower Plants Inventory
1980    ///
1981    pub async fn plant_batches_update_strain_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesUpdateStrainV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1982        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1983        let client = self.client.clone();
1984        let body_val = body_val.clone();
1985        self.rate_limiter.execute(None, false, move || {
1986            let client = client.clone();
1987            let license_number = license_number.clone();
1988            let body_val = body_val.clone();
1989            async move { client.plant_batches_update_strain_v2(license_number, body_val.as_ref()).await }
1990        }).await
1991    }
1992
1993    /// PUT UpdateTag V2
1994    /// Replaces tags for plant batches at a specified Facility.
1995    /// 
1996    ///   Permissions Required:
1997    ///   - View Veg/Flower Plants
1998    ///   - Manage Veg/Flower Plants Inventory
1999    ///
2000    pub async fn plant_batches_update_tag_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesUpdateTagV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2001        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2002        let client = self.client.clone();
2003        let body_val = body_val.clone();
2004        self.rate_limiter.execute(None, false, move || {
2005            let client = client.clone();
2006            let license_number = license_number.clone();
2007            let body_val = body_val.clone();
2008            async move { client.plant_batches_update_tag_v2(license_number, body_val.as_ref()).await }
2009        }).await
2010    }
2011
2012    /// POST CreateAdditives V1
2013    /// Permissions Required:
2014    ///   - Manage Plants Additives
2015    ///
2016    pub async fn plants_create_additives_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateAdditivesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2017        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2018        let client = self.client.clone();
2019        let body_val = body_val.clone();
2020        self.rate_limiter.execute(None, false, move || {
2021            let client = client.clone();
2022            let license_number = license_number.clone();
2023            let body_val = body_val.clone();
2024            async move { client.plants_create_additives_v1(license_number, body_val.as_ref()).await }
2025        }).await
2026    }
2027
2028    /// POST CreateAdditives V2
2029    /// Records additive usage details applied to specific plants at a Facility.
2030    /// 
2031    ///   Permissions Required:
2032    ///   - Manage Plants Additives
2033    ///
2034    pub async fn plants_create_additives_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateAdditivesV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2035        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2036        let client = self.client.clone();
2037        let body_val = body_val.clone();
2038        self.rate_limiter.execute(None, false, move || {
2039            let client = client.clone();
2040            let license_number = license_number.clone();
2041            let body_val = body_val.clone();
2042            async move { client.plants_create_additives_v2(license_number, body_val.as_ref()).await }
2043        }).await
2044    }
2045
2046    /// POST CreateAdditivesBylocation V1
2047    /// Permissions Required:
2048    ///   - Manage Plants
2049    ///   - Manage Plants Additives
2050    ///
2051    pub async fn plants_create_additives_bylocation_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateAdditivesBylocationV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2052        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2053        let client = self.client.clone();
2054        let body_val = body_val.clone();
2055        self.rate_limiter.execute(None, false, move || {
2056            let client = client.clone();
2057            let license_number = license_number.clone();
2058            let body_val = body_val.clone();
2059            async move { client.plants_create_additives_bylocation_v1(license_number, body_val.as_ref()).await }
2060        }).await
2061    }
2062
2063    /// POST CreateAdditivesBylocation V2
2064    /// Records additive usage for plants based on their location within a specified Facility.
2065    /// 
2066    ///   Permissions Required:
2067    ///   - Manage Plants
2068    ///   - Manage Plants Additives
2069    ///
2070    pub async fn plants_create_additives_bylocation_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateAdditivesBylocationV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2071        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2072        let client = self.client.clone();
2073        let body_val = body_val.clone();
2074        self.rate_limiter.execute(None, false, move || {
2075            let client = client.clone();
2076            let license_number = license_number.clone();
2077            let body_val = body_val.clone();
2078            async move { client.plants_create_additives_bylocation_v2(license_number, body_val.as_ref()).await }
2079        }).await
2080    }
2081
2082    /// POST CreateAdditivesBylocationUsingtemplate V2
2083    /// Records additive usage for plants by location using a predefined additive template at a specified Facility.
2084    /// 
2085    ///   Permissions Required:
2086    ///   - Manage Plants Additives
2087    ///
2088    pub async fn plants_create_additives_bylocation_usingtemplate_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateAdditivesBylocationUsingtemplateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2089        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2090        let client = self.client.clone();
2091        let body_val = body_val.clone();
2092        self.rate_limiter.execute(None, false, move || {
2093            let client = client.clone();
2094            let license_number = license_number.clone();
2095            let body_val = body_val.clone();
2096            async move { client.plants_create_additives_bylocation_usingtemplate_v2(license_number, body_val.as_ref()).await }
2097        }).await
2098    }
2099
2100    /// POST CreateAdditivesUsingtemplate V2
2101    /// Records additive usage for plants using predefined additive templates at a specified Facility.
2102    /// 
2103    ///   Permissions Required:
2104    ///   - Manage Plants Additives
2105    ///
2106    pub async fn plants_create_additives_usingtemplate_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateAdditivesUsingtemplateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2107        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2108        let client = self.client.clone();
2109        let body_val = body_val.clone();
2110        self.rate_limiter.execute(None, false, move || {
2111            let client = client.clone();
2112            let license_number = license_number.clone();
2113            let body_val = body_val.clone();
2114            async move { client.plants_create_additives_usingtemplate_v2(license_number, body_val.as_ref()).await }
2115        }).await
2116    }
2117
2118    /// POST CreateChangegrowthphases V1
2119    /// Permissions Required:
2120    ///   - View Veg/Flower Plants
2121    ///   - Manage Veg/Flower Plants Inventory
2122    ///
2123    pub async fn plants_create_changegrowthphases_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateChangegrowthphasesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2124        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2125        let client = self.client.clone();
2126        let body_val = body_val.clone();
2127        self.rate_limiter.execute(None, false, move || {
2128            let client = client.clone();
2129            let license_number = license_number.clone();
2130            let body_val = body_val.clone();
2131            async move { client.plants_create_changegrowthphases_v1(license_number, body_val.as_ref()).await }
2132        }).await
2133    }
2134
2135    /// POST CreateHarvestplants V1
2136    /// NOTE: If HarvestName is excluded from the request body, or if it is passed in as null, the harvest name is auto-generated.
2137    /// 
2138    ///   Permissions Required:
2139    ///   - View Veg/Flower Plants
2140    ///   - Manicure/Harvest Veg/Flower Plants
2141    ///
2142    pub async fn plants_create_harvestplants_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateHarvestplantsV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2143        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2144        let client = self.client.clone();
2145        let body_val = body_val.clone();
2146        self.rate_limiter.execute(None, false, move || {
2147            let client = client.clone();
2148            let license_number = license_number.clone();
2149            let body_val = body_val.clone();
2150            async move { client.plants_create_harvestplants_v1(license_number, body_val.as_ref()).await }
2151        }).await
2152    }
2153
2154    /// POST CreateManicure V2
2155    /// Creates harvest product records from plant batches at a specified Facility.
2156    /// 
2157    ///   Permissions Required:
2158    ///   - View Veg/Flower Plants
2159    ///   - Manicure/Harvest Veg/Flower Plants
2160    ///
2161    pub async fn plants_create_manicure_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateManicureV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2162        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2163        let client = self.client.clone();
2164        let body_val = body_val.clone();
2165        self.rate_limiter.execute(None, false, move || {
2166            let client = client.clone();
2167            let license_number = license_number.clone();
2168            let body_val = body_val.clone();
2169            async move { client.plants_create_manicure_v2(license_number, body_val.as_ref()).await }
2170        }).await
2171    }
2172
2173    /// POST CreateManicureplants V1
2174    /// Permissions Required:
2175    ///   - View Veg/Flower Plants
2176    ///   - Manicure/Harvest Veg/Flower Plants
2177    ///
2178    pub async fn plants_create_manicureplants_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateManicureplantsV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2179        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2180        let client = self.client.clone();
2181        let body_val = body_val.clone();
2182        self.rate_limiter.execute(None, false, move || {
2183            let client = client.clone();
2184            let license_number = license_number.clone();
2185            let body_val = body_val.clone();
2186            async move { client.plants_create_manicureplants_v1(license_number, body_val.as_ref()).await }
2187        }).await
2188    }
2189
2190    /// POST CreateMoveplants V1
2191    /// Permissions Required:
2192    ///   - View Veg/Flower Plants
2193    ///   - Manage Veg/Flower Plants Inventory
2194    ///
2195    pub async fn plants_create_moveplants_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateMoveplantsV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2196        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2197        let client = self.client.clone();
2198        let body_val = body_val.clone();
2199        self.rate_limiter.execute(None, false, move || {
2200            let client = client.clone();
2201            let license_number = license_number.clone();
2202            let body_val = body_val.clone();
2203            async move { client.plants_create_moveplants_v1(license_number, body_val.as_ref()).await }
2204        }).await
2205    }
2206
2207    /// POST CreatePlantbatchPackage V1
2208    /// Permissions Required:
2209    ///   - View Immature Plants
2210    ///   - Manage Immature Plants Inventory
2211    ///   - View Veg/Flower Plants
2212    ///   - Manage Veg/Flower Plants Inventory
2213    ///   - View Packages
2214    ///   - Create/Submit/Discontinue Packages
2215    ///
2216    pub async fn plants_create_plantbatch_package_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreatePlantbatchPackageV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2217        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2218        let client = self.client.clone();
2219        let body_val = body_val.clone();
2220        self.rate_limiter.execute(None, false, move || {
2221            let client = client.clone();
2222            let license_number = license_number.clone();
2223            let body_val = body_val.clone();
2224            async move { client.plants_create_plantbatch_package_v1(license_number, body_val.as_ref()).await }
2225        }).await
2226    }
2227
2228    /// POST CreatePlantbatchPackage V2
2229    /// Creates packages from plant batches at a specified Facility.
2230    /// 
2231    ///   Permissions Required:
2232    ///   - View Immature Plants
2233    ///   - Manage Immature Plants Inventory
2234    ///   - View Veg/Flower Plants
2235    ///   - Manage Veg/Flower Plants Inventory
2236    ///   - View Packages
2237    ///   - Create/Submit/Discontinue Packages
2238    ///
2239    pub async fn plants_create_plantbatch_package_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreatePlantbatchPackageV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2240        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2241        let client = self.client.clone();
2242        let body_val = body_val.clone();
2243        self.rate_limiter.execute(None, false, move || {
2244            let client = client.clone();
2245            let license_number = license_number.clone();
2246            let body_val = body_val.clone();
2247            async move { client.plants_create_plantbatch_package_v2(license_number, body_val.as_ref()).await }
2248        }).await
2249    }
2250
2251    /// POST CreatePlantings V1
2252    /// Permissions Required:
2253    ///   - View Immature Plants
2254    ///   - Manage Immature Plants Inventory
2255    ///   - View Veg/Flower Plants
2256    ///   - Manage Veg/Flower Plants Inventory
2257    ///
2258    pub async fn plants_create_plantings_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreatePlantingsV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2259        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2260        let client = self.client.clone();
2261        let body_val = body_val.clone();
2262        self.rate_limiter.execute(None, false, move || {
2263            let client = client.clone();
2264            let license_number = license_number.clone();
2265            let body_val = body_val.clone();
2266            async move { client.plants_create_plantings_v1(license_number, body_val.as_ref()).await }
2267        }).await
2268    }
2269
2270    /// POST CreatePlantings V2
2271    /// Creates new plant batches at a specified Facility from existing plant data.
2272    /// 
2273    ///   Permissions Required:
2274    ///   - View Immature Plants
2275    ///   - Manage Immature Plants Inventory
2276    ///   - View Veg/Flower Plants
2277    ///   - Manage Veg/Flower Plants Inventory
2278    ///
2279    pub async fn plants_create_plantings_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreatePlantingsV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2280        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2281        let client = self.client.clone();
2282        let body_val = body_val.clone();
2283        self.rate_limiter.execute(None, false, move || {
2284            let client = client.clone();
2285            let license_number = license_number.clone();
2286            let body_val = body_val.clone();
2287            async move { client.plants_create_plantings_v2(license_number, body_val.as_ref()).await }
2288        }).await
2289    }
2290
2291    /// POST CreateWaste V1
2292    /// Permissions Required:
2293    ///   - Manage Plants Waste
2294    ///
2295    pub async fn plants_create_waste_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateWasteV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2296        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2297        let client = self.client.clone();
2298        let body_val = body_val.clone();
2299        self.rate_limiter.execute(None, false, move || {
2300            let client = client.clone();
2301            let license_number = license_number.clone();
2302            let body_val = body_val.clone();
2303            async move { client.plants_create_waste_v1(license_number, body_val.as_ref()).await }
2304        }).await
2305    }
2306
2307    /// POST CreateWaste V2
2308    /// Records waste events for plants at a Facility, including method, reason, and location details.
2309    /// 
2310    ///   Permissions Required:
2311    ///   - Manage Plants Waste
2312    ///
2313    pub async fn plants_create_waste_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateWasteV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2314        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2315        let client = self.client.clone();
2316        let body_val = body_val.clone();
2317        self.rate_limiter.execute(None, false, move || {
2318            let client = client.clone();
2319            let license_number = license_number.clone();
2320            let body_val = body_val.clone();
2321            async move { client.plants_create_waste_v2(license_number, body_val.as_ref()).await }
2322        }).await
2323    }
2324
2325    /// DELETE Delete V1
2326    /// Permissions Required:
2327    ///   - View Veg/Flower Plants
2328    ///   - Destroy Veg/Flower Plants
2329    ///
2330    pub async fn plants_delete_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2331        let client = self.client.clone();
2332        let body = body.cloned();
2333        self.rate_limiter.execute(None, false, move || {
2334            let client = client.clone();
2335            let license_number = license_number.clone();
2336            let body = body.clone();
2337            async move { client.plants_delete_v1(license_number, body.as_ref()).await }
2338        }).await
2339    }
2340
2341    /// DELETE Delete V2
2342    /// Removes plants from a Facility’s inventory while recording the reason for their disposal.
2343    /// 
2344    ///   Permissions Required:
2345    ///   - View Veg/Flower Plants
2346    ///   - Destroy Veg/Flower Plants
2347    ///
2348    pub async fn plants_delete_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2349        let client = self.client.clone();
2350        let body = body.cloned();
2351        self.rate_limiter.execute(None, false, move || {
2352            let client = client.clone();
2353            let license_number = license_number.clone();
2354            let body = body.clone();
2355            async move { client.plants_delete_v2(license_number, body.as_ref()).await }
2356        }).await
2357    }
2358
2359    /// GET Get V1
2360    /// Permissions Required:
2361    ///   - View Veg/Flower Plants
2362    ///
2363    pub async fn plants_get_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2364        let id = id.to_string();
2365        let client = self.client.clone();
2366        let body = body.cloned();
2367        self.rate_limiter.execute(None, true, move || {
2368            let client = client.clone();
2369            let id = id.clone();
2370            let license_number = license_number.clone();
2371            let body = body.clone();
2372            async move { client.plants_get_v1(&id, license_number, body.as_ref()).await }
2373        }).await
2374    }
2375
2376    /// GET Get V2
2377    /// Retrieves a Plant by Id.
2378    /// 
2379    ///   Permissions Required:
2380    ///   - View Veg/Flower Plants
2381    ///
2382    pub async fn plants_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2383        let id = id.to_string();
2384        let client = self.client.clone();
2385        let body = body.cloned();
2386        self.rate_limiter.execute(None, true, move || {
2387            let client = client.clone();
2388            let id = id.clone();
2389            let license_number = license_number.clone();
2390            let body = body.clone();
2391            async move { client.plants_get_v2(&id, license_number, body.as_ref()).await }
2392        }).await
2393    }
2394
2395    /// GET GetAdditives V1
2396    /// Permissions Required:
2397    ///   - View/Manage Plants Additives
2398    ///
2399    pub async fn plants_get_additives_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2400        let client = self.client.clone();
2401        let body = body.cloned();
2402        self.rate_limiter.execute(None, true, move || {
2403            let client = client.clone();
2404            let last_modified_end = last_modified_end.clone();
2405            let last_modified_start = last_modified_start.clone();
2406            let license_number = license_number.clone();
2407            let body = body.clone();
2408            async move { client.plants_get_additives_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
2409        }).await
2410    }
2411
2412    /// GET GetAdditives V2
2413    /// Retrieves additive records applied to plants at a specified Facility.
2414    /// 
2415    ///   Permissions Required:
2416    ///   - View/Manage Plants Additives
2417    ///
2418    pub async fn plants_get_additives_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2419        let client = self.client.clone();
2420        let body = body.cloned();
2421        self.rate_limiter.execute(None, true, move || {
2422            let client = client.clone();
2423            let last_modified_end = last_modified_end.clone();
2424            let last_modified_start = last_modified_start.clone();
2425            let license_number = license_number.clone();
2426            let page_number = page_number.clone();
2427            let page_size = page_size.clone();
2428            let body = body.clone();
2429            async move { client.plants_get_additives_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
2430        }).await
2431    }
2432
2433    /// GET GetAdditivesTypes V1
2434    /// Permissions Required:
2435    ///   -
2436    ///
2437    pub async fn plants_get_additives_types_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2438        let client = self.client.clone();
2439        let body = body.cloned();
2440        self.rate_limiter.execute(None, true, move || {
2441            let client = client.clone();
2442            let no = no.clone();
2443            let body = body.clone();
2444            async move { client.plants_get_additives_types_v1(no, body.as_ref()).await }
2445        }).await
2446    }
2447
2448    /// GET GetAdditivesTypes V2
2449    /// Retrieves a list of all plant additive types defined within a Facility.
2450    /// 
2451    ///   Permissions Required:
2452    ///   - None
2453    ///
2454    pub async fn plants_get_additives_types_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2455        let client = self.client.clone();
2456        let body = body.cloned();
2457        self.rate_limiter.execute(None, true, move || {
2458            let client = client.clone();
2459            let no = no.clone();
2460            let body = body.clone();
2461            async move { client.plants_get_additives_types_v2(no, body.as_ref()).await }
2462        }).await
2463    }
2464
2465    /// GET GetByLabel V1
2466    /// Permissions Required:
2467    ///   - View Veg/Flower Plants
2468    ///
2469    pub async fn plants_get_by_label_v1(&self, label: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2470        let label = label.to_string();
2471        let client = self.client.clone();
2472        let body = body.cloned();
2473        self.rate_limiter.execute(None, true, move || {
2474            let client = client.clone();
2475            let label = label.clone();
2476            let license_number = license_number.clone();
2477            let body = body.clone();
2478            async move { client.plants_get_by_label_v1(&label, license_number, body.as_ref()).await }
2479        }).await
2480    }
2481
2482    /// GET GetByLabel V2
2483    /// Retrieves a Plant by label.
2484    /// 
2485    ///   Permissions Required:
2486    ///   - View Veg/Flower Plants
2487    ///
2488    pub async fn plants_get_by_label_v2(&self, label: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2489        let label = label.to_string();
2490        let client = self.client.clone();
2491        let body = body.cloned();
2492        self.rate_limiter.execute(None, true, move || {
2493            let client = client.clone();
2494            let label = label.clone();
2495            let license_number = license_number.clone();
2496            let body = body.clone();
2497            async move { client.plants_get_by_label_v2(&label, license_number, body.as_ref()).await }
2498        }).await
2499    }
2500
2501    /// GET GetFlowering V1
2502    /// Permissions Required:
2503    ///   - View Veg/Flower Plants
2504    ///
2505    pub async fn plants_get_flowering_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2506        let client = self.client.clone();
2507        let body = body.cloned();
2508        self.rate_limiter.execute(None, true, move || {
2509            let client = client.clone();
2510            let last_modified_end = last_modified_end.clone();
2511            let last_modified_start = last_modified_start.clone();
2512            let license_number = license_number.clone();
2513            let body = body.clone();
2514            async move { client.plants_get_flowering_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
2515        }).await
2516    }
2517
2518    /// GET GetFlowering V2
2519    /// Retrieves flowering-phase plants at a specified Facility, optionally filtered by last modified date.
2520    /// 
2521    ///   Permissions Required:
2522    ///   - View Veg/Flower Plants
2523    ///
2524    pub async fn plants_get_flowering_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2525        let client = self.client.clone();
2526        let body = body.cloned();
2527        self.rate_limiter.execute(None, true, move || {
2528            let client = client.clone();
2529            let last_modified_end = last_modified_end.clone();
2530            let last_modified_start = last_modified_start.clone();
2531            let license_number = license_number.clone();
2532            let page_number = page_number.clone();
2533            let page_size = page_size.clone();
2534            let body = body.clone();
2535            async move { client.plants_get_flowering_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
2536        }).await
2537    }
2538
2539    /// GET GetGrowthPhases V1
2540    /// Permissions Required:
2541    ///   - None
2542    ///
2543    pub async fn plants_get_growth_phases_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2544        let client = self.client.clone();
2545        let body = body.cloned();
2546        self.rate_limiter.execute(None, true, move || {
2547            let client = client.clone();
2548            let license_number = license_number.clone();
2549            let body = body.clone();
2550            async move { client.plants_get_growth_phases_v1(license_number, body.as_ref()).await }
2551        }).await
2552    }
2553
2554    /// GET GetGrowthPhases V2
2555    /// Retrieves the list of growth phases supported by a specified Facility.
2556    /// 
2557    ///   Permissions Required:
2558    ///   - None
2559    ///
2560    pub async fn plants_get_growth_phases_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2561        let client = self.client.clone();
2562        let body = body.cloned();
2563        self.rate_limiter.execute(None, true, move || {
2564            let client = client.clone();
2565            let license_number = license_number.clone();
2566            let body = body.clone();
2567            async move { client.plants_get_growth_phases_v2(license_number, body.as_ref()).await }
2568        }).await
2569    }
2570
2571    /// GET GetInactive V1
2572    /// Permissions Required:
2573    ///   - View Veg/Flower Plants
2574    ///
2575    pub async fn plants_get_inactive_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2576        let client = self.client.clone();
2577        let body = body.cloned();
2578        self.rate_limiter.execute(None, true, move || {
2579            let client = client.clone();
2580            let last_modified_end = last_modified_end.clone();
2581            let last_modified_start = last_modified_start.clone();
2582            let license_number = license_number.clone();
2583            let body = body.clone();
2584            async move { client.plants_get_inactive_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
2585        }).await
2586    }
2587
2588    /// GET GetInactive V2
2589    /// Retrieves inactive plants at a specified Facility.
2590    /// 
2591    ///   Permissions Required:
2592    ///   - View Veg/Flower Plants
2593    ///
2594    pub async fn plants_get_inactive_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2595        let client = self.client.clone();
2596        let body = body.cloned();
2597        self.rate_limiter.execute(None, true, move || {
2598            let client = client.clone();
2599            let last_modified_end = last_modified_end.clone();
2600            let last_modified_start = last_modified_start.clone();
2601            let license_number = license_number.clone();
2602            let page_number = page_number.clone();
2603            let page_size = page_size.clone();
2604            let body = body.clone();
2605            async move { client.plants_get_inactive_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
2606        }).await
2607    }
2608
2609    /// GET GetMother V2
2610    /// Retrieves mother-phase plants at a specified Facility.
2611    /// 
2612    ///   Permissions Required:
2613    ///   - View Mother Plants
2614    ///
2615    pub async fn plants_get_mother_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2616        let client = self.client.clone();
2617        let body = body.cloned();
2618        self.rate_limiter.execute(None, true, move || {
2619            let client = client.clone();
2620            let last_modified_end = last_modified_end.clone();
2621            let last_modified_start = last_modified_start.clone();
2622            let license_number = license_number.clone();
2623            let page_number = page_number.clone();
2624            let page_size = page_size.clone();
2625            let body = body.clone();
2626            async move { client.plants_get_mother_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
2627        }).await
2628    }
2629
2630    /// GET GetMotherInactive V2
2631    /// Retrieves inactive mother-phase plants at a specified Facility.
2632    /// 
2633    ///   Permissions Required:
2634    ///   - View Mother Plants
2635    ///
2636    pub async fn plants_get_mother_inactive_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2637        let client = self.client.clone();
2638        let body = body.cloned();
2639        self.rate_limiter.execute(None, true, move || {
2640            let client = client.clone();
2641            let last_modified_end = last_modified_end.clone();
2642            let last_modified_start = last_modified_start.clone();
2643            let license_number = license_number.clone();
2644            let page_number = page_number.clone();
2645            let page_size = page_size.clone();
2646            let body = body.clone();
2647            async move { client.plants_get_mother_inactive_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
2648        }).await
2649    }
2650
2651    /// GET GetMotherOnhold V2
2652    /// Retrieves mother-phase plants currently marked as on hold at a specified Facility.
2653    /// 
2654    ///   Permissions Required:
2655    ///   - View Mother Plants
2656    ///
2657    pub async fn plants_get_mother_onhold_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2658        let client = self.client.clone();
2659        let body = body.cloned();
2660        self.rate_limiter.execute(None, true, move || {
2661            let client = client.clone();
2662            let last_modified_end = last_modified_end.clone();
2663            let last_modified_start = last_modified_start.clone();
2664            let license_number = license_number.clone();
2665            let page_number = page_number.clone();
2666            let page_size = page_size.clone();
2667            let body = body.clone();
2668            async move { client.plants_get_mother_onhold_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
2669        }).await
2670    }
2671
2672    /// GET GetOnhold V1
2673    /// Permissions Required:
2674    ///   - View Veg/Flower Plants
2675    ///
2676    pub async fn plants_get_onhold_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2677        let client = self.client.clone();
2678        let body = body.cloned();
2679        self.rate_limiter.execute(None, true, move || {
2680            let client = client.clone();
2681            let last_modified_end = last_modified_end.clone();
2682            let last_modified_start = last_modified_start.clone();
2683            let license_number = license_number.clone();
2684            let body = body.clone();
2685            async move { client.plants_get_onhold_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
2686        }).await
2687    }
2688
2689    /// GET GetOnhold V2
2690    /// Retrieves plants that are currently on hold at a specified Facility.
2691    /// 
2692    ///   Permissions Required:
2693    ///   - View Veg/Flower Plants
2694    ///
2695    pub async fn plants_get_onhold_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2696        let client = self.client.clone();
2697        let body = body.cloned();
2698        self.rate_limiter.execute(None, true, move || {
2699            let client = client.clone();
2700            let last_modified_end = last_modified_end.clone();
2701            let last_modified_start = last_modified_start.clone();
2702            let license_number = license_number.clone();
2703            let page_number = page_number.clone();
2704            let page_size = page_size.clone();
2705            let body = body.clone();
2706            async move { client.plants_get_onhold_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
2707        }).await
2708    }
2709
2710    /// GET GetVegetative V1
2711    /// Permissions Required:
2712    ///   - View Veg/Flower Plants
2713    ///
2714    pub async fn plants_get_vegetative_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2715        let client = self.client.clone();
2716        let body = body.cloned();
2717        self.rate_limiter.execute(None, true, move || {
2718            let client = client.clone();
2719            let last_modified_end = last_modified_end.clone();
2720            let last_modified_start = last_modified_start.clone();
2721            let license_number = license_number.clone();
2722            let body = body.clone();
2723            async move { client.plants_get_vegetative_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
2724        }).await
2725    }
2726
2727    /// GET GetVegetative V2
2728    /// Retrieves vegetative-phase plants at a specified Facility, optionally filtered by last modified date.
2729    /// 
2730    ///   Permissions Required:
2731    ///   - View Veg/Flower Plants
2732    ///
2733    pub async fn plants_get_vegetative_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2734        let client = self.client.clone();
2735        let body = body.cloned();
2736        self.rate_limiter.execute(None, true, move || {
2737            let client = client.clone();
2738            let last_modified_end = last_modified_end.clone();
2739            let last_modified_start = last_modified_start.clone();
2740            let license_number = license_number.clone();
2741            let page_number = page_number.clone();
2742            let page_size = page_size.clone();
2743            let body = body.clone();
2744            async move { client.plants_get_vegetative_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
2745        }).await
2746    }
2747
2748    /// GET GetWaste V2
2749    /// Retrieves a list of recorded plant waste events for a specific Facility.
2750    /// 
2751    ///   Permissions Required:
2752    ///   - View Plants Waste
2753    ///
2754    pub async fn plants_get_waste_v2(&self, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2755        let client = self.client.clone();
2756        let body = body.cloned();
2757        self.rate_limiter.execute(None, true, move || {
2758            let client = client.clone();
2759            let license_number = license_number.clone();
2760            let page_number = page_number.clone();
2761            let page_size = page_size.clone();
2762            let body = body.clone();
2763            async move { client.plants_get_waste_v2(license_number, page_number, page_size, body.as_ref()).await }
2764        }).await
2765    }
2766
2767    /// GET GetWasteMethodsAll V1
2768    /// Permissions Required:
2769    ///   - None
2770    ///
2771    pub async fn plants_get_waste_methods_all_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2772        let client = self.client.clone();
2773        let body = body.cloned();
2774        self.rate_limiter.execute(None, true, move || {
2775            let client = client.clone();
2776            let no = no.clone();
2777            let body = body.clone();
2778            async move { client.plants_get_waste_methods_all_v1(no, body.as_ref()).await }
2779        }).await
2780    }
2781
2782    /// GET GetWasteMethodsAll V2
2783    /// Retrieves a list of all available plant waste methods for use within a Facility.
2784    /// 
2785    ///   Permissions Required:
2786    ///   - None
2787    ///
2788    pub async fn plants_get_waste_methods_all_v2(&self, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2789        let client = self.client.clone();
2790        let body = body.cloned();
2791        self.rate_limiter.execute(None, true, move || {
2792            let client = client.clone();
2793            let page_number = page_number.clone();
2794            let page_size = page_size.clone();
2795            let body = body.clone();
2796            async move { client.plants_get_waste_methods_all_v2(page_number, page_size, body.as_ref()).await }
2797        }).await
2798    }
2799
2800    /// GET GetWastePackage V2
2801    /// Retrieves a list of package records linked to the specified plantWasteId for a given facility.
2802    /// 
2803    ///   Permissions Required:
2804    ///   - View Plants Waste
2805    ///
2806    pub async fn plants_get_waste_package_v2(&self, id: &str, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2807        let id = id.to_string();
2808        let client = self.client.clone();
2809        let body = body.cloned();
2810        self.rate_limiter.execute(None, true, move || {
2811            let client = client.clone();
2812            let id = id.clone();
2813            let license_number = license_number.clone();
2814            let page_number = page_number.clone();
2815            let page_size = page_size.clone();
2816            let body = body.clone();
2817            async move { client.plants_get_waste_package_v2(&id, license_number, page_number, page_size, body.as_ref()).await }
2818        }).await
2819    }
2820
2821    /// GET GetWastePlant V2
2822    /// Retrieves a list of plants records linked to the specified plantWasteId for a given facility.
2823    /// 
2824    ///   Permissions Required:
2825    ///   - View Plants Waste
2826    ///
2827    pub async fn plants_get_waste_plant_v2(&self, id: &str, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2828        let id = id.to_string();
2829        let client = self.client.clone();
2830        let body = body.cloned();
2831        self.rate_limiter.execute(None, true, move || {
2832            let client = client.clone();
2833            let id = id.clone();
2834            let license_number = license_number.clone();
2835            let page_number = page_number.clone();
2836            let page_size = page_size.clone();
2837            let body = body.clone();
2838            async move { client.plants_get_waste_plant_v2(&id, license_number, page_number, page_size, body.as_ref()).await }
2839        }).await
2840    }
2841
2842    /// GET GetWasteReasons V1
2843    /// Permissions Required:
2844    ///   - None
2845    ///
2846    pub async fn plants_get_waste_reasons_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2847        let client = self.client.clone();
2848        let body = body.cloned();
2849        self.rate_limiter.execute(None, true, move || {
2850            let client = client.clone();
2851            let license_number = license_number.clone();
2852            let body = body.clone();
2853            async move { client.plants_get_waste_reasons_v1(license_number, body.as_ref()).await }
2854        }).await
2855    }
2856
2857    /// GET GetWasteReasons V2
2858    /// Retriveves available reasons for recording mature plant waste at a specified Facility.
2859    /// 
2860    ///   Permissions Required:
2861    ///   - None
2862    ///
2863    pub async fn plants_get_waste_reasons_v2(&self, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2864        let client = self.client.clone();
2865        let body = body.cloned();
2866        self.rate_limiter.execute(None, true, move || {
2867            let client = client.clone();
2868            let license_number = license_number.clone();
2869            let page_number = page_number.clone();
2870            let page_size = page_size.clone();
2871            let body = body.clone();
2872            async move { client.plants_get_waste_reasons_v2(license_number, page_number, page_size, body.as_ref()).await }
2873        }).await
2874    }
2875
2876    /// PUT UpdateAdjust V2
2877    /// Adjusts the recorded count of plants at a specified Facility.
2878    /// 
2879    ///   Permissions Required:
2880    ///   - View Veg/Flower Plants
2881    ///   - Manage Veg/Flower Plants Inventory
2882    ///
2883    pub async fn plants_update_adjust_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsUpdateAdjustV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2884        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2885        let client = self.client.clone();
2886        let body_val = body_val.clone();
2887        self.rate_limiter.execute(None, false, move || {
2888            let client = client.clone();
2889            let license_number = license_number.clone();
2890            let body_val = body_val.clone();
2891            async move { client.plants_update_adjust_v2(license_number, body_val.as_ref()).await }
2892        }).await
2893    }
2894
2895    /// PUT UpdateGrowthphase V2
2896    /// Changes the growth phases of plants within a specified Facility.
2897    /// 
2898    ///   Permissions Required:
2899    ///   - View Veg/Flower Plants
2900    ///   - Manage Veg/Flower Plants Inventory
2901    ///
2902    pub async fn plants_update_growthphase_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsUpdateGrowthphaseV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2903        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2904        let client = self.client.clone();
2905        let body_val = body_val.clone();
2906        self.rate_limiter.execute(None, false, move || {
2907            let client = client.clone();
2908            let license_number = license_number.clone();
2909            let body_val = body_val.clone();
2910            async move { client.plants_update_growthphase_v2(license_number, body_val.as_ref()).await }
2911        }).await
2912    }
2913
2914    /// PUT UpdateHarvest V2
2915    /// Processes whole plant Harvest data for a specific Facility. NOTE: If HarvestName is excluded from the request body, or if it is passed in as null, the harvest name is auto-generated.
2916    /// 
2917    ///   Permissions Required:
2918    ///   - View Veg/Flower Plants
2919    ///   - Manicure/Harvest Veg/Flower Plants
2920    ///
2921    pub async fn plants_update_harvest_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsUpdateHarvestV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2922        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2923        let client = self.client.clone();
2924        let body_val = body_val.clone();
2925        self.rate_limiter.execute(None, false, move || {
2926            let client = client.clone();
2927            let license_number = license_number.clone();
2928            let body_val = body_val.clone();
2929            async move { client.plants_update_harvest_v2(license_number, body_val.as_ref()).await }
2930        }).await
2931    }
2932
2933    /// PUT UpdateLocation V2
2934    /// Moves plant batches to new locations within a specified Facility.
2935    /// 
2936    ///   Permissions Required:
2937    ///   - View Veg/Flower Plants
2938    ///   - Manage Veg/Flower Plants Inventory
2939    ///
2940    pub async fn plants_update_location_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsUpdateLocationV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2941        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2942        let client = self.client.clone();
2943        let body_val = body_val.clone();
2944        self.rate_limiter.execute(None, false, move || {
2945            let client = client.clone();
2946            let license_number = license_number.clone();
2947            let body_val = body_val.clone();
2948            async move { client.plants_update_location_v2(license_number, body_val.as_ref()).await }
2949        }).await
2950    }
2951
2952    /// PUT UpdateMerge V2
2953    /// Merges multiple plant groups into a single group within a Facility.
2954    /// 
2955    ///   Permissions Required:
2956    ///   - View Veg/Flower Plants
2957    ///   - Manicure/Harvest Veg/Flower Plants
2958    ///
2959    pub async fn plants_update_merge_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsUpdateMergeV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2960        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2961        let client = self.client.clone();
2962        let body_val = body_val.clone();
2963        self.rate_limiter.execute(None, false, move || {
2964            let client = client.clone();
2965            let license_number = license_number.clone();
2966            let body_val = body_val.clone();
2967            async move { client.plants_update_merge_v2(license_number, body_val.as_ref()).await }
2968        }).await
2969    }
2970
2971    /// PUT UpdateSplit V2
2972    /// Splits an existing plant group into multiple groups within a Facility.
2973    /// 
2974    ///   Permissions Required:
2975    ///   - View Plant
2976    ///
2977    pub async fn plants_update_split_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsUpdateSplitV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2978        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2979        let client = self.client.clone();
2980        let body_val = body_val.clone();
2981        self.rate_limiter.execute(None, false, move || {
2982            let client = client.clone();
2983            let license_number = license_number.clone();
2984            let body_val = body_val.clone();
2985            async move { client.plants_update_split_v2(license_number, body_val.as_ref()).await }
2986        }).await
2987    }
2988
2989    /// PUT UpdateStrain V2
2990    /// Updates the strain information for plants within a Facility.
2991    /// 
2992    ///   Permissions Required:
2993    ///   - View Veg/Flower Plants
2994    ///   - Manage Veg/Flower Plants Inventory
2995    ///
2996    pub async fn plants_update_strain_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsUpdateStrainV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2997        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2998        let client = self.client.clone();
2999        let body_val = body_val.clone();
3000        self.rate_limiter.execute(None, false, move || {
3001            let client = client.clone();
3002            let license_number = license_number.clone();
3003            let body_val = body_val.clone();
3004            async move { client.plants_update_strain_v2(license_number, body_val.as_ref()).await }
3005        }).await
3006    }
3007
3008    /// PUT UpdateTag V2
3009    /// Replaces existing plant tags with new tags for plants within a Facility.
3010    /// 
3011    ///   Permissions Required:
3012    ///   - View Veg/Flower Plants
3013    ///   - Manage Veg/Flower Plants Inventory
3014    ///
3015    pub async fn plants_update_tag_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsUpdateTagV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3016        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3017        let client = self.client.clone();
3018        let body_val = body_val.clone();
3019        self.rate_limiter.execute(None, false, move || {
3020            let client = client.clone();
3021            let license_number = license_number.clone();
3022            let body_val = body_val.clone();
3023            async move { client.plants_update_tag_v2(license_number, body_val.as_ref()).await }
3024        }).await
3025    }
3026
3027    /// POST CreateAdjust V1
3028    /// Permissions Required:
3029    ///   - ManageProcessingJobs
3030    ///
3031    pub async fn processing_jobs_create_adjust_v1(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsCreateAdjustV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3032        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3033        let client = self.client.clone();
3034        let body_val = body_val.clone();
3035        self.rate_limiter.execute(None, false, move || {
3036            let client = client.clone();
3037            let license_number = license_number.clone();
3038            let body_val = body_val.clone();
3039            async move { client.processing_jobs_create_adjust_v1(license_number, body_val.as_ref()).await }
3040        }).await
3041    }
3042
3043    /// POST CreateAdjust V2
3044    /// Adjusts the details of existing processing jobs at a Facility, including units of measure and associated packages.
3045    /// 
3046    ///   Permissions Required:
3047    ///   - Manage Processing Job
3048    ///
3049    pub async fn processing_jobs_create_adjust_v2(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsCreateAdjustV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3050        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3051        let client = self.client.clone();
3052        let body_val = body_val.clone();
3053        self.rate_limiter.execute(None, false, move || {
3054            let client = client.clone();
3055            let license_number = license_number.clone();
3056            let body_val = body_val.clone();
3057            async move { client.processing_jobs_create_adjust_v2(license_number, body_val.as_ref()).await }
3058        }).await
3059    }
3060
3061    /// POST CreateJobtypes V1
3062    /// Permissions Required:
3063    ///   - Manage Processing Job
3064    ///
3065    pub async fn processing_jobs_create_jobtypes_v1(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsCreateJobtypesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3066        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3067        let client = self.client.clone();
3068        let body_val = body_val.clone();
3069        self.rate_limiter.execute(None, false, move || {
3070            let client = client.clone();
3071            let license_number = license_number.clone();
3072            let body_val = body_val.clone();
3073            async move { client.processing_jobs_create_jobtypes_v1(license_number, body_val.as_ref()).await }
3074        }).await
3075    }
3076
3077    /// POST CreateJobtypes V2
3078    /// Creates new processing job types for a Facility, including name, category, description, steps, and attributes.
3079    /// 
3080    ///   Permissions Required:
3081    ///   - Manage Processing Job
3082    ///
3083    pub async fn processing_jobs_create_jobtypes_v2(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsCreateJobtypesV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3084        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3085        let client = self.client.clone();
3086        let body_val = body_val.clone();
3087        self.rate_limiter.execute(None, false, move || {
3088            let client = client.clone();
3089            let license_number = license_number.clone();
3090            let body_val = body_val.clone();
3091            async move { client.processing_jobs_create_jobtypes_v2(license_number, body_val.as_ref()).await }
3092        }).await
3093    }
3094
3095    /// POST CreateStart V1
3096    /// Permissions Required:
3097    ///   - ManageProcessingJobs
3098    ///
3099    pub async fn processing_jobs_create_start_v1(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsCreateStartV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3100        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3101        let client = self.client.clone();
3102        let body_val = body_val.clone();
3103        self.rate_limiter.execute(None, false, move || {
3104            let client = client.clone();
3105            let license_number = license_number.clone();
3106            let body_val = body_val.clone();
3107            async move { client.processing_jobs_create_start_v1(license_number, body_val.as_ref()).await }
3108        }).await
3109    }
3110
3111    /// POST CreateStart V2
3112    /// Initiates new processing jobs at a Facility, including job details and associated packages.
3113    /// 
3114    ///   Permissions Required:
3115    ///   - Manage Processing Job
3116    ///
3117    pub async fn processing_jobs_create_start_v2(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsCreateStartV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3118        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3119        let client = self.client.clone();
3120        let body_val = body_val.clone();
3121        self.rate_limiter.execute(None, false, move || {
3122            let client = client.clone();
3123            let license_number = license_number.clone();
3124            let body_val = body_val.clone();
3125            async move { client.processing_jobs_create_start_v2(license_number, body_val.as_ref()).await }
3126        }).await
3127    }
3128
3129    /// POST Createpackages V1
3130    /// Permissions Required:
3131    ///   - ManageProcessingJobs
3132    ///
3133    pub async fn processing_jobs_createpackages_v1(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsCreatepackagesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3134        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3135        let client = self.client.clone();
3136        let body_val = body_val.clone();
3137        self.rate_limiter.execute(None, false, move || {
3138            let client = client.clone();
3139            let license_number = license_number.clone();
3140            let body_val = body_val.clone();
3141            async move { client.processing_jobs_createpackages_v1(license_number, body_val.as_ref()).await }
3142        }).await
3143    }
3144
3145    /// POST Createpackages V2
3146    /// Creates packages from processing jobs at a Facility, including optional location and note assignments.
3147    /// 
3148    ///   Permissions Required:
3149    ///   - Manage Processing Job
3150    ///
3151    pub async fn processing_jobs_createpackages_v2(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsCreatepackagesV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3152        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3153        let client = self.client.clone();
3154        let body_val = body_val.clone();
3155        self.rate_limiter.execute(None, false, move || {
3156            let client = client.clone();
3157            let license_number = license_number.clone();
3158            let body_val = body_val.clone();
3159            async move { client.processing_jobs_createpackages_v2(license_number, body_val.as_ref()).await }
3160        }).await
3161    }
3162
3163    /// DELETE Delete V1
3164    /// Permissions Required:
3165    ///   - Manage Processing Job
3166    ///
3167    pub async fn processing_jobs_delete_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3168        let id = id.to_string();
3169        let client = self.client.clone();
3170        let body = body.cloned();
3171        self.rate_limiter.execute(None, false, move || {
3172            let client = client.clone();
3173            let id = id.clone();
3174            let license_number = license_number.clone();
3175            let body = body.clone();
3176            async move { client.processing_jobs_delete_v1(&id, license_number, body.as_ref()).await }
3177        }).await
3178    }
3179
3180    /// DELETE Delete V2
3181    /// Archives a Processing Job at a Facility by marking it as inactive and removing it from active use.
3182    /// 
3183    ///   Permissions Required:
3184    ///   - Manage Processing Job
3185    ///
3186    pub async fn processing_jobs_delete_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3187        let id = id.to_string();
3188        let client = self.client.clone();
3189        let body = body.cloned();
3190        self.rate_limiter.execute(None, false, move || {
3191            let client = client.clone();
3192            let id = id.clone();
3193            let license_number = license_number.clone();
3194            let body = body.clone();
3195            async move { client.processing_jobs_delete_v2(&id, license_number, body.as_ref()).await }
3196        }).await
3197    }
3198
3199    /// DELETE DeleteJobtypes V1
3200    /// Permissions Required:
3201    ///   - Manage Processing Job
3202    ///
3203    pub async fn processing_jobs_delete_jobtypes_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3204        let id = id.to_string();
3205        let client = self.client.clone();
3206        let body = body.cloned();
3207        self.rate_limiter.execute(None, false, move || {
3208            let client = client.clone();
3209            let id = id.clone();
3210            let license_number = license_number.clone();
3211            let body = body.clone();
3212            async move { client.processing_jobs_delete_jobtypes_v1(&id, license_number, body.as_ref()).await }
3213        }).await
3214    }
3215
3216    /// DELETE DeleteJobtypes V2
3217    /// Archives a Processing Job Type at a Facility, making it inactive for future use.
3218    /// 
3219    ///   Permissions Required:
3220    ///   - Manage Processing Job
3221    ///
3222    pub async fn processing_jobs_delete_jobtypes_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3223        let id = id.to_string();
3224        let client = self.client.clone();
3225        let body = body.cloned();
3226        self.rate_limiter.execute(None, false, move || {
3227            let client = client.clone();
3228            let id = id.clone();
3229            let license_number = license_number.clone();
3230            let body = body.clone();
3231            async move { client.processing_jobs_delete_jobtypes_v2(&id, license_number, body.as_ref()).await }
3232        }).await
3233    }
3234
3235    /// GET Get V1
3236    /// Permissions Required:
3237    ///   - Manage Processing Job
3238    ///
3239    pub async fn processing_jobs_get_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3240        let id = id.to_string();
3241        let client = self.client.clone();
3242        let body = body.cloned();
3243        self.rate_limiter.execute(None, true, move || {
3244            let client = client.clone();
3245            let id = id.clone();
3246            let license_number = license_number.clone();
3247            let body = body.clone();
3248            async move { client.processing_jobs_get_v1(&id, license_number, body.as_ref()).await }
3249        }).await
3250    }
3251
3252    /// GET Get V2
3253    /// Retrieves a ProcessingJob by Id.
3254    /// 
3255    ///   Permissions Required:
3256    ///   - Manage Processing Job
3257    ///
3258    pub async fn processing_jobs_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3259        let id = id.to_string();
3260        let client = self.client.clone();
3261        let body = body.cloned();
3262        self.rate_limiter.execute(None, true, move || {
3263            let client = client.clone();
3264            let id = id.clone();
3265            let license_number = license_number.clone();
3266            let body = body.clone();
3267            async move { client.processing_jobs_get_v2(&id, license_number, body.as_ref()).await }
3268        }).await
3269    }
3270
3271    /// GET GetActive V1
3272    /// Permissions Required:
3273    ///   - Manage Processing Job
3274    ///
3275    pub async fn processing_jobs_get_active_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3276        let client = self.client.clone();
3277        let body = body.cloned();
3278        self.rate_limiter.execute(None, true, move || {
3279            let client = client.clone();
3280            let last_modified_end = last_modified_end.clone();
3281            let last_modified_start = last_modified_start.clone();
3282            let license_number = license_number.clone();
3283            let body = body.clone();
3284            async move { client.processing_jobs_get_active_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
3285        }).await
3286    }
3287
3288    /// GET GetActive V2
3289    /// Retrieves active processing jobs at a specified Facility.
3290    /// 
3291    ///   Permissions Required:
3292    ///   - Manage Processing Job
3293    ///
3294    pub async fn processing_jobs_get_active_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3295        let client = self.client.clone();
3296        let body = body.cloned();
3297        self.rate_limiter.execute(None, true, move || {
3298            let client = client.clone();
3299            let last_modified_end = last_modified_end.clone();
3300            let last_modified_start = last_modified_start.clone();
3301            let license_number = license_number.clone();
3302            let page_number = page_number.clone();
3303            let page_size = page_size.clone();
3304            let body = body.clone();
3305            async move { client.processing_jobs_get_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
3306        }).await
3307    }
3308
3309    /// GET GetInactive V1
3310    /// Permissions Required:
3311    ///   - Manage Processing Job
3312    ///
3313    pub async fn processing_jobs_get_inactive_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3314        let client = self.client.clone();
3315        let body = body.cloned();
3316        self.rate_limiter.execute(None, true, move || {
3317            let client = client.clone();
3318            let last_modified_end = last_modified_end.clone();
3319            let last_modified_start = last_modified_start.clone();
3320            let license_number = license_number.clone();
3321            let body = body.clone();
3322            async move { client.processing_jobs_get_inactive_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
3323        }).await
3324    }
3325
3326    /// GET GetInactive V2
3327    /// Retrieves inactive processing jobs at a specified Facility.
3328    /// 
3329    ///   Permissions Required:
3330    ///   - Manage Processing Job
3331    ///
3332    pub async fn processing_jobs_get_inactive_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3333        let client = self.client.clone();
3334        let body = body.cloned();
3335        self.rate_limiter.execute(None, true, move || {
3336            let client = client.clone();
3337            let last_modified_end = last_modified_end.clone();
3338            let last_modified_start = last_modified_start.clone();
3339            let license_number = license_number.clone();
3340            let page_number = page_number.clone();
3341            let page_size = page_size.clone();
3342            let body = body.clone();
3343            async move { client.processing_jobs_get_inactive_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
3344        }).await
3345    }
3346
3347    /// GET GetJobtypesActive V1
3348    /// Permissions Required:
3349    ///   - Manage Processing Job
3350    ///
3351    pub async fn processing_jobs_get_jobtypes_active_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3352        let client = self.client.clone();
3353        let body = body.cloned();
3354        self.rate_limiter.execute(None, true, move || {
3355            let client = client.clone();
3356            let last_modified_end = last_modified_end.clone();
3357            let last_modified_start = last_modified_start.clone();
3358            let license_number = license_number.clone();
3359            let body = body.clone();
3360            async move { client.processing_jobs_get_jobtypes_active_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
3361        }).await
3362    }
3363
3364    /// GET GetJobtypesActive V2
3365    /// Retrieves a list of all active processing job types defined within a Facility.
3366    /// 
3367    ///   Permissions Required:
3368    ///   - Manage Processing Job
3369    ///
3370    pub async fn processing_jobs_get_jobtypes_active_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3371        let client = self.client.clone();
3372        let body = body.cloned();
3373        self.rate_limiter.execute(None, true, move || {
3374            let client = client.clone();
3375            let last_modified_end = last_modified_end.clone();
3376            let last_modified_start = last_modified_start.clone();
3377            let license_number = license_number.clone();
3378            let page_number = page_number.clone();
3379            let page_size = page_size.clone();
3380            let body = body.clone();
3381            async move { client.processing_jobs_get_jobtypes_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
3382        }).await
3383    }
3384
3385    /// GET GetJobtypesAttributes V1
3386    /// Permissions Required:
3387    ///   - Manage Processing Job
3388    ///
3389    pub async fn processing_jobs_get_jobtypes_attributes_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3390        let client = self.client.clone();
3391        let body = body.cloned();
3392        self.rate_limiter.execute(None, true, move || {
3393            let client = client.clone();
3394            let license_number = license_number.clone();
3395            let body = body.clone();
3396            async move { client.processing_jobs_get_jobtypes_attributes_v1(license_number, body.as_ref()).await }
3397        }).await
3398    }
3399
3400    /// GET GetJobtypesAttributes V2
3401    /// Retrieves all processing job attributes available for a Facility.
3402    /// 
3403    ///   Permissions Required:
3404    ///   - Manage Processing Job
3405    ///
3406    pub async fn processing_jobs_get_jobtypes_attributes_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3407        let client = self.client.clone();
3408        let body = body.cloned();
3409        self.rate_limiter.execute(None, true, move || {
3410            let client = client.clone();
3411            let license_number = license_number.clone();
3412            let body = body.clone();
3413            async move { client.processing_jobs_get_jobtypes_attributes_v2(license_number, body.as_ref()).await }
3414        }).await
3415    }
3416
3417    /// GET GetJobtypesCategories V1
3418    /// Permissions Required:
3419    ///   - Manage Processing Job
3420    ///
3421    pub async fn processing_jobs_get_jobtypes_categories_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3422        let client = self.client.clone();
3423        let body = body.cloned();
3424        self.rate_limiter.execute(None, true, move || {
3425            let client = client.clone();
3426            let license_number = license_number.clone();
3427            let body = body.clone();
3428            async move { client.processing_jobs_get_jobtypes_categories_v1(license_number, body.as_ref()).await }
3429        }).await
3430    }
3431
3432    /// GET GetJobtypesCategories V2
3433    /// Retrieves all processing job categories available for a specified Facility.
3434    /// 
3435    ///   Permissions Required:
3436    ///   - Manage Processing Job
3437    ///
3438    pub async fn processing_jobs_get_jobtypes_categories_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3439        let client = self.client.clone();
3440        let body = body.cloned();
3441        self.rate_limiter.execute(None, true, move || {
3442            let client = client.clone();
3443            let license_number = license_number.clone();
3444            let body = body.clone();
3445            async move { client.processing_jobs_get_jobtypes_categories_v2(license_number, body.as_ref()).await }
3446        }).await
3447    }
3448
3449    /// GET GetJobtypesInactive V1
3450    /// Permissions Required:
3451    ///   - Manage Processing Job
3452    ///
3453    pub async fn processing_jobs_get_jobtypes_inactive_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3454        let client = self.client.clone();
3455        let body = body.cloned();
3456        self.rate_limiter.execute(None, true, move || {
3457            let client = client.clone();
3458            let last_modified_end = last_modified_end.clone();
3459            let last_modified_start = last_modified_start.clone();
3460            let license_number = license_number.clone();
3461            let body = body.clone();
3462            async move { client.processing_jobs_get_jobtypes_inactive_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
3463        }).await
3464    }
3465
3466    /// GET GetJobtypesInactive V2
3467    /// Retrieves a list of all inactive processing job types defined within a Facility.
3468    /// 
3469    ///   Permissions Required:
3470    ///   - Manage Processing Job
3471    ///
3472    pub async fn processing_jobs_get_jobtypes_inactive_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3473        let client = self.client.clone();
3474        let body = body.cloned();
3475        self.rate_limiter.execute(None, true, move || {
3476            let client = client.clone();
3477            let last_modified_end = last_modified_end.clone();
3478            let last_modified_start = last_modified_start.clone();
3479            let license_number = license_number.clone();
3480            let page_number = page_number.clone();
3481            let page_size = page_size.clone();
3482            let body = body.clone();
3483            async move { client.processing_jobs_get_jobtypes_inactive_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
3484        }).await
3485    }
3486
3487    /// PUT UpdateFinish V1
3488    /// Permissions Required:
3489    ///   - Manage Processing Job
3490    ///
3491    pub async fn processing_jobs_update_finish_v1(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsUpdateFinishV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3492        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3493        let client = self.client.clone();
3494        let body_val = body_val.clone();
3495        self.rate_limiter.execute(None, false, move || {
3496            let client = client.clone();
3497            let license_number = license_number.clone();
3498            let body_val = body_val.clone();
3499            async move { client.processing_jobs_update_finish_v1(license_number, body_val.as_ref()).await }
3500        }).await
3501    }
3502
3503    /// PUT UpdateFinish V2
3504    /// Completes processing jobs at a Facility by recording final notes and waste measurements.
3505    /// 
3506    ///   Permissions Required:
3507    ///   - Manage Processing Job
3508    ///
3509    pub async fn processing_jobs_update_finish_v2(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsUpdateFinishV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3510        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3511        let client = self.client.clone();
3512        let body_val = body_val.clone();
3513        self.rate_limiter.execute(None, false, move || {
3514            let client = client.clone();
3515            let license_number = license_number.clone();
3516            let body_val = body_val.clone();
3517            async move { client.processing_jobs_update_finish_v2(license_number, body_val.as_ref()).await }
3518        }).await
3519    }
3520
3521    /// PUT UpdateJobtypes V1
3522    /// Permissions Required:
3523    ///   - Manage Processing Job
3524    ///
3525    pub async fn processing_jobs_update_jobtypes_v1(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsUpdateJobtypesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3526        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3527        let client = self.client.clone();
3528        let body_val = body_val.clone();
3529        self.rate_limiter.execute(None, false, move || {
3530            let client = client.clone();
3531            let license_number = license_number.clone();
3532            let body_val = body_val.clone();
3533            async move { client.processing_jobs_update_jobtypes_v1(license_number, body_val.as_ref()).await }
3534        }).await
3535    }
3536
3537    /// PUT UpdateJobtypes V2
3538    /// Updates existing processing job types at a Facility, including their name, category, description, steps, and attributes.
3539    /// 
3540    ///   Permissions Required:
3541    ///   - Manage Processing Job
3542    ///
3543    pub async fn processing_jobs_update_jobtypes_v2(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsUpdateJobtypesV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3544        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3545        let client = self.client.clone();
3546        let body_val = body_val.clone();
3547        self.rate_limiter.execute(None, false, move || {
3548            let client = client.clone();
3549            let license_number = license_number.clone();
3550            let body_val = body_val.clone();
3551            async move { client.processing_jobs_update_jobtypes_v2(license_number, body_val.as_ref()).await }
3552        }).await
3553    }
3554
3555    /// PUT UpdateUnfinish V1
3556    /// Permissions Required:
3557    ///   - Manage Processing Job
3558    ///
3559    pub async fn processing_jobs_update_unfinish_v1(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsUpdateUnfinishV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3560        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3561        let client = self.client.clone();
3562        let body_val = body_val.clone();
3563        self.rate_limiter.execute(None, false, move || {
3564            let client = client.clone();
3565            let license_number = license_number.clone();
3566            let body_val = body_val.clone();
3567            async move { client.processing_jobs_update_unfinish_v1(license_number, body_val.as_ref()).await }
3568        }).await
3569    }
3570
3571    /// PUT UpdateUnfinish V2
3572    /// Reopens previously completed processing jobs at a Facility to allow further updates or corrections.
3573    /// 
3574    ///   Permissions Required:
3575    ///   - Manage Processing Job
3576    ///
3577    pub async fn processing_jobs_update_unfinish_v2(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsUpdateUnfinishV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3578        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3579        let client = self.client.clone();
3580        let body_val = body_val.clone();
3581        self.rate_limiter.execute(None, false, move || {
3582            let client = client.clone();
3583            let license_number = license_number.clone();
3584            let body_val = body_val.clone();
3585            async move { client.processing_jobs_update_unfinish_v2(license_number, body_val.as_ref()).await }
3586        }).await
3587    }
3588
3589    /// POST CreateAssociate V2
3590    /// Facilitate association of QR codes and Package labels. This will return the count of packages and QR codes associated that were added or replaced.
3591    /// 
3592    ///   Permissions Required:
3593    ///   - External Sources(ThirdPartyVendorV2)/Retail ID(Write)
3594    ///   - WebApi Retail ID Read Write State (All or WriteOnly)
3595    ///   - Industry/View Packages
3596    ///   - One of the following: Industry/Facility Type/Can Receive Associate Product Label, Licensee/Receive Associate Product Label or Admin/Employees/Packages Page/Product Labels(Manage)
3597    ///
3598    pub async fn retail_id_create_associate_v2(&self, license_number: Option<String>, body: Option<&Vec<RetailIdCreateAssociateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3599        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3600        let client = self.client.clone();
3601        let body_val = body_val.clone();
3602        self.rate_limiter.execute(None, false, move || {
3603            let client = client.clone();
3604            let license_number = license_number.clone();
3605            let body_val = body_val.clone();
3606            async move { client.retail_id_create_associate_v2(license_number, body_val.as_ref()).await }
3607        }).await
3608    }
3609
3610    /// POST CreateGenerate V2
3611    /// Allows you to generate a specific quantity of QR codes. Id value returned (issuance ID) could be used for printing.
3612    /// 
3613    ///   Permissions Required:
3614    ///   - External Sources(ThirdPartyVendorV2)/Retail ID(Write)
3615    ///   - WebApi Retail ID Read Write State (All or WriteOnly)
3616    ///   - Industry/View Packages
3617    ///   - One of the following: Industry/Facility Type/Can Download Product Label, Licensee/Download Product Label or Admin/Employees/Packages Page/Product Labels(Manage)
3618    ///
3619    pub async fn retail_id_create_generate_v2(&self, license_number: Option<String>, body: Option<&RetailIdCreateGenerateV2Request>) -> Result<Option<Value>, Box<dyn Error>> {
3620        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3621        let client = self.client.clone();
3622        let body_val = body_val.clone();
3623        self.rate_limiter.execute(None, false, move || {
3624            let client = client.clone();
3625            let license_number = license_number.clone();
3626            let body_val = body_val.clone();
3627            async move { client.retail_id_create_generate_v2(license_number, body_val.as_ref()).await }
3628        }).await
3629    }
3630
3631    /// POST CreateMerge V2
3632    /// Merge and adjust one source to one target Package. First Package detected will be processed as target Package. This requires an action reason with name containing the 'Merge' word and setup with 'Package adjustment' area.
3633    /// 
3634    ///   Permissions Required:
3635    ///   - External Sources(ThirdPartyVendorV2)/Retail ID(Write)
3636    ///   - WebApi Retail ID Read Write State (All or WriteOnly)
3637    ///   - Key Value Settings/Retail ID Merge Packages Enabled
3638    ///
3639    pub async fn retail_id_create_merge_v2(&self, license_number: Option<String>, body: Option<&RetailIdCreateMergeV2Request>) -> Result<Option<Value>, Box<dyn Error>> {
3640        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3641        let client = self.client.clone();
3642        let body_val = body_val.clone();
3643        self.rate_limiter.execute(None, false, move || {
3644            let client = client.clone();
3645            let license_number = license_number.clone();
3646            let body_val = body_val.clone();
3647            async move { client.retail_id_create_merge_v2(license_number, body_val.as_ref()).await }
3648        }).await
3649    }
3650
3651    /// POST CreatePackageInfo V2
3652    /// Retrieves Package information for given list of Package labels.
3653    /// 
3654    ///   Permissions Required:
3655    ///   - External Sources(ThirdPartyVendorV2)/Retail ID(Write)
3656    ///   - WebApi Retail ID Read Write State (All or WriteOnly)
3657    ///   - Industry/View Packages
3658    ///   - Admin/Employees/Packages Page/Product Labels(Manage)
3659    ///
3660    pub async fn retail_id_create_package_info_v2(&self, license_number: Option<String>, body: Option<&RetailIdCreatePackageInfoV2Request>) -> Result<Option<Value>, Box<dyn Error>> {
3661        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3662        let client = self.client.clone();
3663        let body_val = body_val.clone();
3664        self.rate_limiter.execute(None, false, move || {
3665            let client = client.clone();
3666            let license_number = license_number.clone();
3667            let body_val = body_val.clone();
3668            async move { client.retail_id_create_package_info_v2(license_number, body_val.as_ref()).await }
3669        }).await
3670    }
3671
3672    /// GET GetReceiveByLabel V2
3673    /// Get a list of eaches (Retail ID QR code URL) and sibling tags based on given Package label.
3674    /// 
3675    ///   Permissions Required:
3676    ///   - External Sources(ThirdPartyVendorV2)/Manage RetailId
3677    ///   - WebApi Retail ID Read Write State (All or ReadOnly)
3678    ///   - Industry/View Packages
3679    ///   - One of the following: Industry/Facility Type/Can Receive Associate Product Label, Licensee/Receive Associate Product Label or Admin/Employees/Packages Page/Product Labels(View or Manage)
3680    ///
3681    pub async fn retail_id_get_receive_by_label_v2(&self, label: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3682        let label = label.to_string();
3683        let client = self.client.clone();
3684        let body = body.cloned();
3685        self.rate_limiter.execute(None, true, move || {
3686            let client = client.clone();
3687            let label = label.clone();
3688            let license_number = license_number.clone();
3689            let body = body.clone();
3690            async move { client.retail_id_get_receive_by_label_v2(&label, license_number, body.as_ref()).await }
3691        }).await
3692    }
3693
3694    /// GET GetReceiveQrByShortCode V2
3695    /// Get a list of eaches (Retail ID QR code URL) and sibling tags based on given short code value (first segment in Retail ID QR code URL).
3696    /// 
3697    ///   Permissions Required:
3698    ///   - External Sources(ThirdPartyVendorV2)/Manage RetailId
3699    ///   - WebApi Retail ID Read Write State (All or ReadOnly)
3700    ///   - Industry/View Packages
3701    ///   - One of the following: Industry/Facility Type/Can Receive Associate Product Label, Licensee/Receive Associate Product Label or Admin/Employees/Packages Page/Product Labels(View or Manage)
3702    ///
3703    pub async fn retail_id_get_receive_qr_by_short_code_v2(&self, short_code: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3704        let short_code = short_code.to_string();
3705        let client = self.client.clone();
3706        let body = body.cloned();
3707        self.rate_limiter.execute(None, true, move || {
3708            let client = client.clone();
3709            let short_code = short_code.clone();
3710            let license_number = license_number.clone();
3711            let body = body.clone();
3712            async move { client.retail_id_get_receive_qr_by_short_code_v2(&short_code, license_number, body.as_ref()).await }
3713        }).await
3714    }
3715
3716    /// POST CreateIntegratorSetup V2
3717    /// This endpoint is used to handle the setup of an external integrator for sandbox environments. It processes a request to create a new sandbox user for integration based on an external source's API key. It checks whether the API key is valid, manages the user creation process, and returns an appropriate status based on the current state of the request.
3718    /// 
3719    ///   Permissions Required:
3720    ///   - None
3721    ///
3722    pub async fn sandbox_create_integrator_setup_v2(&self, user_key: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3723        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3724        let client = self.client.clone();
3725        let body_val = body_val.clone();
3726        self.rate_limiter.execute(None, false, move || {
3727            let client = client.clone();
3728            let user_key = user_key.clone();
3729            let body_val = body_val.clone();
3730            async move { client.sandbox_create_integrator_setup_v2(user_key, body_val.as_ref()).await }
3731        }).await
3732    }
3733
3734    /// GET GetByCaregiverLicenseNumber V1
3735    /// Data returned by this endpoint is cached for up to one minute.
3736    /// 
3737    ///   Permissions Required:
3738    ///   - Lookup Caregivers
3739    ///
3740    pub async fn caregivers_status_get_by_caregiver_license_number_v1(&self, caregiver_license_number: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3741        let caregiver_license_number = caregiver_license_number.to_string();
3742        let client = self.client.clone();
3743        let body = body.cloned();
3744        self.rate_limiter.execute(None, true, move || {
3745            let client = client.clone();
3746            let caregiver_license_number = caregiver_license_number.clone();
3747            let license_number = license_number.clone();
3748            let body = body.clone();
3749            async move { client.caregivers_status_get_by_caregiver_license_number_v1(&caregiver_license_number, license_number, body.as_ref()).await }
3750        }).await
3751    }
3752
3753    /// GET GetByCaregiverLicenseNumber V2
3754    /// Retrieves the status of a Caregiver by their License Number for a specified Facility. Data returned by this endpoint is cached for up to one minute.
3755    /// 
3756    ///   Permissions Required:
3757    ///   - Lookup Caregivers
3758    ///
3759    pub async fn caregivers_status_get_by_caregiver_license_number_v2(&self, caregiver_license_number: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3760        let caregiver_license_number = caregiver_license_number.to_string();
3761        let client = self.client.clone();
3762        let body = body.cloned();
3763        self.rate_limiter.execute(None, true, move || {
3764            let client = client.clone();
3765            let caregiver_license_number = caregiver_license_number.clone();
3766            let license_number = license_number.clone();
3767            let body = body.clone();
3768            async move { client.caregivers_status_get_by_caregiver_license_number_v2(&caregiver_license_number, license_number, body.as_ref()).await }
3769        }).await
3770    }
3771
3772    /// GET GetAll V1
3773    /// Permissions Required:
3774    ///   - Manage Employees
3775    ///
3776    pub async fn employees_get_all_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3777        let client = self.client.clone();
3778        let body = body.cloned();
3779        self.rate_limiter.execute(None, true, move || {
3780            let client = client.clone();
3781            let license_number = license_number.clone();
3782            let body = body.clone();
3783            async move { client.employees_get_all_v1(license_number, body.as_ref()).await }
3784        }).await
3785    }
3786
3787    /// GET GetAll V2
3788    /// Retrieves a list of employees for a specified Facility.
3789    /// 
3790    ///   Permissions Required:
3791    ///   - Manage Employees
3792    ///   - View Employees
3793    ///
3794    pub async fn employees_get_all_v2(&self, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3795        let client = self.client.clone();
3796        let body = body.cloned();
3797        self.rate_limiter.execute(None, true, move || {
3798            let client = client.clone();
3799            let license_number = license_number.clone();
3800            let page_number = page_number.clone();
3801            let page_size = page_size.clone();
3802            let body = body.clone();
3803            async move { client.employees_get_all_v2(license_number, page_number, page_size, body.as_ref()).await }
3804        }).await
3805    }
3806
3807    /// GET GetPermissions V2
3808    /// Retrieves the permissions of a specified Employee, identified by their Employee License Number, for a given Facility.
3809    /// 
3810    ///   Permissions Required:
3811    ///   - Manage Employees
3812    ///
3813    pub async fn employees_get_permissions_v2(&self, employee_license_number: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3814        let client = self.client.clone();
3815        let body = body.cloned();
3816        self.rate_limiter.execute(None, true, move || {
3817            let client = client.clone();
3818            let employee_license_number = employee_license_number.clone();
3819            let license_number = license_number.clone();
3820            let body = body.clone();
3821            async move { client.employees_get_permissions_v2(employee_license_number, license_number, body.as_ref()).await }
3822        }).await
3823    }
3824
3825    /// POST CreateRecord V1
3826    /// Permissions Required:
3827    ///   - View Packages
3828    ///   - Manage Packages Inventory
3829    ///
3830    pub async fn lab_tests_create_record_v1(&self, license_number: Option<String>, body: Option<&Vec<LabTestsCreateRecordV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3831        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3832        let client = self.client.clone();
3833        let body_val = body_val.clone();
3834        self.rate_limiter.execute(None, false, move || {
3835            let client = client.clone();
3836            let license_number = license_number.clone();
3837            let body_val = body_val.clone();
3838            async move { client.lab_tests_create_record_v1(license_number, body_val.as_ref()).await }
3839        }).await
3840    }
3841
3842    /// POST CreateRecord V2
3843    /// Submits Lab Test results for one or more packages. NOTE: This endpoint allows only PDF files, and uploaded files can be no more than 5 MB in size. The Label element in the request is a Package Label.
3844    /// 
3845    ///   Permissions Required:
3846    ///   - View Packages
3847    ///   - Manage Packages Inventory
3848    ///
3849    pub async fn lab_tests_create_record_v2(&self, license_number: Option<String>, body: Option<&Vec<LabTestsCreateRecordV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3850        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3851        let client = self.client.clone();
3852        let body_val = body_val.clone();
3853        self.rate_limiter.execute(None, false, move || {
3854            let client = client.clone();
3855            let license_number = license_number.clone();
3856            let body_val = body_val.clone();
3857            async move { client.lab_tests_create_record_v2(license_number, body_val.as_ref()).await }
3858        }).await
3859    }
3860
3861    /// GET GetBatches V2
3862    /// Retrieves a list of Lab Test batches.
3863    /// 
3864    ///   Permissions Required:
3865    ///   - None
3866    ///
3867    pub async fn lab_tests_get_batches_v2(&self, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3868        let client = self.client.clone();
3869        let body = body.cloned();
3870        self.rate_limiter.execute(None, true, move || {
3871            let client = client.clone();
3872            let page_number = page_number.clone();
3873            let page_size = page_size.clone();
3874            let body = body.clone();
3875            async move { client.lab_tests_get_batches_v2(page_number, page_size, body.as_ref()).await }
3876        }).await
3877    }
3878
3879    /// GET GetLabtestdocument V1
3880    /// Permissions Required:
3881    ///   - View Packages
3882    ///   - Manage Packages Inventory
3883    ///
3884    pub async fn lab_tests_get_labtestdocument_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3885        let id = id.to_string();
3886        let client = self.client.clone();
3887        let body = body.cloned();
3888        self.rate_limiter.execute(None, true, move || {
3889            let client = client.clone();
3890            let id = id.clone();
3891            let license_number = license_number.clone();
3892            let body = body.clone();
3893            async move { client.lab_tests_get_labtestdocument_v1(&id, license_number, body.as_ref()).await }
3894        }).await
3895    }
3896
3897    /// GET GetLabtestdocument V2
3898    /// Retrieves a specific Lab Test result document by its Id for a given Facility.
3899    /// 
3900    ///   Permissions Required:
3901    ///   - View Packages
3902    ///   - Manage Packages Inventory
3903    ///
3904    pub async fn lab_tests_get_labtestdocument_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3905        let id = id.to_string();
3906        let client = self.client.clone();
3907        let body = body.cloned();
3908        self.rate_limiter.execute(None, true, move || {
3909            let client = client.clone();
3910            let id = id.clone();
3911            let license_number = license_number.clone();
3912            let body = body.clone();
3913            async move { client.lab_tests_get_labtestdocument_v2(&id, license_number, body.as_ref()).await }
3914        }).await
3915    }
3916
3917    /// GET GetResults V1
3918    /// Permissions Required:
3919    ///   - View Packages
3920    ///
3921    pub async fn lab_tests_get_results_v1(&self, license_number: Option<String>, package_id: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3922        let client = self.client.clone();
3923        let body = body.cloned();
3924        self.rate_limiter.execute(None, true, move || {
3925            let client = client.clone();
3926            let license_number = license_number.clone();
3927            let package_id = package_id.clone();
3928            let body = body.clone();
3929            async move { client.lab_tests_get_results_v1(license_number, package_id, body.as_ref()).await }
3930        }).await
3931    }
3932
3933    /// GET GetResults V2
3934    /// Retrieves Lab Test results for a specified Package.
3935    /// 
3936    ///   Permissions Required:
3937    ///   - View Packages
3938    ///   - Manage Packages Inventory
3939    ///
3940    pub async fn lab_tests_get_results_v2(&self, license_number: Option<String>, package_id: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3941        let client = self.client.clone();
3942        let body = body.cloned();
3943        self.rate_limiter.execute(None, true, move || {
3944            let client = client.clone();
3945            let license_number = license_number.clone();
3946            let package_id = package_id.clone();
3947            let page_number = page_number.clone();
3948            let page_size = page_size.clone();
3949            let body = body.clone();
3950            async move { client.lab_tests_get_results_v2(license_number, package_id, page_number, page_size, body.as_ref()).await }
3951        }).await
3952    }
3953
3954    /// GET GetStates V1
3955    /// Permissions Required:
3956    ///   - None
3957    ///
3958    pub async fn lab_tests_get_states_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3959        let client = self.client.clone();
3960        let body = body.cloned();
3961        self.rate_limiter.execute(None, true, move || {
3962            let client = client.clone();
3963            let no = no.clone();
3964            let body = body.clone();
3965            async move { client.lab_tests_get_states_v1(no, body.as_ref()).await }
3966        }).await
3967    }
3968
3969    /// GET GetStates V2
3970    /// Returns a list of all lab testing states.
3971    /// 
3972    ///   Permissions Required:
3973    ///   - None
3974    ///
3975    pub async fn lab_tests_get_states_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3976        let client = self.client.clone();
3977        let body = body.cloned();
3978        self.rate_limiter.execute(None, true, move || {
3979            let client = client.clone();
3980            let no = no.clone();
3981            let body = body.clone();
3982            async move { client.lab_tests_get_states_v2(no, body.as_ref()).await }
3983        }).await
3984    }
3985
3986    /// GET GetTypes V1
3987    /// Permissions Required:
3988    ///   - None
3989    ///
3990    pub async fn lab_tests_get_types_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3991        let client = self.client.clone();
3992        let body = body.cloned();
3993        self.rate_limiter.execute(None, true, move || {
3994            let client = client.clone();
3995            let no = no.clone();
3996            let body = body.clone();
3997            async move { client.lab_tests_get_types_v1(no, body.as_ref()).await }
3998        }).await
3999    }
4000
4001    /// GET GetTypes V2
4002    /// Returns a list of Lab Test types.
4003    /// 
4004    ///   Permissions Required:
4005    ///   - None
4006    ///
4007    pub async fn lab_tests_get_types_v2(&self, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4008        let client = self.client.clone();
4009        let body = body.cloned();
4010        self.rate_limiter.execute(None, true, move || {
4011            let client = client.clone();
4012            let page_number = page_number.clone();
4013            let page_size = page_size.clone();
4014            let body = body.clone();
4015            async move { client.lab_tests_get_types_v2(page_number, page_size, body.as_ref()).await }
4016        }).await
4017    }
4018
4019    /// PUT UpdateLabtestdocument V1
4020    /// Permissions Required:
4021    ///   - View Packages
4022    ///   - Manage Packages Inventory
4023    ///
4024    pub async fn lab_tests_update_labtestdocument_v1(&self, license_number: Option<String>, body: Option<&Vec<LabTestsUpdateLabtestdocumentV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4025        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4026        let client = self.client.clone();
4027        let body_val = body_val.clone();
4028        self.rate_limiter.execute(None, false, move || {
4029            let client = client.clone();
4030            let license_number = license_number.clone();
4031            let body_val = body_val.clone();
4032            async move { client.lab_tests_update_labtestdocument_v1(license_number, body_val.as_ref()).await }
4033        }).await
4034    }
4035
4036    /// PUT UpdateLabtestdocument V2
4037    /// Updates one or more documents for previously submitted lab tests.
4038    /// 
4039    ///   Permissions Required:
4040    ///   - View Packages
4041    ///   - Manage Packages Inventory
4042    ///
4043    pub async fn lab_tests_update_labtestdocument_v2(&self, license_number: Option<String>, body: Option<&Vec<LabTestsUpdateLabtestdocumentV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4044        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4045        let client = self.client.clone();
4046        let body_val = body_val.clone();
4047        self.rate_limiter.execute(None, false, move || {
4048            let client = client.clone();
4049            let license_number = license_number.clone();
4050            let body_val = body_val.clone();
4051            async move { client.lab_tests_update_labtestdocument_v2(license_number, body_val.as_ref()).await }
4052        }).await
4053    }
4054
4055    /// PUT UpdateResultRelease V1
4056    /// Permissions Required:
4057    ///   - View Packages
4058    ///   - Manage Packages Inventory
4059    ///
4060    pub async fn lab_tests_update_result_release_v1(&self, license_number: Option<String>, body: Option<&Vec<LabTestsUpdateResultReleaseV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4061        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4062        let client = self.client.clone();
4063        let body_val = body_val.clone();
4064        self.rate_limiter.execute(None, false, move || {
4065            let client = client.clone();
4066            let license_number = license_number.clone();
4067            let body_val = body_val.clone();
4068            async move { client.lab_tests_update_result_release_v1(license_number, body_val.as_ref()).await }
4069        }).await
4070    }
4071
4072    /// PUT UpdateResultRelease V2
4073    /// Releases Lab Test results for one or more packages.
4074    /// 
4075    ///   Permissions Required:
4076    ///   - View Packages
4077    ///   - Manage Packages Inventory
4078    ///
4079    pub async fn lab_tests_update_result_release_v2(&self, license_number: Option<String>, body: Option<&Vec<LabTestsUpdateResultReleaseV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4080        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4081        let client = self.client.clone();
4082        let body_val = body_val.clone();
4083        self.rate_limiter.execute(None, false, move || {
4084            let client = client.clone();
4085            let license_number = license_number.clone();
4086            let body_val = body_val.clone();
4087            async move { client.lab_tests_update_result_release_v2(license_number, body_val.as_ref()).await }
4088        }).await
4089    }
4090
4091    /// POST Create V2
4092    /// Creates new sublocation records for a Facility.
4093    /// 
4094    ///   Permissions Required:
4095    ///   - Manage Locations
4096    ///
4097    pub async fn sublocations_create_v2(&self, license_number: Option<String>, body: Option<&Vec<SublocationsCreateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4098        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4099        let client = self.client.clone();
4100        let body_val = body_val.clone();
4101        self.rate_limiter.execute(None, false, move || {
4102            let client = client.clone();
4103            let license_number = license_number.clone();
4104            let body_val = body_val.clone();
4105            async move { client.sublocations_create_v2(license_number, body_val.as_ref()).await }
4106        }).await
4107    }
4108
4109    /// DELETE Delete V2
4110    /// Archives an existing Sublocation record for a Facility.
4111    /// 
4112    ///   Permissions Required:
4113    ///   - Manage Locations
4114    ///
4115    pub async fn sublocations_delete_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4116        let id = id.to_string();
4117        let client = self.client.clone();
4118        let body = body.cloned();
4119        self.rate_limiter.execute(None, false, move || {
4120            let client = client.clone();
4121            let id = id.clone();
4122            let license_number = license_number.clone();
4123            let body = body.clone();
4124            async move { client.sublocations_delete_v2(&id, license_number, body.as_ref()).await }
4125        }).await
4126    }
4127
4128    /// GET Get V2
4129    /// Retrieves a Sublocation by its Id, with an optional license number.
4130    /// 
4131    ///   Permissions Required:
4132    ///   - Manage Locations
4133    ///
4134    pub async fn sublocations_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4135        let id = id.to_string();
4136        let client = self.client.clone();
4137        let body = body.cloned();
4138        self.rate_limiter.execute(None, true, move || {
4139            let client = client.clone();
4140            let id = id.clone();
4141            let license_number = license_number.clone();
4142            let body = body.clone();
4143            async move { client.sublocations_get_v2(&id, license_number, body.as_ref()).await }
4144        }).await
4145    }
4146
4147    /// GET GetActive V2
4148    /// Retrieves a list of active sublocations for the current Facility, optionally filtered by last modified date range.
4149    /// 
4150    ///   Permissions Required:
4151    ///   - Manage Locations
4152    ///
4153    pub async fn sublocations_get_active_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4154        let client = self.client.clone();
4155        let body = body.cloned();
4156        self.rate_limiter.execute(None, true, move || {
4157            let client = client.clone();
4158            let last_modified_end = last_modified_end.clone();
4159            let last_modified_start = last_modified_start.clone();
4160            let license_number = license_number.clone();
4161            let page_number = page_number.clone();
4162            let page_size = page_size.clone();
4163            let body = body.clone();
4164            async move { client.sublocations_get_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
4165        }).await
4166    }
4167
4168    /// GET GetInactive V2
4169    /// Retrieves a list of inactive sublocations for the specified Facility.
4170    /// 
4171    ///   Permissions Required:
4172    ///   - Manage Locations
4173    ///
4174    pub async fn sublocations_get_inactive_v2(&self, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4175        let client = self.client.clone();
4176        let body = body.cloned();
4177        self.rate_limiter.execute(None, true, move || {
4178            let client = client.clone();
4179            let license_number = license_number.clone();
4180            let page_number = page_number.clone();
4181            let page_size = page_size.clone();
4182            let body = body.clone();
4183            async move { client.sublocations_get_inactive_v2(license_number, page_number, page_size, body.as_ref()).await }
4184        }).await
4185    }
4186
4187    /// PUT Update V2
4188    /// Updates existing sublocation records for a specified Facility.
4189    /// 
4190    ///   Permissions Required:
4191    ///   - Manage Locations
4192    ///
4193    pub async fn sublocations_update_v2(&self, license_number: Option<String>, body: Option<&Vec<SublocationsUpdateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4194        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4195        let client = self.client.clone();
4196        let body_val = body_val.clone();
4197        self.rate_limiter.execute(None, false, move || {
4198            let client = client.clone();
4199            let license_number = license_number.clone();
4200            let body_val = body_val.clone();
4201            async move { client.sublocations_update_v2(license_number, body_val.as_ref()).await }
4202        }).await
4203    }
4204
4205    /// GET GetActive V1
4206    /// Permissions Required:
4207    ///   - None
4208    ///
4209    pub async fn units_of_measure_get_active_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4210        let client = self.client.clone();
4211        let body = body.cloned();
4212        self.rate_limiter.execute(None, true, move || {
4213            let client = client.clone();
4214            let no = no.clone();
4215            let body = body.clone();
4216            async move { client.units_of_measure_get_active_v1(no, body.as_ref()).await }
4217        }).await
4218    }
4219
4220    /// GET GetActive V2
4221    /// Retrieves all active units of measure.
4222    /// 
4223    ///   Permissions Required:
4224    ///   - None
4225    ///
4226    pub async fn units_of_measure_get_active_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4227        let client = self.client.clone();
4228        let body = body.cloned();
4229        self.rate_limiter.execute(None, true, move || {
4230            let client = client.clone();
4231            let no = no.clone();
4232            let body = body.clone();
4233            async move { client.units_of_measure_get_active_v2(no, body.as_ref()).await }
4234        }).await
4235    }
4236
4237    /// GET GetInactive V2
4238    /// Retrieves all inactive units of measure.
4239    /// 
4240    ///   Permissions Required:
4241    ///   - None
4242    ///
4243    pub async fn units_of_measure_get_inactive_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4244        let client = self.client.clone();
4245        let body = body.cloned();
4246        self.rate_limiter.execute(None, true, move || {
4247            let client = client.clone();
4248            let no = no.clone();
4249            let body = body.clone();
4250            async move { client.units_of_measure_get_inactive_v2(no, body.as_ref()).await }
4251        }).await
4252    }
4253
4254    /// GET GetAll V2
4255    /// Retrieves all available waste methods.
4256    /// 
4257    ///   Permissions Required:
4258    ///   - None
4259    ///
4260    pub async fn waste_methods_get_all_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4261        let client = self.client.clone();
4262        let body = body.cloned();
4263        self.rate_limiter.execute(None, true, move || {
4264            let client = client.clone();
4265            let no = no.clone();
4266            let body = body.clone();
4267            async move { client.waste_methods_get_all_v2(no, body.as_ref()).await }
4268        }).await
4269    }
4270
4271    /// GET GetAll V1
4272    /// This endpoint provides a list of facilities for which the authenticated user has access.
4273    /// 
4274    ///   Permissions Required:
4275    ///   - None
4276    ///
4277    pub async fn facilities_get_all_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4278        let client = self.client.clone();
4279        let body = body.cloned();
4280        self.rate_limiter.execute(None, true, move || {
4281            let client = client.clone();
4282            let no = no.clone();
4283            let body = body.clone();
4284            async move { client.facilities_get_all_v1(no, body.as_ref()).await }
4285        }).await
4286    }
4287
4288    /// GET GetAll V2
4289    /// This endpoint provides a list of facilities for which the authenticated user has access.
4290    /// 
4291    ///   Permissions Required:
4292    ///   - None
4293    ///
4294    pub async fn facilities_get_all_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4295        let client = self.client.clone();
4296        let body = body.cloned();
4297        self.rate_limiter.execute(None, true, move || {
4298            let client = client.clone();
4299            let no = no.clone();
4300            let body = body.clone();
4301            async move { client.facilities_get_all_v2(no, body.as_ref()).await }
4302        }).await
4303    }
4304
4305    /// POST Create V1
4306    /// NOTE: To include a photo with an item, first use POST /items/v1/photo to POST the photo, and then use the returned ID in the request body in this endpoint.
4307    /// 
4308    ///   Permissions Required:
4309    ///   - Manage Items
4310    ///
4311    pub async fn items_create_v1(&self, license_number: Option<String>, body: Option<&Vec<ItemsCreateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4312        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4313        let client = self.client.clone();
4314        let body_val = body_val.clone();
4315        self.rate_limiter.execute(None, false, move || {
4316            let client = client.clone();
4317            let license_number = license_number.clone();
4318            let body_val = body_val.clone();
4319            async move { client.items_create_v1(license_number, body_val.as_ref()).await }
4320        }).await
4321    }
4322
4323    /// POST Create V2
4324    /// Creates one or more new products for the specified Facility. NOTE: To include a photo with an item, first use POST /items/v2/photo to POST the photo, and then use the returned Id in the request body in this endpoint.
4325    /// 
4326    ///   Permissions Required:
4327    ///   - Manage Items
4328    ///
4329    pub async fn items_create_v2(&self, license_number: Option<String>, body: Option<&Vec<ItemsCreateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4330        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4331        let client = self.client.clone();
4332        let body_val = body_val.clone();
4333        self.rate_limiter.execute(None, false, move || {
4334            let client = client.clone();
4335            let license_number = license_number.clone();
4336            let body_val = body_val.clone();
4337            async move { client.items_create_v2(license_number, body_val.as_ref()).await }
4338        }).await
4339    }
4340
4341    /// POST CreateBrand V2
4342    /// Creates one or more new item brands for the specified Facility identified by the License Number.
4343    /// 
4344    ///   Permissions Required:
4345    ///   - Manage Items
4346    ///
4347    pub async fn items_create_brand_v2(&self, license_number: Option<String>, body: Option<&Vec<ItemsCreateBrandV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4348        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4349        let client = self.client.clone();
4350        let body_val = body_val.clone();
4351        self.rate_limiter.execute(None, false, move || {
4352            let client = client.clone();
4353            let license_number = license_number.clone();
4354            let body_val = body_val.clone();
4355            async move { client.items_create_brand_v2(license_number, body_val.as_ref()).await }
4356        }).await
4357    }
4358
4359    /// POST CreateFile V2
4360    /// Uploads one or more image or PDF files for products, labels, packaging, or documents at the specified Facility.
4361    /// 
4362    ///   Permissions Required:
4363    ///   - Manage Items
4364    ///
4365    pub async fn items_create_file_v2(&self, license_number: Option<String>, body: Option<&Vec<ItemsCreateFileV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4366        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4367        let client = self.client.clone();
4368        let body_val = body_val.clone();
4369        self.rate_limiter.execute(None, false, move || {
4370            let client = client.clone();
4371            let license_number = license_number.clone();
4372            let body_val = body_val.clone();
4373            async move { client.items_create_file_v2(license_number, body_val.as_ref()).await }
4374        }).await
4375    }
4376
4377    /// POST CreatePhoto V1
4378    /// This endpoint allows only BMP, GIF, JPG, and PNG files and uploaded files can be no more than 5 MB in size.
4379    /// 
4380    ///   Permissions Required:
4381    ///   - Manage Items
4382    ///
4383    pub async fn items_create_photo_v1(&self, license_number: Option<String>, body: Option<&Vec<ItemsCreatePhotoV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4384        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4385        let client = self.client.clone();
4386        let body_val = body_val.clone();
4387        self.rate_limiter.execute(None, false, move || {
4388            let client = client.clone();
4389            let license_number = license_number.clone();
4390            let body_val = body_val.clone();
4391            async move { client.items_create_photo_v1(license_number, body_val.as_ref()).await }
4392        }).await
4393    }
4394
4395    /// POST CreatePhoto V2
4396    /// This endpoint allows only BMP, GIF, JPG, and PNG files and uploaded files can be no more than 5 MB in size.
4397    /// 
4398    ///   Permissions Required:
4399    ///   - Manage Items
4400    ///
4401    pub async fn items_create_photo_v2(&self, license_number: Option<String>, body: Option<&Vec<ItemsCreatePhotoV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4402        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4403        let client = self.client.clone();
4404        let body_val = body_val.clone();
4405        self.rate_limiter.execute(None, false, move || {
4406            let client = client.clone();
4407            let license_number = license_number.clone();
4408            let body_val = body_val.clone();
4409            async move { client.items_create_photo_v2(license_number, body_val.as_ref()).await }
4410        }).await
4411    }
4412
4413    /// POST CreateUpdate V1
4414    /// Permissions Required:
4415    ///   - Manage Items
4416    ///
4417    pub async fn items_create_update_v1(&self, license_number: Option<String>, body: Option<&Vec<ItemsCreateUpdateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4418        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4419        let client = self.client.clone();
4420        let body_val = body_val.clone();
4421        self.rate_limiter.execute(None, false, move || {
4422            let client = client.clone();
4423            let license_number = license_number.clone();
4424            let body_val = body_val.clone();
4425            async move { client.items_create_update_v1(license_number, body_val.as_ref()).await }
4426        }).await
4427    }
4428
4429    /// DELETE Delete V1
4430    /// Permissions Required:
4431    ///   - Manage Items
4432    ///
4433    pub async fn items_delete_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4434        let id = id.to_string();
4435        let client = self.client.clone();
4436        let body = body.cloned();
4437        self.rate_limiter.execute(None, false, move || {
4438            let client = client.clone();
4439            let id = id.clone();
4440            let license_number = license_number.clone();
4441            let body = body.clone();
4442            async move { client.items_delete_v1(&id, license_number, body.as_ref()).await }
4443        }).await
4444    }
4445
4446    /// DELETE Delete V2
4447    /// Archives the specified Product by Id for the given Facility License Number.
4448    /// 
4449    ///   Permissions Required:
4450    ///   - Manage Items
4451    ///
4452    pub async fn items_delete_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4453        let id = id.to_string();
4454        let client = self.client.clone();
4455        let body = body.cloned();
4456        self.rate_limiter.execute(None, false, move || {
4457            let client = client.clone();
4458            let id = id.clone();
4459            let license_number = license_number.clone();
4460            let body = body.clone();
4461            async move { client.items_delete_v2(&id, license_number, body.as_ref()).await }
4462        }).await
4463    }
4464
4465    /// DELETE DeleteBrand V2
4466    /// Archives the specified Item Brand by Id for the given Facility License Number.
4467    /// 
4468    ///   Permissions Required:
4469    ///   - Manage Items
4470    ///
4471    pub async fn items_delete_brand_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4472        let id = id.to_string();
4473        let client = self.client.clone();
4474        let body = body.cloned();
4475        self.rate_limiter.execute(None, false, move || {
4476            let client = client.clone();
4477            let id = id.clone();
4478            let license_number = license_number.clone();
4479            let body = body.clone();
4480            async move { client.items_delete_brand_v2(&id, license_number, body.as_ref()).await }
4481        }).await
4482    }
4483
4484    /// GET Get V1
4485    /// Permissions Required:
4486    ///   - Manage Items
4487    ///
4488    pub async fn items_get_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4489        let id = id.to_string();
4490        let client = self.client.clone();
4491        let body = body.cloned();
4492        self.rate_limiter.execute(None, true, move || {
4493            let client = client.clone();
4494            let id = id.clone();
4495            let license_number = license_number.clone();
4496            let body = body.clone();
4497            async move { client.items_get_v1(&id, license_number, body.as_ref()).await }
4498        }).await
4499    }
4500
4501    /// GET Get V2
4502    /// Retrieves detailed information about a specific Item by Id.
4503    /// 
4504    ///   Permissions Required:
4505    ///   - Manage Items
4506    ///
4507    pub async fn items_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4508        let id = id.to_string();
4509        let client = self.client.clone();
4510        let body = body.cloned();
4511        self.rate_limiter.execute(None, true, move || {
4512            let client = client.clone();
4513            let id = id.clone();
4514            let license_number = license_number.clone();
4515            let body = body.clone();
4516            async move { client.items_get_v2(&id, license_number, body.as_ref()).await }
4517        }).await
4518    }
4519
4520    /// GET GetActive V1
4521    /// Permissions Required:
4522    ///   - Manage Items
4523    ///
4524    pub async fn items_get_active_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4525        let client = self.client.clone();
4526        let body = body.cloned();
4527        self.rate_limiter.execute(None, true, move || {
4528            let client = client.clone();
4529            let license_number = license_number.clone();
4530            let body = body.clone();
4531            async move { client.items_get_active_v1(license_number, body.as_ref()).await }
4532        }).await
4533    }
4534
4535    /// GET GetActive V2
4536    /// Returns a list of active items for the specified Facility.
4537    /// 
4538    ///   Permissions Required:
4539    ///   - Manage Items
4540    ///
4541    pub async fn items_get_active_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4542        let client = self.client.clone();
4543        let body = body.cloned();
4544        self.rate_limiter.execute(None, true, move || {
4545            let client = client.clone();
4546            let last_modified_end = last_modified_end.clone();
4547            let last_modified_start = last_modified_start.clone();
4548            let license_number = license_number.clone();
4549            let page_number = page_number.clone();
4550            let page_size = page_size.clone();
4551            let body = body.clone();
4552            async move { client.items_get_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
4553        }).await
4554    }
4555
4556    /// GET GetBrands V1
4557    /// Permissions Required:
4558    ///   - Manage Items
4559    ///
4560    pub async fn items_get_brands_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4561        let client = self.client.clone();
4562        let body = body.cloned();
4563        self.rate_limiter.execute(None, true, move || {
4564            let client = client.clone();
4565            let license_number = license_number.clone();
4566            let body = body.clone();
4567            async move { client.items_get_brands_v1(license_number, body.as_ref()).await }
4568        }).await
4569    }
4570
4571    /// GET GetBrands V2
4572    /// Retrieves a list of active item brands for the specified Facility.
4573    /// 
4574    ///   Permissions Required:
4575    ///   - Manage Items
4576    ///
4577    pub async fn items_get_brands_v2(&self, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4578        let client = self.client.clone();
4579        let body = body.cloned();
4580        self.rate_limiter.execute(None, true, move || {
4581            let client = client.clone();
4582            let license_number = license_number.clone();
4583            let page_number = page_number.clone();
4584            let page_size = page_size.clone();
4585            let body = body.clone();
4586            async move { client.items_get_brands_v2(license_number, page_number, page_size, body.as_ref()).await }
4587        }).await
4588    }
4589
4590    /// GET GetCategories V1
4591    /// Permissions Required:
4592    ///   - None
4593    ///
4594    pub async fn items_get_categories_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4595        let client = self.client.clone();
4596        let body = body.cloned();
4597        self.rate_limiter.execute(None, true, move || {
4598            let client = client.clone();
4599            let license_number = license_number.clone();
4600            let body = body.clone();
4601            async move { client.items_get_categories_v1(license_number, body.as_ref()).await }
4602        }).await
4603    }
4604
4605    /// GET GetCategories V2
4606    /// Retrieves a list of item categories.
4607    /// 
4608    ///   Permissions Required:
4609    ///   - None
4610    ///
4611    pub async fn items_get_categories_v2(&self, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4612        let client = self.client.clone();
4613        let body = body.cloned();
4614        self.rate_limiter.execute(None, true, move || {
4615            let client = client.clone();
4616            let license_number = license_number.clone();
4617            let page_number = page_number.clone();
4618            let page_size = page_size.clone();
4619            let body = body.clone();
4620            async move { client.items_get_categories_v2(license_number, page_number, page_size, body.as_ref()).await }
4621        }).await
4622    }
4623
4624    /// GET GetFile V2
4625    /// Retrieves a file by its Id for the specified Facility.
4626    /// 
4627    ///   Permissions Required:
4628    ///   - Manage Items
4629    ///
4630    pub async fn items_get_file_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4631        let id = id.to_string();
4632        let client = self.client.clone();
4633        let body = body.cloned();
4634        self.rate_limiter.execute(None, true, move || {
4635            let client = client.clone();
4636            let id = id.clone();
4637            let license_number = license_number.clone();
4638            let body = body.clone();
4639            async move { client.items_get_file_v2(&id, license_number, body.as_ref()).await }
4640        }).await
4641    }
4642
4643    /// GET GetInactive V1
4644    /// Permissions Required:
4645    ///   - Manage Items
4646    ///
4647    pub async fn items_get_inactive_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4648        let client = self.client.clone();
4649        let body = body.cloned();
4650        self.rate_limiter.execute(None, true, move || {
4651            let client = client.clone();
4652            let license_number = license_number.clone();
4653            let body = body.clone();
4654            async move { client.items_get_inactive_v1(license_number, body.as_ref()).await }
4655        }).await
4656    }
4657
4658    /// GET GetInactive V2
4659    /// Retrieves a list of inactive items for the specified Facility.
4660    /// 
4661    ///   Permissions Required:
4662    ///   - Manage Items
4663    ///
4664    pub async fn items_get_inactive_v2(&self, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4665        let client = self.client.clone();
4666        let body = body.cloned();
4667        self.rate_limiter.execute(None, true, move || {
4668            let client = client.clone();
4669            let license_number = license_number.clone();
4670            let page_number = page_number.clone();
4671            let page_size = page_size.clone();
4672            let body = body.clone();
4673            async move { client.items_get_inactive_v2(license_number, page_number, page_size, body.as_ref()).await }
4674        }).await
4675    }
4676
4677    /// GET GetPhoto V1
4678    /// Permissions Required:
4679    ///   - Manage Items
4680    ///
4681    pub async fn items_get_photo_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4682        let id = id.to_string();
4683        let client = self.client.clone();
4684        let body = body.cloned();
4685        self.rate_limiter.execute(None, true, move || {
4686            let client = client.clone();
4687            let id = id.clone();
4688            let license_number = license_number.clone();
4689            let body = body.clone();
4690            async move { client.items_get_photo_v1(&id, license_number, body.as_ref()).await }
4691        }).await
4692    }
4693
4694    /// GET GetPhoto V2
4695    /// Retrieves an image by its Id for the specified Facility.
4696    /// 
4697    ///   Permissions Required:
4698    ///   - Manage Items
4699    ///
4700    pub async fn items_get_photo_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4701        let id = id.to_string();
4702        let client = self.client.clone();
4703        let body = body.cloned();
4704        self.rate_limiter.execute(None, true, move || {
4705            let client = client.clone();
4706            let id = id.clone();
4707            let license_number = license_number.clone();
4708            let body = body.clone();
4709            async move { client.items_get_photo_v2(&id, license_number, body.as_ref()).await }
4710        }).await
4711    }
4712
4713    /// PUT Update V2
4714    /// Updates one or more existing products for the specified Facility.
4715    /// 
4716    ///   Permissions Required:
4717    ///   - Manage Items
4718    ///
4719    pub async fn items_update_v2(&self, license_number: Option<String>, body: Option<&Vec<ItemsUpdateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4720        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4721        let client = self.client.clone();
4722        let body_val = body_val.clone();
4723        self.rate_limiter.execute(None, false, move || {
4724            let client = client.clone();
4725            let license_number = license_number.clone();
4726            let body_val = body_val.clone();
4727            async move { client.items_update_v2(license_number, body_val.as_ref()).await }
4728        }).await
4729    }
4730
4731    /// PUT UpdateBrand V2
4732    /// Updates one or more existing item brands for the specified Facility.
4733    /// 
4734    ///   Permissions Required:
4735    ///   - Manage Items
4736    ///
4737    pub async fn items_update_brand_v2(&self, license_number: Option<String>, body: Option<&Vec<ItemsUpdateBrandV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4738        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4739        let client = self.client.clone();
4740        let body_val = body_val.clone();
4741        self.rate_limiter.execute(None, false, move || {
4742            let client = client.clone();
4743            let license_number = license_number.clone();
4744            let body_val = body_val.clone();
4745            async move { client.items_update_brand_v2(license_number, body_val.as_ref()).await }
4746        }).await
4747    }
4748
4749    /// POST Create V1
4750    /// Permissions Required:
4751    ///   - ManagePatientsCheckIns
4752    ///
4753    pub async fn patient_check_ins_create_v1(&self, license_number: Option<String>, body: Option<&Vec<PatientCheckInsCreateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4754        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4755        let client = self.client.clone();
4756        let body_val = body_val.clone();
4757        self.rate_limiter.execute(None, false, move || {
4758            let client = client.clone();
4759            let license_number = license_number.clone();
4760            let body_val = body_val.clone();
4761            async move { client.patient_check_ins_create_v1(license_number, body_val.as_ref()).await }
4762        }).await
4763    }
4764
4765    /// POST Create V2
4766    /// Records patient check-ins for a specified Facility.
4767    /// 
4768    ///   Permissions Required:
4769    ///   - ManagePatientsCheckIns
4770    ///
4771    pub async fn patient_check_ins_create_v2(&self, license_number: Option<String>, body: Option<&Vec<PatientCheckInsCreateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4772        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4773        let client = self.client.clone();
4774        let body_val = body_val.clone();
4775        self.rate_limiter.execute(None, false, move || {
4776            let client = client.clone();
4777            let license_number = license_number.clone();
4778            let body_val = body_val.clone();
4779            async move { client.patient_check_ins_create_v2(license_number, body_val.as_ref()).await }
4780        }).await
4781    }
4782
4783    /// DELETE Delete V1
4784    /// Permissions Required:
4785    ///   - ManagePatientsCheckIns
4786    ///
4787    pub async fn patient_check_ins_delete_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4788        let id = id.to_string();
4789        let client = self.client.clone();
4790        let body = body.cloned();
4791        self.rate_limiter.execute(None, false, move || {
4792            let client = client.clone();
4793            let id = id.clone();
4794            let license_number = license_number.clone();
4795            let body = body.clone();
4796            async move { client.patient_check_ins_delete_v1(&id, license_number, body.as_ref()).await }
4797        }).await
4798    }
4799
4800    /// DELETE Delete V2
4801    /// Archives a Patient Check-In, identified by its Id, for a specified Facility.
4802    /// 
4803    ///   Permissions Required:
4804    ///   - ManagePatientsCheckIns
4805    ///
4806    pub async fn patient_check_ins_delete_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4807        let id = id.to_string();
4808        let client = self.client.clone();
4809        let body = body.cloned();
4810        self.rate_limiter.execute(None, false, move || {
4811            let client = client.clone();
4812            let id = id.clone();
4813            let license_number = license_number.clone();
4814            let body = body.clone();
4815            async move { client.patient_check_ins_delete_v2(&id, license_number, body.as_ref()).await }
4816        }).await
4817    }
4818
4819    /// GET GetAll V1
4820    /// Permissions Required:
4821    ///   - ManagePatientsCheckIns
4822    ///
4823    pub async fn patient_check_ins_get_all_v1(&self, checkin_date_end: Option<String>, checkin_date_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4824        let client = self.client.clone();
4825        let body = body.cloned();
4826        self.rate_limiter.execute(None, true, move || {
4827            let client = client.clone();
4828            let checkin_date_end = checkin_date_end.clone();
4829            let checkin_date_start = checkin_date_start.clone();
4830            let license_number = license_number.clone();
4831            let body = body.clone();
4832            async move { client.patient_check_ins_get_all_v1(checkin_date_end, checkin_date_start, license_number, body.as_ref()).await }
4833        }).await
4834    }
4835
4836    /// GET GetAll V2
4837    /// Retrieves a list of patient check-ins for a specified Facility.
4838    /// 
4839    ///   Permissions Required:
4840    ///   - ManagePatientsCheckIns
4841    ///
4842    pub async fn patient_check_ins_get_all_v2(&self, checkin_date_end: Option<String>, checkin_date_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4843        let client = self.client.clone();
4844        let body = body.cloned();
4845        self.rate_limiter.execute(None, true, move || {
4846            let client = client.clone();
4847            let checkin_date_end = checkin_date_end.clone();
4848            let checkin_date_start = checkin_date_start.clone();
4849            let license_number = license_number.clone();
4850            let body = body.clone();
4851            async move { client.patient_check_ins_get_all_v2(checkin_date_end, checkin_date_start, license_number, body.as_ref()).await }
4852        }).await
4853    }
4854
4855    /// GET GetLocations V1
4856    /// Permissions Required:
4857    ///   - None
4858    ///
4859    pub async fn patient_check_ins_get_locations_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4860        let client = self.client.clone();
4861        let body = body.cloned();
4862        self.rate_limiter.execute(None, true, move || {
4863            let client = client.clone();
4864            let no = no.clone();
4865            let body = body.clone();
4866            async move { client.patient_check_ins_get_locations_v1(no, body.as_ref()).await }
4867        }).await
4868    }
4869
4870    /// GET GetLocations V2
4871    /// Retrieves a list of Patient Check-In locations.
4872    /// 
4873    ///   Permissions Required:
4874    ///   - None
4875    ///
4876    pub async fn patient_check_ins_get_locations_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4877        let client = self.client.clone();
4878        let body = body.cloned();
4879        self.rate_limiter.execute(None, true, move || {
4880            let client = client.clone();
4881            let no = no.clone();
4882            let body = body.clone();
4883            async move { client.patient_check_ins_get_locations_v2(no, body.as_ref()).await }
4884        }).await
4885    }
4886
4887    /// PUT Update V1
4888    /// Permissions Required:
4889    ///   - ManagePatientsCheckIns
4890    ///
4891    pub async fn patient_check_ins_update_v1(&self, license_number: Option<String>, body: Option<&Vec<PatientCheckInsUpdateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4892        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4893        let client = self.client.clone();
4894        let body_val = body_val.clone();
4895        self.rate_limiter.execute(None, false, move || {
4896            let client = client.clone();
4897            let license_number = license_number.clone();
4898            let body_val = body_val.clone();
4899            async move { client.patient_check_ins_update_v1(license_number, body_val.as_ref()).await }
4900        }).await
4901    }
4902
4903    /// PUT Update V2
4904    /// Updates patient check-ins for a specified Facility.
4905    /// 
4906    ///   Permissions Required:
4907    ///   - ManagePatientsCheckIns
4908    ///
4909    pub async fn patient_check_ins_update_v2(&self, license_number: Option<String>, body: Option<&Vec<PatientCheckInsUpdateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4910        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4911        let client = self.client.clone();
4912        let body_val = body_val.clone();
4913        self.rate_limiter.execute(None, false, move || {
4914            let client = client.clone();
4915            let license_number = license_number.clone();
4916            let body_val = body_val.clone();
4917            async move { client.patient_check_ins_update_v2(license_number, body_val.as_ref()).await }
4918        }).await
4919    }
4920
4921    /// POST Create V2
4922    /// Creates new additive templates for a specified Facility.
4923    /// 
4924    ///   Permissions Required:
4925    ///   - Manage Additives
4926    ///
4927    pub async fn additives_templates_create_v2(&self, license_number: Option<String>, body: Option<&Vec<AdditivesTemplatesCreateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4928        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4929        let client = self.client.clone();
4930        let body_val = body_val.clone();
4931        self.rate_limiter.execute(None, false, move || {
4932            let client = client.clone();
4933            let license_number = license_number.clone();
4934            let body_val = body_val.clone();
4935            async move { client.additives_templates_create_v2(license_number, body_val.as_ref()).await }
4936        }).await
4937    }
4938
4939    /// GET Get V2
4940    /// Retrieves an Additive Template by its Id.
4941    /// 
4942    ///   Permissions Required:
4943    ///   - Manage Additives
4944    ///
4945    pub async fn additives_templates_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4946        let id = id.to_string();
4947        let client = self.client.clone();
4948        let body = body.cloned();
4949        self.rate_limiter.execute(None, true, move || {
4950            let client = client.clone();
4951            let id = id.clone();
4952            let license_number = license_number.clone();
4953            let body = body.clone();
4954            async move { client.additives_templates_get_v2(&id, license_number, body.as_ref()).await }
4955        }).await
4956    }
4957
4958    /// GET GetActive V2
4959    /// Retrieves a list of active additive templates for a specified Facility.
4960    /// 
4961    ///   Permissions Required:
4962    ///   - Manage Additives
4963    ///
4964    pub async fn additives_templates_get_active_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4965        let client = self.client.clone();
4966        let body = body.cloned();
4967        self.rate_limiter.execute(None, true, move || {
4968            let client = client.clone();
4969            let last_modified_end = last_modified_end.clone();
4970            let last_modified_start = last_modified_start.clone();
4971            let license_number = license_number.clone();
4972            let page_number = page_number.clone();
4973            let page_size = page_size.clone();
4974            let body = body.clone();
4975            async move { client.additives_templates_get_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
4976        }).await
4977    }
4978
4979    /// GET GetInactive V2
4980    /// Retrieves a list of inactive additive templates for a specified Facility.
4981    /// 
4982    ///   Permissions Required:
4983    ///   - Manage Additives
4984    ///
4985    pub async fn additives_templates_get_inactive_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4986        let client = self.client.clone();
4987        let body = body.cloned();
4988        self.rate_limiter.execute(None, true, move || {
4989            let client = client.clone();
4990            let last_modified_end = last_modified_end.clone();
4991            let last_modified_start = last_modified_start.clone();
4992            let license_number = license_number.clone();
4993            let page_number = page_number.clone();
4994            let page_size = page_size.clone();
4995            let body = body.clone();
4996            async move { client.additives_templates_get_inactive_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
4997        }).await
4998    }
4999
5000    /// PUT Update V2
5001    /// Updates existing additive templates for a specified Facility.
5002    /// 
5003    ///   Permissions Required:
5004    ///   - Manage Additives
5005    ///
5006    pub async fn additives_templates_update_v2(&self, license_number: Option<String>, body: Option<&Vec<AdditivesTemplatesUpdateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5007        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5008        let client = self.client.clone();
5009        let body_val = body_val.clone();
5010        self.rate_limiter.execute(None, false, move || {
5011            let client = client.clone();
5012            let license_number = license_number.clone();
5013            let body_val = body_val.clone();
5014            async move { client.additives_templates_update_v2(license_number, body_val.as_ref()).await }
5015        }).await
5016    }
5017
5018    /// POST CreateFinish V1
5019    /// Permissions Required:
5020    ///   - View Harvests
5021    ///   - Finish/Discontinue Harvests
5022    ///
5023    pub async fn harvests_create_finish_v1(&self, license_number: Option<String>, body: Option<&Vec<HarvestsCreateFinishV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5024        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5025        let client = self.client.clone();
5026        let body_val = body_val.clone();
5027        self.rate_limiter.execute(None, false, move || {
5028            let client = client.clone();
5029            let license_number = license_number.clone();
5030            let body_val = body_val.clone();
5031            async move { client.harvests_create_finish_v1(license_number, body_val.as_ref()).await }
5032        }).await
5033    }
5034
5035    /// POST CreatePackage V1
5036    /// Permissions Required:
5037    ///   - View Harvests
5038    ///   - Manage Harvests
5039    ///   - View Packages
5040    ///   - Create/Submit/Discontinue Packages
5041    ///
5042    pub async fn harvests_create_package_v1(&self, license_number: Option<String>, body: Option<&Vec<HarvestsCreatePackageV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5043        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5044        let client = self.client.clone();
5045        let body_val = body_val.clone();
5046        self.rate_limiter.execute(None, false, move || {
5047            let client = client.clone();
5048            let license_number = license_number.clone();
5049            let body_val = body_val.clone();
5050            async move { client.harvests_create_package_v1(license_number, body_val.as_ref()).await }
5051        }).await
5052    }
5053
5054    /// POST CreatePackage V2
5055    /// Creates packages from harvested products for a specified Facility.
5056    /// 
5057    ///   Permissions Required:
5058    ///   - View Harvests
5059    ///   - Manage Harvests
5060    ///   - View Packages
5061    ///   - Create/Submit/Discontinue Packages
5062    ///
5063    pub async fn harvests_create_package_v2(&self, license_number: Option<String>, body: Option<&Vec<HarvestsCreatePackageV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5064        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5065        let client = self.client.clone();
5066        let body_val = body_val.clone();
5067        self.rate_limiter.execute(None, false, move || {
5068            let client = client.clone();
5069            let license_number = license_number.clone();
5070            let body_val = body_val.clone();
5071            async move { client.harvests_create_package_v2(license_number, body_val.as_ref()).await }
5072        }).await
5073    }
5074
5075    /// POST CreatePackageTesting V1
5076    /// Permissions Required:
5077    ///   - View Harvests
5078    ///   - Manage Harvests
5079    ///   - View Packages
5080    ///   - Create/Submit/Discontinue Packages
5081    ///
5082    pub async fn harvests_create_package_testing_v1(&self, license_number: Option<String>, body: Option<&Vec<HarvestsCreatePackageTestingV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5083        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5084        let client = self.client.clone();
5085        let body_val = body_val.clone();
5086        self.rate_limiter.execute(None, false, move || {
5087            let client = client.clone();
5088            let license_number = license_number.clone();
5089            let body_val = body_val.clone();
5090            async move { client.harvests_create_package_testing_v1(license_number, body_val.as_ref()).await }
5091        }).await
5092    }
5093
5094    /// POST CreatePackageTesting V2
5095    /// Creates packages for testing from harvested products for a specified Facility.
5096    /// 
5097    ///   Permissions Required:
5098    ///   - View Harvests
5099    ///   - Manage Harvests
5100    ///   - View Packages
5101    ///   - Create/Submit/Discontinue Packages
5102    ///
5103    pub async fn harvests_create_package_testing_v2(&self, license_number: Option<String>, body: Option<&Vec<HarvestsCreatePackageTestingV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5104        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5105        let client = self.client.clone();
5106        let body_val = body_val.clone();
5107        self.rate_limiter.execute(None, false, move || {
5108            let client = client.clone();
5109            let license_number = license_number.clone();
5110            let body_val = body_val.clone();
5111            async move { client.harvests_create_package_testing_v2(license_number, body_val.as_ref()).await }
5112        }).await
5113    }
5114
5115    /// POST CreateRemoveWaste V1
5116    /// Permissions Required:
5117    ///   - View Harvests
5118    ///   - Manage Harvests
5119    ///
5120    pub async fn harvests_create_remove_waste_v1(&self, license_number: Option<String>, body: Option<&Vec<HarvestsCreateRemoveWasteV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5121        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5122        let client = self.client.clone();
5123        let body_val = body_val.clone();
5124        self.rate_limiter.execute(None, false, move || {
5125            let client = client.clone();
5126            let license_number = license_number.clone();
5127            let body_val = body_val.clone();
5128            async move { client.harvests_create_remove_waste_v1(license_number, body_val.as_ref()).await }
5129        }).await
5130    }
5131
5132    /// POST CreateUnfinish V1
5133    /// Permissions Required:
5134    ///   - View Harvests
5135    ///   - Finish/Discontinue Harvests
5136    ///
5137    pub async fn harvests_create_unfinish_v1(&self, license_number: Option<String>, body: Option<&Vec<HarvestsCreateUnfinishV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5138        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5139        let client = self.client.clone();
5140        let body_val = body_val.clone();
5141        self.rate_limiter.execute(None, false, move || {
5142            let client = client.clone();
5143            let license_number = license_number.clone();
5144            let body_val = body_val.clone();
5145            async move { client.harvests_create_unfinish_v1(license_number, body_val.as_ref()).await }
5146        }).await
5147    }
5148
5149    /// POST CreateWaste V2
5150    /// Records Waste from harvests for a specified Facility. NOTE: The IDs passed in the request body are the harvest IDs for which you are documenting waste.
5151    /// 
5152    ///   Permissions Required:
5153    ///   - View Harvests
5154    ///   - Manage Harvests
5155    ///
5156    pub async fn harvests_create_waste_v2(&self, license_number: Option<String>, body: Option<&Vec<HarvestsCreateWasteV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5157        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5158        let client = self.client.clone();
5159        let body_val = body_val.clone();
5160        self.rate_limiter.execute(None, false, move || {
5161            let client = client.clone();
5162            let license_number = license_number.clone();
5163            let body_val = body_val.clone();
5164            async move { client.harvests_create_waste_v2(license_number, body_val.as_ref()).await }
5165        }).await
5166    }
5167
5168    /// DELETE DeleteWaste V2
5169    /// Discontinues a specific harvest waste record by Id for the specified Facility.
5170    /// 
5171    ///   Permissions Required:
5172    ///   - View Harvests
5173    ///   - Discontinue Harvest Waste
5174    ///
5175    pub async fn harvests_delete_waste_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5176        let id = id.to_string();
5177        let client = self.client.clone();
5178        let body = body.cloned();
5179        self.rate_limiter.execute(None, false, move || {
5180            let client = client.clone();
5181            let id = id.clone();
5182            let license_number = license_number.clone();
5183            let body = body.clone();
5184            async move { client.harvests_delete_waste_v2(&id, license_number, body.as_ref()).await }
5185        }).await
5186    }
5187
5188    /// GET Get V1
5189    /// Permissions Required:
5190    ///   - View Harvests
5191    ///
5192    pub async fn harvests_get_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5193        let id = id.to_string();
5194        let client = self.client.clone();
5195        let body = body.cloned();
5196        self.rate_limiter.execute(None, true, move || {
5197            let client = client.clone();
5198            let id = id.clone();
5199            let license_number = license_number.clone();
5200            let body = body.clone();
5201            async move { client.harvests_get_v1(&id, license_number, body.as_ref()).await }
5202        }).await
5203    }
5204
5205    /// GET Get V2
5206    /// Retrieves a Harvest by its Id, optionally validated against a specified Facility License Number.
5207    /// 
5208    ///   Permissions Required:
5209    ///   - View Harvests
5210    ///
5211    pub async fn harvests_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5212        let id = id.to_string();
5213        let client = self.client.clone();
5214        let body = body.cloned();
5215        self.rate_limiter.execute(None, true, move || {
5216            let client = client.clone();
5217            let id = id.clone();
5218            let license_number = license_number.clone();
5219            let body = body.clone();
5220            async move { client.harvests_get_v2(&id, license_number, body.as_ref()).await }
5221        }).await
5222    }
5223
5224    /// GET GetActive V1
5225    /// Permissions Required:
5226    ///   - View Harvests
5227    ///
5228    pub async fn harvests_get_active_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5229        let client = self.client.clone();
5230        let body = body.cloned();
5231        self.rate_limiter.execute(None, true, move || {
5232            let client = client.clone();
5233            let last_modified_end = last_modified_end.clone();
5234            let last_modified_start = last_modified_start.clone();
5235            let license_number = license_number.clone();
5236            let body = body.clone();
5237            async move { client.harvests_get_active_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
5238        }).await
5239    }
5240
5241    /// GET GetActive V2
5242    /// Retrieves a list of active harvests for a specified Facility.
5243    /// 
5244    ///   Permissions Required:
5245    ///   - View Harvests
5246    ///
5247    pub async fn harvests_get_active_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5248        let client = self.client.clone();
5249        let body = body.cloned();
5250        self.rate_limiter.execute(None, true, move || {
5251            let client = client.clone();
5252            let last_modified_end = last_modified_end.clone();
5253            let last_modified_start = last_modified_start.clone();
5254            let license_number = license_number.clone();
5255            let page_number = page_number.clone();
5256            let page_size = page_size.clone();
5257            let body = body.clone();
5258            async move { client.harvests_get_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
5259        }).await
5260    }
5261
5262    /// GET GetInactive V1
5263    /// Permissions Required:
5264    ///   - View Harvests
5265    ///
5266    pub async fn harvests_get_inactive_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5267        let client = self.client.clone();
5268        let body = body.cloned();
5269        self.rate_limiter.execute(None, true, move || {
5270            let client = client.clone();
5271            let last_modified_end = last_modified_end.clone();
5272            let last_modified_start = last_modified_start.clone();
5273            let license_number = license_number.clone();
5274            let body = body.clone();
5275            async move { client.harvests_get_inactive_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
5276        }).await
5277    }
5278
5279    /// GET GetInactive V2
5280    /// Retrieves a list of inactive harvests for a specified Facility.
5281    /// 
5282    ///   Permissions Required:
5283    ///   - View Harvests
5284    ///
5285    pub async fn harvests_get_inactive_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5286        let client = self.client.clone();
5287        let body = body.cloned();
5288        self.rate_limiter.execute(None, true, move || {
5289            let client = client.clone();
5290            let last_modified_end = last_modified_end.clone();
5291            let last_modified_start = last_modified_start.clone();
5292            let license_number = license_number.clone();
5293            let page_number = page_number.clone();
5294            let page_size = page_size.clone();
5295            let body = body.clone();
5296            async move { client.harvests_get_inactive_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
5297        }).await
5298    }
5299
5300    /// GET GetOnhold V1
5301    /// Permissions Required:
5302    ///   - View Harvests
5303    ///
5304    pub async fn harvests_get_onhold_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5305        let client = self.client.clone();
5306        let body = body.cloned();
5307        self.rate_limiter.execute(None, true, move || {
5308            let client = client.clone();
5309            let last_modified_end = last_modified_end.clone();
5310            let last_modified_start = last_modified_start.clone();
5311            let license_number = license_number.clone();
5312            let body = body.clone();
5313            async move { client.harvests_get_onhold_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
5314        }).await
5315    }
5316
5317    /// GET GetOnhold V2
5318    /// Retrieves a list of harvests on hold for a specified Facility.
5319    /// 
5320    ///   Permissions Required:
5321    ///   - View Harvests
5322    ///
5323    pub async fn harvests_get_onhold_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5324        let client = self.client.clone();
5325        let body = body.cloned();
5326        self.rate_limiter.execute(None, true, move || {
5327            let client = client.clone();
5328            let last_modified_end = last_modified_end.clone();
5329            let last_modified_start = last_modified_start.clone();
5330            let license_number = license_number.clone();
5331            let page_number = page_number.clone();
5332            let page_size = page_size.clone();
5333            let body = body.clone();
5334            async move { client.harvests_get_onhold_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
5335        }).await
5336    }
5337
5338    /// GET GetWaste V2
5339    /// Retrieves a list of Waste records for a specified Harvest, identified by its Harvest Id, within a Facility identified by its License Number.
5340    /// 
5341    ///   Permissions Required:
5342    ///   - View Harvests
5343    ///
5344    pub async fn harvests_get_waste_v2(&self, harvest_id: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5345        let client = self.client.clone();
5346        let body = body.cloned();
5347        self.rate_limiter.execute(None, true, move || {
5348            let client = client.clone();
5349            let harvest_id = harvest_id.clone();
5350            let license_number = license_number.clone();
5351            let page_number = page_number.clone();
5352            let page_size = page_size.clone();
5353            let body = body.clone();
5354            async move { client.harvests_get_waste_v2(harvest_id, license_number, page_number, page_size, body.as_ref()).await }
5355        }).await
5356    }
5357
5358    /// GET GetWasteTypes V1
5359    /// Permissions Required:
5360    ///   - None
5361    ///
5362    pub async fn harvests_get_waste_types_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5363        let client = self.client.clone();
5364        let body = body.cloned();
5365        self.rate_limiter.execute(None, true, move || {
5366            let client = client.clone();
5367            let no = no.clone();
5368            let body = body.clone();
5369            async move { client.harvests_get_waste_types_v1(no, body.as_ref()).await }
5370        }).await
5371    }
5372
5373    /// GET GetWasteTypes V2
5374    /// Retrieves a list of Waste types for harvests.
5375    /// 
5376    ///   Permissions Required:
5377    ///   - None
5378    ///
5379    pub async fn harvests_get_waste_types_v2(&self, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5380        let client = self.client.clone();
5381        let body = body.cloned();
5382        self.rate_limiter.execute(None, true, move || {
5383            let client = client.clone();
5384            let page_number = page_number.clone();
5385            let page_size = page_size.clone();
5386            let body = body.clone();
5387            async move { client.harvests_get_waste_types_v2(page_number, page_size, body.as_ref()).await }
5388        }).await
5389    }
5390
5391    /// PUT UpdateFinish V2
5392    /// Marks one or more harvests as finished for the specified Facility.
5393    /// 
5394    ///   Permissions Required:
5395    ///   - View Harvests
5396    ///   - Finish/Discontinue Harvests
5397    ///
5398    pub async fn harvests_update_finish_v2(&self, license_number: Option<String>, body: Option<&Vec<HarvestsUpdateFinishV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5399        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5400        let client = self.client.clone();
5401        let body_val = body_val.clone();
5402        self.rate_limiter.execute(None, false, move || {
5403            let client = client.clone();
5404            let license_number = license_number.clone();
5405            let body_val = body_val.clone();
5406            async move { client.harvests_update_finish_v2(license_number, body_val.as_ref()).await }
5407        }).await
5408    }
5409
5410    /// PUT UpdateLocation V2
5411    /// Updates the Location of Harvest for a specified Facility.
5412    /// 
5413    ///   Permissions Required:
5414    ///   - View Harvests
5415    ///   - Manage Harvests
5416    ///
5417    pub async fn harvests_update_location_v2(&self, license_number: Option<String>, body: Option<&Vec<HarvestsUpdateLocationV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5418        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5419        let client = self.client.clone();
5420        let body_val = body_val.clone();
5421        self.rate_limiter.execute(None, false, move || {
5422            let client = client.clone();
5423            let license_number = license_number.clone();
5424            let body_val = body_val.clone();
5425            async move { client.harvests_update_location_v2(license_number, body_val.as_ref()).await }
5426        }).await
5427    }
5428
5429    /// PUT UpdateMove V1
5430    /// Permissions Required:
5431    ///   - View Harvests
5432    ///   - Manage Harvests
5433    ///
5434    pub async fn harvests_update_move_v1(&self, license_number: Option<String>, body: Option<&Vec<HarvestsUpdateMoveV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5435        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5436        let client = self.client.clone();
5437        let body_val = body_val.clone();
5438        self.rate_limiter.execute(None, false, move || {
5439            let client = client.clone();
5440            let license_number = license_number.clone();
5441            let body_val = body_val.clone();
5442            async move { client.harvests_update_move_v1(license_number, body_val.as_ref()).await }
5443        }).await
5444    }
5445
5446    /// PUT UpdateRename V1
5447    /// Permissions Required:
5448    ///   - View Harvests
5449    ///   - Manage Harvests
5450    ///
5451    pub async fn harvests_update_rename_v1(&self, license_number: Option<String>, body: Option<&Vec<HarvestsUpdateRenameV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5452        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5453        let client = self.client.clone();
5454        let body_val = body_val.clone();
5455        self.rate_limiter.execute(None, false, move || {
5456            let client = client.clone();
5457            let license_number = license_number.clone();
5458            let body_val = body_val.clone();
5459            async move { client.harvests_update_rename_v1(license_number, body_val.as_ref()).await }
5460        }).await
5461    }
5462
5463    /// PUT UpdateRename V2
5464    /// Renames one or more harvests for the specified Facility.
5465    /// 
5466    ///   Permissions Required:
5467    ///   - View Harvests
5468    ///   - Manage Harvests
5469    ///
5470    pub async fn harvests_update_rename_v2(&self, license_number: Option<String>, body: Option<&Vec<HarvestsUpdateRenameV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5471        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5472        let client = self.client.clone();
5473        let body_val = body_val.clone();
5474        self.rate_limiter.execute(None, false, move || {
5475            let client = client.clone();
5476            let license_number = license_number.clone();
5477            let body_val = body_val.clone();
5478            async move { client.harvests_update_rename_v2(license_number, body_val.as_ref()).await }
5479        }).await
5480    }
5481
5482    /// PUT UpdateRestoreHarvestedPlants V2
5483    /// Restores previously harvested plants to their original state for the specified Facility.
5484    /// 
5485    ///   Permissions Required:
5486    ///   - View Harvests
5487    ///   - Finish/Discontinue Harvests
5488    ///
5489    pub async fn harvests_update_restore_harvested_plants_v2(&self, license_number: Option<String>, body: Option<&Vec<HarvestsUpdateRestoreHarvestedPlantsV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5490        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5491        let client = self.client.clone();
5492        let body_val = body_val.clone();
5493        self.rate_limiter.execute(None, false, move || {
5494            let client = client.clone();
5495            let license_number = license_number.clone();
5496            let body_val = body_val.clone();
5497            async move { client.harvests_update_restore_harvested_plants_v2(license_number, body_val.as_ref()).await }
5498        }).await
5499    }
5500
5501    /// PUT UpdateUnfinish V2
5502    /// Reopens one or more previously finished harvests for the specified Facility.
5503    /// 
5504    ///   Permissions Required:
5505    ///   - View Harvests
5506    ///   - Finish/Discontinue Harvests
5507    ///
5508    pub async fn harvests_update_unfinish_v2(&self, license_number: Option<String>, body: Option<&Vec<HarvestsUpdateUnfinishV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5509        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5510        let client = self.client.clone();
5511        let body_val = body_val.clone();
5512        self.rate_limiter.execute(None, false, move || {
5513            let client = client.clone();
5514            let license_number = license_number.clone();
5515            let body_val = body_val.clone();
5516            async move { client.harvests_update_unfinish_v2(license_number, body_val.as_ref()).await }
5517        }).await
5518    }
5519
5520    /// POST Create V2
5521    /// Adds new patients to a specified Facility.
5522    /// 
5523    ///   Permissions Required:
5524    ///   - Manage Patients
5525    ///
5526    pub async fn patients_create_v2(&self, license_number: Option<String>, body: Option<&Vec<PatientsCreateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5527        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5528        let client = self.client.clone();
5529        let body_val = body_val.clone();
5530        self.rate_limiter.execute(None, false, move || {
5531            let client = client.clone();
5532            let license_number = license_number.clone();
5533            let body_val = body_val.clone();
5534            async move { client.patients_create_v2(license_number, body_val.as_ref()).await }
5535        }).await
5536    }
5537
5538    /// POST CreateAdd V1
5539    /// Permissions Required:
5540    ///   - Manage Patients
5541    ///
5542    pub async fn patients_create_add_v1(&self, license_number: Option<String>, body: Option<&Vec<PatientsCreateAddV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5543        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5544        let client = self.client.clone();
5545        let body_val = body_val.clone();
5546        self.rate_limiter.execute(None, false, move || {
5547            let client = client.clone();
5548            let license_number = license_number.clone();
5549            let body_val = body_val.clone();
5550            async move { client.patients_create_add_v1(license_number, body_val.as_ref()).await }
5551        }).await
5552    }
5553
5554    /// POST CreateUpdate V1
5555    /// Permissions Required:
5556    ///   - Manage Patients
5557    ///
5558    pub async fn patients_create_update_v1(&self, license_number: Option<String>, body: Option<&Vec<PatientsCreateUpdateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5559        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5560        let client = self.client.clone();
5561        let body_val = body_val.clone();
5562        self.rate_limiter.execute(None, false, move || {
5563            let client = client.clone();
5564            let license_number = license_number.clone();
5565            let body_val = body_val.clone();
5566            async move { client.patients_create_update_v1(license_number, body_val.as_ref()).await }
5567        }).await
5568    }
5569
5570    /// DELETE Delete V1
5571    /// Permissions Required:
5572    ///   - Manage Patients
5573    ///
5574    pub async fn patients_delete_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5575        let id = id.to_string();
5576        let client = self.client.clone();
5577        let body = body.cloned();
5578        self.rate_limiter.execute(None, false, move || {
5579            let client = client.clone();
5580            let id = id.clone();
5581            let license_number = license_number.clone();
5582            let body = body.clone();
5583            async move { client.patients_delete_v1(&id, license_number, body.as_ref()).await }
5584        }).await
5585    }
5586
5587    /// DELETE Delete V2
5588    /// Removes a Patient, identified by an Id, from a specified Facility.
5589    /// 
5590    ///   Permissions Required:
5591    ///   - Manage Patients
5592    ///
5593    pub async fn patients_delete_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5594        let id = id.to_string();
5595        let client = self.client.clone();
5596        let body = body.cloned();
5597        self.rate_limiter.execute(None, false, move || {
5598            let client = client.clone();
5599            let id = id.clone();
5600            let license_number = license_number.clone();
5601            let body = body.clone();
5602            async move { client.patients_delete_v2(&id, license_number, body.as_ref()).await }
5603        }).await
5604    }
5605
5606    /// GET Get V1
5607    /// Permissions Required:
5608    ///   - Manage Patients
5609    ///
5610    pub async fn patients_get_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5611        let id = id.to_string();
5612        let client = self.client.clone();
5613        let body = body.cloned();
5614        self.rate_limiter.execute(None, true, move || {
5615            let client = client.clone();
5616            let id = id.clone();
5617            let license_number = license_number.clone();
5618            let body = body.clone();
5619            async move { client.patients_get_v1(&id, license_number, body.as_ref()).await }
5620        }).await
5621    }
5622
5623    /// GET Get V2
5624    /// Retrieves a Patient by Id.
5625    /// 
5626    ///   Permissions Required:
5627    ///   - Manage Patients
5628    ///
5629    pub async fn patients_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5630        let id = id.to_string();
5631        let client = self.client.clone();
5632        let body = body.cloned();
5633        self.rate_limiter.execute(None, true, move || {
5634            let client = client.clone();
5635            let id = id.clone();
5636            let license_number = license_number.clone();
5637            let body = body.clone();
5638            async move { client.patients_get_v2(&id, license_number, body.as_ref()).await }
5639        }).await
5640    }
5641
5642    /// GET GetActive V1
5643    /// Permissions Required:
5644    ///   - Manage Patients
5645    ///
5646    pub async fn patients_get_active_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5647        let client = self.client.clone();
5648        let body = body.cloned();
5649        self.rate_limiter.execute(None, true, move || {
5650            let client = client.clone();
5651            let license_number = license_number.clone();
5652            let body = body.clone();
5653            async move { client.patients_get_active_v1(license_number, body.as_ref()).await }
5654        }).await
5655    }
5656
5657    /// GET GetActive V2
5658    /// Retrieves a list of active patients for a specified Facility.
5659    /// 
5660    ///   Permissions Required:
5661    ///   - Manage Patients
5662    ///
5663    pub async fn patients_get_active_v2(&self, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5664        let client = self.client.clone();
5665        let body = body.cloned();
5666        self.rate_limiter.execute(None, true, move || {
5667            let client = client.clone();
5668            let license_number = license_number.clone();
5669            let page_number = page_number.clone();
5670            let page_size = page_size.clone();
5671            let body = body.clone();
5672            async move { client.patients_get_active_v2(license_number, page_number, page_size, body.as_ref()).await }
5673        }).await
5674    }
5675
5676    /// PUT Update V2
5677    /// Updates Patient information for a specified Facility.
5678    /// 
5679    ///   Permissions Required:
5680    ///   - Manage Patients
5681    ///
5682    pub async fn patients_update_v2(&self, license_number: Option<String>, body: Option<&Vec<PatientsUpdateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5683        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5684        let client = self.client.clone();
5685        let body_val = body_val.clone();
5686        self.rate_limiter.execute(None, false, move || {
5687            let client = client.clone();
5688            let license_number = license_number.clone();
5689            let body_val = body_val.clone();
5690            async move { client.patients_update_v2(license_number, body_val.as_ref()).await }
5691        }).await
5692    }
5693
5694    /// POST CreateDelivery V1
5695    /// Please note: The SalesDateTime field must be the actual date and time of the transaction without time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be Pacific Standard (or Daylight Savings) Time and not in UTC.
5696    /// 
5697    ///   Permissions Required:
5698    ///   - Sales Delivery
5699    ///
5700    pub async fn sales_create_delivery_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5701        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5702        let client = self.client.clone();
5703        let body_val = body_val.clone();
5704        self.rate_limiter.execute(None, false, move || {
5705            let client = client.clone();
5706            let license_number = license_number.clone();
5707            let body_val = body_val.clone();
5708            async move { client.sales_create_delivery_v1(license_number, body_val.as_ref()).await }
5709        }).await
5710    }
5711
5712    /// POST CreateDelivery V2
5713    /// Records new sales delivery entries for a given License Number. Please note: The SalesDateTime field must be the actual date and time of the transaction without the time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be in Pacific Standard (or Daylight Savings) Time and not in UTC.
5714    /// 
5715    ///   Permissions Required:
5716    ///   - External Sources(ThirdPartyVendorV2)/Sales Deliveries(Write)
5717    ///   - Industry/Facility Type/Consumer Sales Delivery or Industry/Facility Type/Patient Sales Delivery
5718    ///   - WebApi Sales Deliveries Read Write State (All or WriteOnly)
5719    ///   - WebApi Retail ID Read Write State (All or WriteOnly) - Required for RID only.
5720    ///   - External Sources(ThirdPartyVendorV2)/Retail ID(Write) - Required for RID only.
5721    ///
5722    pub async fn sales_create_delivery_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5723        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5724        let client = self.client.clone();
5725        let body_val = body_val.clone();
5726        self.rate_limiter.execute(None, false, move || {
5727            let client = client.clone();
5728            let license_number = license_number.clone();
5729            let body_val = body_val.clone();
5730            async move { client.sales_create_delivery_v2(license_number, body_val.as_ref()).await }
5731        }).await
5732    }
5733
5734    /// POST CreateDeliveryRetailer V1
5735    /// Please note: The DateTime field must be the actual date and time of the transaction without time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be Pacific Standard (or Daylight Savings) Time and not in UTC.
5736    /// 
5737    ///   Permissions Required:
5738    ///   - Retailer Delivery
5739    ///
5740    pub async fn sales_create_delivery_retailer_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5741        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5742        let client = self.client.clone();
5743        let body_val = body_val.clone();
5744        self.rate_limiter.execute(None, false, move || {
5745            let client = client.clone();
5746            let license_number = license_number.clone();
5747            let body_val = body_val.clone();
5748            async move { client.sales_create_delivery_retailer_v1(license_number, body_val.as_ref()).await }
5749        }).await
5750    }
5751
5752    /// POST CreateDeliveryRetailer V2
5753    /// Records retailer delivery data for a given License Number, including delivery destinations. Please note: The DateTime field must be the actual date and time of the transaction without the time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be in Pacific Standard (or Daylight Savings) Time and not in UTC.
5754    /// 
5755    ///   Permissions Required:
5756    ///   - External Sources(ThirdPartyVendorV2)/Sales Deliveries(Write)
5757    ///   - Industry/Facility Type/Retailer Delivery
5758    ///   - Industry/Facility Type/Consumer Sales Delivery or Industry/Facility Type/Patient Sales Delivery
5759    ///   - WebApi Sales Deliveries Read Write State (All or WriteOnly)
5760    ///   - WebApi Retail ID Read Write State (All or WriteOnly) - Required for RID only.
5761    ///   - External Sources(ThirdPartyVendorV2)/Retail ID(Write) - Required for RID only.
5762    ///   - Manage Retailer Delivery
5763    ///
5764    pub async fn sales_create_delivery_retailer_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5765        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5766        let client = self.client.clone();
5767        let body_val = body_val.clone();
5768        self.rate_limiter.execute(None, false, move || {
5769            let client = client.clone();
5770            let license_number = license_number.clone();
5771            let body_val = body_val.clone();
5772            async move { client.sales_create_delivery_retailer_v2(license_number, body_val.as_ref()).await }
5773        }).await
5774    }
5775
5776    /// POST CreateDeliveryRetailerDepart V1
5777    /// Permissions Required:
5778    ///   - Retailer Delivery
5779    ///
5780    pub async fn sales_create_delivery_retailer_depart_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerDepartV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5781        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5782        let client = self.client.clone();
5783        let body_val = body_val.clone();
5784        self.rate_limiter.execute(None, false, move || {
5785            let client = client.clone();
5786            let license_number = license_number.clone();
5787            let body_val = body_val.clone();
5788            async move { client.sales_create_delivery_retailer_depart_v1(license_number, body_val.as_ref()).await }
5789        }).await
5790    }
5791
5792    /// POST CreateDeliveryRetailerDepart V2
5793    /// Processes the departure of retailer deliveries for a Facility using the provided License Number and delivery data.
5794    /// 
5795    ///   Permissions Required:
5796    ///   - External Sources(ThirdPartyVendorV2)/Sales Deliveries(Write)
5797    ///   - Industry/Facility Type/Retailer Delivery
5798    ///   - Industry/Facility Type/Consumer Sales Delivery or Industry/Facility Type/Patient Sales Delivery
5799    ///   - WebApi Sales Deliveries Read Write State (All or WriteOnly)
5800    ///   - Manage Retailer Delivery
5801    ///
5802    pub async fn sales_create_delivery_retailer_depart_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerDepartV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5803        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5804        let client = self.client.clone();
5805        let body_val = body_val.clone();
5806        self.rate_limiter.execute(None, false, move || {
5807            let client = client.clone();
5808            let license_number = license_number.clone();
5809            let body_val = body_val.clone();
5810            async move { client.sales_create_delivery_retailer_depart_v2(license_number, body_val.as_ref()).await }
5811        }).await
5812    }
5813
5814    /// POST CreateDeliveryRetailerEnd V1
5815    /// Please note: The ActualArrivalDateTime field must be the actual date and time of the transaction without time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be Pacific Standard (or Daylight Savings) Time and not in UTC.
5816    /// 
5817    ///   Permissions Required:
5818    ///   - Retailer Delivery
5819    ///
5820    pub async fn sales_create_delivery_retailer_end_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerEndV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5821        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5822        let client = self.client.clone();
5823        let body_val = body_val.clone();
5824        self.rate_limiter.execute(None, false, move || {
5825            let client = client.clone();
5826            let license_number = license_number.clone();
5827            let body_val = body_val.clone();
5828            async move { client.sales_create_delivery_retailer_end_v1(license_number, body_val.as_ref()).await }
5829        }).await
5830    }
5831
5832    /// POST CreateDeliveryRetailerEnd V2
5833    /// Ends retailer delivery records for a given License Number. Please note: The ActualArrivalDateTime field must be the actual date and time of the transaction without the time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be in Pacific Standard (or Daylight Savings) Time and not in UTC.
5834    /// 
5835    ///   Permissions Required:
5836    ///   - External Sources(ThirdPartyVendorV2)/Sales Deliveries(Write)
5837    ///   - Industry/Facility Type/Retailer Delivery
5838    ///   - Industry/Facility Type/Consumer Sales Delivery or Industry/Facility Type/Patient Sales Delivery
5839    ///   - WebApi Sales Deliveries Read Write State (All or WriteOnly)
5840    ///   - Manage Retailer Delivery
5841    ///
5842    pub async fn sales_create_delivery_retailer_end_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerEndV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5843        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5844        let client = self.client.clone();
5845        let body_val = body_val.clone();
5846        self.rate_limiter.execute(None, false, move || {
5847            let client = client.clone();
5848            let license_number = license_number.clone();
5849            let body_val = body_val.clone();
5850            async move { client.sales_create_delivery_retailer_end_v2(license_number, body_val.as_ref()).await }
5851        }).await
5852    }
5853
5854    /// POST CreateDeliveryRetailerRestock V1
5855    /// Please note: The DateTime field must be the actual date and time of the transaction without time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be Pacific Standard (or Daylight Savings) Time and not in UTC.
5856    /// 
5857    ///   Permissions Required:
5858    ///   - Retailer Delivery
5859    ///
5860    pub async fn sales_create_delivery_retailer_restock_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerRestockV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5861        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5862        let client = self.client.clone();
5863        let body_val = body_val.clone();
5864        self.rate_limiter.execute(None, false, move || {
5865            let client = client.clone();
5866            let license_number = license_number.clone();
5867            let body_val = body_val.clone();
5868            async move { client.sales_create_delivery_retailer_restock_v1(license_number, body_val.as_ref()).await }
5869        }).await
5870    }
5871
5872    /// POST CreateDeliveryRetailerRestock V2
5873    /// Records restock deliveries for retailer facilities using the provided License Number. Please note: The DateTime field must be the actual date and time of the transaction without the time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be in Pacific Standard (or Daylight Savings) Time and not in UTC.
5874    /// 
5875    ///   Permissions Required:
5876    ///   - External Sources(ThirdPartyVendorV2)/Sales Deliveries(Write)
5877    ///   - Industry/Facility Type/Retailer Delivery
5878    ///   - Industry/Facility Type/Consumer Sales Delivery or Industry/Facility Type/Patient Sales Delivery
5879    ///   - WebApi Sales Deliveries Read Write State (All or WriteOnly)
5880    ///   - Manage Retailer Delivery
5881    ///
5882    pub async fn sales_create_delivery_retailer_restock_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerRestockV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5883        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5884        let client = self.client.clone();
5885        let body_val = body_val.clone();
5886        self.rate_limiter.execute(None, false, move || {
5887            let client = client.clone();
5888            let license_number = license_number.clone();
5889            let body_val = body_val.clone();
5890            async move { client.sales_create_delivery_retailer_restock_v2(license_number, body_val.as_ref()).await }
5891        }).await
5892    }
5893
5894    /// POST CreateDeliveryRetailerSale V1
5895    /// Please note: The SalesDateTime field must be the actual date and time of the transaction without time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be Pacific Standard (or Daylight Savings) Time and not in UTC.
5896    /// 
5897    ///   Permissions Required:
5898    ///   - Retailer Delivery
5899    ///
5900    pub async fn sales_create_delivery_retailer_sale_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerSaleV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5901        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5902        let client = self.client.clone();
5903        let body_val = body_val.clone();
5904        self.rate_limiter.execute(None, false, move || {
5905            let client = client.clone();
5906            let license_number = license_number.clone();
5907            let body_val = body_val.clone();
5908            async move { client.sales_create_delivery_retailer_sale_v1(license_number, body_val.as_ref()).await }
5909        }).await
5910    }
5911
5912    /// POST CreateDeliveryRetailerSale V2
5913    /// Records sales deliveries originating from a retailer delivery for a given License Number. Please note: The SalesDateTime field must be the actual date and time of the transaction without the time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be in Pacific Standard (or Daylight Savings) Time and not in UTC.
5914    /// 
5915    ///   Permissions Required:
5916    ///   - External Sources(ThirdPartyVendorV2)/Sales Deliveries(Write)
5917    ///   - Industry/Facility Type/Retailer Delivery
5918    ///   - Industry/Facility Type/Consumer Sales Delivery or Industry/Facility Type/Patient Sales Delivery
5919    ///   - WebApi Sales Deliveries Read Write State (All or WriteOnly)
5920    ///   - WebApi Retail ID Read Write State (All or WriteOnly) - Required for RID only.
5921    ///   - External Sources(ThirdPartyVendorV2)/Retail ID(Write) - Required for RID only.
5922    ///
5923    pub async fn sales_create_delivery_retailer_sale_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerSaleV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5924        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5925        let client = self.client.clone();
5926        let body_val = body_val.clone();
5927        self.rate_limiter.execute(None, false, move || {
5928            let client = client.clone();
5929            let license_number = license_number.clone();
5930            let body_val = body_val.clone();
5931            async move { client.sales_create_delivery_retailer_sale_v2(license_number, body_val.as_ref()).await }
5932        }).await
5933    }
5934
5935    /// POST CreateReceipt V1
5936    /// Please note: The SalesDateTime field must be the actual date and time of the transaction without time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be Pacific Standard (or Daylight Savings) Time and not in UTC.
5937    /// 
5938    ///   Permissions Required:
5939    ///   - Sales
5940    ///
5941    pub async fn sales_create_receipt_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateReceiptV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5942        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5943        let client = self.client.clone();
5944        let body_val = body_val.clone();
5945        self.rate_limiter.execute(None, false, move || {
5946            let client = client.clone();
5947            let license_number = license_number.clone();
5948            let body_val = body_val.clone();
5949            async move { client.sales_create_receipt_v1(license_number, body_val.as_ref()).await }
5950        }).await
5951    }
5952
5953    /// POST CreateReceipt V2
5954    /// Records a list of sales deliveries for a given License Number. Please note: The SalesDateTime field must be the actual date and time of the transaction without the time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be in Pacific Standard (or Daylight Savings) Time and not in UTC.
5955    /// 
5956    ///   Permissions Required:
5957    ///   - External Sources(ThirdPartyVendorV2)/Sales (Write)
5958    ///   - Industry/Facility Type/Consumer Sales or Industry/Facility Type/Patient Sales or Industry/Facility Type/External Patient Sales or Industry/Facility Type/Caregiver Sales
5959    ///   - Industry/Facility Type/Advanced Sales
5960    ///   - WebApi Sales Read Write State (All or WriteOnly)
5961    ///   - WebApi Retail ID Read Write State (All or WriteOnly) - Required for RID only.
5962    ///   - External Sources(ThirdPartyVendorV2)/Retail ID(Write) - Required for RID only.
5963    ///
5964    pub async fn sales_create_receipt_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateReceiptV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5965        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5966        let client = self.client.clone();
5967        let body_val = body_val.clone();
5968        self.rate_limiter.execute(None, false, move || {
5969            let client = client.clone();
5970            let license_number = license_number.clone();
5971            let body_val = body_val.clone();
5972            async move { client.sales_create_receipt_v2(license_number, body_val.as_ref()).await }
5973        }).await
5974    }
5975
5976    /// POST CreateTransactionByDate V1
5977    /// Permissions Required:
5978    ///   - Sales
5979    ///
5980    pub async fn sales_create_transaction_by_date_v1(&self, date: &str, license_number: Option<String>, body: Option<&Vec<SalesCreateTransactionByDateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5981        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5982        let date = date.to_string();
5983        let client = self.client.clone();
5984        let body_val = body_val.clone();
5985        self.rate_limiter.execute(None, false, move || {
5986            let client = client.clone();
5987            let date = date.clone();
5988            let license_number = license_number.clone();
5989            let body_val = body_val.clone();
5990            async move { client.sales_create_transaction_by_date_v1(&date, license_number, body_val.as_ref()).await }
5991        }).await
5992    }
5993
5994    /// DELETE DeleteDelivery V1
5995    /// Permissions Required:
5996    ///   - Sales Delivery
5997    ///
5998    pub async fn sales_delete_delivery_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5999        let id = id.to_string();
6000        let client = self.client.clone();
6001        let body = body.cloned();
6002        self.rate_limiter.execute(None, false, move || {
6003            let client = client.clone();
6004            let id = id.clone();
6005            let license_number = license_number.clone();
6006            let body = body.clone();
6007            async move { client.sales_delete_delivery_v1(&id, license_number, body.as_ref()).await }
6008        }).await
6009    }
6010
6011    /// DELETE DeleteDelivery V2
6012    /// Voids a sales delivery for a Facility using the provided License Number and delivery Id.
6013    /// 
6014    ///   Permissions Required:
6015    ///   - Manage Sales Delivery
6016    ///
6017    pub async fn sales_delete_delivery_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6018        let id = id.to_string();
6019        let client = self.client.clone();
6020        let body = body.cloned();
6021        self.rate_limiter.execute(None, false, move || {
6022            let client = client.clone();
6023            let id = id.clone();
6024            let license_number = license_number.clone();
6025            let body = body.clone();
6026            async move { client.sales_delete_delivery_v2(&id, license_number, body.as_ref()).await }
6027        }).await
6028    }
6029
6030    /// DELETE DeleteDeliveryRetailer V1
6031    /// Permissions Required:
6032    ///   - Retailer Delivery
6033    ///
6034    pub async fn sales_delete_delivery_retailer_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6035        let id = id.to_string();
6036        let client = self.client.clone();
6037        let body = body.cloned();
6038        self.rate_limiter.execute(None, false, move || {
6039            let client = client.clone();
6040            let id = id.clone();
6041            let license_number = license_number.clone();
6042            let body = body.clone();
6043            async move { client.sales_delete_delivery_retailer_v1(&id, license_number, body.as_ref()).await }
6044        }).await
6045    }
6046
6047    /// DELETE DeleteDeliveryRetailer V2
6048    /// Voids a retailer delivery for a Facility using the provided License Number and delivery Id.
6049    /// 
6050    ///   Permissions Required:
6051    ///   - External Sources(ThirdPartyVendorV2)/Sales Deliveries(Write)
6052    ///   - Industry/Facility Type/Retailer Delivery
6053    ///   - Industry/Facility Type/Consumer Sales Delivery or Industry/Facility Type/Patient Sales Delivery
6054    ///   - WebApi Sales Deliveries Read Write State (All or WriteOnly)
6055    ///   - Manage Retailer Delivery
6056    ///
6057    pub async fn sales_delete_delivery_retailer_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6058        let id = id.to_string();
6059        let client = self.client.clone();
6060        let body = body.cloned();
6061        self.rate_limiter.execute(None, false, move || {
6062            let client = client.clone();
6063            let id = id.clone();
6064            let license_number = license_number.clone();
6065            let body = body.clone();
6066            async move { client.sales_delete_delivery_retailer_v2(&id, license_number, body.as_ref()).await }
6067        }).await
6068    }
6069
6070    /// DELETE DeleteReceipt V1
6071    /// Permissions Required:
6072    ///   - Sales
6073    ///
6074    pub async fn sales_delete_receipt_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6075        let id = id.to_string();
6076        let client = self.client.clone();
6077        let body = body.cloned();
6078        self.rate_limiter.execute(None, false, move || {
6079            let client = client.clone();
6080            let id = id.clone();
6081            let license_number = license_number.clone();
6082            let body = body.clone();
6083            async move { client.sales_delete_receipt_v1(&id, license_number, body.as_ref()).await }
6084        }).await
6085    }
6086
6087    /// DELETE DeleteReceipt V2
6088    /// Archives a sales receipt for a Facility using the provided License Number and receipt Id.
6089    /// 
6090    ///   Permissions Required:
6091    ///   - Manage Sales
6092    ///
6093    pub async fn sales_delete_receipt_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6094        let id = id.to_string();
6095        let client = self.client.clone();
6096        let body = body.cloned();
6097        self.rate_limiter.execute(None, false, move || {
6098            let client = client.clone();
6099            let id = id.clone();
6100            let license_number = license_number.clone();
6101            let body = body.clone();
6102            async move { client.sales_delete_receipt_v2(&id, license_number, body.as_ref()).await }
6103        }).await
6104    }
6105
6106    /// GET GetCounties V1
6107    /// Permissions Required:
6108    ///   - None
6109    ///
6110    pub async fn sales_get_counties_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6111        let client = self.client.clone();
6112        let body = body.cloned();
6113        self.rate_limiter.execute(None, true, move || {
6114            let client = client.clone();
6115            let no = no.clone();
6116            let body = body.clone();
6117            async move { client.sales_get_counties_v1(no, body.as_ref()).await }
6118        }).await
6119    }
6120
6121    /// GET GetCounties V2
6122    /// Returns a list of counties available for sales deliveries.
6123    /// 
6124    ///   Permissions Required:
6125    ///   - None
6126    ///
6127    pub async fn sales_get_counties_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6128        let client = self.client.clone();
6129        let body = body.cloned();
6130        self.rate_limiter.execute(None, true, move || {
6131            let client = client.clone();
6132            let no = no.clone();
6133            let body = body.clone();
6134            async move { client.sales_get_counties_v2(no, body.as_ref()).await }
6135        }).await
6136    }
6137
6138    /// GET GetCustomertypes V1
6139    /// Permissions Required:
6140    ///   - None
6141    ///
6142    pub async fn sales_get_customertypes_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6143        let client = self.client.clone();
6144        let body = body.cloned();
6145        self.rate_limiter.execute(None, true, move || {
6146            let client = client.clone();
6147            let no = no.clone();
6148            let body = body.clone();
6149            async move { client.sales_get_customertypes_v1(no, body.as_ref()).await }
6150        }).await
6151    }
6152
6153    /// GET GetCustomertypes V2
6154    /// Returns a list of customer types.
6155    /// 
6156    ///   Permissions Required:
6157    ///   - None
6158    ///
6159    pub async fn sales_get_customertypes_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6160        let client = self.client.clone();
6161        let body = body.cloned();
6162        self.rate_limiter.execute(None, true, move || {
6163            let client = client.clone();
6164            let no = no.clone();
6165            let body = body.clone();
6166            async move { client.sales_get_customertypes_v2(no, body.as_ref()).await }
6167        }).await
6168    }
6169
6170    /// GET GetDeliveriesActive V1
6171    /// Permissions Required:
6172    ///   - Sales Delivery
6173    ///
6174    pub async fn sales_get_deliveries_active_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, sales_date_end: Option<String>, sales_date_start: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6175        let client = self.client.clone();
6176        let body = body.cloned();
6177        self.rate_limiter.execute(None, true, move || {
6178            let client = client.clone();
6179            let last_modified_end = last_modified_end.clone();
6180            let last_modified_start = last_modified_start.clone();
6181            let license_number = license_number.clone();
6182            let sales_date_end = sales_date_end.clone();
6183            let sales_date_start = sales_date_start.clone();
6184            let body = body.clone();
6185            async move { client.sales_get_deliveries_active_v1(last_modified_end, last_modified_start, license_number, sales_date_end, sales_date_start, body.as_ref()).await }
6186        }).await
6187    }
6188
6189    /// GET GetDeliveriesActive V2
6190    /// Returns a list of active sales deliveries for a Facility, filtered by optional sales or last modified date ranges.
6191    /// 
6192    ///   Permissions Required:
6193    ///   - View Sales Delivery
6194    ///   - Manage Sales Delivery
6195    ///
6196    pub async fn sales_get_deliveries_active_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, sales_date_end: Option<String>, sales_date_start: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6197        let client = self.client.clone();
6198        let body = body.cloned();
6199        self.rate_limiter.execute(None, true, move || {
6200            let client = client.clone();
6201            let last_modified_end = last_modified_end.clone();
6202            let last_modified_start = last_modified_start.clone();
6203            let license_number = license_number.clone();
6204            let page_number = page_number.clone();
6205            let page_size = page_size.clone();
6206            let sales_date_end = sales_date_end.clone();
6207            let sales_date_start = sales_date_start.clone();
6208            let body = body.clone();
6209            async move { client.sales_get_deliveries_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, sales_date_end, sales_date_start, body.as_ref()).await }
6210        }).await
6211    }
6212
6213    /// GET GetDeliveriesInactive V1
6214    /// Permissions Required:
6215    ///   - Sales Delivery
6216    ///
6217    pub async fn sales_get_deliveries_inactive_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, sales_date_end: Option<String>, sales_date_start: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6218        let client = self.client.clone();
6219        let body = body.cloned();
6220        self.rate_limiter.execute(None, true, move || {
6221            let client = client.clone();
6222            let last_modified_end = last_modified_end.clone();
6223            let last_modified_start = last_modified_start.clone();
6224            let license_number = license_number.clone();
6225            let sales_date_end = sales_date_end.clone();
6226            let sales_date_start = sales_date_start.clone();
6227            let body = body.clone();
6228            async move { client.sales_get_deliveries_inactive_v1(last_modified_end, last_modified_start, license_number, sales_date_end, sales_date_start, body.as_ref()).await }
6229        }).await
6230    }
6231
6232    /// GET GetDeliveriesInactive V2
6233    /// Returns a list of inactive sales deliveries for a Facility, filtered by optional sales or last modified date ranges.
6234    /// 
6235    ///   Permissions Required:
6236    ///   - View Sales Delivery
6237    ///   - Manage Sales Delivery
6238    ///
6239    pub async fn sales_get_deliveries_inactive_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, sales_date_end: Option<String>, sales_date_start: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6240        let client = self.client.clone();
6241        let body = body.cloned();
6242        self.rate_limiter.execute(None, true, move || {
6243            let client = client.clone();
6244            let last_modified_end = last_modified_end.clone();
6245            let last_modified_start = last_modified_start.clone();
6246            let license_number = license_number.clone();
6247            let page_number = page_number.clone();
6248            let page_size = page_size.clone();
6249            let sales_date_end = sales_date_end.clone();
6250            let sales_date_start = sales_date_start.clone();
6251            let body = body.clone();
6252            async move { client.sales_get_deliveries_inactive_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, sales_date_end, sales_date_start, body.as_ref()).await }
6253        }).await
6254    }
6255
6256    /// GET GetDeliveriesRetailerActive V1
6257    /// Permissions Required:
6258    ///   - Retailer Delivery
6259    ///
6260    pub async fn sales_get_deliveries_retailer_active_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6261        let client = self.client.clone();
6262        let body = body.cloned();
6263        self.rate_limiter.execute(None, true, move || {
6264            let client = client.clone();
6265            let last_modified_end = last_modified_end.clone();
6266            let last_modified_start = last_modified_start.clone();
6267            let license_number = license_number.clone();
6268            let body = body.clone();
6269            async move { client.sales_get_deliveries_retailer_active_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
6270        }).await
6271    }
6272
6273    /// GET GetDeliveriesRetailerActive V2
6274    /// Returns a list of active retailer deliveries for a Facility, optionally filtered by last modified date range
6275    /// 
6276    ///   Permissions Required:
6277    ///   - View Retailer Delivery
6278    ///   - Manage Retailer Delivery
6279    ///
6280    pub async fn sales_get_deliveries_retailer_active_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6281        let client = self.client.clone();
6282        let body = body.cloned();
6283        self.rate_limiter.execute(None, true, move || {
6284            let client = client.clone();
6285            let last_modified_end = last_modified_end.clone();
6286            let last_modified_start = last_modified_start.clone();
6287            let license_number = license_number.clone();
6288            let page_number = page_number.clone();
6289            let page_size = page_size.clone();
6290            let body = body.clone();
6291            async move { client.sales_get_deliveries_retailer_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
6292        }).await
6293    }
6294
6295    /// GET GetDeliveriesRetailerInactive V1
6296    /// Permissions Required:
6297    ///   - Retailer Delivery
6298    ///
6299    pub async fn sales_get_deliveries_retailer_inactive_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6300        let client = self.client.clone();
6301        let body = body.cloned();
6302        self.rate_limiter.execute(None, true, move || {
6303            let client = client.clone();
6304            let last_modified_end = last_modified_end.clone();
6305            let last_modified_start = last_modified_start.clone();
6306            let license_number = license_number.clone();
6307            let body = body.clone();
6308            async move { client.sales_get_deliveries_retailer_inactive_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
6309        }).await
6310    }
6311
6312    /// GET GetDeliveriesRetailerInactive V2
6313    /// Returns a list of inactive retailer deliveries for a Facility, optionally filtered by last modified date range
6314    /// 
6315    ///   Permissions Required:
6316    ///   - View Retailer Delivery
6317    ///   - Manage Retailer Delivery
6318    ///
6319    pub async fn sales_get_deliveries_retailer_inactive_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6320        let client = self.client.clone();
6321        let body = body.cloned();
6322        self.rate_limiter.execute(None, true, move || {
6323            let client = client.clone();
6324            let last_modified_end = last_modified_end.clone();
6325            let last_modified_start = last_modified_start.clone();
6326            let license_number = license_number.clone();
6327            let page_number = page_number.clone();
6328            let page_size = page_size.clone();
6329            let body = body.clone();
6330            async move { client.sales_get_deliveries_retailer_inactive_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
6331        }).await
6332    }
6333
6334    /// GET GetDeliveriesReturnreasons V1
6335    /// Permissions Required:
6336    ///   -
6337    ///
6338    pub async fn sales_get_deliveries_returnreasons_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6339        let client = self.client.clone();
6340        let body = body.cloned();
6341        self.rate_limiter.execute(None, true, move || {
6342            let client = client.clone();
6343            let license_number = license_number.clone();
6344            let body = body.clone();
6345            async move { client.sales_get_deliveries_returnreasons_v1(license_number, body.as_ref()).await }
6346        }).await
6347    }
6348
6349    /// GET GetDeliveriesReturnreasons V2
6350    /// Returns a list of return reasons for sales deliveries based on the provided License Number.
6351    /// 
6352    ///   Permissions Required:
6353    ///   - Sales Delivery
6354    ///
6355    pub async fn sales_get_deliveries_returnreasons_v2(&self, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6356        let client = self.client.clone();
6357        let body = body.cloned();
6358        self.rate_limiter.execute(None, true, move || {
6359            let client = client.clone();
6360            let license_number = license_number.clone();
6361            let page_number = page_number.clone();
6362            let page_size = page_size.clone();
6363            let body = body.clone();
6364            async move { client.sales_get_deliveries_returnreasons_v2(license_number, page_number, page_size, body.as_ref()).await }
6365        }).await
6366    }
6367
6368    /// GET GetDelivery V1
6369    /// Permissions Required:
6370    ///   - Sales Delivery
6371    ///
6372    pub async fn sales_get_delivery_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6373        let id = id.to_string();
6374        let client = self.client.clone();
6375        let body = body.cloned();
6376        self.rate_limiter.execute(None, true, move || {
6377            let client = client.clone();
6378            let id = id.clone();
6379            let license_number = license_number.clone();
6380            let body = body.clone();
6381            async move { client.sales_get_delivery_v1(&id, license_number, body.as_ref()).await }
6382        }).await
6383    }
6384
6385    /// GET GetDelivery V2
6386    /// Retrieves a sales delivery record by its Id, with an optional License Number.
6387    /// 
6388    ///   Permissions Required:
6389    ///   - View Sales Delivery
6390    ///   - Manage Sales Delivery
6391    ///
6392    pub async fn sales_get_delivery_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6393        let id = id.to_string();
6394        let client = self.client.clone();
6395        let body = body.cloned();
6396        self.rate_limiter.execute(None, true, move || {
6397            let client = client.clone();
6398            let id = id.clone();
6399            let license_number = license_number.clone();
6400            let body = body.clone();
6401            async move { client.sales_get_delivery_v2(&id, license_number, body.as_ref()).await }
6402        }).await
6403    }
6404
6405    /// GET GetDeliveryRetailer V1
6406    /// Permissions Required:
6407    ///   - Retailer Delivery
6408    ///
6409    pub async fn sales_get_delivery_retailer_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6410        let id = id.to_string();
6411        let client = self.client.clone();
6412        let body = body.cloned();
6413        self.rate_limiter.execute(None, true, move || {
6414            let client = client.clone();
6415            let id = id.clone();
6416            let license_number = license_number.clone();
6417            let body = body.clone();
6418            async move { client.sales_get_delivery_retailer_v1(&id, license_number, body.as_ref()).await }
6419        }).await
6420    }
6421
6422    /// GET GetDeliveryRetailer V2
6423    /// Retrieves a retailer delivery record by its ID, with an optional License Number.
6424    /// 
6425    ///   Permissions Required:
6426    ///   - View Retailer Delivery
6427    ///   - Manage Retailer Delivery
6428    ///
6429    pub async fn sales_get_delivery_retailer_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6430        let id = id.to_string();
6431        let client = self.client.clone();
6432        let body = body.cloned();
6433        self.rate_limiter.execute(None, true, move || {
6434            let client = client.clone();
6435            let id = id.clone();
6436            let license_number = license_number.clone();
6437            let body = body.clone();
6438            async move { client.sales_get_delivery_retailer_v2(&id, license_number, body.as_ref()).await }
6439        }).await
6440    }
6441
6442    /// GET GetPatientRegistrationsLocations V1
6443    /// Permissions Required:
6444    ///   -
6445    ///
6446    pub async fn sales_get_patient_registrations_locations_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6447        let client = self.client.clone();
6448        let body = body.cloned();
6449        self.rate_limiter.execute(None, true, move || {
6450            let client = client.clone();
6451            let no = no.clone();
6452            let body = body.clone();
6453            async move { client.sales_get_patient_registrations_locations_v1(no, body.as_ref()).await }
6454        }).await
6455    }
6456
6457    /// GET GetPatientRegistrationsLocations V2
6458    /// Returns a list of valid Patient registration locations for sales.
6459    /// 
6460    ///   Permissions Required:
6461    ///   -
6462    ///
6463    pub async fn sales_get_patient_registrations_locations_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6464        let client = self.client.clone();
6465        let body = body.cloned();
6466        self.rate_limiter.execute(None, true, move || {
6467            let client = client.clone();
6468            let no = no.clone();
6469            let body = body.clone();
6470            async move { client.sales_get_patient_registrations_locations_v2(no, body.as_ref()).await }
6471        }).await
6472    }
6473
6474    /// GET GetPaymenttypes V1
6475    /// Permissions Required:
6476    ///   - Sales Delivery
6477    ///
6478    pub async fn sales_get_paymenttypes_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6479        let client = self.client.clone();
6480        let body = body.cloned();
6481        self.rate_limiter.execute(None, true, move || {
6482            let client = client.clone();
6483            let license_number = license_number.clone();
6484            let body = body.clone();
6485            async move { client.sales_get_paymenttypes_v1(license_number, body.as_ref()).await }
6486        }).await
6487    }
6488
6489    /// GET GetPaymenttypes V2
6490    /// Returns a list of available payment types for the specified License Number.
6491    /// 
6492    ///   Permissions Required:
6493    ///   - View Sales Delivery
6494    ///   - Manage Sales Delivery
6495    ///
6496    pub async fn sales_get_paymenttypes_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6497        let client = self.client.clone();
6498        let body = body.cloned();
6499        self.rate_limiter.execute(None, true, move || {
6500            let client = client.clone();
6501            let license_number = license_number.clone();
6502            let body = body.clone();
6503            async move { client.sales_get_paymenttypes_v2(license_number, body.as_ref()).await }
6504        }).await
6505    }
6506
6507    /// GET GetReceipt V1
6508    /// Permissions Required:
6509    ///   - Sales
6510    ///
6511    pub async fn sales_get_receipt_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6512        let id = id.to_string();
6513        let client = self.client.clone();
6514        let body = body.cloned();
6515        self.rate_limiter.execute(None, true, move || {
6516            let client = client.clone();
6517            let id = id.clone();
6518            let license_number = license_number.clone();
6519            let body = body.clone();
6520            async move { client.sales_get_receipt_v1(&id, license_number, body.as_ref()).await }
6521        }).await
6522    }
6523
6524    /// GET GetReceipt V2
6525    /// Retrieves a sales receipt by its Id, with an optional License Number.
6526    /// 
6527    ///   Permissions Required:
6528    ///   - View Sales
6529    ///   - Manage Sales
6530    ///
6531    pub async fn sales_get_receipt_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6532        let id = id.to_string();
6533        let client = self.client.clone();
6534        let body = body.cloned();
6535        self.rate_limiter.execute(None, true, move || {
6536            let client = client.clone();
6537            let id = id.clone();
6538            let license_number = license_number.clone();
6539            let body = body.clone();
6540            async move { client.sales_get_receipt_v2(&id, license_number, body.as_ref()).await }
6541        }).await
6542    }
6543
6544    /// GET GetReceiptsActive V1
6545    /// Permissions Required:
6546    ///   - Sales
6547    ///
6548    pub async fn sales_get_receipts_active_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, sales_date_end: Option<String>, sales_date_start: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6549        let client = self.client.clone();
6550        let body = body.cloned();
6551        self.rate_limiter.execute(None, true, move || {
6552            let client = client.clone();
6553            let last_modified_end = last_modified_end.clone();
6554            let last_modified_start = last_modified_start.clone();
6555            let license_number = license_number.clone();
6556            let sales_date_end = sales_date_end.clone();
6557            let sales_date_start = sales_date_start.clone();
6558            let body = body.clone();
6559            async move { client.sales_get_receipts_active_v1(last_modified_end, last_modified_start, license_number, sales_date_end, sales_date_start, body.as_ref()).await }
6560        }).await
6561    }
6562
6563    /// GET GetReceiptsActive V2
6564    /// Returns a list of active sales receipts for a Facility, filtered by optional sales or last modified date ranges.
6565    /// 
6566    ///   Permissions Required:
6567    ///   - View Sales
6568    ///   - Manage Sales
6569    ///
6570    pub async fn sales_get_receipts_active_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, sales_date_end: Option<String>, sales_date_start: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6571        let client = self.client.clone();
6572        let body = body.cloned();
6573        self.rate_limiter.execute(None, true, move || {
6574            let client = client.clone();
6575            let last_modified_end = last_modified_end.clone();
6576            let last_modified_start = last_modified_start.clone();
6577            let license_number = license_number.clone();
6578            let page_number = page_number.clone();
6579            let page_size = page_size.clone();
6580            let sales_date_end = sales_date_end.clone();
6581            let sales_date_start = sales_date_start.clone();
6582            let body = body.clone();
6583            async move { client.sales_get_receipts_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, sales_date_end, sales_date_start, body.as_ref()).await }
6584        }).await
6585    }
6586
6587    /// GET GetReceiptsExternalByExternalNumber V2
6588    /// Retrieves a Sales Receipt by its external number, with an optional License Number.
6589    /// 
6590    ///   Permissions Required:
6591    ///   - View Sales
6592    ///   - Manage Sales
6593    ///
6594    pub async fn sales_get_receipts_external_by_external_number_v2(&self, external_number: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6595        let external_number = external_number.to_string();
6596        let client = self.client.clone();
6597        let body = body.cloned();
6598        self.rate_limiter.execute(None, true, move || {
6599            let client = client.clone();
6600            let external_number = external_number.clone();
6601            let license_number = license_number.clone();
6602            let body = body.clone();
6603            async move { client.sales_get_receipts_external_by_external_number_v2(&external_number, license_number, body.as_ref()).await }
6604        }).await
6605    }
6606
6607    /// GET GetReceiptsInactive V1
6608    /// Permissions Required:
6609    ///   - Sales
6610    ///
6611    pub async fn sales_get_receipts_inactive_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, sales_date_end: Option<String>, sales_date_start: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6612        let client = self.client.clone();
6613        let body = body.cloned();
6614        self.rate_limiter.execute(None, true, move || {
6615            let client = client.clone();
6616            let last_modified_end = last_modified_end.clone();
6617            let last_modified_start = last_modified_start.clone();
6618            let license_number = license_number.clone();
6619            let sales_date_end = sales_date_end.clone();
6620            let sales_date_start = sales_date_start.clone();
6621            let body = body.clone();
6622            async move { client.sales_get_receipts_inactive_v1(last_modified_end, last_modified_start, license_number, sales_date_end, sales_date_start, body.as_ref()).await }
6623        }).await
6624    }
6625
6626    /// GET GetReceiptsInactive V2
6627    /// Returns a list of inactive sales receipts for a Facility, filtered by optional sales or last modified date ranges.
6628    /// 
6629    ///   Permissions Required:
6630    ///   - View Sales
6631    ///   - Manage Sales
6632    ///
6633    pub async fn sales_get_receipts_inactive_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, sales_date_end: Option<String>, sales_date_start: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6634        let client = self.client.clone();
6635        let body = body.cloned();
6636        self.rate_limiter.execute(None, true, move || {
6637            let client = client.clone();
6638            let last_modified_end = last_modified_end.clone();
6639            let last_modified_start = last_modified_start.clone();
6640            let license_number = license_number.clone();
6641            let page_number = page_number.clone();
6642            let page_size = page_size.clone();
6643            let sales_date_end = sales_date_end.clone();
6644            let sales_date_start = sales_date_start.clone();
6645            let body = body.clone();
6646            async move { client.sales_get_receipts_inactive_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, sales_date_end, sales_date_start, body.as_ref()).await }
6647        }).await
6648    }
6649
6650    /// GET GetTransactions V1
6651    /// Permissions Required:
6652    ///   - Sales
6653    ///
6654    pub async fn sales_get_transactions_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6655        let client = self.client.clone();
6656        let body = body.cloned();
6657        self.rate_limiter.execute(None, true, move || {
6658            let client = client.clone();
6659            let license_number = license_number.clone();
6660            let body = body.clone();
6661            async move { client.sales_get_transactions_v1(license_number, body.as_ref()).await }
6662        }).await
6663    }
6664
6665    /// GET GetTransactionsBySalesDateStartAndSalesDateEnd V1
6666    /// Permissions Required:
6667    ///   - Sales
6668    ///
6669    pub async fn sales_get_transactions_by_sales_date_start_and_sales_date_end_v1(&self, sales_date_start: &str, sales_date_end: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6670        let sales_date_start = sales_date_start.to_string();
6671        let sales_date_end = sales_date_end.to_string();
6672        let client = self.client.clone();
6673        let body = body.cloned();
6674        self.rate_limiter.execute(None, true, move || {
6675            let client = client.clone();
6676            let sales_date_start = sales_date_start.clone();
6677            let sales_date_end = sales_date_end.clone();
6678            let license_number = license_number.clone();
6679            let body = body.clone();
6680            async move { client.sales_get_transactions_by_sales_date_start_and_sales_date_end_v1(&sales_date_start, &sales_date_end, license_number, body.as_ref()).await }
6681        }).await
6682    }
6683
6684    /// PUT UpdateDelivery V1
6685    /// Please note: The SalesDateTime field must be the actual date and time of the transaction without time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be Pacific Standard (or Daylight Savings) Time and not in UTC.
6686    /// 
6687    ///   Permissions Required:
6688    ///   - Sales Delivery
6689    ///
6690    pub async fn sales_update_delivery_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6691        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6692        let client = self.client.clone();
6693        let body_val = body_val.clone();
6694        self.rate_limiter.execute(None, false, move || {
6695            let client = client.clone();
6696            let license_number = license_number.clone();
6697            let body_val = body_val.clone();
6698            async move { client.sales_update_delivery_v1(license_number, body_val.as_ref()).await }
6699        }).await
6700    }
6701
6702    /// PUT UpdateDelivery V2
6703    /// Updates sales delivery records for a given License Number. Please note: The SalesDateTime field must be the actual date and time of the transaction without the time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be in Pacific Standard (or Daylight Savings) Time and not in UTC.
6704    /// 
6705    ///   Permissions Required:
6706    ///   - Manage Sales Delivery
6707    ///
6708    pub async fn sales_update_delivery_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6709        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6710        let client = self.client.clone();
6711        let body_val = body_val.clone();
6712        self.rate_limiter.execute(None, false, move || {
6713            let client = client.clone();
6714            let license_number = license_number.clone();
6715            let body_val = body_val.clone();
6716            async move { client.sales_update_delivery_v2(license_number, body_val.as_ref()).await }
6717        }).await
6718    }
6719
6720    /// PUT UpdateDeliveryComplete V1
6721    /// Permissions Required:
6722    ///   - Sales Delivery
6723    ///
6724    pub async fn sales_update_delivery_complete_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryCompleteV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6725        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6726        let client = self.client.clone();
6727        let body_val = body_val.clone();
6728        self.rate_limiter.execute(None, false, move || {
6729            let client = client.clone();
6730            let license_number = license_number.clone();
6731            let body_val = body_val.clone();
6732            async move { client.sales_update_delivery_complete_v1(license_number, body_val.as_ref()).await }
6733        }).await
6734    }
6735
6736    /// PUT UpdateDeliveryComplete V2
6737    /// Completes a list of sales deliveries for a Facility using the provided License Number and delivery data.
6738    /// 
6739    ///   Permissions Required:
6740    ///   - Manage Sales Delivery
6741    ///
6742    pub async fn sales_update_delivery_complete_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryCompleteV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6743        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6744        let client = self.client.clone();
6745        let body_val = body_val.clone();
6746        self.rate_limiter.execute(None, false, move || {
6747            let client = client.clone();
6748            let license_number = license_number.clone();
6749            let body_val = body_val.clone();
6750            async move { client.sales_update_delivery_complete_v2(license_number, body_val.as_ref()).await }
6751        }).await
6752    }
6753
6754    /// PUT UpdateDeliveryHub V1
6755    /// Please note: The SalesDateTime field must be the actual date and time of the transaction without time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be Pacific Standard (or Daylight Savings) Time and not in UTC.
6756    /// 
6757    ///   Permissions Required:
6758    ///   - Sales Delivery
6759    ///
6760    pub async fn sales_update_delivery_hub_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryHubV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6761        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6762        let client = self.client.clone();
6763        let body_val = body_val.clone();
6764        self.rate_limiter.execute(None, false, move || {
6765            let client = client.clone();
6766            let license_number = license_number.clone();
6767            let body_val = body_val.clone();
6768            async move { client.sales_update_delivery_hub_v1(license_number, body_val.as_ref()).await }
6769        }).await
6770    }
6771
6772    /// PUT UpdateDeliveryHub V2
6773    /// Updates hub transporter details for a given License Number. Please note: The SalesDateTime field must be the actual date and time of the transaction without the time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be in Pacific Standard (or Daylight Savings) Time and not in UTC.
6774    /// 
6775    ///   Permissions Required:
6776    ///   - Manage Sales Delivery, Manage Sales Delivery Hub
6777    ///
6778    pub async fn sales_update_delivery_hub_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryHubV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6779        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6780        let client = self.client.clone();
6781        let body_val = body_val.clone();
6782        self.rate_limiter.execute(None, false, move || {
6783            let client = client.clone();
6784            let license_number = license_number.clone();
6785            let body_val = body_val.clone();
6786            async move { client.sales_update_delivery_hub_v2(license_number, body_val.as_ref()).await }
6787        }).await
6788    }
6789
6790    /// PUT UpdateDeliveryHubAccept V1
6791    /// Permissions Required:
6792    ///   - Sales
6793    ///
6794    pub async fn sales_update_delivery_hub_accept_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryHubAcceptV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6795        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6796        let client = self.client.clone();
6797        let body_val = body_val.clone();
6798        self.rate_limiter.execute(None, false, move || {
6799            let client = client.clone();
6800            let license_number = license_number.clone();
6801            let body_val = body_val.clone();
6802            async move { client.sales_update_delivery_hub_accept_v1(license_number, body_val.as_ref()).await }
6803        }).await
6804    }
6805
6806    /// PUT UpdateDeliveryHubAccept V2
6807    /// Accepts a list of hub sales deliveries for a Facility based on the provided License Number and delivery data.
6808    /// 
6809    ///   Permissions Required:
6810    ///   - Manage Sales Delivery Hub
6811    ///
6812    pub async fn sales_update_delivery_hub_accept_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryHubAcceptV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6813        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6814        let client = self.client.clone();
6815        let body_val = body_val.clone();
6816        self.rate_limiter.execute(None, false, move || {
6817            let client = client.clone();
6818            let license_number = license_number.clone();
6819            let body_val = body_val.clone();
6820            async move { client.sales_update_delivery_hub_accept_v2(license_number, body_val.as_ref()).await }
6821        }).await
6822    }
6823
6824    /// PUT UpdateDeliveryHubDepart V1
6825    /// Permissions Required:
6826    ///   - Sales
6827    ///
6828    pub async fn sales_update_delivery_hub_depart_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryHubDepartV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6829        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6830        let client = self.client.clone();
6831        let body_val = body_val.clone();
6832        self.rate_limiter.execute(None, false, move || {
6833            let client = client.clone();
6834            let license_number = license_number.clone();
6835            let body_val = body_val.clone();
6836            async move { client.sales_update_delivery_hub_depart_v1(license_number, body_val.as_ref()).await }
6837        }).await
6838    }
6839
6840    /// PUT UpdateDeliveryHubDepart V2
6841    /// Processes the departure of hub sales deliveries for a Facility using the provided License Number and delivery data.
6842    /// 
6843    ///   Permissions Required:
6844    ///   - Manage Sales Delivery Hub
6845    ///
6846    pub async fn sales_update_delivery_hub_depart_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryHubDepartV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6847        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6848        let client = self.client.clone();
6849        let body_val = body_val.clone();
6850        self.rate_limiter.execute(None, false, move || {
6851            let client = client.clone();
6852            let license_number = license_number.clone();
6853            let body_val = body_val.clone();
6854            async move { client.sales_update_delivery_hub_depart_v2(license_number, body_val.as_ref()).await }
6855        }).await
6856    }
6857
6858    /// PUT UpdateDeliveryHubVerifyID V1
6859    /// Permissions Required:
6860    ///   - Sales
6861    ///
6862    pub async fn sales_update_delivery_hub_verify_id_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryHubVerifyIdV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6863        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6864        let client = self.client.clone();
6865        let body_val = body_val.clone();
6866        self.rate_limiter.execute(None, false, move || {
6867            let client = client.clone();
6868            let license_number = license_number.clone();
6869            let body_val = body_val.clone();
6870            async move { client.sales_update_delivery_hub_verify_id_v1(license_number, body_val.as_ref()).await }
6871        }).await
6872    }
6873
6874    /// PUT UpdateDeliveryHubVerifyID V2
6875    /// Verifies identification for a list of hub sales deliveries using the provided License Number and delivery data.
6876    /// 
6877    ///   Permissions Required:
6878    ///   - Manage Sales Delivery Hub
6879    ///
6880    pub async fn sales_update_delivery_hub_verify_id_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryHubVerifyIdV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6881        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6882        let client = self.client.clone();
6883        let body_val = body_val.clone();
6884        self.rate_limiter.execute(None, false, move || {
6885            let client = client.clone();
6886            let license_number = license_number.clone();
6887            let body_val = body_val.clone();
6888            async move { client.sales_update_delivery_hub_verify_id_v2(license_number, body_val.as_ref()).await }
6889        }).await
6890    }
6891
6892    /// PUT UpdateDeliveryRetailer V1
6893    /// Please note: The DateTime field must be the actual date and time of the transaction without time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be Pacific Standard (or Daylight Savings) Time and not in UTC.
6894    /// 
6895    ///   Permissions Required:
6896    ///   - Retailer Delivery
6897    ///
6898    pub async fn sales_update_delivery_retailer_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryRetailerV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6899        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6900        let client = self.client.clone();
6901        let body_val = body_val.clone();
6902        self.rate_limiter.execute(None, false, move || {
6903            let client = client.clone();
6904            let license_number = license_number.clone();
6905            let body_val = body_val.clone();
6906            async move { client.sales_update_delivery_retailer_v1(license_number, body_val.as_ref()).await }
6907        }).await
6908    }
6909
6910    /// PUT UpdateDeliveryRetailer V2
6911    /// Updates retailer delivery records for a given License Number. Please note: The DateTime field must be the actual date and time of the transaction without the time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be in Pacific Standard (or Daylight Savings) Time and not in UTC.
6912    /// 
6913    ///   Permissions Required:
6914    ///   - External Sources(ThirdPartyVendorV2)/Sales Deliveries(Write)
6915    ///   - Industry/Facility Type/Retailer Delivery
6916    ///   - Industry/Facility Type/Consumer Sales Delivery or Industry/Facility Type/Patient Sales Delivery
6917    ///   - WebApi Sales Deliveries Read Write State (All or WriteOnly)
6918    ///   - WebApi Retail ID Read Write State (All or WriteOnly) - Required for RID only.
6919    ///   - External Sources(ThirdPartyVendorV2)/Retail ID(Write) - Required for RID only.
6920    ///   - Manage Retailer Delivery
6921    ///
6922    pub async fn sales_update_delivery_retailer_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryRetailerV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6923        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6924        let client = self.client.clone();
6925        let body_val = body_val.clone();
6926        self.rate_limiter.execute(None, false, move || {
6927            let client = client.clone();
6928            let license_number = license_number.clone();
6929            let body_val = body_val.clone();
6930            async move { client.sales_update_delivery_retailer_v2(license_number, body_val.as_ref()).await }
6931        }).await
6932    }
6933
6934    /// PUT UpdateReceipt V1
6935    /// Please note: The SalesDateTime field must be the actual date and time of the transaction without time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be Pacific Standard (or Daylight Savings) Time and not in UTC.
6936    /// 
6937    ///   Permissions Required:
6938    ///   - Sales
6939    ///
6940    pub async fn sales_update_receipt_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateReceiptV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6941        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6942        let client = self.client.clone();
6943        let body_val = body_val.clone();
6944        self.rate_limiter.execute(None, false, move || {
6945            let client = client.clone();
6946            let license_number = license_number.clone();
6947            let body_val = body_val.clone();
6948            async move { client.sales_update_receipt_v1(license_number, body_val.as_ref()).await }
6949        }).await
6950    }
6951
6952    /// PUT UpdateReceipt V2
6953    /// Updates sales receipt records for a given License Number. Please note: The SalesDateTime field must be the actual date and time of the transaction without the time zone. This date/time must already be in the same time zone as the Facility recording the sales. For example, if the Facility is in Pacific Time, then this time must be in Pacific Standard (or Daylight Savings) Time and not in UTC.
6954    /// 
6955    ///   Permissions Required:
6956    ///   - Manage Sales
6957    ///
6958    pub async fn sales_update_receipt_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateReceiptV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6959        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6960        let client = self.client.clone();
6961        let body_val = body_val.clone();
6962        self.rate_limiter.execute(None, false, move || {
6963            let client = client.clone();
6964            let license_number = license_number.clone();
6965            let body_val = body_val.clone();
6966            async move { client.sales_update_receipt_v2(license_number, body_val.as_ref()).await }
6967        }).await
6968    }
6969
6970    /// PUT UpdateReceiptFinalize V2
6971    /// Finalizes a list of sales receipts for a Facility using the provided License Number and receipt data.
6972    /// 
6973    ///   Permissions Required:
6974    ///   - Manage Sales
6975    ///
6976    pub async fn sales_update_receipt_finalize_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateReceiptFinalizeV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6977        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6978        let client = self.client.clone();
6979        let body_val = body_val.clone();
6980        self.rate_limiter.execute(None, false, move || {
6981            let client = client.clone();
6982            let license_number = license_number.clone();
6983            let body_val = body_val.clone();
6984            async move { client.sales_update_receipt_finalize_v2(license_number, body_val.as_ref()).await }
6985        }).await
6986    }
6987
6988    /// PUT UpdateReceiptUnfinalize V2
6989    /// Unfinalizes a list of sales receipts for a Facility using the provided License Number and receipt data.
6990    /// 
6991    ///   Permissions Required:
6992    ///   - Manage Sales
6993    ///
6994    pub async fn sales_update_receipt_unfinalize_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateReceiptUnfinalizeV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6995        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6996        let client = self.client.clone();
6997        let body_val = body_val.clone();
6998        self.rate_limiter.execute(None, false, move || {
6999            let client = client.clone();
7000            let license_number = license_number.clone();
7001            let body_val = body_val.clone();
7002            async move { client.sales_update_receipt_unfinalize_v2(license_number, body_val.as_ref()).await }
7003        }).await
7004    }
7005
7006    /// PUT UpdateTransactionByDate V1
7007    /// Permissions Required:
7008    ///   - Sales
7009    ///
7010    pub async fn sales_update_transaction_by_date_v1(&self, date: &str, license_number: Option<String>, body: Option<&Vec<SalesUpdateTransactionByDateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7011        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7012        let date = date.to_string();
7013        let client = self.client.clone();
7014        let body_val = body_val.clone();
7015        self.rate_limiter.execute(None, false, move || {
7016            let client = client.clone();
7017            let date = date.clone();
7018            let license_number = license_number.clone();
7019            let body_val = body_val.clone();
7020            async move { client.sales_update_transaction_by_date_v1(&date, license_number, body_val.as_ref()).await }
7021        }).await
7022    }
7023
7024    /// POST Create V1
7025    /// Permissions Required:
7026    ///   - Manage Strains
7027    ///
7028    pub async fn strains_create_v1(&self, license_number: Option<String>, body: Option<&Vec<StrainsCreateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7029        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7030        let client = self.client.clone();
7031        let body_val = body_val.clone();
7032        self.rate_limiter.execute(None, false, move || {
7033            let client = client.clone();
7034            let license_number = license_number.clone();
7035            let body_val = body_val.clone();
7036            async move { client.strains_create_v1(license_number, body_val.as_ref()).await }
7037        }).await
7038    }
7039
7040    /// POST Create V2
7041    /// Creates new strain records for a specified Facility.
7042    /// 
7043    ///   Permissions Required:
7044    ///   - Manage Strains
7045    ///
7046    pub async fn strains_create_v2(&self, license_number: Option<String>, body: Option<&Vec<StrainsCreateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7047        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7048        let client = self.client.clone();
7049        let body_val = body_val.clone();
7050        self.rate_limiter.execute(None, false, move || {
7051            let client = client.clone();
7052            let license_number = license_number.clone();
7053            let body_val = body_val.clone();
7054            async move { client.strains_create_v2(license_number, body_val.as_ref()).await }
7055        }).await
7056    }
7057
7058    /// POST CreateUpdate V1
7059    /// Permissions Required:
7060    ///   - Manage Strains
7061    ///
7062    pub async fn strains_create_update_v1(&self, license_number: Option<String>, body: Option<&Vec<StrainsCreateUpdateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7063        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7064        let client = self.client.clone();
7065        let body_val = body_val.clone();
7066        self.rate_limiter.execute(None, false, move || {
7067            let client = client.clone();
7068            let license_number = license_number.clone();
7069            let body_val = body_val.clone();
7070            async move { client.strains_create_update_v1(license_number, body_val.as_ref()).await }
7071        }).await
7072    }
7073
7074    /// DELETE Delete V1
7075    /// Permissions Required:
7076    ///   - Manage Strains
7077    ///
7078    pub async fn strains_delete_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7079        let id = id.to_string();
7080        let client = self.client.clone();
7081        let body = body.cloned();
7082        self.rate_limiter.execute(None, false, move || {
7083            let client = client.clone();
7084            let id = id.clone();
7085            let license_number = license_number.clone();
7086            let body = body.clone();
7087            async move { client.strains_delete_v1(&id, license_number, body.as_ref()).await }
7088        }).await
7089    }
7090
7091    /// DELETE Delete V2
7092    /// Archives an existing strain record for a Facility
7093    /// 
7094    ///   Permissions Required:
7095    ///   - Manage Strains
7096    ///
7097    pub async fn strains_delete_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7098        let id = id.to_string();
7099        let client = self.client.clone();
7100        let body = body.cloned();
7101        self.rate_limiter.execute(None, false, move || {
7102            let client = client.clone();
7103            let id = id.clone();
7104            let license_number = license_number.clone();
7105            let body = body.clone();
7106            async move { client.strains_delete_v2(&id, license_number, body.as_ref()).await }
7107        }).await
7108    }
7109
7110    /// GET Get V1
7111    /// Permissions Required:
7112    ///   - Manage Strains
7113    ///
7114    pub async fn strains_get_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7115        let id = id.to_string();
7116        let client = self.client.clone();
7117        let body = body.cloned();
7118        self.rate_limiter.execute(None, true, move || {
7119            let client = client.clone();
7120            let id = id.clone();
7121            let license_number = license_number.clone();
7122            let body = body.clone();
7123            async move { client.strains_get_v1(&id, license_number, body.as_ref()).await }
7124        }).await
7125    }
7126
7127    /// GET Get V2
7128    /// Retrieves a Strain record by its Id, with an optional license number.
7129    /// 
7130    ///   Permissions Required:
7131    ///   - Manage Strains
7132    ///
7133    pub async fn strains_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7134        let id = id.to_string();
7135        let client = self.client.clone();
7136        let body = body.cloned();
7137        self.rate_limiter.execute(None, true, move || {
7138            let client = client.clone();
7139            let id = id.clone();
7140            let license_number = license_number.clone();
7141            let body = body.clone();
7142            async move { client.strains_get_v2(&id, license_number, body.as_ref()).await }
7143        }).await
7144    }
7145
7146    /// GET GetActive V1
7147    /// Permissions Required:
7148    ///   - Manage Strains
7149    ///
7150    pub async fn strains_get_active_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7151        let client = self.client.clone();
7152        let body = body.cloned();
7153        self.rate_limiter.execute(None, true, move || {
7154            let client = client.clone();
7155            let license_number = license_number.clone();
7156            let body = body.clone();
7157            async move { client.strains_get_active_v1(license_number, body.as_ref()).await }
7158        }).await
7159    }
7160
7161    /// GET GetActive V2
7162    /// Retrieves a list of active strains for the current Facility, optionally filtered by last modified date range.
7163    /// 
7164    ///   Permissions Required:
7165    ///   - Manage Strains
7166    ///
7167    pub async fn strains_get_active_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7168        let client = self.client.clone();
7169        let body = body.cloned();
7170        self.rate_limiter.execute(None, true, move || {
7171            let client = client.clone();
7172            let last_modified_end = last_modified_end.clone();
7173            let last_modified_start = last_modified_start.clone();
7174            let license_number = license_number.clone();
7175            let page_number = page_number.clone();
7176            let page_size = page_size.clone();
7177            let body = body.clone();
7178            async move { client.strains_get_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
7179        }).await
7180    }
7181
7182    /// GET GetInactive V2
7183    /// Retrieves a list of inactive strains for the current Facility, optionally filtered by last modified date range.
7184    /// 
7185    ///   Permissions Required:
7186    ///   - Manage Strains
7187    ///
7188    pub async fn strains_get_inactive_v2(&self, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7189        let client = self.client.clone();
7190        let body = body.cloned();
7191        self.rate_limiter.execute(None, true, move || {
7192            let client = client.clone();
7193            let license_number = license_number.clone();
7194            let page_number = page_number.clone();
7195            let page_size = page_size.clone();
7196            let body = body.clone();
7197            async move { client.strains_get_inactive_v2(license_number, page_number, page_size, body.as_ref()).await }
7198        }).await
7199    }
7200
7201    /// PUT Update V2
7202    /// Updates existing strain records for a specified Facility.
7203    /// 
7204    ///   Permissions Required:
7205    ///   - Manage Strains
7206    ///
7207    pub async fn strains_update_v2(&self, license_number: Option<String>, body: Option<&Vec<StrainsUpdateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7208        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7209        let client = self.client.clone();
7210        let body_val = body_val.clone();
7211        self.rate_limiter.execute(None, false, move || {
7212            let client = client.clone();
7213            let license_number = license_number.clone();
7214            let body_val = body_val.clone();
7215            async move { client.strains_update_v2(license_number, body_val.as_ref()).await }
7216        }).await
7217    }
7218
7219    /// GET GetPackageAvailable V2
7220    /// Returns a list of available package tags. NOTE: This is a premium endpoint.
7221    /// 
7222    ///   Permissions Required:
7223    ///   - Manage Tags
7224    ///
7225    pub async fn tags_get_package_available_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7226        let client = self.client.clone();
7227        let body = body.cloned();
7228        self.rate_limiter.execute(None, true, move || {
7229            let client = client.clone();
7230            let license_number = license_number.clone();
7231            let body = body.clone();
7232            async move { client.tags_get_package_available_v2(license_number, body.as_ref()).await }
7233        }).await
7234    }
7235
7236    /// GET GetPlantAvailable V2
7237    /// Returns a list of available plant tags. NOTE: This is a premium endpoint.
7238    /// 
7239    ///   Permissions Required:
7240    ///   - Manage Tags
7241    ///
7242    pub async fn tags_get_plant_available_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7243        let client = self.client.clone();
7244        let body = body.cloned();
7245        self.rate_limiter.execute(None, true, move || {
7246            let client = client.clone();
7247            let license_number = license_number.clone();
7248            let body = body.clone();
7249            async move { client.tags_get_plant_available_v2(license_number, body.as_ref()).await }
7250        }).await
7251    }
7252
7253    /// GET GetStaged V2
7254    /// Returns a list of staged tags. NOTE: This is a premium endpoint.
7255    /// 
7256    ///   Permissions Required:
7257    ///   - Manage Tags
7258    ///   - RetailId.AllowPackageStaging Key Value enabled
7259    ///
7260    pub async fn tags_get_staged_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7261        let client = self.client.clone();
7262        let body = body.cloned();
7263        self.rate_limiter.execute(None, true, move || {
7264            let client = client.clone();
7265            let license_number = license_number.clone();
7266            let body = body.clone();
7267            async move { client.tags_get_staged_v2(license_number, body.as_ref()).await }
7268        }).await
7269    }
7270
7271    /// POST CreateExternalIncoming V1
7272    /// Permissions Required:
7273    ///   - Transfers
7274    ///
7275    pub async fn transfers_create_external_incoming_v1(&self, license_number: Option<String>, body: Option<&Vec<TransfersCreateExternalIncomingV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7276        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7277        let client = self.client.clone();
7278        let body_val = body_val.clone();
7279        self.rate_limiter.execute(None, false, move || {
7280            let client = client.clone();
7281            let license_number = license_number.clone();
7282            let body_val = body_val.clone();
7283            async move { client.transfers_create_external_incoming_v1(license_number, body_val.as_ref()).await }
7284        }).await
7285    }
7286
7287    /// POST CreateExternalIncoming V2
7288    /// Creates external incoming shipment plans for a Facility.
7289    /// 
7290    ///   Permissions Required:
7291    ///   - Manage Transfers
7292    ///
7293    pub async fn transfers_create_external_incoming_v2(&self, license_number: Option<String>, body: Option<&Vec<TransfersCreateExternalIncomingV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7294        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7295        let client = self.client.clone();
7296        let body_val = body_val.clone();
7297        self.rate_limiter.execute(None, false, move || {
7298            let client = client.clone();
7299            let license_number = license_number.clone();
7300            let body_val = body_val.clone();
7301            async move { client.transfers_create_external_incoming_v2(license_number, body_val.as_ref()).await }
7302        }).await
7303    }
7304
7305    /// POST CreateTemplates V1
7306    /// Permissions Required:
7307    ///   - Transfer Templates
7308    ///
7309    pub async fn transfers_create_templates_v1(&self, license_number: Option<String>, body: Option<&Vec<TransfersCreateTemplatesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7310        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7311        let client = self.client.clone();
7312        let body_val = body_val.clone();
7313        self.rate_limiter.execute(None, false, move || {
7314            let client = client.clone();
7315            let license_number = license_number.clone();
7316            let body_val = body_val.clone();
7317            async move { client.transfers_create_templates_v1(license_number, body_val.as_ref()).await }
7318        }).await
7319    }
7320
7321    /// POST CreateTemplatesOutgoing V2
7322    /// Creates new transfer templates for a Facility.
7323    /// 
7324    ///   Permissions Required:
7325    ///   - Manage Transfer Templates
7326    ///
7327    pub async fn transfers_create_templates_outgoing_v2(&self, license_number: Option<String>, body: Option<&Vec<TransfersCreateTemplatesOutgoingV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7328        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7329        let client = self.client.clone();
7330        let body_val = body_val.clone();
7331        self.rate_limiter.execute(None, false, move || {
7332            let client = client.clone();
7333            let license_number = license_number.clone();
7334            let body_val = body_val.clone();
7335            async move { client.transfers_create_templates_outgoing_v2(license_number, body_val.as_ref()).await }
7336        }).await
7337    }
7338
7339    /// DELETE DeleteExternalIncoming V1
7340    /// Permissions Required:
7341    ///   - Transfers
7342    ///
7343    pub async fn transfers_delete_external_incoming_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7344        let id = id.to_string();
7345        let client = self.client.clone();
7346        let body = body.cloned();
7347        self.rate_limiter.execute(None, false, move || {
7348            let client = client.clone();
7349            let id = id.clone();
7350            let license_number = license_number.clone();
7351            let body = body.clone();
7352            async move { client.transfers_delete_external_incoming_v1(&id, license_number, body.as_ref()).await }
7353        }).await
7354    }
7355
7356    /// DELETE DeleteExternalIncoming V2
7357    /// Voids an external incoming shipment plan for a Facility.
7358    /// 
7359    ///   Permissions Required:
7360    ///   - Manage Transfers
7361    ///
7362    pub async fn transfers_delete_external_incoming_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7363        let id = id.to_string();
7364        let client = self.client.clone();
7365        let body = body.cloned();
7366        self.rate_limiter.execute(None, false, move || {
7367            let client = client.clone();
7368            let id = id.clone();
7369            let license_number = license_number.clone();
7370            let body = body.clone();
7371            async move { client.transfers_delete_external_incoming_v2(&id, license_number, body.as_ref()).await }
7372        }).await
7373    }
7374
7375    /// DELETE DeleteTemplates V1
7376    /// Permissions Required:
7377    ///   - Transfer Templates
7378    ///
7379    pub async fn transfers_delete_templates_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7380        let id = id.to_string();
7381        let client = self.client.clone();
7382        let body = body.cloned();
7383        self.rate_limiter.execute(None, false, move || {
7384            let client = client.clone();
7385            let id = id.clone();
7386            let license_number = license_number.clone();
7387            let body = body.clone();
7388            async move { client.transfers_delete_templates_v1(&id, license_number, body.as_ref()).await }
7389        }).await
7390    }
7391
7392    /// DELETE DeleteTemplatesOutgoing V2
7393    /// Archives a transfer template for a Facility.
7394    /// 
7395    ///   Permissions Required:
7396    ///   - Manage Transfer Templates
7397    ///
7398    pub async fn transfers_delete_templates_outgoing_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7399        let id = id.to_string();
7400        let client = self.client.clone();
7401        let body = body.cloned();
7402        self.rate_limiter.execute(None, false, move || {
7403            let client = client.clone();
7404            let id = id.clone();
7405            let license_number = license_number.clone();
7406            let body = body.clone();
7407            async move { client.transfers_delete_templates_outgoing_v2(&id, license_number, body.as_ref()).await }
7408        }).await
7409    }
7410
7411    /// GET GetDeliveriesPackagesStates V1
7412    /// Permissions Required:
7413    ///   - None
7414    ///
7415    pub async fn transfers_get_deliveries_packages_states_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7416        let client = self.client.clone();
7417        let body = body.cloned();
7418        self.rate_limiter.execute(None, true, move || {
7419            let client = client.clone();
7420            let no = no.clone();
7421            let body = body.clone();
7422            async move { client.transfers_get_deliveries_packages_states_v1(no, body.as_ref()).await }
7423        }).await
7424    }
7425
7426    /// GET GetDeliveriesPackagesStates V2
7427    /// Returns a list of available shipment Package states.
7428    /// 
7429    ///   Permissions Required:
7430    ///   - None
7431    ///
7432    pub async fn transfers_get_deliveries_packages_states_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7433        let client = self.client.clone();
7434        let body = body.cloned();
7435        self.rate_limiter.execute(None, true, move || {
7436            let client = client.clone();
7437            let no = no.clone();
7438            let body = body.clone();
7439            async move { client.transfers_get_deliveries_packages_states_v2(no, body.as_ref()).await }
7440        }).await
7441    }
7442
7443    /// GET GetDelivery V1
7444    /// Please note: that the {id} parameter above represents a Shipment Plan ID.
7445    /// 
7446    ///   Permissions Required:
7447    ///   - Transfers
7448    ///
7449    pub async fn transfers_get_delivery_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7450        let id = id.to_string();
7451        let client = self.client.clone();
7452        let body = body.cloned();
7453        self.rate_limiter.execute(None, true, move || {
7454            let client = client.clone();
7455            let id = id.clone();
7456            let no = no.clone();
7457            let body = body.clone();
7458            async move { client.transfers_get_delivery_v1(&id, no, body.as_ref()).await }
7459        }).await
7460    }
7461
7462    /// GET GetDelivery V2
7463    /// Retrieves a list of shipment deliveries for a given Transfer Id. Please note: The {id} parameter above represents a Transfer Id.
7464    /// 
7465    ///   Permissions Required:
7466    ///   - Manage Transfers
7467    ///   - View Transfers
7468    ///
7469    pub async fn transfers_get_delivery_v2(&self, id: &str, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7470        let id = id.to_string();
7471        let client = self.client.clone();
7472        let body = body.cloned();
7473        self.rate_limiter.execute(None, true, move || {
7474            let client = client.clone();
7475            let id = id.clone();
7476            let page_number = page_number.clone();
7477            let page_size = page_size.clone();
7478            let body = body.clone();
7479            async move { client.transfers_get_delivery_v2(&id, page_number, page_size, body.as_ref()).await }
7480        }).await
7481    }
7482
7483    /// GET GetDeliveryPackage V1
7484    /// Please note: The {id} parameter above represents a Transfer Delivery ID, not a Manifest Number.
7485    /// 
7486    ///   Permissions Required:
7487    ///   - Transfers
7488    ///
7489    pub async fn transfers_get_delivery_package_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7490        let id = id.to_string();
7491        let client = self.client.clone();
7492        let body = body.cloned();
7493        self.rate_limiter.execute(None, true, move || {
7494            let client = client.clone();
7495            let id = id.clone();
7496            let no = no.clone();
7497            let body = body.clone();
7498            async move { client.transfers_get_delivery_package_v1(&id, no, body.as_ref()).await }
7499        }).await
7500    }
7501
7502    /// GET GetDeliveryPackage V2
7503    /// Retrieves a list of packages associated with a given Transfer Delivery Id. Please note: The {id} parameter above represents a Transfer Delivery Id, not a Manifest Number.
7504    /// 
7505    ///   Permissions Required:
7506    ///   - Manage Transfers
7507    ///   - View Transfers
7508    ///
7509    pub async fn transfers_get_delivery_package_v2(&self, id: &str, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7510        let id = id.to_string();
7511        let client = self.client.clone();
7512        let body = body.cloned();
7513        self.rate_limiter.execute(None, true, move || {
7514            let client = client.clone();
7515            let id = id.clone();
7516            let page_number = page_number.clone();
7517            let page_size = page_size.clone();
7518            let body = body.clone();
7519            async move { client.transfers_get_delivery_package_v2(&id, page_number, page_size, body.as_ref()).await }
7520        }).await
7521    }
7522
7523    /// GET GetDeliveryPackageRequiredlabtestbatches V1
7524    /// Please note: The {id} parameter above represents a Transfer Delivery Package ID, not a Manifest Number.
7525    /// 
7526    ///   Permissions Required:
7527    ///   - Transfers
7528    ///
7529    pub async fn transfers_get_delivery_package_requiredlabtestbatches_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7530        let id = id.to_string();
7531        let client = self.client.clone();
7532        let body = body.cloned();
7533        self.rate_limiter.execute(None, true, move || {
7534            let client = client.clone();
7535            let id = id.clone();
7536            let no = no.clone();
7537            let body = body.clone();
7538            async move { client.transfers_get_delivery_package_requiredlabtestbatches_v1(&id, no, body.as_ref()).await }
7539        }).await
7540    }
7541
7542    /// GET GetDeliveryPackageRequiredlabtestbatches V2
7543    /// Retrieves a list of required lab test batches for a given Transfer Delivery Package Id. Please note: The {id} parameter above represents a Transfer Delivery Package Id, not a Manifest Number.
7544    /// 
7545    ///   Permissions Required:
7546    ///   - Manage Transfers
7547    ///   - View Transfers
7548    ///
7549    pub async fn transfers_get_delivery_package_requiredlabtestbatches_v2(&self, id: &str, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7550        let id = id.to_string();
7551        let client = self.client.clone();
7552        let body = body.cloned();
7553        self.rate_limiter.execute(None, true, move || {
7554            let client = client.clone();
7555            let id = id.clone();
7556            let page_number = page_number.clone();
7557            let page_size = page_size.clone();
7558            let body = body.clone();
7559            async move { client.transfers_get_delivery_package_requiredlabtestbatches_v2(&id, page_number, page_size, body.as_ref()).await }
7560        }).await
7561    }
7562
7563    /// GET GetDeliveryPackageWholesale V1
7564    /// Please note: The {id} parameter above represents a Transfer Delivery ID, not a Manifest Number.
7565    /// 
7566    ///   Permissions Required:
7567    ///   - Transfers
7568    ///
7569    pub async fn transfers_get_delivery_package_wholesale_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7570        let id = id.to_string();
7571        let client = self.client.clone();
7572        let body = body.cloned();
7573        self.rate_limiter.execute(None, true, move || {
7574            let client = client.clone();
7575            let id = id.clone();
7576            let no = no.clone();
7577            let body = body.clone();
7578            async move { client.transfers_get_delivery_package_wholesale_v1(&id, no, body.as_ref()).await }
7579        }).await
7580    }
7581
7582    /// GET GetDeliveryPackageWholesale V2
7583    /// Retrieves a list of wholesale shipment packages for a given Transfer Delivery Id. Please note: The {id} parameter above represents a Transfer Delivery Id, not a Manifest Number.
7584    /// 
7585    ///   Permissions Required:
7586    ///   - Manage Transfers
7587    ///   - View Transfers
7588    ///
7589    pub async fn transfers_get_delivery_package_wholesale_v2(&self, id: &str, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7590        let id = id.to_string();
7591        let client = self.client.clone();
7592        let body = body.cloned();
7593        self.rate_limiter.execute(None, true, move || {
7594            let client = client.clone();
7595            let id = id.clone();
7596            let page_number = page_number.clone();
7597            let page_size = page_size.clone();
7598            let body = body.clone();
7599            async move { client.transfers_get_delivery_package_wholesale_v2(&id, page_number, page_size, body.as_ref()).await }
7600        }).await
7601    }
7602
7603    /// GET GetDeliveryTransporters V1
7604    /// Please note: that the {id} parameter above represents a Shipment Delivery ID.
7605    /// 
7606    ///   Permissions Required:
7607    ///   - Transfers
7608    ///
7609    pub async fn transfers_get_delivery_transporters_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7610        let id = id.to_string();
7611        let client = self.client.clone();
7612        let body = body.cloned();
7613        self.rate_limiter.execute(None, true, move || {
7614            let client = client.clone();
7615            let id = id.clone();
7616            let no = no.clone();
7617            let body = body.clone();
7618            async move { client.transfers_get_delivery_transporters_v1(&id, no, body.as_ref()).await }
7619        }).await
7620    }
7621
7622    /// GET GetDeliveryTransporters V2
7623    /// Retrieves a list of transporters for a given Transfer Delivery Id. Please note: The {id} parameter above represents a Transfer Delivery Id, not a Manifest Number.
7624    /// 
7625    ///   Permissions Required:
7626    ///   - Manage Transfers
7627    ///   - View Transfers
7628    ///
7629    pub async fn transfers_get_delivery_transporters_v2(&self, id: &str, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7630        let id = id.to_string();
7631        let client = self.client.clone();
7632        let body = body.cloned();
7633        self.rate_limiter.execute(None, true, move || {
7634            let client = client.clone();
7635            let id = id.clone();
7636            let page_number = page_number.clone();
7637            let page_size = page_size.clone();
7638            let body = body.clone();
7639            async move { client.transfers_get_delivery_transporters_v2(&id, page_number, page_size, body.as_ref()).await }
7640        }).await
7641    }
7642
7643    /// GET GetDeliveryTransportersDetails V1
7644    /// Please note: The {id} parameter above represents a Shipment Delivery ID.
7645    /// 
7646    ///   Permissions Required:
7647    ///   - Transfers
7648    ///
7649    pub async fn transfers_get_delivery_transporters_details_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7650        let id = id.to_string();
7651        let client = self.client.clone();
7652        let body = body.cloned();
7653        self.rate_limiter.execute(None, true, move || {
7654            let client = client.clone();
7655            let id = id.clone();
7656            let no = no.clone();
7657            let body = body.clone();
7658            async move { client.transfers_get_delivery_transporters_details_v1(&id, no, body.as_ref()).await }
7659        }).await
7660    }
7661
7662    /// GET GetDeliveryTransportersDetails V2
7663    /// Retrieves a list of transporter details for a given Transfer Delivery Id. Please note: The {id} parameter above represents a Transfer Delivery Id, not a Manifest Number.
7664    /// 
7665    ///   Permissions Required:
7666    ///   - Manage Transfers
7667    ///   - View Transfers
7668    ///
7669    pub async fn transfers_get_delivery_transporters_details_v2(&self, id: &str, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7670        let id = id.to_string();
7671        let client = self.client.clone();
7672        let body = body.cloned();
7673        self.rate_limiter.execute(None, true, move || {
7674            let client = client.clone();
7675            let id = id.clone();
7676            let page_number = page_number.clone();
7677            let page_size = page_size.clone();
7678            let body = body.clone();
7679            async move { client.transfers_get_delivery_transporters_details_v2(&id, page_number, page_size, body.as_ref()).await }
7680        }).await
7681    }
7682
7683    /// GET GetHub V2
7684    /// Retrieves a list of transfer hub shipments for a Facility, filtered by either last modified or estimated arrival date range.
7685    /// 
7686    ///   Permissions Required:
7687    ///   - Manage Transfers
7688    ///   - View Transfers
7689    ///
7690    pub async fn transfers_get_hub_v2(&self, estimated_arrival_end: Option<String>, estimated_arrival_start: Option<String>, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7691        let client = self.client.clone();
7692        let body = body.cloned();
7693        self.rate_limiter.execute(None, true, move || {
7694            let client = client.clone();
7695            let estimated_arrival_end = estimated_arrival_end.clone();
7696            let estimated_arrival_start = estimated_arrival_start.clone();
7697            let last_modified_end = last_modified_end.clone();
7698            let last_modified_start = last_modified_start.clone();
7699            let license_number = license_number.clone();
7700            let page_number = page_number.clone();
7701            let page_size = page_size.clone();
7702            let body = body.clone();
7703            async move { client.transfers_get_hub_v2(estimated_arrival_end, estimated_arrival_start, last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
7704        }).await
7705    }
7706
7707    /// GET GetIncoming V1
7708    /// Permissions Required:
7709    ///   - Transfers
7710    ///
7711    pub async fn transfers_get_incoming_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7712        let client = self.client.clone();
7713        let body = body.cloned();
7714        self.rate_limiter.execute(None, true, move || {
7715            let client = client.clone();
7716            let last_modified_end = last_modified_end.clone();
7717            let last_modified_start = last_modified_start.clone();
7718            let license_number = license_number.clone();
7719            let body = body.clone();
7720            async move { client.transfers_get_incoming_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
7721        }).await
7722    }
7723
7724    /// GET GetIncoming V2
7725    /// Retrieves a list of incoming shipments for a Facility, optionally filtered by last modified date range.
7726    /// 
7727    ///   Permissions Required:
7728    ///   - Manage Transfers
7729    ///   - View Transfers
7730    ///
7731    pub async fn transfers_get_incoming_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7732        let client = self.client.clone();
7733        let body = body.cloned();
7734        self.rate_limiter.execute(None, true, move || {
7735            let client = client.clone();
7736            let last_modified_end = last_modified_end.clone();
7737            let last_modified_start = last_modified_start.clone();
7738            let license_number = license_number.clone();
7739            let page_number = page_number.clone();
7740            let page_size = page_size.clone();
7741            let body = body.clone();
7742            async move { client.transfers_get_incoming_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
7743        }).await
7744    }
7745
7746    /// GET GetOutgoing V1
7747    /// Permissions Required:
7748    ///   - Transfers
7749    ///
7750    pub async fn transfers_get_outgoing_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7751        let client = self.client.clone();
7752        let body = body.cloned();
7753        self.rate_limiter.execute(None, true, move || {
7754            let client = client.clone();
7755            let last_modified_end = last_modified_end.clone();
7756            let last_modified_start = last_modified_start.clone();
7757            let license_number = license_number.clone();
7758            let body = body.clone();
7759            async move { client.transfers_get_outgoing_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
7760        }).await
7761    }
7762
7763    /// GET GetOutgoing V2
7764    /// Retrieves a list of outgoing shipments for a Facility, optionally filtered by last modified date range.
7765    /// 
7766    ///   Permissions Required:
7767    ///   - Manage Transfers
7768    ///   - View Transfers
7769    ///
7770    pub async fn transfers_get_outgoing_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7771        let client = self.client.clone();
7772        let body = body.cloned();
7773        self.rate_limiter.execute(None, true, move || {
7774            let client = client.clone();
7775            let last_modified_end = last_modified_end.clone();
7776            let last_modified_start = last_modified_start.clone();
7777            let license_number = license_number.clone();
7778            let page_number = page_number.clone();
7779            let page_size = page_size.clone();
7780            let body = body.clone();
7781            async move { client.transfers_get_outgoing_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
7782        }).await
7783    }
7784
7785    /// GET GetRejected V1
7786    /// Permissions Required:
7787    ///   - Transfers
7788    ///
7789    pub async fn transfers_get_rejected_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7790        let client = self.client.clone();
7791        let body = body.cloned();
7792        self.rate_limiter.execute(None, true, move || {
7793            let client = client.clone();
7794            let license_number = license_number.clone();
7795            let body = body.clone();
7796            async move { client.transfers_get_rejected_v1(license_number, body.as_ref()).await }
7797        }).await
7798    }
7799
7800    /// GET GetRejected V2
7801    /// Retrieves a list of shipments with rejected packages for a Facility.
7802    /// 
7803    ///   Permissions Required:
7804    ///   - Manage Transfers
7805    ///   - View Transfers
7806    ///
7807    pub async fn transfers_get_rejected_v2(&self, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7808        let client = self.client.clone();
7809        let body = body.cloned();
7810        self.rate_limiter.execute(None, true, move || {
7811            let client = client.clone();
7812            let license_number = license_number.clone();
7813            let page_number = page_number.clone();
7814            let page_size = page_size.clone();
7815            let body = body.clone();
7816            async move { client.transfers_get_rejected_v2(license_number, page_number, page_size, body.as_ref()).await }
7817        }).await
7818    }
7819
7820    /// GET GetTemplates V1
7821    /// Permissions Required:
7822    ///   - Transfer Templates
7823    ///
7824    pub async fn transfers_get_templates_v1(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7825        let client = self.client.clone();
7826        let body = body.cloned();
7827        self.rate_limiter.execute(None, true, move || {
7828            let client = client.clone();
7829            let last_modified_end = last_modified_end.clone();
7830            let last_modified_start = last_modified_start.clone();
7831            let license_number = license_number.clone();
7832            let body = body.clone();
7833            async move { client.transfers_get_templates_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
7834        }).await
7835    }
7836
7837    /// GET GetTemplatesDelivery V1
7838    /// Permissions Required:
7839    ///   - Transfer Templates
7840    ///
7841    pub async fn transfers_get_templates_delivery_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7842        let id = id.to_string();
7843        let client = self.client.clone();
7844        let body = body.cloned();
7845        self.rate_limiter.execute(None, true, move || {
7846            let client = client.clone();
7847            let id = id.clone();
7848            let no = no.clone();
7849            let body = body.clone();
7850            async move { client.transfers_get_templates_delivery_v1(&id, no, body.as_ref()).await }
7851        }).await
7852    }
7853
7854    /// GET GetTemplatesDeliveryPackage V1
7855    /// Please note: The {id} parameter above represents a Transfer Template Delivery ID, not a Manifest Number.
7856    /// 
7857    ///   Permissions Required:
7858    ///   - Transfers
7859    ///
7860    pub async fn transfers_get_templates_delivery_package_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7861        let id = id.to_string();
7862        let client = self.client.clone();
7863        let body = body.cloned();
7864        self.rate_limiter.execute(None, true, move || {
7865            let client = client.clone();
7866            let id = id.clone();
7867            let no = no.clone();
7868            let body = body.clone();
7869            async move { client.transfers_get_templates_delivery_package_v1(&id, no, body.as_ref()).await }
7870        }).await
7871    }
7872
7873    /// GET GetTemplatesDeliveryTransporters V1
7874    /// Please note: The {id} parameter above represents a Transfer Template Delivery ID, not a Manifest Number.
7875    /// 
7876    ///   Permissions Required:
7877    ///   - Transfer Templates
7878    ///
7879    pub async fn transfers_get_templates_delivery_transporters_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7880        let id = id.to_string();
7881        let client = self.client.clone();
7882        let body = body.cloned();
7883        self.rate_limiter.execute(None, true, move || {
7884            let client = client.clone();
7885            let id = id.clone();
7886            let no = no.clone();
7887            let body = body.clone();
7888            async move { client.transfers_get_templates_delivery_transporters_v1(&id, no, body.as_ref()).await }
7889        }).await
7890    }
7891
7892    /// GET GetTemplatesDeliveryTransportersDetails V1
7893    /// Please note: The {id} parameter above represents a Transfer Template Delivery ID, not a Manifest Number.
7894    /// 
7895    ///   Permissions Required:
7896    ///   - Transfer Templates
7897    ///
7898    pub async fn transfers_get_templates_delivery_transporters_details_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7899        let id = id.to_string();
7900        let client = self.client.clone();
7901        let body = body.cloned();
7902        self.rate_limiter.execute(None, true, move || {
7903            let client = client.clone();
7904            let id = id.clone();
7905            let no = no.clone();
7906            let body = body.clone();
7907            async move { client.transfers_get_templates_delivery_transporters_details_v1(&id, no, body.as_ref()).await }
7908        }).await
7909    }
7910
7911    /// GET GetTemplatesOutgoing V2
7912    /// Retrieves a list of transfer templates for a Facility, optionally filtered by last modified date range.
7913    /// 
7914    ///   Permissions Required:
7915    ///   - Manage Transfer Templates
7916    ///   - View Transfer Templates
7917    ///
7918    pub async fn transfers_get_templates_outgoing_v2(&self, last_modified_end: Option<String>, last_modified_start: Option<String>, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7919        let client = self.client.clone();
7920        let body = body.cloned();
7921        self.rate_limiter.execute(None, true, move || {
7922            let client = client.clone();
7923            let last_modified_end = last_modified_end.clone();
7924            let last_modified_start = last_modified_start.clone();
7925            let license_number = license_number.clone();
7926            let page_number = page_number.clone();
7927            let page_size = page_size.clone();
7928            let body = body.clone();
7929            async move { client.transfers_get_templates_outgoing_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
7930        }).await
7931    }
7932
7933    /// GET GetTemplatesOutgoingDelivery V2
7934    /// Retrieves a list of deliveries associated with a specific transfer template.
7935    /// 
7936    ///   Permissions Required:
7937    ///   - Manage Transfer Templates
7938    ///   - View Transfer Templates
7939    ///
7940    pub async fn transfers_get_templates_outgoing_delivery_v2(&self, id: &str, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7941        let id = id.to_string();
7942        let client = self.client.clone();
7943        let body = body.cloned();
7944        self.rate_limiter.execute(None, true, move || {
7945            let client = client.clone();
7946            let id = id.clone();
7947            let page_number = page_number.clone();
7948            let page_size = page_size.clone();
7949            let body = body.clone();
7950            async move { client.transfers_get_templates_outgoing_delivery_v2(&id, page_number, page_size, body.as_ref()).await }
7951        }).await
7952    }
7953
7954    /// GET GetTemplatesOutgoingDeliveryPackage V2
7955    /// Retrieves a list of delivery package templates for a given Transfer Template Delivery Id. Please note: The {id} parameter above represents a Transfer Template Delivery Id, not a Manifest Number.
7956    /// 
7957    ///   Permissions Required:
7958    ///   - Manage Transfer Templates
7959    ///   - View Transfer Templates
7960    ///
7961    pub async fn transfers_get_templates_outgoing_delivery_package_v2(&self, id: &str, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7962        let id = id.to_string();
7963        let client = self.client.clone();
7964        let body = body.cloned();
7965        self.rate_limiter.execute(None, true, move || {
7966            let client = client.clone();
7967            let id = id.clone();
7968            let page_number = page_number.clone();
7969            let page_size = page_size.clone();
7970            let body = body.clone();
7971            async move { client.transfers_get_templates_outgoing_delivery_package_v2(&id, page_number, page_size, body.as_ref()).await }
7972        }).await
7973    }
7974
7975    /// GET GetTemplatesOutgoingDeliveryTransporters V2
7976    /// Retrieves a list of transporter templates for a given Transfer Template Delivery Id. Please note: The {id} parameter above represents a Transfer Template Delivery Id, not a Manifest Number.
7977    /// 
7978    ///   Permissions Required:
7979    ///   - Manage Transfer Templates
7980    ///   - View Transfer Templates
7981    ///
7982    pub async fn transfers_get_templates_outgoing_delivery_transporters_v2(&self, id: &str, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7983        let id = id.to_string();
7984        let client = self.client.clone();
7985        let body = body.cloned();
7986        self.rate_limiter.execute(None, true, move || {
7987            let client = client.clone();
7988            let id = id.clone();
7989            let page_number = page_number.clone();
7990            let page_size = page_size.clone();
7991            let body = body.clone();
7992            async move { client.transfers_get_templates_outgoing_delivery_transporters_v2(&id, page_number, page_size, body.as_ref()).await }
7993        }).await
7994    }
7995
7996    /// GET GetTemplatesOutgoingDeliveryTransportersDetails V2
7997    /// Retrieves detailed transporter templates for a given Transfer Template Delivery Id. Please note: The {id} parameter above represents a Transfer Template Delivery Id, not a Manifest Number.
7998    /// 
7999    ///   Permissions Required:
8000    ///   - Manage Transfer Templates
8001    ///   - View Transfer Templates
8002    ///
8003    pub async fn transfers_get_templates_outgoing_delivery_transporters_details_v2(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
8004        let id = id.to_string();
8005        let client = self.client.clone();
8006        let body = body.cloned();
8007        self.rate_limiter.execute(None, true, move || {
8008            let client = client.clone();
8009            let id = id.clone();
8010            let no = no.clone();
8011            let body = body.clone();
8012            async move { client.transfers_get_templates_outgoing_delivery_transporters_details_v2(&id, no, body.as_ref()).await }
8013        }).await
8014    }
8015
8016    /// GET GetTypes V1
8017    /// Permissions Required:
8018    ///   - None
8019    ///
8020    pub async fn transfers_get_types_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
8021        let client = self.client.clone();
8022        let body = body.cloned();
8023        self.rate_limiter.execute(None, true, move || {
8024            let client = client.clone();
8025            let license_number = license_number.clone();
8026            let body = body.clone();
8027            async move { client.transfers_get_types_v1(license_number, body.as_ref()).await }
8028        }).await
8029    }
8030
8031    /// GET GetTypes V2
8032    /// Retrieves a list of available transfer types for a Facility based on its license number.
8033    /// 
8034    ///   Permissions Required:
8035    ///   - None
8036    ///
8037    pub async fn transfers_get_types_v2(&self, license_number: Option<String>, page_number: Option<String>, page_size: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
8038        let client = self.client.clone();
8039        let body = body.cloned();
8040        self.rate_limiter.execute(None, true, move || {
8041            let client = client.clone();
8042            let license_number = license_number.clone();
8043            let page_number = page_number.clone();
8044            let page_size = page_size.clone();
8045            let body = body.clone();
8046            async move { client.transfers_get_types_v2(license_number, page_number, page_size, body.as_ref()).await }
8047        }).await
8048    }
8049
8050    /// PUT UpdateExternalIncoming V1
8051    /// Permissions Required:
8052    ///   - Transfers
8053    ///
8054    pub async fn transfers_update_external_incoming_v1(&self, license_number: Option<String>, body: Option<&Vec<TransfersUpdateExternalIncomingV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
8055        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
8056        let client = self.client.clone();
8057        let body_val = body_val.clone();
8058        self.rate_limiter.execute(None, false, move || {
8059            let client = client.clone();
8060            let license_number = license_number.clone();
8061            let body_val = body_val.clone();
8062            async move { client.transfers_update_external_incoming_v1(license_number, body_val.as_ref()).await }
8063        }).await
8064    }
8065
8066    /// PUT UpdateExternalIncoming V2
8067    /// Updates external incoming shipment plans for a Facility.
8068    /// 
8069    ///   Permissions Required:
8070    ///   - Manage Transfers
8071    ///
8072    pub async fn transfers_update_external_incoming_v2(&self, license_number: Option<String>, body: Option<&Vec<TransfersUpdateExternalIncomingV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
8073        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
8074        let client = self.client.clone();
8075        let body_val = body_val.clone();
8076        self.rate_limiter.execute(None, false, move || {
8077            let client = client.clone();
8078            let license_number = license_number.clone();
8079            let body_val = body_val.clone();
8080            async move { client.transfers_update_external_incoming_v2(license_number, body_val.as_ref()).await }
8081        }).await
8082    }
8083
8084    /// PUT UpdateTemplates V1
8085    /// Permissions Required:
8086    ///   - Transfer Templates
8087    ///
8088    pub async fn transfers_update_templates_v1(&self, license_number: Option<String>, body: Option<&Vec<TransfersUpdateTemplatesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
8089        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
8090        let client = self.client.clone();
8091        let body_val = body_val.clone();
8092        self.rate_limiter.execute(None, false, move || {
8093            let client = client.clone();
8094            let license_number = license_number.clone();
8095            let body_val = body_val.clone();
8096            async move { client.transfers_update_templates_v1(license_number, body_val.as_ref()).await }
8097        }).await
8098    }
8099
8100    /// PUT UpdateTemplatesOutgoing V2
8101    /// Updates existing transfer templates for a Facility.
8102    /// 
8103    ///   Permissions Required:
8104    ///   - Manage Transfer Templates
8105    ///
8106    pub async fn transfers_update_templates_outgoing_v2(&self, license_number: Option<String>, body: Option<&Vec<TransfersUpdateTemplatesOutgoingV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
8107        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
8108        let client = self.client.clone();
8109        let body_val = body_val.clone();
8110        self.rate_limiter.execute(None, false, move || {
8111            let client = client.clone();
8112            let license_number = license_number.clone();
8113            let body_val = body_val.clone();
8114            async move { client.transfers_update_templates_outgoing_v2(license_number, body_val.as_ref()).await }
8115        }).await
8116    }
8117
8118}
8119
8120#[derive(Serialize, Deserialize, Debug, Clone)]
8121pub struct TransportersCreateDriverV2RequestItem {
8122    #[serde(rename = "DriversLicenseNumber")]
8123    pub drivers_license_number: Option<String>,
8124    #[serde(rename = "EmployeeId")]
8125    pub employee_id: Option<String>,
8126    #[serde(rename = "Name")]
8127    pub name: Option<String>,
8128}
8129
8130#[derive(Serialize, Deserialize, Debug, Clone)]
8131pub struct TransportersCreateVehicleV2RequestItem {
8132    #[serde(rename = "LicensePlateNumber")]
8133    pub license_plate_number: Option<String>,
8134    #[serde(rename = "Make")]
8135    pub make: Option<String>,
8136    #[serde(rename = "Model")]
8137    pub model: Option<String>,
8138}
8139
8140#[derive(Serialize, Deserialize, Debug, Clone)]
8141pub struct TransportersUpdateDriverV2RequestItem {
8142    #[serde(rename = "DriversLicenseNumber")]
8143    pub drivers_license_number: Option<String>,
8144    #[serde(rename = "EmployeeId")]
8145    pub employee_id: Option<String>,
8146    #[serde(rename = "Id")]
8147    pub id: Option<String>,
8148    #[serde(rename = "Name")]
8149    pub name: Option<String>,
8150}
8151
8152#[derive(Serialize, Deserialize, Debug, Clone)]
8153pub struct TransportersUpdateVehicleV2RequestItem {
8154    #[serde(rename = "Id")]
8155    pub id: Option<String>,
8156    #[serde(rename = "LicensePlateNumber")]
8157    pub license_plate_number: Option<String>,
8158    #[serde(rename = "Make")]
8159    pub make: Option<String>,
8160    #[serde(rename = "Model")]
8161    pub model: Option<String>,
8162}
8163
8164#[derive(Serialize, Deserialize, Debug, Clone)]
8165pub struct LocationsCreateV1RequestItem {
8166    #[serde(rename = "LocationTypeName")]
8167    pub location_type_name: Option<String>,
8168    #[serde(rename = "Name")]
8169    pub name: Option<String>,
8170}
8171
8172#[derive(Serialize, Deserialize, Debug, Clone)]
8173pub struct LocationsCreateV2RequestItem {
8174    #[serde(rename = "LocationTypeName")]
8175    pub location_type_name: Option<String>,
8176    #[serde(rename = "Name")]
8177    pub name: Option<String>,
8178}
8179
8180#[derive(Serialize, Deserialize, Debug, Clone)]
8181pub struct LocationsCreateUpdateV1RequestItem {
8182    #[serde(rename = "Id")]
8183    pub id: Option<i64>,
8184    #[serde(rename = "LocationTypeName")]
8185    pub location_type_name: Option<String>,
8186    #[serde(rename = "Name")]
8187    pub name: Option<String>,
8188}
8189
8190#[derive(Serialize, Deserialize, Debug, Clone)]
8191pub struct LocationsUpdateV2RequestItem {
8192    #[serde(rename = "Id")]
8193    pub id: Option<i64>,
8194    #[serde(rename = "LocationTypeName")]
8195    pub location_type_name: Option<String>,
8196    #[serde(rename = "Name")]
8197    pub name: Option<String>,
8198}
8199
8200#[derive(Serialize, Deserialize, Debug, Clone)]
8201pub struct PackagesCreateV1RequestItem {
8202    #[serde(rename = "ActualDate")]
8203    pub actual_date: Option<String>,
8204    #[serde(rename = "ExpirationDate")]
8205    pub expiration_date: Option<String>,
8206    #[serde(rename = "Ingredients")]
8207    pub ingredients: Option<Vec<PackagesCreateV1RequestItemIngredients>>,
8208    #[serde(rename = "IsDonation")]
8209    pub is_donation: Option<bool>,
8210    #[serde(rename = "IsProductionBatch")]
8211    pub is_production_batch: Option<bool>,
8212    #[serde(rename = "IsTradeSample")]
8213    pub is_trade_sample: Option<bool>,
8214    #[serde(rename = "Item")]
8215    pub item: Option<String>,
8216    #[serde(rename = "LabTestStageId")]
8217    pub lab_test_stage_id: Option<i64>,
8218    #[serde(rename = "Location")]
8219    pub location: Option<String>,
8220    #[serde(rename = "Note")]
8221    pub note: Option<String>,
8222    #[serde(rename = "PatientLicenseNumber")]
8223    pub patient_license_number: Option<String>,
8224    #[serde(rename = "ProcessingJobTypeId")]
8225    pub processing_job_type_id: Option<i64>,
8226    #[serde(rename = "ProductRequiresRemediation")]
8227    pub product_requires_remediation: Option<bool>,
8228    #[serde(rename = "ProductionBatchNumber")]
8229    pub production_batch_number: Option<String>,
8230    #[serde(rename = "Quantity")]
8231    pub quantity: Option<i64>,
8232    #[serde(rename = "RequiredLabTestBatches")]
8233    pub required_lab_test_batches: Option<bool>,
8234    #[serde(rename = "SellByDate")]
8235    pub sell_by_date: Option<String>,
8236    #[serde(rename = "Sublocation")]
8237    pub sublocation: Option<String>,
8238    #[serde(rename = "Tag")]
8239    pub tag: Option<String>,
8240    #[serde(rename = "UnitOfMeasure")]
8241    pub unit_of_measure: Option<String>,
8242    #[serde(rename = "UseByDate")]
8243    pub use_by_date: Option<String>,
8244    #[serde(rename = "UseSameItem")]
8245    pub use_same_item: Option<bool>,
8246}
8247
8248#[derive(Serialize, Deserialize, Debug, Clone)]
8249pub struct PackagesCreateV1RequestItemIngredients {
8250    #[serde(rename = "Package")]
8251    pub package: Option<String>,
8252    #[serde(rename = "Quantity")]
8253    pub quantity: Option<i64>,
8254    #[serde(rename = "UnitOfMeasure")]
8255    pub unit_of_measure: Option<String>,
8256}
8257
8258#[derive(Serialize, Deserialize, Debug, Clone)]
8259pub struct PackagesCreateV2RequestItem {
8260    #[serde(rename = "ActualDate")]
8261    pub actual_date: Option<String>,
8262    #[serde(rename = "ExpirationDate")]
8263    pub expiration_date: Option<String>,
8264    #[serde(rename = "Ingredients")]
8265    pub ingredients: Option<Vec<PackagesCreateV2RequestItemIngredients>>,
8266    #[serde(rename = "IsDonation")]
8267    pub is_donation: Option<bool>,
8268    #[serde(rename = "IsProductionBatch")]
8269    pub is_production_batch: Option<bool>,
8270    #[serde(rename = "IsTradeSample")]
8271    pub is_trade_sample: Option<bool>,
8272    #[serde(rename = "Item")]
8273    pub item: Option<String>,
8274    #[serde(rename = "LabTestStageId")]
8275    pub lab_test_stage_id: Option<i64>,
8276    #[serde(rename = "Location")]
8277    pub location: Option<String>,
8278    #[serde(rename = "Note")]
8279    pub note: Option<String>,
8280    #[serde(rename = "PatientLicenseNumber")]
8281    pub patient_license_number: Option<String>,
8282    #[serde(rename = "ProcessingJobTypeId")]
8283    pub processing_job_type_id: Option<i64>,
8284    #[serde(rename = "ProductRequiresRemediation")]
8285    pub product_requires_remediation: Option<bool>,
8286    #[serde(rename = "ProductionBatchNumber")]
8287    pub production_batch_number: Option<String>,
8288    #[serde(rename = "Quantity")]
8289    pub quantity: Option<i64>,
8290    #[serde(rename = "RequiredLabTestBatches")]
8291    pub required_lab_test_batches: Option<bool>,
8292    #[serde(rename = "SellByDate")]
8293    pub sell_by_date: Option<String>,
8294    #[serde(rename = "Sublocation")]
8295    pub sublocation: Option<String>,
8296    #[serde(rename = "Tag")]
8297    pub tag: Option<String>,
8298    #[serde(rename = "UnitOfMeasure")]
8299    pub unit_of_measure: Option<String>,
8300    #[serde(rename = "UseByDate")]
8301    pub use_by_date: Option<String>,
8302    #[serde(rename = "UseSameItem")]
8303    pub use_same_item: Option<bool>,
8304}
8305
8306#[derive(Serialize, Deserialize, Debug, Clone)]
8307pub struct PackagesCreateV2RequestItemIngredients {
8308    #[serde(rename = "Package")]
8309    pub package: Option<String>,
8310    #[serde(rename = "Quantity")]
8311    pub quantity: Option<i64>,
8312    #[serde(rename = "UnitOfMeasure")]
8313    pub unit_of_measure: Option<String>,
8314}
8315
8316#[derive(Serialize, Deserialize, Debug, Clone)]
8317pub struct PackagesCreateAdjustV1RequestItem {
8318    #[serde(rename = "AdjustmentDate")]
8319    pub adjustment_date: Option<String>,
8320    #[serde(rename = "AdjustmentReason")]
8321    pub adjustment_reason: Option<String>,
8322    #[serde(rename = "Label")]
8323    pub label: Option<String>,
8324    #[serde(rename = "Quantity")]
8325    pub quantity: Option<i64>,
8326    #[serde(rename = "ReasonNote")]
8327    pub reason_note: Option<String>,
8328    #[serde(rename = "UnitOfMeasure")]
8329    pub unit_of_measure: Option<String>,
8330}
8331
8332#[derive(Serialize, Deserialize, Debug, Clone)]
8333pub struct PackagesCreateAdjustV2RequestItem {
8334    #[serde(rename = "AdjustmentDate")]
8335    pub adjustment_date: Option<String>,
8336    #[serde(rename = "AdjustmentReason")]
8337    pub adjustment_reason: Option<String>,
8338    #[serde(rename = "Label")]
8339    pub label: Option<String>,
8340    #[serde(rename = "Quantity")]
8341    pub quantity: Option<i64>,
8342    #[serde(rename = "ReasonNote")]
8343    pub reason_note: Option<String>,
8344    #[serde(rename = "UnitOfMeasure")]
8345    pub unit_of_measure: Option<String>,
8346}
8347
8348#[derive(Serialize, Deserialize, Debug, Clone)]
8349pub struct PackagesCreateChangeItemV1RequestItem {
8350    #[serde(rename = "Item")]
8351    pub item: Option<String>,
8352    #[serde(rename = "Label")]
8353    pub label: Option<String>,
8354}
8355
8356#[derive(Serialize, Deserialize, Debug, Clone)]
8357pub struct PackagesCreateChangeLocationV1RequestItem {
8358    #[serde(rename = "Label")]
8359    pub label: Option<String>,
8360    #[serde(rename = "Location")]
8361    pub location: Option<String>,
8362    #[serde(rename = "MoveDate")]
8363    pub move_date: Option<String>,
8364    #[serde(rename = "Sublocation")]
8365    pub sublocation: Option<String>,
8366}
8367
8368#[derive(Serialize, Deserialize, Debug, Clone)]
8369pub struct PackagesCreateFinishV1RequestItem {
8370    #[serde(rename = "ActualDate")]
8371    pub actual_date: Option<String>,
8372    #[serde(rename = "Label")]
8373    pub label: Option<String>,
8374}
8375
8376#[derive(Serialize, Deserialize, Debug, Clone)]
8377pub struct PackagesCreatePlantingsV1RequestItem {
8378    #[serde(rename = "LocationName")]
8379    pub location_name: Option<String>,
8380    #[serde(rename = "PackageAdjustmentAmount")]
8381    pub package_adjustment_amount: Option<i64>,
8382    #[serde(rename = "PackageAdjustmentUnitOfMeasureName")]
8383    pub package_adjustment_unit_of_measure_name: Option<String>,
8384    #[serde(rename = "PackageLabel")]
8385    pub package_label: Option<String>,
8386    #[serde(rename = "PatientLicenseNumber")]
8387    pub patient_license_number: Option<String>,
8388    #[serde(rename = "PlantBatchName")]
8389    pub plant_batch_name: Option<String>,
8390    #[serde(rename = "PlantBatchType")]
8391    pub plant_batch_type: Option<String>,
8392    #[serde(rename = "PlantCount")]
8393    pub plant_count: Option<i64>,
8394    #[serde(rename = "PlantedDate")]
8395    pub planted_date: Option<String>,
8396    #[serde(rename = "StrainName")]
8397    pub strain_name: Option<String>,
8398    #[serde(rename = "SublocationName")]
8399    pub sublocation_name: Option<String>,
8400    #[serde(rename = "UnpackagedDate")]
8401    pub unpackaged_date: Option<String>,
8402}
8403
8404#[derive(Serialize, Deserialize, Debug, Clone)]
8405pub struct PackagesCreatePlantingsV2RequestItem {
8406    #[serde(rename = "LocationName")]
8407    pub location_name: Option<String>,
8408    #[serde(rename = "PackageAdjustmentAmount")]
8409    pub package_adjustment_amount: Option<i64>,
8410    #[serde(rename = "PackageAdjustmentUnitOfMeasureName")]
8411    pub package_adjustment_unit_of_measure_name: Option<String>,
8412    #[serde(rename = "PackageLabel")]
8413    pub package_label: Option<String>,
8414    #[serde(rename = "PatientLicenseNumber")]
8415    pub patient_license_number: Option<String>,
8416    #[serde(rename = "PlantBatchName")]
8417    pub plant_batch_name: Option<String>,
8418    #[serde(rename = "PlantBatchType")]
8419    pub plant_batch_type: Option<String>,
8420    #[serde(rename = "PlantCount")]
8421    pub plant_count: Option<i64>,
8422    #[serde(rename = "PlantedDate")]
8423    pub planted_date: Option<String>,
8424    #[serde(rename = "StrainName")]
8425    pub strain_name: Option<String>,
8426    #[serde(rename = "SublocationName")]
8427    pub sublocation_name: Option<String>,
8428    #[serde(rename = "UnpackagedDate")]
8429    pub unpackaged_date: Option<String>,
8430}
8431
8432#[derive(Serialize, Deserialize, Debug, Clone)]
8433pub struct PackagesCreateRemediateV1RequestItem {
8434    #[serde(rename = "PackageLabel")]
8435    pub package_label: Option<String>,
8436    #[serde(rename = "RemediationDate")]
8437    pub remediation_date: Option<String>,
8438    #[serde(rename = "RemediationMethodName")]
8439    pub remediation_method_name: Option<String>,
8440    #[serde(rename = "RemediationSteps")]
8441    pub remediation_steps: Option<String>,
8442}
8443
8444#[derive(Serialize, Deserialize, Debug, Clone)]
8445pub struct PackagesCreateTestingV1RequestItem {
8446    #[serde(rename = "ActualDate")]
8447    pub actual_date: Option<String>,
8448    #[serde(rename = "ExpirationDate")]
8449    pub expiration_date: Option<String>,
8450    #[serde(rename = "Ingredients")]
8451    pub ingredients: Option<Vec<PackagesCreateTestingV1RequestItemIngredients>>,
8452    #[serde(rename = "IsDonation")]
8453    pub is_donation: Option<bool>,
8454    #[serde(rename = "IsProductionBatch")]
8455    pub is_production_batch: Option<bool>,
8456    #[serde(rename = "IsTradeSample")]
8457    pub is_trade_sample: Option<bool>,
8458    #[serde(rename = "Item")]
8459    pub item: Option<String>,
8460    #[serde(rename = "LabTestStageId")]
8461    pub lab_test_stage_id: Option<i64>,
8462    #[serde(rename = "Location")]
8463    pub location: Option<String>,
8464    #[serde(rename = "Note")]
8465    pub note: Option<String>,
8466    #[serde(rename = "PatientLicenseNumber")]
8467    pub patient_license_number: Option<String>,
8468    #[serde(rename = "ProcessingJobTypeId")]
8469    pub processing_job_type_id: Option<i64>,
8470    #[serde(rename = "ProductRequiresRemediation")]
8471    pub product_requires_remediation: Option<bool>,
8472    #[serde(rename = "ProductionBatchNumber")]
8473    pub production_batch_number: Option<String>,
8474    #[serde(rename = "Quantity")]
8475    pub quantity: Option<i64>,
8476    #[serde(rename = "RequiredLabTestBatches")]
8477    pub required_lab_test_batches: Option<bool>,
8478    #[serde(rename = "SellByDate")]
8479    pub sell_by_date: Option<String>,
8480    #[serde(rename = "Sublocation")]
8481    pub sublocation: Option<String>,
8482    #[serde(rename = "Tag")]
8483    pub tag: Option<String>,
8484    #[serde(rename = "UnitOfMeasure")]
8485    pub unit_of_measure: Option<String>,
8486    #[serde(rename = "UseByDate")]
8487    pub use_by_date: Option<String>,
8488    #[serde(rename = "UseSameItem")]
8489    pub use_same_item: Option<bool>,
8490}
8491
8492#[derive(Serialize, Deserialize, Debug, Clone)]
8493pub struct PackagesCreateTestingV1RequestItemIngredients {
8494    #[serde(rename = "Package")]
8495    pub package: Option<String>,
8496    #[serde(rename = "Quantity")]
8497    pub quantity: Option<i64>,
8498    #[serde(rename = "UnitOfMeasure")]
8499    pub unit_of_measure: Option<String>,
8500}
8501
8502#[derive(Serialize, Deserialize, Debug, Clone)]
8503pub struct PackagesCreateTestingV2RequestItem {
8504    #[serde(rename = "ActualDate")]
8505    pub actual_date: Option<String>,
8506    #[serde(rename = "ExpirationDate")]
8507    pub expiration_date: Option<String>,
8508    #[serde(rename = "Ingredients")]
8509    pub ingredients: Option<Vec<PackagesCreateTestingV2RequestItemIngredients>>,
8510    #[serde(rename = "IsDonation")]
8511    pub is_donation: Option<bool>,
8512    #[serde(rename = "IsProductionBatch")]
8513    pub is_production_batch: Option<bool>,
8514    #[serde(rename = "IsTradeSample")]
8515    pub is_trade_sample: Option<bool>,
8516    #[serde(rename = "Item")]
8517    pub item: Option<String>,
8518    #[serde(rename = "LabTestStageId")]
8519    pub lab_test_stage_id: Option<i64>,
8520    #[serde(rename = "Location")]
8521    pub location: Option<String>,
8522    #[serde(rename = "Note")]
8523    pub note: Option<String>,
8524    #[serde(rename = "PatientLicenseNumber")]
8525    pub patient_license_number: Option<String>,
8526    #[serde(rename = "ProcessingJobTypeId")]
8527    pub processing_job_type_id: Option<i64>,
8528    #[serde(rename = "ProductRequiresRemediation")]
8529    pub product_requires_remediation: Option<bool>,
8530    #[serde(rename = "ProductionBatchNumber")]
8531    pub production_batch_number: Option<String>,
8532    #[serde(rename = "Quantity")]
8533    pub quantity: Option<i64>,
8534    #[serde(rename = "RequiredLabTestBatches")]
8535    pub required_lab_test_batches: Option<Vec<String>>,
8536    #[serde(rename = "SellByDate")]
8537    pub sell_by_date: Option<String>,
8538    #[serde(rename = "Sublocation")]
8539    pub sublocation: Option<String>,
8540    #[serde(rename = "Tag")]
8541    pub tag: Option<String>,
8542    #[serde(rename = "UnitOfMeasure")]
8543    pub unit_of_measure: Option<String>,
8544    #[serde(rename = "UseByDate")]
8545    pub use_by_date: Option<String>,
8546    #[serde(rename = "UseSameItem")]
8547    pub use_same_item: Option<bool>,
8548}
8549
8550#[derive(Serialize, Deserialize, Debug, Clone)]
8551pub struct PackagesCreateTestingV2RequestItemIngredients {
8552    #[serde(rename = "Package")]
8553    pub package: Option<String>,
8554    #[serde(rename = "Quantity")]
8555    pub quantity: Option<i64>,
8556    #[serde(rename = "UnitOfMeasure")]
8557    pub unit_of_measure: Option<String>,
8558}
8559
8560#[derive(Serialize, Deserialize, Debug, Clone)]
8561pub struct PackagesCreateUnfinishV1RequestItem {
8562    #[serde(rename = "Label")]
8563    pub label: Option<String>,
8564}
8565
8566#[derive(Serialize, Deserialize, Debug, Clone)]
8567pub struct PackagesUpdateAdjustV2RequestItem {
8568    #[serde(rename = "AdjustmentDate")]
8569    pub adjustment_date: Option<String>,
8570    #[serde(rename = "AdjustmentReason")]
8571    pub adjustment_reason: Option<String>,
8572    #[serde(rename = "Label")]
8573    pub label: Option<String>,
8574    #[serde(rename = "Quantity")]
8575    pub quantity: Option<i64>,
8576    #[serde(rename = "ReasonNote")]
8577    pub reason_note: Option<String>,
8578    #[serde(rename = "UnitOfMeasure")]
8579    pub unit_of_measure: Option<String>,
8580}
8581
8582#[derive(Serialize, Deserialize, Debug, Clone)]
8583pub struct PackagesUpdateChangeNoteV1RequestItem {
8584    #[serde(rename = "Note")]
8585    pub note: Option<String>,
8586    #[serde(rename = "PackageLabel")]
8587    pub package_label: Option<String>,
8588}
8589
8590#[derive(Serialize, Deserialize, Debug, Clone)]
8591pub struct PackagesUpdateDecontaminateV2RequestItem {
8592    #[serde(rename = "DecontaminationDate")]
8593    pub decontamination_date: Option<String>,
8594    #[serde(rename = "DecontaminationMethodName")]
8595    pub decontamination_method_name: Option<String>,
8596    #[serde(rename = "DecontaminationSteps")]
8597    pub decontamination_steps: Option<String>,
8598    #[serde(rename = "PackageLabel")]
8599    pub package_label: Option<String>,
8600}
8601
8602#[derive(Serialize, Deserialize, Debug, Clone)]
8603pub struct PackagesUpdateDonationFlagV2RequestItem {
8604    #[serde(rename = "Label")]
8605    pub label: Option<String>,
8606}
8607
8608#[derive(Serialize, Deserialize, Debug, Clone)]
8609pub struct PackagesUpdateDonationUnflagV2RequestItem {
8610    #[serde(rename = "Label")]
8611    pub label: Option<String>,
8612}
8613
8614#[derive(Serialize, Deserialize, Debug, Clone)]
8615pub struct PackagesUpdateExternalidV2RequestItem {
8616    #[serde(rename = "ExternalId")]
8617    pub external_id: Option<String>,
8618    #[serde(rename = "PackageLabel")]
8619    pub package_label: Option<String>,
8620}
8621
8622#[derive(Serialize, Deserialize, Debug, Clone)]
8623pub struct PackagesUpdateFinishV2RequestItem {
8624    #[serde(rename = "ActualDate")]
8625    pub actual_date: Option<String>,
8626    #[serde(rename = "Label")]
8627    pub label: Option<String>,
8628}
8629
8630#[derive(Serialize, Deserialize, Debug, Clone)]
8631pub struct PackagesUpdateItemV2RequestItem {
8632    #[serde(rename = "Item")]
8633    pub item: Option<String>,
8634    #[serde(rename = "Label")]
8635    pub label: Option<String>,
8636}
8637
8638#[derive(Serialize, Deserialize, Debug, Clone)]
8639pub struct PackagesUpdateLabTestRequiredV2RequestItem {
8640    #[serde(rename = "Label")]
8641    pub label: Option<String>,
8642    #[serde(rename = "RequiredLabTestBatches")]
8643    pub required_lab_test_batches: Option<Vec<String>>,
8644}
8645
8646#[derive(Serialize, Deserialize, Debug, Clone)]
8647pub struct PackagesUpdateLocationV2RequestItem {
8648    #[serde(rename = "Label")]
8649    pub label: Option<String>,
8650    #[serde(rename = "Location")]
8651    pub location: Option<String>,
8652    #[serde(rename = "MoveDate")]
8653    pub move_date: Option<String>,
8654    #[serde(rename = "Sublocation")]
8655    pub sublocation: Option<String>,
8656}
8657
8658#[derive(Serialize, Deserialize, Debug, Clone)]
8659pub struct PackagesUpdateNoteV2RequestItem {
8660    #[serde(rename = "Note")]
8661    pub note: Option<String>,
8662    #[serde(rename = "PackageLabel")]
8663    pub package_label: Option<String>,
8664}
8665
8666#[derive(Serialize, Deserialize, Debug, Clone)]
8667pub struct PackagesUpdateRemediateV2RequestItem {
8668    #[serde(rename = "PackageLabel")]
8669    pub package_label: Option<String>,
8670    #[serde(rename = "RemediationDate")]
8671    pub remediation_date: Option<String>,
8672    #[serde(rename = "RemediationMethodName")]
8673    pub remediation_method_name: Option<String>,
8674    #[serde(rename = "RemediationSteps")]
8675    pub remediation_steps: Option<String>,
8676}
8677
8678#[derive(Serialize, Deserialize, Debug, Clone)]
8679pub struct PackagesUpdateTradesampleFlagV2RequestItem {
8680    #[serde(rename = "Label")]
8681    pub label: Option<String>,
8682}
8683
8684#[derive(Serialize, Deserialize, Debug, Clone)]
8685pub struct PackagesUpdateTradesampleUnflagV2RequestItem {
8686    #[serde(rename = "Label")]
8687    pub label: Option<String>,
8688}
8689
8690#[derive(Serialize, Deserialize, Debug, Clone)]
8691pub struct PackagesUpdateUnfinishV2RequestItem {
8692    #[serde(rename = "Label")]
8693    pub label: Option<String>,
8694}
8695
8696#[derive(Serialize, Deserialize, Debug, Clone)]
8697pub struct PackagesUpdateUsebydateV2RequestItem {
8698    #[serde(rename = "ExpirationDate")]
8699    pub expiration_date: Option<String>,
8700    #[serde(rename = "Label")]
8701    pub label: Option<String>,
8702    #[serde(rename = "SellByDate")]
8703    pub sell_by_date: Option<String>,
8704    #[serde(rename = "UseByDate")]
8705    pub use_by_date: Option<String>,
8706}
8707
8708#[derive(Serialize, Deserialize, Debug, Clone)]
8709pub struct PlantBatchesCreateAdditivesV1RequestItem {
8710    #[serde(rename = "ActiveIngredients")]
8711    pub active_ingredients: Option<Vec<PlantBatchesCreateAdditivesV1RequestItemActiveIngredients>>,
8712    #[serde(rename = "ActualDate")]
8713    pub actual_date: Option<String>,
8714    #[serde(rename = "AdditiveType")]
8715    pub additive_type: Option<String>,
8716    #[serde(rename = "ApplicationDevice")]
8717    pub application_device: Option<String>,
8718    #[serde(rename = "EpaRegistrationNumber")]
8719    pub epa_registration_number: Option<String>,
8720    #[serde(rename = "PlantBatchName")]
8721    pub plant_batch_name: Option<String>,
8722    #[serde(rename = "ProductSupplier")]
8723    pub product_supplier: Option<String>,
8724    #[serde(rename = "ProductTradeName")]
8725    pub product_trade_name: Option<String>,
8726    #[serde(rename = "TotalAmountApplied")]
8727    pub total_amount_applied: Option<i64>,
8728    #[serde(rename = "TotalAmountUnitOfMeasure")]
8729    pub total_amount_unit_of_measure: Option<String>,
8730}
8731
8732#[derive(Serialize, Deserialize, Debug, Clone)]
8733pub struct PlantBatchesCreateAdditivesV1RequestItemActiveIngredients {
8734    #[serde(rename = "Name")]
8735    pub name: Option<String>,
8736    #[serde(rename = "Percentage")]
8737    pub percentage: Option<f64>,
8738}
8739
8740#[derive(Serialize, Deserialize, Debug, Clone)]
8741pub struct PlantBatchesCreateAdditivesV2RequestItem {
8742    #[serde(rename = "ActiveIngredients")]
8743    pub active_ingredients: Option<Vec<PlantBatchesCreateAdditivesV2RequestItemActiveIngredients>>,
8744    #[serde(rename = "ActualDate")]
8745    pub actual_date: Option<String>,
8746    #[serde(rename = "AdditiveType")]
8747    pub additive_type: Option<String>,
8748    #[serde(rename = "ApplicationDevice")]
8749    pub application_device: Option<String>,
8750    #[serde(rename = "EpaRegistrationNumber")]
8751    pub epa_registration_number: Option<String>,
8752    #[serde(rename = "PlantBatchName")]
8753    pub plant_batch_name: Option<String>,
8754    #[serde(rename = "ProductSupplier")]
8755    pub product_supplier: Option<String>,
8756    #[serde(rename = "ProductTradeName")]
8757    pub product_trade_name: Option<String>,
8758    #[serde(rename = "TotalAmountApplied")]
8759    pub total_amount_applied: Option<i64>,
8760    #[serde(rename = "TotalAmountUnitOfMeasure")]
8761    pub total_amount_unit_of_measure: Option<String>,
8762}
8763
8764#[derive(Serialize, Deserialize, Debug, Clone)]
8765pub struct PlantBatchesCreateAdditivesV2RequestItemActiveIngredients {
8766    #[serde(rename = "Name")]
8767    pub name: Option<String>,
8768    #[serde(rename = "Percentage")]
8769    pub percentage: Option<f64>,
8770}
8771
8772#[derive(Serialize, Deserialize, Debug, Clone)]
8773pub struct PlantBatchesCreateAdditivesUsingtemplateV2RequestItem {
8774    #[serde(rename = "ActualDate")]
8775    pub actual_date: Option<String>,
8776    #[serde(rename = "AdditivesTemplateName")]
8777    pub additives_template_name: Option<String>,
8778    #[serde(rename = "PlantBatchName")]
8779    pub plant_batch_name: Option<String>,
8780    #[serde(rename = "Rate")]
8781    pub rate: Option<String>,
8782    #[serde(rename = "TotalAmountApplied")]
8783    pub total_amount_applied: Option<i64>,
8784    #[serde(rename = "TotalAmountUnitOfMeasure")]
8785    pub total_amount_unit_of_measure: Option<String>,
8786    #[serde(rename = "Volume")]
8787    pub volume: Option<String>,
8788}
8789
8790#[derive(Serialize, Deserialize, Debug, Clone)]
8791pub struct PlantBatchesCreateAdjustV1RequestItem {
8792    #[serde(rename = "AdjustmentDate")]
8793    pub adjustment_date: Option<String>,
8794    #[serde(rename = "AdjustmentReason")]
8795    pub adjustment_reason: Option<String>,
8796    #[serde(rename = "PlantBatchName")]
8797    pub plant_batch_name: Option<String>,
8798    #[serde(rename = "Quantity")]
8799    pub quantity: Option<i64>,
8800    #[serde(rename = "ReasonNote")]
8801    pub reason_note: Option<String>,
8802}
8803
8804#[derive(Serialize, Deserialize, Debug, Clone)]
8805pub struct PlantBatchesCreateAdjustV2RequestItem {
8806    #[serde(rename = "AdjustmentDate")]
8807    pub adjustment_date: Option<String>,
8808    #[serde(rename = "AdjustmentReason")]
8809    pub adjustment_reason: Option<String>,
8810    #[serde(rename = "PlantBatchName")]
8811    pub plant_batch_name: Option<String>,
8812    #[serde(rename = "Quantity")]
8813    pub quantity: Option<i64>,
8814    #[serde(rename = "ReasonNote")]
8815    pub reason_note: Option<String>,
8816}
8817
8818#[derive(Serialize, Deserialize, Debug, Clone)]
8819pub struct PlantBatchesCreateChangegrowthphaseV1RequestItem {
8820    #[serde(rename = "Count")]
8821    pub count: Option<i64>,
8822    #[serde(rename = "CountPerPlant")]
8823    pub count_per_plant: Option<String>,
8824    #[serde(rename = "GrowthDate")]
8825    pub growth_date: Option<String>,
8826    #[serde(rename = "GrowthPhase")]
8827    pub growth_phase: Option<String>,
8828    #[serde(rename = "Name")]
8829    pub name: Option<String>,
8830    #[serde(rename = "NewLocation")]
8831    pub new_location: Option<String>,
8832    #[serde(rename = "NewSublocation")]
8833    pub new_sublocation: Option<String>,
8834    #[serde(rename = "PatientLicenseNumber")]
8835    pub patient_license_number: Option<String>,
8836    #[serde(rename = "StartingTag")]
8837    pub starting_tag: Option<String>,
8838}
8839
8840#[derive(Serialize, Deserialize, Debug, Clone)]
8841pub struct PlantBatchesCreateGrowthphaseV2RequestItem {
8842    #[serde(rename = "Count")]
8843    pub count: Option<i64>,
8844    #[serde(rename = "CountPerPlant")]
8845    pub count_per_plant: Option<String>,
8846    #[serde(rename = "GrowthDate")]
8847    pub growth_date: Option<String>,
8848    #[serde(rename = "GrowthPhase")]
8849    pub growth_phase: Option<String>,
8850    #[serde(rename = "Name")]
8851    pub name: Option<String>,
8852    #[serde(rename = "NewLocation")]
8853    pub new_location: Option<String>,
8854    #[serde(rename = "NewSublocation")]
8855    pub new_sublocation: Option<String>,
8856    #[serde(rename = "PatientLicenseNumber")]
8857    pub patient_license_number: Option<String>,
8858    #[serde(rename = "StartingTag")]
8859    pub starting_tag: Option<String>,
8860}
8861
8862#[derive(Serialize, Deserialize, Debug, Clone)]
8863pub struct PlantBatchesCreatePackageV2RequestItem {
8864    #[serde(rename = "ActualDate")]
8865    pub actual_date: Option<String>,
8866    #[serde(rename = "Count")]
8867    pub count: Option<i64>,
8868    #[serde(rename = "ExpirationDate")]
8869    pub expiration_date: Option<String>,
8870    #[serde(rename = "Id")]
8871    pub id: Option<i64>,
8872    #[serde(rename = "IsDonation")]
8873    pub is_donation: Option<bool>,
8874    #[serde(rename = "IsTradeSample")]
8875    pub is_trade_sample: Option<bool>,
8876    #[serde(rename = "Item")]
8877    pub item: Option<String>,
8878    #[serde(rename = "Location")]
8879    pub location: Option<String>,
8880    #[serde(rename = "Note")]
8881    pub note: Option<String>,
8882    #[serde(rename = "PatientLicenseNumber")]
8883    pub patient_license_number: Option<String>,
8884    #[serde(rename = "PlantBatch")]
8885    pub plant_batch: Option<String>,
8886    #[serde(rename = "SellByDate")]
8887    pub sell_by_date: Option<String>,
8888    #[serde(rename = "Sublocation")]
8889    pub sublocation: Option<String>,
8890    #[serde(rename = "Tag")]
8891    pub tag: Option<String>,
8892    #[serde(rename = "UseByDate")]
8893    pub use_by_date: Option<String>,
8894}
8895
8896#[derive(Serialize, Deserialize, Debug, Clone)]
8897pub struct PlantBatchesCreatePackageFrommotherplantV1RequestItem {
8898    #[serde(rename = "ActualDate")]
8899    pub actual_date: Option<String>,
8900    #[serde(rename = "Count")]
8901    pub count: Option<i64>,
8902    #[serde(rename = "ExpirationDate")]
8903    pub expiration_date: Option<String>,
8904    #[serde(rename = "Id")]
8905    pub id: Option<i64>,
8906    #[serde(rename = "IsDonation")]
8907    pub is_donation: Option<bool>,
8908    #[serde(rename = "IsTradeSample")]
8909    pub is_trade_sample: Option<bool>,
8910    #[serde(rename = "Item")]
8911    pub item: Option<String>,
8912    #[serde(rename = "Location")]
8913    pub location: Option<String>,
8914    #[serde(rename = "Note")]
8915    pub note: Option<String>,
8916    #[serde(rename = "PatientLicenseNumber")]
8917    pub patient_license_number: Option<String>,
8918    #[serde(rename = "PlantBatch")]
8919    pub plant_batch: Option<String>,
8920    #[serde(rename = "SellByDate")]
8921    pub sell_by_date: Option<String>,
8922    #[serde(rename = "Sublocation")]
8923    pub sublocation: Option<String>,
8924    #[serde(rename = "Tag")]
8925    pub tag: Option<String>,
8926    #[serde(rename = "UseByDate")]
8927    pub use_by_date: Option<String>,
8928}
8929
8930#[derive(Serialize, Deserialize, Debug, Clone)]
8931pub struct PlantBatchesCreatePackageFrommotherplantV2RequestItem {
8932    #[serde(rename = "ActualDate")]
8933    pub actual_date: Option<String>,
8934    #[serde(rename = "Count")]
8935    pub count: Option<i64>,
8936    #[serde(rename = "ExpirationDate")]
8937    pub expiration_date: Option<String>,
8938    #[serde(rename = "Id")]
8939    pub id: Option<i64>,
8940    #[serde(rename = "IsDonation")]
8941    pub is_donation: Option<bool>,
8942    #[serde(rename = "IsTradeSample")]
8943    pub is_trade_sample: Option<bool>,
8944    #[serde(rename = "Item")]
8945    pub item: Option<String>,
8946    #[serde(rename = "Location")]
8947    pub location: Option<String>,
8948    #[serde(rename = "Note")]
8949    pub note: Option<String>,
8950    #[serde(rename = "PatientLicenseNumber")]
8951    pub patient_license_number: Option<String>,
8952    #[serde(rename = "PlantBatch")]
8953    pub plant_batch: Option<String>,
8954    #[serde(rename = "SellByDate")]
8955    pub sell_by_date: Option<String>,
8956    #[serde(rename = "Sublocation")]
8957    pub sublocation: Option<String>,
8958    #[serde(rename = "Tag")]
8959    pub tag: Option<String>,
8960    #[serde(rename = "UseByDate")]
8961    pub use_by_date: Option<String>,
8962}
8963
8964#[derive(Serialize, Deserialize, Debug, Clone)]
8965pub struct PlantBatchesCreatePlantingsV2RequestItem {
8966    #[serde(rename = "ActualDate")]
8967    pub actual_date: Option<String>,
8968    #[serde(rename = "Count")]
8969    pub count: Option<i64>,
8970    #[serde(rename = "Location")]
8971    pub location: Option<String>,
8972    #[serde(rename = "Name")]
8973    pub name: Option<String>,
8974    #[serde(rename = "PatientLicenseNumber")]
8975    pub patient_license_number: Option<String>,
8976    #[serde(rename = "SourcePlantBatches")]
8977    pub source_plant_batches: Option<String>,
8978    #[serde(rename = "Strain")]
8979    pub strain: Option<String>,
8980    #[serde(rename = "Sublocation")]
8981    pub sublocation: Option<String>,
8982    #[serde(rename = "Type")]
8983    pub type_: Option<String>,
8984}
8985
8986#[derive(Serialize, Deserialize, Debug, Clone)]
8987pub struct PlantBatchesCreateSplitV1RequestItem {
8988    #[serde(rename = "ActualDate")]
8989    pub actual_date: Option<String>,
8990    #[serde(rename = "Count")]
8991    pub count: Option<i64>,
8992    #[serde(rename = "GroupName")]
8993    pub group_name: Option<String>,
8994    #[serde(rename = "Location")]
8995    pub location: Option<String>,
8996    #[serde(rename = "PatientLicenseNumber")]
8997    pub patient_license_number: Option<String>,
8998    #[serde(rename = "PlantBatch")]
8999    pub plant_batch: Option<String>,
9000    #[serde(rename = "Strain")]
9001    pub strain: Option<String>,
9002    #[serde(rename = "Sublocation")]
9003    pub sublocation: Option<String>,
9004}
9005
9006#[derive(Serialize, Deserialize, Debug, Clone)]
9007pub struct PlantBatchesCreateSplitV2RequestItem {
9008    #[serde(rename = "ActualDate")]
9009    pub actual_date: Option<String>,
9010    #[serde(rename = "Count")]
9011    pub count: Option<i64>,
9012    #[serde(rename = "GroupName")]
9013    pub group_name: Option<String>,
9014    #[serde(rename = "Location")]
9015    pub location: Option<String>,
9016    #[serde(rename = "PatientLicenseNumber")]
9017    pub patient_license_number: Option<String>,
9018    #[serde(rename = "PlantBatch")]
9019    pub plant_batch: Option<String>,
9020    #[serde(rename = "Strain")]
9021    pub strain: Option<String>,
9022    #[serde(rename = "Sublocation")]
9023    pub sublocation: Option<String>,
9024}
9025
9026#[derive(Serialize, Deserialize, Debug, Clone)]
9027pub struct PlantBatchesCreateWasteV1RequestItem {
9028    #[serde(rename = "MixedMaterial")]
9029    pub mixed_material: Option<String>,
9030    #[serde(rename = "Note")]
9031    pub note: Option<String>,
9032    #[serde(rename = "PlantBatchName")]
9033    pub plant_batch_name: Option<String>,
9034    #[serde(rename = "ReasonName")]
9035    pub reason_name: Option<String>,
9036    #[serde(rename = "UnitOfMeasureName")]
9037    pub unit_of_measure_name: Option<String>,
9038    #[serde(rename = "WasteDate")]
9039    pub waste_date: Option<String>,
9040    #[serde(rename = "WasteMethodName")]
9041    pub waste_method_name: Option<String>,
9042    #[serde(rename = "WasteWeight")]
9043    pub waste_weight: Option<f64>,
9044}
9045
9046#[derive(Serialize, Deserialize, Debug, Clone)]
9047pub struct PlantBatchesCreateWasteV2RequestItem {
9048    #[serde(rename = "MixedMaterial")]
9049    pub mixed_material: Option<String>,
9050    #[serde(rename = "Note")]
9051    pub note: Option<String>,
9052    #[serde(rename = "PlantBatchName")]
9053    pub plant_batch_name: Option<String>,
9054    #[serde(rename = "ReasonName")]
9055    pub reason_name: Option<String>,
9056    #[serde(rename = "UnitOfMeasureName")]
9057    pub unit_of_measure_name: Option<String>,
9058    #[serde(rename = "WasteDate")]
9059    pub waste_date: Option<String>,
9060    #[serde(rename = "WasteMethodName")]
9061    pub waste_method_name: Option<String>,
9062    #[serde(rename = "WasteWeight")]
9063    pub waste_weight: Option<f64>,
9064}
9065
9066#[derive(Serialize, Deserialize, Debug, Clone)]
9067pub struct PlantBatchesCreatepackagesV1RequestItem {
9068    #[serde(rename = "ActualDate")]
9069    pub actual_date: Option<String>,
9070    #[serde(rename = "Count")]
9071    pub count: Option<i64>,
9072    #[serde(rename = "ExpirationDate")]
9073    pub expiration_date: Option<String>,
9074    #[serde(rename = "Id")]
9075    pub id: Option<i64>,
9076    #[serde(rename = "IsDonation")]
9077    pub is_donation: Option<bool>,
9078    #[serde(rename = "IsTradeSample")]
9079    pub is_trade_sample: Option<bool>,
9080    #[serde(rename = "Item")]
9081    pub item: Option<String>,
9082    #[serde(rename = "Location")]
9083    pub location: Option<String>,
9084    #[serde(rename = "Note")]
9085    pub note: Option<String>,
9086    #[serde(rename = "PatientLicenseNumber")]
9087    pub patient_license_number: Option<String>,
9088    #[serde(rename = "PlantBatch")]
9089    pub plant_batch: Option<String>,
9090    #[serde(rename = "SellByDate")]
9091    pub sell_by_date: Option<String>,
9092    #[serde(rename = "Sublocation")]
9093    pub sublocation: Option<String>,
9094    #[serde(rename = "Tag")]
9095    pub tag: Option<String>,
9096    #[serde(rename = "UseByDate")]
9097    pub use_by_date: Option<String>,
9098}
9099
9100#[derive(Serialize, Deserialize, Debug, Clone)]
9101pub struct PlantBatchesCreateplantingsV1RequestItem {
9102    #[serde(rename = "ActualDate")]
9103    pub actual_date: Option<String>,
9104    #[serde(rename = "Count")]
9105    pub count: Option<i64>,
9106    #[serde(rename = "Location")]
9107    pub location: Option<String>,
9108    #[serde(rename = "Name")]
9109    pub name: Option<String>,
9110    #[serde(rename = "PatientLicenseNumber")]
9111    pub patient_license_number: Option<String>,
9112    #[serde(rename = "SourcePlantBatches")]
9113    pub source_plant_batches: Option<String>,
9114    #[serde(rename = "Strain")]
9115    pub strain: Option<String>,
9116    #[serde(rename = "Sublocation")]
9117    pub sublocation: Option<String>,
9118    #[serde(rename = "Type")]
9119    pub type_: Option<String>,
9120}
9121
9122#[derive(Serialize, Deserialize, Debug, Clone)]
9123pub struct PlantBatchesUpdateLocationV2RequestItem {
9124    #[serde(rename = "Location")]
9125    pub location: Option<String>,
9126    #[serde(rename = "MoveDate")]
9127    pub move_date: Option<String>,
9128    #[serde(rename = "Name")]
9129    pub name: Option<String>,
9130    #[serde(rename = "Sublocation")]
9131    pub sublocation: Option<String>,
9132}
9133
9134#[derive(Serialize, Deserialize, Debug, Clone)]
9135pub struct PlantBatchesUpdateMoveplantbatchesV1RequestItem {
9136    #[serde(rename = "Location")]
9137    pub location: Option<String>,
9138    #[serde(rename = "MoveDate")]
9139    pub move_date: Option<String>,
9140    #[serde(rename = "Name")]
9141    pub name: Option<String>,
9142    #[serde(rename = "Sublocation")]
9143    pub sublocation: Option<String>,
9144}
9145
9146#[derive(Serialize, Deserialize, Debug, Clone)]
9147pub struct PlantBatchesUpdateNameV2RequestItem {
9148    #[serde(rename = "Group")]
9149    pub group: Option<String>,
9150    #[serde(rename = "Id")]
9151    pub id: Option<i64>,
9152    #[serde(rename = "NewGroup")]
9153    pub new_group: Option<String>,
9154}
9155
9156#[derive(Serialize, Deserialize, Debug, Clone)]
9157pub struct PlantBatchesUpdateStrainV2RequestItem {
9158    #[serde(rename = "Id")]
9159    pub id: Option<i64>,
9160    #[serde(rename = "Name")]
9161    pub name: Option<String>,
9162    #[serde(rename = "StrainId")]
9163    pub strain_id: Option<i64>,
9164    #[serde(rename = "StrainName")]
9165    pub strain_name: Option<String>,
9166}
9167
9168#[derive(Serialize, Deserialize, Debug, Clone)]
9169pub struct PlantBatchesUpdateTagV2RequestItem {
9170    #[serde(rename = "Group")]
9171    pub group: Option<String>,
9172    #[serde(rename = "Id")]
9173    pub id: Option<i64>,
9174    #[serde(rename = "NewTag")]
9175    pub new_tag: Option<String>,
9176    #[serde(rename = "ReplaceDate")]
9177    pub replace_date: Option<String>,
9178    #[serde(rename = "TagId")]
9179    pub tag_id: Option<i64>,
9180}
9181
9182#[derive(Serialize, Deserialize, Debug, Clone)]
9183pub struct PlantsCreateAdditivesV1RequestItem {
9184    #[serde(rename = "ActiveIngredients")]
9185    pub active_ingredients: Option<Vec<PlantsCreateAdditivesV1RequestItemActiveIngredients>>,
9186    #[serde(rename = "ActualDate")]
9187    pub actual_date: Option<String>,
9188    #[serde(rename = "AdditiveType")]
9189    pub additive_type: Option<String>,
9190    #[serde(rename = "ApplicationDevice")]
9191    pub application_device: Option<String>,
9192    #[serde(rename = "EpaRegistrationNumber")]
9193    pub epa_registration_number: Option<String>,
9194    #[serde(rename = "PlantLabels")]
9195    pub plant_labels: Option<Vec<String>>,
9196    #[serde(rename = "ProductSupplier")]
9197    pub product_supplier: Option<String>,
9198    #[serde(rename = "ProductTradeName")]
9199    pub product_trade_name: Option<String>,
9200    #[serde(rename = "TotalAmountApplied")]
9201    pub total_amount_applied: Option<i64>,
9202    #[serde(rename = "TotalAmountUnitOfMeasure")]
9203    pub total_amount_unit_of_measure: Option<String>,
9204}
9205
9206#[derive(Serialize, Deserialize, Debug, Clone)]
9207pub struct PlantsCreateAdditivesV1RequestItemActiveIngredients {
9208    #[serde(rename = "Name")]
9209    pub name: Option<String>,
9210    #[serde(rename = "Percentage")]
9211    pub percentage: Option<f64>,
9212}
9213
9214#[derive(Serialize, Deserialize, Debug, Clone)]
9215pub struct PlantsCreateAdditivesV2RequestItem {
9216    #[serde(rename = "ActiveIngredients")]
9217    pub active_ingredients: Option<Vec<PlantsCreateAdditivesV2RequestItemActiveIngredients>>,
9218    #[serde(rename = "ActualDate")]
9219    pub actual_date: Option<String>,
9220    #[serde(rename = "AdditiveType")]
9221    pub additive_type: Option<String>,
9222    #[serde(rename = "ApplicationDevice")]
9223    pub application_device: Option<String>,
9224    #[serde(rename = "EpaRegistrationNumber")]
9225    pub epa_registration_number: Option<String>,
9226    #[serde(rename = "PlantLabels")]
9227    pub plant_labels: Option<Vec<String>>,
9228    #[serde(rename = "ProductSupplier")]
9229    pub product_supplier: Option<String>,
9230    #[serde(rename = "ProductTradeName")]
9231    pub product_trade_name: Option<String>,
9232    #[serde(rename = "TotalAmountApplied")]
9233    pub total_amount_applied: Option<i64>,
9234    #[serde(rename = "TotalAmountUnitOfMeasure")]
9235    pub total_amount_unit_of_measure: Option<String>,
9236}
9237
9238#[derive(Serialize, Deserialize, Debug, Clone)]
9239pub struct PlantsCreateAdditivesV2RequestItemActiveIngredients {
9240    #[serde(rename = "Name")]
9241    pub name: Option<String>,
9242    #[serde(rename = "Percentage")]
9243    pub percentage: Option<f64>,
9244}
9245
9246#[derive(Serialize, Deserialize, Debug, Clone)]
9247pub struct PlantsCreateAdditivesBylocationV1RequestItem {
9248    #[serde(rename = "ActiveIngredients")]
9249    pub active_ingredients: Option<Vec<PlantsCreateAdditivesBylocationV1RequestItemActiveIngredients>>,
9250    #[serde(rename = "ActualDate")]
9251    pub actual_date: Option<String>,
9252    #[serde(rename = "AdditiveType")]
9253    pub additive_type: Option<String>,
9254    #[serde(rename = "ApplicationDevice")]
9255    pub application_device: Option<String>,
9256    #[serde(rename = "EpaRegistrationNumber")]
9257    pub epa_registration_number: Option<String>,
9258    #[serde(rename = "LocationName")]
9259    pub location_name: Option<String>,
9260    #[serde(rename = "ProductSupplier")]
9261    pub product_supplier: Option<String>,
9262    #[serde(rename = "ProductTradeName")]
9263    pub product_trade_name: Option<String>,
9264    #[serde(rename = "SublocationName")]
9265    pub sublocation_name: Option<String>,
9266    #[serde(rename = "TotalAmountApplied")]
9267    pub total_amount_applied: Option<i64>,
9268    #[serde(rename = "TotalAmountUnitOfMeasure")]
9269    pub total_amount_unit_of_measure: Option<String>,
9270}
9271
9272#[derive(Serialize, Deserialize, Debug, Clone)]
9273pub struct PlantsCreateAdditivesBylocationV1RequestItemActiveIngredients {
9274    #[serde(rename = "Name")]
9275    pub name: Option<String>,
9276    #[serde(rename = "Percentage")]
9277    pub percentage: Option<f64>,
9278}
9279
9280#[derive(Serialize, Deserialize, Debug, Clone)]
9281pub struct PlantsCreateAdditivesBylocationV2RequestItem {
9282    #[serde(rename = "ActiveIngredients")]
9283    pub active_ingredients: Option<Vec<PlantsCreateAdditivesBylocationV2RequestItemActiveIngredients>>,
9284    #[serde(rename = "ActualDate")]
9285    pub actual_date: Option<String>,
9286    #[serde(rename = "AdditiveType")]
9287    pub additive_type: Option<String>,
9288    #[serde(rename = "ApplicationDevice")]
9289    pub application_device: Option<String>,
9290    #[serde(rename = "EpaRegistrationNumber")]
9291    pub epa_registration_number: Option<String>,
9292    #[serde(rename = "LocationName")]
9293    pub location_name: Option<String>,
9294    #[serde(rename = "ProductSupplier")]
9295    pub product_supplier: Option<String>,
9296    #[serde(rename = "ProductTradeName")]
9297    pub product_trade_name: Option<String>,
9298    #[serde(rename = "SublocationName")]
9299    pub sublocation_name: Option<String>,
9300    #[serde(rename = "TotalAmountApplied")]
9301    pub total_amount_applied: Option<i64>,
9302    #[serde(rename = "TotalAmountUnitOfMeasure")]
9303    pub total_amount_unit_of_measure: Option<String>,
9304}
9305
9306#[derive(Serialize, Deserialize, Debug, Clone)]
9307pub struct PlantsCreateAdditivesBylocationV2RequestItemActiveIngredients {
9308    #[serde(rename = "Name")]
9309    pub name: Option<String>,
9310    #[serde(rename = "Percentage")]
9311    pub percentage: Option<f64>,
9312}
9313
9314#[derive(Serialize, Deserialize, Debug, Clone)]
9315pub struct PlantsCreateAdditivesBylocationUsingtemplateV2RequestItem {
9316    #[serde(rename = "ActualDate")]
9317    pub actual_date: Option<String>,
9318    #[serde(rename = "AdditivesTemplateName")]
9319    pub additives_template_name: Option<String>,
9320    #[serde(rename = "LocationName")]
9321    pub location_name: Option<String>,
9322    #[serde(rename = "Rate")]
9323    pub rate: Option<String>,
9324    #[serde(rename = "SublocationName")]
9325    pub sublocation_name: Option<String>,
9326    #[serde(rename = "TotalAmountApplied")]
9327    pub total_amount_applied: Option<i64>,
9328    #[serde(rename = "TotalAmountUnitOfMeasure")]
9329    pub total_amount_unit_of_measure: Option<String>,
9330    #[serde(rename = "Volume")]
9331    pub volume: Option<String>,
9332}
9333
9334#[derive(Serialize, Deserialize, Debug, Clone)]
9335pub struct PlantsCreateAdditivesUsingtemplateV2RequestItem {
9336    #[serde(rename = "ActualDate")]
9337    pub actual_date: Option<String>,
9338    #[serde(rename = "AdditivesTemplateName")]
9339    pub additives_template_name: Option<String>,
9340    #[serde(rename = "PlantLabels")]
9341    pub plant_labels: Option<Vec<String>>,
9342    #[serde(rename = "Rate")]
9343    pub rate: Option<String>,
9344    #[serde(rename = "TotalAmountApplied")]
9345    pub total_amount_applied: Option<i64>,
9346    #[serde(rename = "TotalAmountUnitOfMeasure")]
9347    pub total_amount_unit_of_measure: Option<String>,
9348    #[serde(rename = "Volume")]
9349    pub volume: Option<String>,
9350}
9351
9352#[derive(Serialize, Deserialize, Debug, Clone)]
9353pub struct PlantsCreateChangegrowthphasesV1RequestItem {
9354    #[serde(rename = "GrowthDate")]
9355    pub growth_date: Option<String>,
9356    #[serde(rename = "GrowthPhase")]
9357    pub growth_phase: Option<String>,
9358    #[serde(rename = "Id")]
9359    pub id: Option<i64>,
9360    #[serde(rename = "Label")]
9361    pub label: Option<String>,
9362    #[serde(rename = "NewLocation")]
9363    pub new_location: Option<String>,
9364    #[serde(rename = "NewSublocation")]
9365    pub new_sublocation: Option<String>,
9366    #[serde(rename = "NewTag")]
9367    pub new_tag: Option<String>,
9368}
9369
9370#[derive(Serialize, Deserialize, Debug, Clone)]
9371pub struct PlantsCreateHarvestplantsV1RequestItem {
9372    #[serde(rename = "ActualDate")]
9373    pub actual_date: Option<String>,
9374    #[serde(rename = "DryingLocation")]
9375    pub drying_location: Option<String>,
9376    #[serde(rename = "DryingSublocation")]
9377    pub drying_sublocation: Option<String>,
9378    #[serde(rename = "HarvestName")]
9379    pub harvest_name: Option<String>,
9380    #[serde(rename = "PatientLicenseNumber")]
9381    pub patient_license_number: Option<String>,
9382    #[serde(rename = "Plant")]
9383    pub plant: Option<String>,
9384    #[serde(rename = "UnitOfWeight")]
9385    pub unit_of_weight: Option<String>,
9386    #[serde(rename = "Weight")]
9387    pub weight: Option<f64>,
9388}
9389
9390#[derive(Serialize, Deserialize, Debug, Clone)]
9391pub struct PlantsCreateManicureV2RequestItem {
9392    #[serde(rename = "ActualDate")]
9393    pub actual_date: Option<String>,
9394    #[serde(rename = "DryingLocation")]
9395    pub drying_location: Option<String>,
9396    #[serde(rename = "DryingSublocation")]
9397    pub drying_sublocation: Option<String>,
9398    #[serde(rename = "HarvestName")]
9399    pub harvest_name: Option<String>,
9400    #[serde(rename = "PatientLicenseNumber")]
9401    pub patient_license_number: Option<String>,
9402    #[serde(rename = "Plant")]
9403    pub plant: Option<String>,
9404    #[serde(rename = "PlantCount")]
9405    pub plant_count: Option<i64>,
9406    #[serde(rename = "UnitOfWeight")]
9407    pub unit_of_weight: Option<String>,
9408    #[serde(rename = "Weight")]
9409    pub weight: Option<f64>,
9410}
9411
9412#[derive(Serialize, Deserialize, Debug, Clone)]
9413pub struct PlantsCreateManicureplantsV1RequestItem {
9414    #[serde(rename = "ActualDate")]
9415    pub actual_date: Option<String>,
9416    #[serde(rename = "DryingLocation")]
9417    pub drying_location: Option<String>,
9418    #[serde(rename = "DryingSublocation")]
9419    pub drying_sublocation: Option<String>,
9420    #[serde(rename = "HarvestName")]
9421    pub harvest_name: Option<String>,
9422    #[serde(rename = "PatientLicenseNumber")]
9423    pub patient_license_number: Option<String>,
9424    #[serde(rename = "Plant")]
9425    pub plant: Option<String>,
9426    #[serde(rename = "PlantCount")]
9427    pub plant_count: Option<i64>,
9428    #[serde(rename = "UnitOfWeight")]
9429    pub unit_of_weight: Option<String>,
9430    #[serde(rename = "Weight")]
9431    pub weight: Option<f64>,
9432}
9433
9434#[derive(Serialize, Deserialize, Debug, Clone)]
9435pub struct PlantsCreateMoveplantsV1RequestItem {
9436    #[serde(rename = "ActualDate")]
9437    pub actual_date: Option<String>,
9438    #[serde(rename = "Id")]
9439    pub id: Option<i64>,
9440    #[serde(rename = "Label")]
9441    pub label: Option<String>,
9442    #[serde(rename = "Location")]
9443    pub location: Option<String>,
9444    #[serde(rename = "Sublocation")]
9445    pub sublocation: Option<String>,
9446}
9447
9448#[derive(Serialize, Deserialize, Debug, Clone)]
9449pub struct PlantsCreatePlantbatchPackageV1RequestItem {
9450    #[serde(rename = "ActualDate")]
9451    pub actual_date: Option<String>,
9452    #[serde(rename = "Count")]
9453    pub count: Option<i64>,
9454    #[serde(rename = "IsDonation")]
9455    pub is_donation: Option<bool>,
9456    #[serde(rename = "IsTradeSample")]
9457    pub is_trade_sample: Option<bool>,
9458    #[serde(rename = "Item")]
9459    pub item: Option<String>,
9460    #[serde(rename = "Location")]
9461    pub location: Option<String>,
9462    #[serde(rename = "Note")]
9463    pub note: Option<String>,
9464    #[serde(rename = "PackageTag")]
9465    pub package_tag: Option<String>,
9466    #[serde(rename = "PatientLicenseNumber")]
9467    pub patient_license_number: Option<String>,
9468    #[serde(rename = "PlantBatchType")]
9469    pub plant_batch_type: Option<String>,
9470    #[serde(rename = "PlantLabel")]
9471    pub plant_label: Option<String>,
9472    #[serde(rename = "Sublocation")]
9473    pub sublocation: Option<String>,
9474}
9475
9476#[derive(Serialize, Deserialize, Debug, Clone)]
9477pub struct PlantsCreatePlantbatchPackageV2RequestItem {
9478    #[serde(rename = "ActualDate")]
9479    pub actual_date: Option<String>,
9480    #[serde(rename = "Count")]
9481    pub count: Option<i64>,
9482    #[serde(rename = "IsDonation")]
9483    pub is_donation: Option<bool>,
9484    #[serde(rename = "IsTradeSample")]
9485    pub is_trade_sample: Option<bool>,
9486    #[serde(rename = "Item")]
9487    pub item: Option<String>,
9488    #[serde(rename = "Location")]
9489    pub location: Option<String>,
9490    #[serde(rename = "Note")]
9491    pub note: Option<String>,
9492    #[serde(rename = "PackageTag")]
9493    pub package_tag: Option<String>,
9494    #[serde(rename = "PatientLicenseNumber")]
9495    pub patient_license_number: Option<String>,
9496    #[serde(rename = "PlantBatchType")]
9497    pub plant_batch_type: Option<String>,
9498    #[serde(rename = "PlantLabel")]
9499    pub plant_label: Option<String>,
9500    #[serde(rename = "Sublocation")]
9501    pub sublocation: Option<String>,
9502}
9503
9504#[derive(Serialize, Deserialize, Debug, Clone)]
9505pub struct PlantsCreatePlantingsV1RequestItem {
9506    #[serde(rename = "ActualDate")]
9507    pub actual_date: Option<String>,
9508    #[serde(rename = "LocationName")]
9509    pub location_name: Option<String>,
9510    #[serde(rename = "PatientLicenseNumber")]
9511    pub patient_license_number: Option<String>,
9512    #[serde(rename = "PlantBatchName")]
9513    pub plant_batch_name: Option<String>,
9514    #[serde(rename = "PlantBatchType")]
9515    pub plant_batch_type: Option<String>,
9516    #[serde(rename = "PlantCount")]
9517    pub plant_count: Option<i64>,
9518    #[serde(rename = "PlantLabel")]
9519    pub plant_label: Option<String>,
9520    #[serde(rename = "StrainName")]
9521    pub strain_name: Option<String>,
9522    #[serde(rename = "SublocationName")]
9523    pub sublocation_name: Option<String>,
9524}
9525
9526#[derive(Serialize, Deserialize, Debug, Clone)]
9527pub struct PlantsCreatePlantingsV2RequestItem {
9528    #[serde(rename = "ActualDate")]
9529    pub actual_date: Option<String>,
9530    #[serde(rename = "LocationName")]
9531    pub location_name: Option<String>,
9532    #[serde(rename = "PatientLicenseNumber")]
9533    pub patient_license_number: Option<String>,
9534    #[serde(rename = "PlantBatchName")]
9535    pub plant_batch_name: Option<String>,
9536    #[serde(rename = "PlantBatchType")]
9537    pub plant_batch_type: Option<String>,
9538    #[serde(rename = "PlantCount")]
9539    pub plant_count: Option<i64>,
9540    #[serde(rename = "PlantLabel")]
9541    pub plant_label: Option<String>,
9542    #[serde(rename = "StrainName")]
9543    pub strain_name: Option<String>,
9544    #[serde(rename = "SublocationName")]
9545    pub sublocation_name: Option<String>,
9546}
9547
9548#[derive(Serialize, Deserialize, Debug, Clone)]
9549pub struct PlantsCreateWasteV1RequestItem {
9550    #[serde(rename = "LocationName")]
9551    pub location_name: Option<String>,
9552    #[serde(rename = "MixedMaterial")]
9553    pub mixed_material: Option<String>,
9554    #[serde(rename = "Note")]
9555    pub note: Option<String>,
9556    #[serde(rename = "PlantLabels")]
9557    pub plant_labels: Option<Vec<Value>>,
9558    #[serde(rename = "ReasonName")]
9559    pub reason_name: Option<String>,
9560    #[serde(rename = "SublocationName")]
9561    pub sublocation_name: Option<String>,
9562    #[serde(rename = "UnitOfMeasureName")]
9563    pub unit_of_measure_name: Option<String>,
9564    #[serde(rename = "WasteDate")]
9565    pub waste_date: Option<String>,
9566    #[serde(rename = "WasteMethodName")]
9567    pub waste_method_name: Option<String>,
9568    #[serde(rename = "WasteWeight")]
9569    pub waste_weight: Option<f64>,
9570}
9571
9572#[derive(Serialize, Deserialize, Debug, Clone)]
9573pub struct PlantsCreateWasteV2RequestItem {
9574    #[serde(rename = "LocationName")]
9575    pub location_name: Option<String>,
9576    #[serde(rename = "MixedMaterial")]
9577    pub mixed_material: Option<String>,
9578    #[serde(rename = "Note")]
9579    pub note: Option<String>,
9580    #[serde(rename = "PlantLabels")]
9581    pub plant_labels: Option<Vec<Value>>,
9582    #[serde(rename = "ReasonName")]
9583    pub reason_name: Option<String>,
9584    #[serde(rename = "SublocationName")]
9585    pub sublocation_name: Option<String>,
9586    #[serde(rename = "UnitOfMeasureName")]
9587    pub unit_of_measure_name: Option<String>,
9588    #[serde(rename = "WasteDate")]
9589    pub waste_date: Option<String>,
9590    #[serde(rename = "WasteMethodName")]
9591    pub waste_method_name: Option<String>,
9592    #[serde(rename = "WasteWeight")]
9593    pub waste_weight: Option<f64>,
9594}
9595
9596#[derive(Serialize, Deserialize, Debug, Clone)]
9597pub struct PlantsUpdateAdjustV2RequestItem {
9598    #[serde(rename = "AdjustCount")]
9599    pub adjust_count: Option<i64>,
9600    #[serde(rename = "AdjustReason")]
9601    pub adjust_reason: Option<String>,
9602    #[serde(rename = "AdjustmentDate")]
9603    pub adjustment_date: Option<String>,
9604    #[serde(rename = "Id")]
9605    pub id: Option<i64>,
9606    #[serde(rename = "Label")]
9607    pub label: Option<String>,
9608    #[serde(rename = "ReasonNote")]
9609    pub reason_note: Option<String>,
9610}
9611
9612#[derive(Serialize, Deserialize, Debug, Clone)]
9613pub struct PlantsUpdateGrowthphaseV2RequestItem {
9614    #[serde(rename = "GrowthDate")]
9615    pub growth_date: Option<String>,
9616    #[serde(rename = "GrowthPhase")]
9617    pub growth_phase: Option<String>,
9618    #[serde(rename = "Id")]
9619    pub id: Option<i64>,
9620    #[serde(rename = "Label")]
9621    pub label: Option<String>,
9622    #[serde(rename = "NewLocation")]
9623    pub new_location: Option<String>,
9624    #[serde(rename = "NewSublocation")]
9625    pub new_sublocation: Option<String>,
9626    #[serde(rename = "NewTag")]
9627    pub new_tag: Option<String>,
9628}
9629
9630#[derive(Serialize, Deserialize, Debug, Clone)]
9631pub struct PlantsUpdateHarvestV2RequestItem {
9632    #[serde(rename = "ActualDate")]
9633    pub actual_date: Option<String>,
9634    #[serde(rename = "DryingLocation")]
9635    pub drying_location: Option<String>,
9636    #[serde(rename = "DryingSublocation")]
9637    pub drying_sublocation: Option<String>,
9638    #[serde(rename = "HarvestName")]
9639    pub harvest_name: Option<String>,
9640    #[serde(rename = "PatientLicenseNumber")]
9641    pub patient_license_number: Option<String>,
9642    #[serde(rename = "Plant")]
9643    pub plant: Option<String>,
9644    #[serde(rename = "UnitOfWeight")]
9645    pub unit_of_weight: Option<String>,
9646    #[serde(rename = "Weight")]
9647    pub weight: Option<f64>,
9648}
9649
9650#[derive(Serialize, Deserialize, Debug, Clone)]
9651pub struct PlantsUpdateLocationV2RequestItem {
9652    #[serde(rename = "ActualDate")]
9653    pub actual_date: Option<String>,
9654    #[serde(rename = "Id")]
9655    pub id: Option<i64>,
9656    #[serde(rename = "Label")]
9657    pub label: Option<String>,
9658    #[serde(rename = "Location")]
9659    pub location: Option<String>,
9660    #[serde(rename = "Sublocation")]
9661    pub sublocation: Option<String>,
9662}
9663
9664#[derive(Serialize, Deserialize, Debug, Clone)]
9665pub struct PlantsUpdateMergeV2RequestItem {
9666    #[serde(rename = "MergeDate")]
9667    pub merge_date: Option<String>,
9668    #[serde(rename = "SourcePlantGroupLabel")]
9669    pub source_plant_group_label: Option<String>,
9670    #[serde(rename = "TargetPlantGroupLabel")]
9671    pub target_plant_group_label: Option<String>,
9672}
9673
9674#[derive(Serialize, Deserialize, Debug, Clone)]
9675pub struct PlantsUpdateSplitV2RequestItem {
9676    #[serde(rename = "PlantCount")]
9677    pub plant_count: Option<i64>,
9678    #[serde(rename = "SourcePlantLabel")]
9679    pub source_plant_label: Option<String>,
9680    #[serde(rename = "SplitDate")]
9681    pub split_date: Option<String>,
9682    #[serde(rename = "StrainLabel")]
9683    pub strain_label: Option<String>,
9684    #[serde(rename = "TagLabel")]
9685    pub tag_label: Option<String>,
9686}
9687
9688#[derive(Serialize, Deserialize, Debug, Clone)]
9689pub struct PlantsUpdateStrainV2RequestItem {
9690    #[serde(rename = "Id")]
9691    pub id: Option<i64>,
9692    #[serde(rename = "Label")]
9693    pub label: Option<String>,
9694    #[serde(rename = "StrainId")]
9695    pub strain_id: Option<i64>,
9696    #[serde(rename = "StrainName")]
9697    pub strain_name: Option<String>,
9698}
9699
9700#[derive(Serialize, Deserialize, Debug, Clone)]
9701pub struct PlantsUpdateTagV2RequestItem {
9702    #[serde(rename = "Id")]
9703    pub id: Option<i64>,
9704    #[serde(rename = "Label")]
9705    pub label: Option<String>,
9706    #[serde(rename = "NewTag")]
9707    pub new_tag: Option<String>,
9708    #[serde(rename = "ReplaceDate")]
9709    pub replace_date: Option<String>,
9710    #[serde(rename = "TagId")]
9711    pub tag_id: Option<i64>,
9712}
9713
9714#[derive(Serialize, Deserialize, Debug, Clone)]
9715pub struct ProcessingJobsCreateAdjustV1RequestItem {
9716    #[serde(rename = "AdjustmentDate")]
9717    pub adjustment_date: Option<String>,
9718    #[serde(rename = "AdjustmentNote")]
9719    pub adjustment_note: Option<String>,
9720    #[serde(rename = "AdjustmentReason")]
9721    pub adjustment_reason: Option<String>,
9722    #[serde(rename = "CountUnitOfMeasureName")]
9723    pub count_unit_of_measure_name: Option<String>,
9724    #[serde(rename = "Id")]
9725    pub id: Option<i64>,
9726    #[serde(rename = "Packages")]
9727    pub packages: Option<Vec<ProcessingJobsCreateAdjustV1RequestItemPackages>>,
9728    #[serde(rename = "VolumeUnitOfMeasureName")]
9729    pub volume_unit_of_measure_name: Option<String>,
9730    #[serde(rename = "WeightUnitOfMeasureName")]
9731    pub weight_unit_of_measure_name: Option<String>,
9732}
9733
9734#[derive(Serialize, Deserialize, Debug, Clone)]
9735pub struct ProcessingJobsCreateAdjustV1RequestItemPackages {
9736    #[serde(rename = "Label")]
9737    pub label: Option<String>,
9738    #[serde(rename = "Quantity")]
9739    pub quantity: Option<i64>,
9740    #[serde(rename = "UnitOfMeasure")]
9741    pub unit_of_measure: Option<String>,
9742}
9743
9744#[derive(Serialize, Deserialize, Debug, Clone)]
9745pub struct ProcessingJobsCreateAdjustV2RequestItem {
9746    #[serde(rename = "AdjustmentDate")]
9747    pub adjustment_date: Option<String>,
9748    #[serde(rename = "AdjustmentNote")]
9749    pub adjustment_note: Option<String>,
9750    #[serde(rename = "AdjustmentReason")]
9751    pub adjustment_reason: Option<String>,
9752    #[serde(rename = "CountUnitOfMeasureName")]
9753    pub count_unit_of_measure_name: Option<String>,
9754    #[serde(rename = "Id")]
9755    pub id: Option<i64>,
9756    #[serde(rename = "Packages")]
9757    pub packages: Option<Vec<ProcessingJobsCreateAdjustV2RequestItemPackages>>,
9758    #[serde(rename = "VolumeUnitOfMeasureName")]
9759    pub volume_unit_of_measure_name: Option<String>,
9760    #[serde(rename = "WeightUnitOfMeasureName")]
9761    pub weight_unit_of_measure_name: Option<String>,
9762}
9763
9764#[derive(Serialize, Deserialize, Debug, Clone)]
9765pub struct ProcessingJobsCreateAdjustV2RequestItemPackages {
9766    #[serde(rename = "Label")]
9767    pub label: Option<String>,
9768    #[serde(rename = "Quantity")]
9769    pub quantity: Option<i64>,
9770    #[serde(rename = "UnitOfMeasure")]
9771    pub unit_of_measure: Option<String>,
9772}
9773
9774#[derive(Serialize, Deserialize, Debug, Clone)]
9775pub struct ProcessingJobsCreateJobtypesV1RequestItem {
9776    #[serde(rename = "Attributes")]
9777    pub attributes: Option<Vec<String>>,
9778    #[serde(rename = "Category")]
9779    pub category: Option<String>,
9780    #[serde(rename = "Description")]
9781    pub description: Option<String>,
9782    #[serde(rename = "Name")]
9783    pub name: Option<String>,
9784    #[serde(rename = "ProcessingSteps")]
9785    pub processing_steps: Option<String>,
9786}
9787
9788#[derive(Serialize, Deserialize, Debug, Clone)]
9789pub struct ProcessingJobsCreateJobtypesV2RequestItem {
9790    #[serde(rename = "Attributes")]
9791    pub attributes: Option<Vec<String>>,
9792    #[serde(rename = "Category")]
9793    pub category: Option<String>,
9794    #[serde(rename = "Description")]
9795    pub description: Option<String>,
9796    #[serde(rename = "Name")]
9797    pub name: Option<String>,
9798    #[serde(rename = "ProcessingSteps")]
9799    pub processing_steps: Option<String>,
9800}
9801
9802#[derive(Serialize, Deserialize, Debug, Clone)]
9803pub struct ProcessingJobsCreateStartV1RequestItem {
9804    #[serde(rename = "CountUnitOfMeasure")]
9805    pub count_unit_of_measure: Option<String>,
9806    #[serde(rename = "JobName")]
9807    pub job_name: Option<String>,
9808    #[serde(rename = "JobType")]
9809    pub job_type: Option<String>,
9810    #[serde(rename = "Packages")]
9811    pub packages: Option<Vec<ProcessingJobsCreateStartV1RequestItemPackages>>,
9812    #[serde(rename = "StartDate")]
9813    pub start_date: Option<String>,
9814    #[serde(rename = "VolumeUnitOfMeasure")]
9815    pub volume_unit_of_measure: Option<String>,
9816    #[serde(rename = "WeightUnitOfMeasure")]
9817    pub weight_unit_of_measure: Option<String>,
9818}
9819
9820#[derive(Serialize, Deserialize, Debug, Clone)]
9821pub struct ProcessingJobsCreateStartV1RequestItemPackages {
9822    #[serde(rename = "Label")]
9823    pub label: Option<String>,
9824    #[serde(rename = "Quantity")]
9825    pub quantity: Option<i64>,
9826    #[serde(rename = "UnitOfMeasure")]
9827    pub unit_of_measure: Option<String>,
9828}
9829
9830#[derive(Serialize, Deserialize, Debug, Clone)]
9831pub struct ProcessingJobsCreateStartV2RequestItem {
9832    #[serde(rename = "CountUnitOfMeasure")]
9833    pub count_unit_of_measure: Option<String>,
9834    #[serde(rename = "JobName")]
9835    pub job_name: Option<String>,
9836    #[serde(rename = "JobType")]
9837    pub job_type: Option<String>,
9838    #[serde(rename = "Packages")]
9839    pub packages: Option<Vec<ProcessingJobsCreateStartV2RequestItemPackages>>,
9840    #[serde(rename = "StartDate")]
9841    pub start_date: Option<String>,
9842    #[serde(rename = "VolumeUnitOfMeasure")]
9843    pub volume_unit_of_measure: Option<String>,
9844    #[serde(rename = "WeightUnitOfMeasure")]
9845    pub weight_unit_of_measure: Option<String>,
9846}
9847
9848#[derive(Serialize, Deserialize, Debug, Clone)]
9849pub struct ProcessingJobsCreateStartV2RequestItemPackages {
9850    #[serde(rename = "Label")]
9851    pub label: Option<String>,
9852    #[serde(rename = "Quantity")]
9853    pub quantity: Option<i64>,
9854    #[serde(rename = "UnitOfMeasure")]
9855    pub unit_of_measure: Option<String>,
9856}
9857
9858#[derive(Serialize, Deserialize, Debug, Clone)]
9859pub struct ProcessingJobsCreatepackagesV1RequestItem {
9860    #[serde(rename = "ExpirationDate")]
9861    pub expiration_date: Option<String>,
9862    #[serde(rename = "FinishDate")]
9863    pub finish_date: Option<String>,
9864    #[serde(rename = "FinishNote")]
9865    pub finish_note: Option<String>,
9866    #[serde(rename = "FinishProcessingJob")]
9867    pub finish_processing_job: Option<bool>,
9868    #[serde(rename = "Item")]
9869    pub item: Option<String>,
9870    #[serde(rename = "JobName")]
9871    pub job_name: Option<String>,
9872    #[serde(rename = "Location")]
9873    pub location: Option<String>,
9874    #[serde(rename = "Note")]
9875    pub note: Option<String>,
9876    #[serde(rename = "PackageDate")]
9877    pub package_date: Option<String>,
9878    #[serde(rename = "PatientLicenseNumber")]
9879    pub patient_license_number: Option<String>,
9880    #[serde(rename = "ProductionBatchNumber")]
9881    pub production_batch_number: Option<String>,
9882    #[serde(rename = "Quantity")]
9883    pub quantity: Option<i64>,
9884    #[serde(rename = "SellByDate")]
9885    pub sell_by_date: Option<String>,
9886    #[serde(rename = "Sublocation")]
9887    pub sublocation: Option<String>,
9888    #[serde(rename = "Tag")]
9889    pub tag: Option<String>,
9890    #[serde(rename = "UnitOfMeasure")]
9891    pub unit_of_measure: Option<String>,
9892    #[serde(rename = "UseByDate")]
9893    pub use_by_date: Option<String>,
9894    #[serde(rename = "WasteCountQuantity")]
9895    pub waste_count_quantity: Option<String>,
9896    #[serde(rename = "WasteCountUnitOfMeasureName")]
9897    pub waste_count_unit_of_measure_name: Option<String>,
9898    #[serde(rename = "WasteVolumeQuantity")]
9899    pub waste_volume_quantity: Option<String>,
9900    #[serde(rename = "WasteVolumeUnitOfMeasureName")]
9901    pub waste_volume_unit_of_measure_name: Option<String>,
9902    #[serde(rename = "WasteWeightQuantity")]
9903    pub waste_weight_quantity: Option<String>,
9904    #[serde(rename = "WasteWeightUnitOfMeasureName")]
9905    pub waste_weight_unit_of_measure_name: Option<String>,
9906}
9907
9908#[derive(Serialize, Deserialize, Debug, Clone)]
9909pub struct ProcessingJobsCreatepackagesV2RequestItem {
9910    #[serde(rename = "ExpirationDate")]
9911    pub expiration_date: Option<String>,
9912    #[serde(rename = "FinishDate")]
9913    pub finish_date: Option<String>,
9914    #[serde(rename = "FinishNote")]
9915    pub finish_note: Option<String>,
9916    #[serde(rename = "FinishProcessingJob")]
9917    pub finish_processing_job: Option<bool>,
9918    #[serde(rename = "Item")]
9919    pub item: Option<String>,
9920    #[serde(rename = "JobName")]
9921    pub job_name: Option<String>,
9922    #[serde(rename = "Location")]
9923    pub location: Option<String>,
9924    #[serde(rename = "Note")]
9925    pub note: Option<String>,
9926    #[serde(rename = "PackageDate")]
9927    pub package_date: Option<String>,
9928    #[serde(rename = "PatientLicenseNumber")]
9929    pub patient_license_number: Option<String>,
9930    #[serde(rename = "ProductionBatchNumber")]
9931    pub production_batch_number: Option<String>,
9932    #[serde(rename = "Quantity")]
9933    pub quantity: Option<i64>,
9934    #[serde(rename = "SellByDate")]
9935    pub sell_by_date: Option<String>,
9936    #[serde(rename = "Sublocation")]
9937    pub sublocation: Option<String>,
9938    #[serde(rename = "Tag")]
9939    pub tag: Option<String>,
9940    #[serde(rename = "UnitOfMeasure")]
9941    pub unit_of_measure: Option<String>,
9942    #[serde(rename = "UseByDate")]
9943    pub use_by_date: Option<String>,
9944    #[serde(rename = "WasteCountQuantity")]
9945    pub waste_count_quantity: Option<String>,
9946    #[serde(rename = "WasteCountUnitOfMeasureName")]
9947    pub waste_count_unit_of_measure_name: Option<String>,
9948    #[serde(rename = "WasteVolumeQuantity")]
9949    pub waste_volume_quantity: Option<String>,
9950    #[serde(rename = "WasteVolumeUnitOfMeasureName")]
9951    pub waste_volume_unit_of_measure_name: Option<String>,
9952    #[serde(rename = "WasteWeightQuantity")]
9953    pub waste_weight_quantity: Option<String>,
9954    #[serde(rename = "WasteWeightUnitOfMeasureName")]
9955    pub waste_weight_unit_of_measure_name: Option<String>,
9956}
9957
9958#[derive(Serialize, Deserialize, Debug, Clone)]
9959pub struct ProcessingJobsUpdateFinishV1RequestItem {
9960    #[serde(rename = "FinishDate")]
9961    pub finish_date: Option<String>,
9962    #[serde(rename = "FinishNote")]
9963    pub finish_note: Option<String>,
9964    #[serde(rename = "Id")]
9965    pub id: Option<i64>,
9966    #[serde(rename = "TotalCountWaste")]
9967    pub total_count_waste: Option<String>,
9968    #[serde(rename = "TotalVolumeWaste")]
9969    pub total_volume_waste: Option<String>,
9970    #[serde(rename = "TotalWeightWaste")]
9971    pub total_weight_waste: Option<i64>,
9972    #[serde(rename = "WasteCountUnitOfMeasureName")]
9973    pub waste_count_unit_of_measure_name: Option<String>,
9974    #[serde(rename = "WasteVolumeUnitOfMeasureName")]
9975    pub waste_volume_unit_of_measure_name: Option<String>,
9976    #[serde(rename = "WasteWeightUnitOfMeasureName")]
9977    pub waste_weight_unit_of_measure_name: Option<String>,
9978}
9979
9980#[derive(Serialize, Deserialize, Debug, Clone)]
9981pub struct ProcessingJobsUpdateFinishV2RequestItem {
9982    #[serde(rename = "FinishDate")]
9983    pub finish_date: Option<String>,
9984    #[serde(rename = "FinishNote")]
9985    pub finish_note: Option<String>,
9986    #[serde(rename = "Id")]
9987    pub id: Option<i64>,
9988    #[serde(rename = "TotalCountWaste")]
9989    pub total_count_waste: Option<String>,
9990    #[serde(rename = "TotalVolumeWaste")]
9991    pub total_volume_waste: Option<String>,
9992    #[serde(rename = "TotalWeightWaste")]
9993    pub total_weight_waste: Option<i64>,
9994    #[serde(rename = "WasteCountUnitOfMeasureName")]
9995    pub waste_count_unit_of_measure_name: Option<String>,
9996    #[serde(rename = "WasteVolumeUnitOfMeasureName")]
9997    pub waste_volume_unit_of_measure_name: Option<String>,
9998    #[serde(rename = "WasteWeightUnitOfMeasureName")]
9999    pub waste_weight_unit_of_measure_name: Option<String>,
10000}
10001
10002#[derive(Serialize, Deserialize, Debug, Clone)]
10003pub struct ProcessingJobsUpdateJobtypesV1RequestItem {
10004    #[serde(rename = "Attributes")]
10005    pub attributes: Option<Vec<String>>,
10006    #[serde(rename = "CategoryName")]
10007    pub category_name: Option<String>,
10008    #[serde(rename = "Description")]
10009    pub description: Option<String>,
10010    #[serde(rename = "Id")]
10011    pub id: Option<i64>,
10012    #[serde(rename = "Name")]
10013    pub name: Option<String>,
10014    #[serde(rename = "ProcessingSteps")]
10015    pub processing_steps: Option<String>,
10016}
10017
10018#[derive(Serialize, Deserialize, Debug, Clone)]
10019pub struct ProcessingJobsUpdateJobtypesV2RequestItem {
10020    #[serde(rename = "Attributes")]
10021    pub attributes: Option<Vec<String>>,
10022    #[serde(rename = "CategoryName")]
10023    pub category_name: Option<String>,
10024    #[serde(rename = "Description")]
10025    pub description: Option<String>,
10026    #[serde(rename = "Id")]
10027    pub id: Option<i64>,
10028    #[serde(rename = "Name")]
10029    pub name: Option<String>,
10030    #[serde(rename = "ProcessingSteps")]
10031    pub processing_steps: Option<String>,
10032}
10033
10034#[derive(Serialize, Deserialize, Debug, Clone)]
10035pub struct ProcessingJobsUpdateUnfinishV1RequestItem {
10036    #[serde(rename = "Id")]
10037    pub id: Option<i64>,
10038}
10039
10040#[derive(Serialize, Deserialize, Debug, Clone)]
10041pub struct ProcessingJobsUpdateUnfinishV2RequestItem {
10042    #[serde(rename = "Id")]
10043    pub id: Option<i64>,
10044}
10045
10046#[derive(Serialize, Deserialize, Debug, Clone)]
10047pub struct RetailIdCreateAssociateV2RequestItem {
10048    #[serde(rename = "PackageLabel")]
10049    pub package_label: Option<String>,
10050    #[serde(rename = "QrUrls")]
10051    pub qr_urls: Option<Vec<String>>,
10052}
10053
10054#[derive(Serialize, Deserialize, Debug, Clone)]
10055pub struct RetailIdCreateGenerateV2Request {
10056    #[serde(rename = "PackageLabel")]
10057    pub package_label: Option<String>,
10058    #[serde(rename = "Quantity")]
10059    pub quantity: Option<i64>,
10060}
10061
10062#[derive(Serialize, Deserialize, Debug, Clone)]
10063pub struct RetailIdCreateMergeV2Request {
10064    #[serde(rename = "packageLabels")]
10065    pub package_labels: Option<Vec<String>>,
10066}
10067
10068#[derive(Serialize, Deserialize, Debug, Clone)]
10069pub struct RetailIdCreatePackageInfoV2Request {
10070    #[serde(rename = "packageLabels")]
10071    pub package_labels: Option<Vec<String>>,
10072}
10073
10074#[derive(Serialize, Deserialize, Debug, Clone)]
10075pub struct LabTestsCreateRecordV1RequestItem {
10076    #[serde(rename = "DocumentFileBase64")]
10077    pub document_file_base64: Option<String>,
10078    #[serde(rename = "DocumentFileName")]
10079    pub document_file_name: Option<String>,
10080    #[serde(rename = "Label")]
10081    pub label: Option<String>,
10082    #[serde(rename = "ResultDate")]
10083    pub result_date: Option<String>,
10084    #[serde(rename = "Results")]
10085    pub results: Option<Vec<LabTestsCreateRecordV1RequestItemResults>>,
10086}
10087
10088#[derive(Serialize, Deserialize, Debug, Clone)]
10089pub struct LabTestsCreateRecordV1RequestItemResults {
10090    #[serde(rename = "LabTestTypeName")]
10091    pub lab_test_type_name: Option<String>,
10092    #[serde(rename = "Notes")]
10093    pub notes: Option<String>,
10094    #[serde(rename = "Passed")]
10095    pub passed: Option<bool>,
10096    #[serde(rename = "Quantity")]
10097    pub quantity: Option<f64>,
10098}
10099
10100#[derive(Serialize, Deserialize, Debug, Clone)]
10101pub struct LabTestsCreateRecordV2RequestItem {
10102    #[serde(rename = "DocumentFileBase64")]
10103    pub document_file_base64: Option<String>,
10104    #[serde(rename = "DocumentFileName")]
10105    pub document_file_name: Option<String>,
10106    #[serde(rename = "Label")]
10107    pub label: Option<String>,
10108    #[serde(rename = "ResultDate")]
10109    pub result_date: Option<String>,
10110    #[serde(rename = "Results")]
10111    pub results: Option<Vec<LabTestsCreateRecordV2RequestItemResults>>,
10112}
10113
10114#[derive(Serialize, Deserialize, Debug, Clone)]
10115pub struct LabTestsCreateRecordV2RequestItemResults {
10116    #[serde(rename = "LabTestTypeName")]
10117    pub lab_test_type_name: Option<String>,
10118    #[serde(rename = "Notes")]
10119    pub notes: Option<String>,
10120    #[serde(rename = "Passed")]
10121    pub passed: Option<bool>,
10122    #[serde(rename = "Quantity")]
10123    pub quantity: Option<f64>,
10124}
10125
10126#[derive(Serialize, Deserialize, Debug, Clone)]
10127pub struct LabTestsUpdateLabtestdocumentV1RequestItem {
10128    #[serde(rename = "DocumentFileBase64")]
10129    pub document_file_base64: Option<String>,
10130    #[serde(rename = "DocumentFileName")]
10131    pub document_file_name: Option<String>,
10132    #[serde(rename = "LabTestResultId")]
10133    pub lab_test_result_id: Option<i64>,
10134}
10135
10136#[derive(Serialize, Deserialize, Debug, Clone)]
10137pub struct LabTestsUpdateLabtestdocumentV2RequestItem {
10138    #[serde(rename = "DocumentFileBase64")]
10139    pub document_file_base64: Option<String>,
10140    #[serde(rename = "DocumentFileName")]
10141    pub document_file_name: Option<String>,
10142    #[serde(rename = "LabTestResultId")]
10143    pub lab_test_result_id: Option<i64>,
10144}
10145
10146#[derive(Serialize, Deserialize, Debug, Clone)]
10147pub struct LabTestsUpdateResultReleaseV1RequestItem {
10148    #[serde(rename = "PackageLabel")]
10149    pub package_label: Option<String>,
10150}
10151
10152#[derive(Serialize, Deserialize, Debug, Clone)]
10153pub struct LabTestsUpdateResultReleaseV2RequestItem {
10154    #[serde(rename = "PackageLabel")]
10155    pub package_label: Option<String>,
10156}
10157
10158#[derive(Serialize, Deserialize, Debug, Clone)]
10159pub struct SublocationsCreateV2RequestItem {
10160    #[serde(rename = "Name")]
10161    pub name: Option<String>,
10162}
10163
10164#[derive(Serialize, Deserialize, Debug, Clone)]
10165pub struct SublocationsUpdateV2RequestItem {
10166    #[serde(rename = "Id")]
10167    pub id: Option<i64>,
10168    #[serde(rename = "Name")]
10169    pub name: Option<String>,
10170}
10171
10172#[derive(Serialize, Deserialize, Debug, Clone)]
10173pub struct ItemsCreateV1RequestItem {
10174    #[serde(rename = "AdministrationMethod")]
10175    pub administration_method: Option<String>,
10176    #[serde(rename = "Allergens")]
10177    pub allergens: Option<String>,
10178    #[serde(rename = "Description")]
10179    pub description: Option<String>,
10180    #[serde(rename = "GlobalProductName")]
10181    pub global_product_name: Option<String>,
10182    #[serde(rename = "ItemBrand")]
10183    pub item_brand: Option<String>,
10184    #[serde(rename = "ItemCategory")]
10185    pub item_category: Option<String>,
10186    #[serde(rename = "ItemIngredients")]
10187    pub item_ingredients: Option<String>,
10188    #[serde(rename = "LabelImageFileSystemIds")]
10189    pub label_image_file_system_ids: Option<String>,
10190    #[serde(rename = "LabelPhotoDescription")]
10191    pub label_photo_description: Option<String>,
10192    #[serde(rename = "Name")]
10193    pub name: Option<String>,
10194    #[serde(rename = "NumberOfDoses")]
10195    pub number_of_doses: Option<String>,
10196    #[serde(rename = "PackagingImageFileSystemIds")]
10197    pub packaging_image_file_system_ids: Option<String>,
10198    #[serde(rename = "PackagingPhotoDescription")]
10199    pub packaging_photo_description: Option<String>,
10200    #[serde(rename = "ProcessingJobCategoryName")]
10201    pub processing_job_category_name: Option<String>,
10202    #[serde(rename = "ProcessingJobTypeName")]
10203    pub processing_job_type_name: Option<String>,
10204    #[serde(rename = "ProductImageFileSystemIds")]
10205    pub product_image_file_system_ids: Option<String>,
10206    #[serde(rename = "ProductPDFFileSystemIds")]
10207    pub product_pdf_file_system_ids: Option<String>,
10208    #[serde(rename = "ProductPhotoDescription")]
10209    pub product_photo_description: Option<String>,
10210    #[serde(rename = "PublicIngredients")]
10211    pub public_ingredients: Option<String>,
10212    #[serde(rename = "ServingSize")]
10213    pub serving_size: Option<String>,
10214    #[serde(rename = "Strain")]
10215    pub strain: Option<String>,
10216    #[serde(rename = "SupplyDurationDays")]
10217    pub supply_duration_days: Option<i64>,
10218    #[serde(rename = "UnitCbdAContent")]
10219    pub unit_cbd_a_content: Option<f64>,
10220    #[serde(rename = "UnitCbdAContentDose")]
10221    pub unit_cbd_a_content_dose: Option<f64>,
10222    #[serde(rename = "UnitCbdAContentDoseUnitOfMeasure")]
10223    pub unit_cbd_a_content_dose_unit_of_measure: Option<String>,
10224    #[serde(rename = "UnitCbdAContentUnitOfMeasure")]
10225    pub unit_cbd_a_content_unit_of_measure: Option<String>,
10226    #[serde(rename = "UnitCbdAPercent")]
10227    pub unit_cbd_a_percent: Option<f64>,
10228    #[serde(rename = "UnitCbdContent")]
10229    pub unit_cbd_content: Option<f64>,
10230    #[serde(rename = "UnitCbdContentDose")]
10231    pub unit_cbd_content_dose: Option<f64>,
10232    #[serde(rename = "UnitCbdContentDoseUnitOfMeasure")]
10233    pub unit_cbd_content_dose_unit_of_measure: Option<String>,
10234    #[serde(rename = "UnitCbdContentUnitOfMeasure")]
10235    pub unit_cbd_content_unit_of_measure: Option<String>,
10236    #[serde(rename = "UnitCbdPercent")]
10237    pub unit_cbd_percent: Option<f64>,
10238    #[serde(rename = "UnitOfMeasure")]
10239    pub unit_of_measure: Option<String>,
10240    #[serde(rename = "UnitThcAContent")]
10241    pub unit_thc_a_content: Option<f64>,
10242    #[serde(rename = "UnitThcAContentDose")]
10243    pub unit_thc_a_content_dose: Option<f64>,
10244    #[serde(rename = "UnitThcAContentDoseUnitOfMeasure")]
10245    pub unit_thc_a_content_dose_unit_of_measure: Option<String>,
10246    #[serde(rename = "UnitThcAContentUnitOfMeasure")]
10247    pub unit_thc_a_content_unit_of_measure: Option<String>,
10248    #[serde(rename = "UnitThcAPercent")]
10249    pub unit_thc_a_percent: Option<f64>,
10250    #[serde(rename = "UnitThcContent")]
10251    pub unit_thc_content: Option<f64>,
10252    #[serde(rename = "UnitThcContentDose")]
10253    pub unit_thc_content_dose: Option<f64>,
10254    #[serde(rename = "UnitThcContentDoseUnitOfMeasure")]
10255    pub unit_thc_content_dose_unit_of_measure: Option<String>,
10256    #[serde(rename = "UnitThcContentUnitOfMeasure")]
10257    pub unit_thc_content_unit_of_measure: Option<String>,
10258    #[serde(rename = "UnitThcPercent")]
10259    pub unit_thc_percent: Option<f64>,
10260    #[serde(rename = "UnitVolume")]
10261    pub unit_volume: Option<f64>,
10262    #[serde(rename = "UnitVolumeUnitOfMeasure")]
10263    pub unit_volume_unit_of_measure: Option<String>,
10264    #[serde(rename = "UnitWeight")]
10265    pub unit_weight: Option<f64>,
10266    #[serde(rename = "UnitWeightUnitOfMeasure")]
10267    pub unit_weight_unit_of_measure: Option<String>,
10268}
10269
10270#[derive(Serialize, Deserialize, Debug, Clone)]
10271pub struct ItemsCreateV2RequestItem {
10272    #[serde(rename = "AdministrationMethod")]
10273    pub administration_method: Option<String>,
10274    #[serde(rename = "Allergens")]
10275    pub allergens: Option<String>,
10276    #[serde(rename = "Description")]
10277    pub description: Option<String>,
10278    #[serde(rename = "GlobalProductName")]
10279    pub global_product_name: Option<String>,
10280    #[serde(rename = "ItemBrand")]
10281    pub item_brand: Option<String>,
10282    #[serde(rename = "ItemCategory")]
10283    pub item_category: Option<String>,
10284    #[serde(rename = "ItemIngredients")]
10285    pub item_ingredients: Option<String>,
10286    #[serde(rename = "LabelImageFileSystemIds")]
10287    pub label_image_file_system_ids: Option<String>,
10288    #[serde(rename = "LabelPhotoDescription")]
10289    pub label_photo_description: Option<String>,
10290    #[serde(rename = "Name")]
10291    pub name: Option<String>,
10292    #[serde(rename = "NumberOfDoses")]
10293    pub number_of_doses: Option<String>,
10294    #[serde(rename = "PackagingImageFileSystemIds")]
10295    pub packaging_image_file_system_ids: Option<String>,
10296    #[serde(rename = "PackagingPhotoDescription")]
10297    pub packaging_photo_description: Option<String>,
10298    #[serde(rename = "ProcessingJobCategoryName")]
10299    pub processing_job_category_name: Option<String>,
10300    #[serde(rename = "ProcessingJobTypeName")]
10301    pub processing_job_type_name: Option<String>,
10302    #[serde(rename = "ProductImageFileSystemIds")]
10303    pub product_image_file_system_ids: Option<String>,
10304    #[serde(rename = "ProductPDFFileSystemIds")]
10305    pub product_pdf_file_system_ids: Option<String>,
10306    #[serde(rename = "ProductPhotoDescription")]
10307    pub product_photo_description: Option<String>,
10308    #[serde(rename = "PublicIngredients")]
10309    pub public_ingredients: Option<String>,
10310    #[serde(rename = "ServingSize")]
10311    pub serving_size: Option<String>,
10312    #[serde(rename = "Strain")]
10313    pub strain: Option<String>,
10314    #[serde(rename = "SupplyDurationDays")]
10315    pub supply_duration_days: Option<i64>,
10316    #[serde(rename = "UnitCbdAContent")]
10317    pub unit_cbd_a_content: Option<f64>,
10318    #[serde(rename = "UnitCbdAContentDose")]
10319    pub unit_cbd_a_content_dose: Option<f64>,
10320    #[serde(rename = "UnitCbdAContentDoseUnitOfMeasure")]
10321    pub unit_cbd_a_content_dose_unit_of_measure: Option<String>,
10322    #[serde(rename = "UnitCbdAContentUnitOfMeasure")]
10323    pub unit_cbd_a_content_unit_of_measure: Option<String>,
10324    #[serde(rename = "UnitCbdAPercent")]
10325    pub unit_cbd_a_percent: Option<f64>,
10326    #[serde(rename = "UnitCbdContent")]
10327    pub unit_cbd_content: Option<f64>,
10328    #[serde(rename = "UnitCbdContentDose")]
10329    pub unit_cbd_content_dose: Option<f64>,
10330    #[serde(rename = "UnitCbdContentDoseUnitOfMeasure")]
10331    pub unit_cbd_content_dose_unit_of_measure: Option<String>,
10332    #[serde(rename = "UnitCbdContentUnitOfMeasure")]
10333    pub unit_cbd_content_unit_of_measure: Option<String>,
10334    #[serde(rename = "UnitCbdPercent")]
10335    pub unit_cbd_percent: Option<f64>,
10336    #[serde(rename = "UnitOfMeasure")]
10337    pub unit_of_measure: Option<String>,
10338    #[serde(rename = "UnitThcAContent")]
10339    pub unit_thc_a_content: Option<f64>,
10340    #[serde(rename = "UnitThcAContentDose")]
10341    pub unit_thc_a_content_dose: Option<f64>,
10342    #[serde(rename = "UnitThcAContentDoseUnitOfMeasure")]
10343    pub unit_thc_a_content_dose_unit_of_measure: Option<String>,
10344    #[serde(rename = "UnitThcAContentUnitOfMeasure")]
10345    pub unit_thc_a_content_unit_of_measure: Option<String>,
10346    #[serde(rename = "UnitThcAPercent")]
10347    pub unit_thc_a_percent: Option<f64>,
10348    #[serde(rename = "UnitThcContent")]
10349    pub unit_thc_content: Option<f64>,
10350    #[serde(rename = "UnitThcContentDose")]
10351    pub unit_thc_content_dose: Option<f64>,
10352    #[serde(rename = "UnitThcContentDoseUnitOfMeasure")]
10353    pub unit_thc_content_dose_unit_of_measure: Option<String>,
10354    #[serde(rename = "UnitThcContentUnitOfMeasure")]
10355    pub unit_thc_content_unit_of_measure: Option<String>,
10356    #[serde(rename = "UnitThcPercent")]
10357    pub unit_thc_percent: Option<f64>,
10358    #[serde(rename = "UnitVolume")]
10359    pub unit_volume: Option<f64>,
10360    #[serde(rename = "UnitVolumeUnitOfMeasure")]
10361    pub unit_volume_unit_of_measure: Option<String>,
10362    #[serde(rename = "UnitWeight")]
10363    pub unit_weight: Option<f64>,
10364    #[serde(rename = "UnitWeightUnitOfMeasure")]
10365    pub unit_weight_unit_of_measure: Option<String>,
10366}
10367
10368#[derive(Serialize, Deserialize, Debug, Clone)]
10369pub struct ItemsCreateBrandV2RequestItem {
10370    #[serde(rename = "Name")]
10371    pub name: Option<String>,
10372}
10373
10374#[derive(Serialize, Deserialize, Debug, Clone)]
10375pub struct ItemsCreateFileV2RequestItem {
10376    #[serde(rename = "EncodedImageBase64")]
10377    pub encoded_image_base64: Option<String>,
10378    #[serde(rename = "FileName")]
10379    pub file_name: Option<String>,
10380}
10381
10382#[derive(Serialize, Deserialize, Debug, Clone)]
10383pub struct ItemsCreatePhotoV1RequestItem {
10384    #[serde(rename = "EncodedImageBase64")]
10385    pub encoded_image_base64: Option<String>,
10386    #[serde(rename = "FileName")]
10387    pub file_name: Option<String>,
10388}
10389
10390#[derive(Serialize, Deserialize, Debug, Clone)]
10391pub struct ItemsCreatePhotoV2RequestItem {
10392    #[serde(rename = "EncodedImageBase64")]
10393    pub encoded_image_base64: Option<String>,
10394    #[serde(rename = "FileName")]
10395    pub file_name: Option<String>,
10396}
10397
10398#[derive(Serialize, Deserialize, Debug, Clone)]
10399pub struct ItemsCreateUpdateV1RequestItem {
10400    #[serde(rename = "AdministrationMethod")]
10401    pub administration_method: Option<String>,
10402    #[serde(rename = "Allergens")]
10403    pub allergens: Option<String>,
10404    #[serde(rename = "Description")]
10405    pub description: Option<String>,
10406    #[serde(rename = "GlobalProductName")]
10407    pub global_product_name: Option<String>,
10408    #[serde(rename = "Id")]
10409    pub id: Option<i64>,
10410    #[serde(rename = "ItemBrand")]
10411    pub item_brand: Option<String>,
10412    #[serde(rename = "ItemCategory")]
10413    pub item_category: Option<String>,
10414    #[serde(rename = "ItemIngredients")]
10415    pub item_ingredients: Option<String>,
10416    #[serde(rename = "LabelImageFileSystemIds")]
10417    pub label_image_file_system_ids: Option<String>,
10418    #[serde(rename = "LabelPhotoDescription")]
10419    pub label_photo_description: Option<String>,
10420    #[serde(rename = "Name")]
10421    pub name: Option<String>,
10422    #[serde(rename = "NumberOfDoses")]
10423    pub number_of_doses: Option<String>,
10424    #[serde(rename = "PackagingImageFileSystemIds")]
10425    pub packaging_image_file_system_ids: Option<String>,
10426    #[serde(rename = "PackagingPhotoDescription")]
10427    pub packaging_photo_description: Option<String>,
10428    #[serde(rename = "ProcessingJobCategoryName")]
10429    pub processing_job_category_name: Option<String>,
10430    #[serde(rename = "ProcessingJobTypeName")]
10431    pub processing_job_type_name: Option<String>,
10432    #[serde(rename = "ProductImageFileSystemIds")]
10433    pub product_image_file_system_ids: Option<String>,
10434    #[serde(rename = "ProductPDFFileSystemIds")]
10435    pub product_pdf_file_system_ids: Option<String>,
10436    #[serde(rename = "ProductPhotoDescription")]
10437    pub product_photo_description: Option<String>,
10438    #[serde(rename = "PublicIngredients")]
10439    pub public_ingredients: Option<String>,
10440    #[serde(rename = "ServingSize")]
10441    pub serving_size: Option<String>,
10442    #[serde(rename = "Strain")]
10443    pub strain: Option<String>,
10444    #[serde(rename = "SupplyDurationDays")]
10445    pub supply_duration_days: Option<i64>,
10446    #[serde(rename = "UnitCbdAContent")]
10447    pub unit_cbd_a_content: Option<f64>,
10448    #[serde(rename = "UnitCbdAContentDose")]
10449    pub unit_cbd_a_content_dose: Option<f64>,
10450    #[serde(rename = "UnitCbdAContentDoseUnitOfMeasure")]
10451    pub unit_cbd_a_content_dose_unit_of_measure: Option<String>,
10452    #[serde(rename = "UnitCbdAContentUnitOfMeasure")]
10453    pub unit_cbd_a_content_unit_of_measure: Option<String>,
10454    #[serde(rename = "UnitCbdAPercent")]
10455    pub unit_cbd_a_percent: Option<f64>,
10456    #[serde(rename = "UnitCbdContent")]
10457    pub unit_cbd_content: Option<f64>,
10458    #[serde(rename = "UnitCbdContentDose")]
10459    pub unit_cbd_content_dose: Option<f64>,
10460    #[serde(rename = "UnitCbdContentDoseUnitOfMeasure")]
10461    pub unit_cbd_content_dose_unit_of_measure: Option<String>,
10462    #[serde(rename = "UnitCbdContentUnitOfMeasure")]
10463    pub unit_cbd_content_unit_of_measure: Option<String>,
10464    #[serde(rename = "UnitCbdPercent")]
10465    pub unit_cbd_percent: Option<f64>,
10466    #[serde(rename = "UnitOfMeasure")]
10467    pub unit_of_measure: Option<String>,
10468    #[serde(rename = "UnitThcAContent")]
10469    pub unit_thc_a_content: Option<f64>,
10470    #[serde(rename = "UnitThcAContentDose")]
10471    pub unit_thc_a_content_dose: Option<f64>,
10472    #[serde(rename = "UnitThcAContentDoseUnitOfMeasure")]
10473    pub unit_thc_a_content_dose_unit_of_measure: Option<String>,
10474    #[serde(rename = "UnitThcAContentUnitOfMeasure")]
10475    pub unit_thc_a_content_unit_of_measure: Option<String>,
10476    #[serde(rename = "UnitThcAPercent")]
10477    pub unit_thc_a_percent: Option<f64>,
10478    #[serde(rename = "UnitThcContent")]
10479    pub unit_thc_content: Option<f64>,
10480    #[serde(rename = "UnitThcContentDose")]
10481    pub unit_thc_content_dose: Option<f64>,
10482    #[serde(rename = "UnitThcContentDoseUnitOfMeasure")]
10483    pub unit_thc_content_dose_unit_of_measure: Option<String>,
10484    #[serde(rename = "UnitThcContentUnitOfMeasure")]
10485    pub unit_thc_content_unit_of_measure: Option<String>,
10486    #[serde(rename = "UnitThcPercent")]
10487    pub unit_thc_percent: Option<f64>,
10488    #[serde(rename = "UnitVolume")]
10489    pub unit_volume: Option<f64>,
10490    #[serde(rename = "UnitVolumeUnitOfMeasure")]
10491    pub unit_volume_unit_of_measure: Option<String>,
10492    #[serde(rename = "UnitWeight")]
10493    pub unit_weight: Option<f64>,
10494    #[serde(rename = "UnitWeightUnitOfMeasure")]
10495    pub unit_weight_unit_of_measure: Option<String>,
10496}
10497
10498#[derive(Serialize, Deserialize, Debug, Clone)]
10499pub struct ItemsUpdateV2RequestItem {
10500    #[serde(rename = "AdministrationMethod")]
10501    pub administration_method: Option<String>,
10502    #[serde(rename = "Allergens")]
10503    pub allergens: Option<String>,
10504    #[serde(rename = "Description")]
10505    pub description: Option<String>,
10506    #[serde(rename = "GlobalProductName")]
10507    pub global_product_name: Option<String>,
10508    #[serde(rename = "Id")]
10509    pub id: Option<i64>,
10510    #[serde(rename = "ItemBrand")]
10511    pub item_brand: Option<String>,
10512    #[serde(rename = "ItemCategory")]
10513    pub item_category: Option<String>,
10514    #[serde(rename = "ItemIngredients")]
10515    pub item_ingredients: Option<String>,
10516    #[serde(rename = "LabelImageFileSystemIds")]
10517    pub label_image_file_system_ids: Option<String>,
10518    #[serde(rename = "LabelPhotoDescription")]
10519    pub label_photo_description: Option<String>,
10520    #[serde(rename = "Name")]
10521    pub name: Option<String>,
10522    #[serde(rename = "NumberOfDoses")]
10523    pub number_of_doses: Option<String>,
10524    #[serde(rename = "PackagingImageFileSystemIds")]
10525    pub packaging_image_file_system_ids: Option<String>,
10526    #[serde(rename = "PackagingPhotoDescription")]
10527    pub packaging_photo_description: Option<String>,
10528    #[serde(rename = "ProcessingJobCategoryName")]
10529    pub processing_job_category_name: Option<String>,
10530    #[serde(rename = "ProcessingJobTypeName")]
10531    pub processing_job_type_name: Option<String>,
10532    #[serde(rename = "ProductImageFileSystemIds")]
10533    pub product_image_file_system_ids: Option<String>,
10534    #[serde(rename = "ProductPDFFileSystemIds")]
10535    pub product_pdf_file_system_ids: Option<String>,
10536    #[serde(rename = "ProductPhotoDescription")]
10537    pub product_photo_description: Option<String>,
10538    #[serde(rename = "PublicIngredients")]
10539    pub public_ingredients: Option<String>,
10540    #[serde(rename = "ServingSize")]
10541    pub serving_size: Option<String>,
10542    #[serde(rename = "Strain")]
10543    pub strain: Option<String>,
10544    #[serde(rename = "SupplyDurationDays")]
10545    pub supply_duration_days: Option<i64>,
10546    #[serde(rename = "UnitCbdAContent")]
10547    pub unit_cbd_a_content: Option<f64>,
10548    #[serde(rename = "UnitCbdAContentDose")]
10549    pub unit_cbd_a_content_dose: Option<f64>,
10550    #[serde(rename = "UnitCbdAContentDoseUnitOfMeasure")]
10551    pub unit_cbd_a_content_dose_unit_of_measure: Option<String>,
10552    #[serde(rename = "UnitCbdAContentUnitOfMeasure")]
10553    pub unit_cbd_a_content_unit_of_measure: Option<String>,
10554    #[serde(rename = "UnitCbdAPercent")]
10555    pub unit_cbd_a_percent: Option<f64>,
10556    #[serde(rename = "UnitCbdContent")]
10557    pub unit_cbd_content: Option<f64>,
10558    #[serde(rename = "UnitCbdContentDose")]
10559    pub unit_cbd_content_dose: Option<f64>,
10560    #[serde(rename = "UnitCbdContentDoseUnitOfMeasure")]
10561    pub unit_cbd_content_dose_unit_of_measure: Option<String>,
10562    #[serde(rename = "UnitCbdContentUnitOfMeasure")]
10563    pub unit_cbd_content_unit_of_measure: Option<String>,
10564    #[serde(rename = "UnitCbdPercent")]
10565    pub unit_cbd_percent: Option<f64>,
10566    #[serde(rename = "UnitOfMeasure")]
10567    pub unit_of_measure: Option<String>,
10568    #[serde(rename = "UnitThcAContent")]
10569    pub unit_thc_a_content: Option<f64>,
10570    #[serde(rename = "UnitThcAContentDose")]
10571    pub unit_thc_a_content_dose: Option<f64>,
10572    #[serde(rename = "UnitThcAContentDoseUnitOfMeasure")]
10573    pub unit_thc_a_content_dose_unit_of_measure: Option<String>,
10574    #[serde(rename = "UnitThcAContentUnitOfMeasure")]
10575    pub unit_thc_a_content_unit_of_measure: Option<String>,
10576    #[serde(rename = "UnitThcAPercent")]
10577    pub unit_thc_a_percent: Option<f64>,
10578    #[serde(rename = "UnitThcContent")]
10579    pub unit_thc_content: Option<f64>,
10580    #[serde(rename = "UnitThcContentDose")]
10581    pub unit_thc_content_dose: Option<f64>,
10582    #[serde(rename = "UnitThcContentDoseUnitOfMeasure")]
10583    pub unit_thc_content_dose_unit_of_measure: Option<String>,
10584    #[serde(rename = "UnitThcContentUnitOfMeasure")]
10585    pub unit_thc_content_unit_of_measure: Option<String>,
10586    #[serde(rename = "UnitThcPercent")]
10587    pub unit_thc_percent: Option<f64>,
10588    #[serde(rename = "UnitVolume")]
10589    pub unit_volume: Option<f64>,
10590    #[serde(rename = "UnitVolumeUnitOfMeasure")]
10591    pub unit_volume_unit_of_measure: Option<String>,
10592    #[serde(rename = "UnitWeight")]
10593    pub unit_weight: Option<f64>,
10594    #[serde(rename = "UnitWeightUnitOfMeasure")]
10595    pub unit_weight_unit_of_measure: Option<String>,
10596}
10597
10598#[derive(Serialize, Deserialize, Debug, Clone)]
10599pub struct ItemsUpdateBrandV2RequestItem {
10600    #[serde(rename = "Id")]
10601    pub id: Option<i64>,
10602    #[serde(rename = "Name")]
10603    pub name: Option<String>,
10604}
10605
10606#[derive(Serialize, Deserialize, Debug, Clone)]
10607pub struct PatientCheckInsCreateV1RequestItem {
10608    #[serde(rename = "CheckInDate")]
10609    pub check_in_date: Option<String>,
10610    #[serde(rename = "CheckInLocationId")]
10611    pub check_in_location_id: Option<i64>,
10612    #[serde(rename = "PatientLicenseNumber")]
10613    pub patient_license_number: Option<String>,
10614    #[serde(rename = "RegistrationExpiryDate")]
10615    pub registration_expiry_date: Option<String>,
10616    #[serde(rename = "RegistrationStartDate")]
10617    pub registration_start_date: Option<String>,
10618}
10619
10620#[derive(Serialize, Deserialize, Debug, Clone)]
10621pub struct PatientCheckInsCreateV2RequestItem {
10622    #[serde(rename = "CheckInDate")]
10623    pub check_in_date: Option<String>,
10624    #[serde(rename = "CheckInLocationId")]
10625    pub check_in_location_id: Option<i64>,
10626    #[serde(rename = "PatientLicenseNumber")]
10627    pub patient_license_number: Option<String>,
10628    #[serde(rename = "RegistrationExpiryDate")]
10629    pub registration_expiry_date: Option<String>,
10630    #[serde(rename = "RegistrationStartDate")]
10631    pub registration_start_date: Option<String>,
10632}
10633
10634#[derive(Serialize, Deserialize, Debug, Clone)]
10635pub struct PatientCheckInsUpdateV1RequestItem {
10636    #[serde(rename = "CheckInDate")]
10637    pub check_in_date: Option<String>,
10638    #[serde(rename = "CheckInLocationId")]
10639    pub check_in_location_id: Option<i64>,
10640    #[serde(rename = "Id")]
10641    pub id: Option<i64>,
10642    #[serde(rename = "PatientLicenseNumber")]
10643    pub patient_license_number: Option<String>,
10644    #[serde(rename = "RegistrationExpiryDate")]
10645    pub registration_expiry_date: Option<String>,
10646    #[serde(rename = "RegistrationStartDate")]
10647    pub registration_start_date: Option<String>,
10648}
10649
10650#[derive(Serialize, Deserialize, Debug, Clone)]
10651pub struct PatientCheckInsUpdateV2RequestItem {
10652    #[serde(rename = "CheckInDate")]
10653    pub check_in_date: Option<String>,
10654    #[serde(rename = "CheckInLocationId")]
10655    pub check_in_location_id: Option<i64>,
10656    #[serde(rename = "Id")]
10657    pub id: Option<i64>,
10658    #[serde(rename = "PatientLicenseNumber")]
10659    pub patient_license_number: Option<String>,
10660    #[serde(rename = "RegistrationExpiryDate")]
10661    pub registration_expiry_date: Option<String>,
10662    #[serde(rename = "RegistrationStartDate")]
10663    pub registration_start_date: Option<String>,
10664}
10665
10666#[derive(Serialize, Deserialize, Debug, Clone)]
10667pub struct AdditivesTemplatesCreateV2RequestItem {
10668    #[serde(rename = "ActiveIngredients")]
10669    pub active_ingredients: Option<Vec<AdditivesTemplatesCreateV2RequestItemActiveIngredients>>,
10670    #[serde(rename = "AdditiveType")]
10671    pub additive_type: Option<String>,
10672    #[serde(rename = "ApplicationDevice")]
10673    pub application_device: Option<String>,
10674    #[serde(rename = "EpaRegistrationNumber")]
10675    pub epa_registration_number: Option<String>,
10676    #[serde(rename = "Name")]
10677    pub name: Option<String>,
10678    #[serde(rename = "Note")]
10679    pub note: Option<String>,
10680    #[serde(rename = "ProductSupplier")]
10681    pub product_supplier: Option<String>,
10682    #[serde(rename = "ProductTradeName")]
10683    pub product_trade_name: Option<String>,
10684    #[serde(rename = "RestrictiveEntryIntervalQuantityDescription")]
10685    pub restrictive_entry_interval_quantity_description: Option<String>,
10686    #[serde(rename = "RestrictiveEntryIntervalTimeDescription")]
10687    pub restrictive_entry_interval_time_description: Option<String>,
10688}
10689
10690#[derive(Serialize, Deserialize, Debug, Clone)]
10691pub struct AdditivesTemplatesCreateV2RequestItemActiveIngredients {
10692    #[serde(rename = "Name")]
10693    pub name: Option<String>,
10694    #[serde(rename = "Percentage")]
10695    pub percentage: Option<f64>,
10696}
10697
10698#[derive(Serialize, Deserialize, Debug, Clone)]
10699pub struct AdditivesTemplatesUpdateV2RequestItem {
10700    #[serde(rename = "ActiveIngredients")]
10701    pub active_ingredients: Option<Vec<AdditivesTemplatesUpdateV2RequestItemActiveIngredients>>,
10702    #[serde(rename = "AdditiveType")]
10703    pub additive_type: Option<String>,
10704    #[serde(rename = "ApplicationDevice")]
10705    pub application_device: Option<String>,
10706    #[serde(rename = "EpaRegistrationNumber")]
10707    pub epa_registration_number: Option<String>,
10708    #[serde(rename = "Id")]
10709    pub id: Option<i64>,
10710    #[serde(rename = "Name")]
10711    pub name: Option<String>,
10712    #[serde(rename = "Note")]
10713    pub note: Option<String>,
10714    #[serde(rename = "ProductSupplier")]
10715    pub product_supplier: Option<String>,
10716    #[serde(rename = "ProductTradeName")]
10717    pub product_trade_name: Option<String>,
10718    #[serde(rename = "RestrictiveEntryIntervalQuantityDescription")]
10719    pub restrictive_entry_interval_quantity_description: Option<String>,
10720    #[serde(rename = "RestrictiveEntryIntervalTimeDescription")]
10721    pub restrictive_entry_interval_time_description: Option<String>,
10722}
10723
10724#[derive(Serialize, Deserialize, Debug, Clone)]
10725pub struct AdditivesTemplatesUpdateV2RequestItemActiveIngredients {
10726    #[serde(rename = "Name")]
10727    pub name: Option<String>,
10728    #[serde(rename = "Percentage")]
10729    pub percentage: Option<f64>,
10730}
10731
10732#[derive(Serialize, Deserialize, Debug, Clone)]
10733pub struct HarvestsCreateFinishV1RequestItem {
10734    #[serde(rename = "ActualDate")]
10735    pub actual_date: Option<String>,
10736    #[serde(rename = "Id")]
10737    pub id: Option<i64>,
10738}
10739
10740#[derive(Serialize, Deserialize, Debug, Clone)]
10741pub struct HarvestsCreatePackageV1RequestItem {
10742    #[serde(rename = "ActualDate")]
10743    pub actual_date: Option<String>,
10744    #[serde(rename = "DecontaminateProduct")]
10745    pub decontaminate_product: Option<bool>,
10746    #[serde(rename = "DecontaminationDate")]
10747    pub decontamination_date: Option<String>,
10748    #[serde(rename = "DecontaminationSteps")]
10749    pub decontamination_steps: Option<String>,
10750    #[serde(rename = "ExpirationDate")]
10751    pub expiration_date: Option<String>,
10752    #[serde(rename = "Ingredients")]
10753    pub ingredients: Option<Vec<HarvestsCreatePackageV1RequestItemIngredients>>,
10754    #[serde(rename = "IsDonation")]
10755    pub is_donation: Option<bool>,
10756    #[serde(rename = "IsProductionBatch")]
10757    pub is_production_batch: Option<bool>,
10758    #[serde(rename = "IsTradeSample")]
10759    pub is_trade_sample: Option<bool>,
10760    #[serde(rename = "Item")]
10761    pub item: Option<String>,
10762    #[serde(rename = "LabTestStageId")]
10763    pub lab_test_stage_id: Option<i64>,
10764    #[serde(rename = "Location")]
10765    pub location: Option<String>,
10766    #[serde(rename = "Note")]
10767    pub note: Option<String>,
10768    #[serde(rename = "PatientLicenseNumber")]
10769    pub patient_license_number: Option<String>,
10770    #[serde(rename = "ProcessingJobTypeId")]
10771    pub processing_job_type_id: Option<i64>,
10772    #[serde(rename = "ProductRequiresDecontamination")]
10773    pub product_requires_decontamination: Option<bool>,
10774    #[serde(rename = "ProductRequiresRemediation")]
10775    pub product_requires_remediation: Option<bool>,
10776    #[serde(rename = "ProductionBatchNumber")]
10777    pub production_batch_number: Option<String>,
10778    #[serde(rename = "RemediateProduct")]
10779    pub remediate_product: Option<bool>,
10780    #[serde(rename = "RemediationDate")]
10781    pub remediation_date: Option<String>,
10782    #[serde(rename = "RemediationMethodId")]
10783    pub remediation_method_id: Option<i64>,
10784    #[serde(rename = "RemediationSteps")]
10785    pub remediation_steps: Option<String>,
10786    #[serde(rename = "RequiredLabTestBatches")]
10787    pub required_lab_test_batches: Option<Vec<Value>>,
10788    #[serde(rename = "SellByDate")]
10789    pub sell_by_date: Option<String>,
10790    #[serde(rename = "Sublocation")]
10791    pub sublocation: Option<String>,
10792    #[serde(rename = "Tag")]
10793    pub tag: Option<String>,
10794    #[serde(rename = "UnitOfWeight")]
10795    pub unit_of_weight: Option<String>,
10796    #[serde(rename = "UseByDate")]
10797    pub use_by_date: Option<String>,
10798}
10799
10800#[derive(Serialize, Deserialize, Debug, Clone)]
10801pub struct HarvestsCreatePackageV1RequestItemIngredients {
10802    #[serde(rename = "HarvestId")]
10803    pub harvest_id: Option<i64>,
10804    #[serde(rename = "HarvestName")]
10805    pub harvest_name: Option<String>,
10806    #[serde(rename = "UnitOfWeight")]
10807    pub unit_of_weight: Option<String>,
10808    #[serde(rename = "Weight")]
10809    pub weight: Option<f64>,
10810}
10811
10812#[derive(Serialize, Deserialize, Debug, Clone)]
10813pub struct HarvestsCreatePackageV2RequestItem {
10814    #[serde(rename = "ActualDate")]
10815    pub actual_date: Option<String>,
10816    #[serde(rename = "DecontaminateProduct")]
10817    pub decontaminate_product: Option<bool>,
10818    #[serde(rename = "DecontaminationDate")]
10819    pub decontamination_date: Option<String>,
10820    #[serde(rename = "DecontaminationSteps")]
10821    pub decontamination_steps: Option<String>,
10822    #[serde(rename = "ExpirationDate")]
10823    pub expiration_date: Option<String>,
10824    #[serde(rename = "Ingredients")]
10825    pub ingredients: Option<Vec<HarvestsCreatePackageV2RequestItemIngredients>>,
10826    #[serde(rename = "IsDonation")]
10827    pub is_donation: Option<bool>,
10828    #[serde(rename = "IsProductionBatch")]
10829    pub is_production_batch: Option<bool>,
10830    #[serde(rename = "IsTradeSample")]
10831    pub is_trade_sample: Option<bool>,
10832    #[serde(rename = "Item")]
10833    pub item: Option<String>,
10834    #[serde(rename = "LabTestStageId")]
10835    pub lab_test_stage_id: Option<i64>,
10836    #[serde(rename = "Location")]
10837    pub location: Option<String>,
10838    #[serde(rename = "Note")]
10839    pub note: Option<String>,
10840    #[serde(rename = "PatientLicenseNumber")]
10841    pub patient_license_number: Option<String>,
10842    #[serde(rename = "ProcessingJobTypeId")]
10843    pub processing_job_type_id: Option<i64>,
10844    #[serde(rename = "ProductRequiresDecontamination")]
10845    pub product_requires_decontamination: Option<bool>,
10846    #[serde(rename = "ProductRequiresRemediation")]
10847    pub product_requires_remediation: Option<bool>,
10848    #[serde(rename = "ProductionBatchNumber")]
10849    pub production_batch_number: Option<String>,
10850    #[serde(rename = "RemediateProduct")]
10851    pub remediate_product: Option<bool>,
10852    #[serde(rename = "RemediationDate")]
10853    pub remediation_date: Option<String>,
10854    #[serde(rename = "RemediationMethodId")]
10855    pub remediation_method_id: Option<i64>,
10856    #[serde(rename = "RemediationSteps")]
10857    pub remediation_steps: Option<String>,
10858    #[serde(rename = "RequiredLabTestBatches")]
10859    pub required_lab_test_batches: Option<Vec<Value>>,
10860    #[serde(rename = "SellByDate")]
10861    pub sell_by_date: Option<String>,
10862    #[serde(rename = "Sublocation")]
10863    pub sublocation: Option<String>,
10864    #[serde(rename = "Tag")]
10865    pub tag: Option<String>,
10866    #[serde(rename = "UnitOfWeight")]
10867    pub unit_of_weight: Option<String>,
10868    #[serde(rename = "UseByDate")]
10869    pub use_by_date: Option<String>,
10870}
10871
10872#[derive(Serialize, Deserialize, Debug, Clone)]
10873pub struct HarvestsCreatePackageV2RequestItemIngredients {
10874    #[serde(rename = "HarvestId")]
10875    pub harvest_id: Option<i64>,
10876    #[serde(rename = "HarvestName")]
10877    pub harvest_name: Option<String>,
10878    #[serde(rename = "UnitOfWeight")]
10879    pub unit_of_weight: Option<String>,
10880    #[serde(rename = "Weight")]
10881    pub weight: Option<f64>,
10882}
10883
10884#[derive(Serialize, Deserialize, Debug, Clone)]
10885pub struct HarvestsCreatePackageTestingV1RequestItem {
10886    #[serde(rename = "ActualDate")]
10887    pub actual_date: Option<String>,
10888    #[serde(rename = "DecontaminateProduct")]
10889    pub decontaminate_product: Option<bool>,
10890    #[serde(rename = "DecontaminationDate")]
10891    pub decontamination_date: Option<String>,
10892    #[serde(rename = "DecontaminationSteps")]
10893    pub decontamination_steps: Option<String>,
10894    #[serde(rename = "ExpirationDate")]
10895    pub expiration_date: Option<String>,
10896    #[serde(rename = "Ingredients")]
10897    pub ingredients: Option<Vec<HarvestsCreatePackageTestingV1RequestItemIngredients>>,
10898    #[serde(rename = "IsDonation")]
10899    pub is_donation: Option<bool>,
10900    #[serde(rename = "IsProductionBatch")]
10901    pub is_production_batch: Option<bool>,
10902    #[serde(rename = "IsTradeSample")]
10903    pub is_trade_sample: Option<bool>,
10904    #[serde(rename = "Item")]
10905    pub item: Option<String>,
10906    #[serde(rename = "LabTestStageId")]
10907    pub lab_test_stage_id: Option<i64>,
10908    #[serde(rename = "Location")]
10909    pub location: Option<String>,
10910    #[serde(rename = "Note")]
10911    pub note: Option<String>,
10912    #[serde(rename = "PatientLicenseNumber")]
10913    pub patient_license_number: Option<String>,
10914    #[serde(rename = "ProcessingJobTypeId")]
10915    pub processing_job_type_id: Option<i64>,
10916    #[serde(rename = "ProductRequiresDecontamination")]
10917    pub product_requires_decontamination: Option<bool>,
10918    #[serde(rename = "ProductRequiresRemediation")]
10919    pub product_requires_remediation: Option<bool>,
10920    #[serde(rename = "ProductionBatchNumber")]
10921    pub production_batch_number: Option<String>,
10922    #[serde(rename = "RemediateProduct")]
10923    pub remediate_product: Option<bool>,
10924    #[serde(rename = "RemediationDate")]
10925    pub remediation_date: Option<String>,
10926    #[serde(rename = "RemediationMethodId")]
10927    pub remediation_method_id: Option<i64>,
10928    #[serde(rename = "RemediationSteps")]
10929    pub remediation_steps: Option<String>,
10930    #[serde(rename = "RequiredLabTestBatches")]
10931    pub required_lab_test_batches: Option<Vec<Value>>,
10932    #[serde(rename = "SellByDate")]
10933    pub sell_by_date: Option<String>,
10934    #[serde(rename = "Sublocation")]
10935    pub sublocation: Option<String>,
10936    #[serde(rename = "Tag")]
10937    pub tag: Option<String>,
10938    #[serde(rename = "UnitOfWeight")]
10939    pub unit_of_weight: Option<String>,
10940    #[serde(rename = "UseByDate")]
10941    pub use_by_date: Option<String>,
10942}
10943
10944#[derive(Serialize, Deserialize, Debug, Clone)]
10945pub struct HarvestsCreatePackageTestingV1RequestItemIngredients {
10946    #[serde(rename = "HarvestId")]
10947    pub harvest_id: Option<i64>,
10948    #[serde(rename = "HarvestName")]
10949    pub harvest_name: Option<String>,
10950    #[serde(rename = "UnitOfWeight")]
10951    pub unit_of_weight: Option<String>,
10952    #[serde(rename = "Weight")]
10953    pub weight: Option<f64>,
10954}
10955
10956#[derive(Serialize, Deserialize, Debug, Clone)]
10957pub struct HarvestsCreatePackageTestingV2RequestItem {
10958    #[serde(rename = "ActualDate")]
10959    pub actual_date: Option<String>,
10960    #[serde(rename = "DecontaminateProduct")]
10961    pub decontaminate_product: Option<bool>,
10962    #[serde(rename = "DecontaminationDate")]
10963    pub decontamination_date: Option<String>,
10964    #[serde(rename = "DecontaminationSteps")]
10965    pub decontamination_steps: Option<String>,
10966    #[serde(rename = "ExpirationDate")]
10967    pub expiration_date: Option<String>,
10968    #[serde(rename = "Ingredients")]
10969    pub ingredients: Option<Vec<HarvestsCreatePackageTestingV2RequestItemIngredients>>,
10970    #[serde(rename = "IsDonation")]
10971    pub is_donation: Option<bool>,
10972    #[serde(rename = "IsProductionBatch")]
10973    pub is_production_batch: Option<bool>,
10974    #[serde(rename = "IsTradeSample")]
10975    pub is_trade_sample: Option<bool>,
10976    #[serde(rename = "Item")]
10977    pub item: Option<String>,
10978    #[serde(rename = "LabTestStageId")]
10979    pub lab_test_stage_id: Option<i64>,
10980    #[serde(rename = "Location")]
10981    pub location: Option<String>,
10982    #[serde(rename = "Note")]
10983    pub note: Option<String>,
10984    #[serde(rename = "PatientLicenseNumber")]
10985    pub patient_license_number: Option<String>,
10986    #[serde(rename = "ProcessingJobTypeId")]
10987    pub processing_job_type_id: Option<i64>,
10988    #[serde(rename = "ProductRequiresDecontamination")]
10989    pub product_requires_decontamination: Option<bool>,
10990    #[serde(rename = "ProductRequiresRemediation")]
10991    pub product_requires_remediation: Option<bool>,
10992    #[serde(rename = "ProductionBatchNumber")]
10993    pub production_batch_number: Option<String>,
10994    #[serde(rename = "RemediateProduct")]
10995    pub remediate_product: Option<bool>,
10996    #[serde(rename = "RemediationDate")]
10997    pub remediation_date: Option<String>,
10998    #[serde(rename = "RemediationMethodId")]
10999    pub remediation_method_id: Option<i64>,
11000    #[serde(rename = "RemediationSteps")]
11001    pub remediation_steps: Option<String>,
11002    #[serde(rename = "RequiredLabTestBatches")]
11003    pub required_lab_test_batches: Option<Vec<Value>>,
11004    #[serde(rename = "SellByDate")]
11005    pub sell_by_date: Option<String>,
11006    #[serde(rename = "Sublocation")]
11007    pub sublocation: Option<String>,
11008    #[serde(rename = "Tag")]
11009    pub tag: Option<String>,
11010    #[serde(rename = "UnitOfWeight")]
11011    pub unit_of_weight: Option<String>,
11012    #[serde(rename = "UseByDate")]
11013    pub use_by_date: Option<String>,
11014}
11015
11016#[derive(Serialize, Deserialize, Debug, Clone)]
11017pub struct HarvestsCreatePackageTestingV2RequestItemIngredients {
11018    #[serde(rename = "HarvestId")]
11019    pub harvest_id: Option<i64>,
11020    #[serde(rename = "HarvestName")]
11021    pub harvest_name: Option<String>,
11022    #[serde(rename = "UnitOfWeight")]
11023    pub unit_of_weight: Option<String>,
11024    #[serde(rename = "Weight")]
11025    pub weight: Option<f64>,
11026}
11027
11028#[derive(Serialize, Deserialize, Debug, Clone)]
11029pub struct HarvestsCreateRemoveWasteV1RequestItem {
11030    #[serde(rename = "ActualDate")]
11031    pub actual_date: Option<String>,
11032    #[serde(rename = "Id")]
11033    pub id: Option<i64>,
11034    #[serde(rename = "UnitOfWeight")]
11035    pub unit_of_weight: Option<String>,
11036    #[serde(rename = "WasteType")]
11037    pub waste_type: Option<String>,
11038    #[serde(rename = "WasteWeight")]
11039    pub waste_weight: Option<f64>,
11040}
11041
11042#[derive(Serialize, Deserialize, Debug, Clone)]
11043pub struct HarvestsCreateUnfinishV1RequestItem {
11044    #[serde(rename = "Id")]
11045    pub id: Option<i64>,
11046}
11047
11048#[derive(Serialize, Deserialize, Debug, Clone)]
11049pub struct HarvestsCreateWasteV2RequestItem {
11050    #[serde(rename = "ActualDate")]
11051    pub actual_date: Option<String>,
11052    #[serde(rename = "Id")]
11053    pub id: Option<i64>,
11054    #[serde(rename = "UnitOfWeight")]
11055    pub unit_of_weight: Option<String>,
11056    #[serde(rename = "WasteType")]
11057    pub waste_type: Option<String>,
11058    #[serde(rename = "WasteWeight")]
11059    pub waste_weight: Option<f64>,
11060}
11061
11062#[derive(Serialize, Deserialize, Debug, Clone)]
11063pub struct HarvestsUpdateFinishV2RequestItem {
11064    #[serde(rename = "ActualDate")]
11065    pub actual_date: Option<String>,
11066    #[serde(rename = "Id")]
11067    pub id: Option<i64>,
11068}
11069
11070#[derive(Serialize, Deserialize, Debug, Clone)]
11071pub struct HarvestsUpdateLocationV2RequestItem {
11072    #[serde(rename = "ActualDate")]
11073    pub actual_date: Option<String>,
11074    #[serde(rename = "DryingLocation")]
11075    pub drying_location: Option<String>,
11076    #[serde(rename = "DryingSublocation")]
11077    pub drying_sublocation: Option<String>,
11078    #[serde(rename = "HarvestName")]
11079    pub harvest_name: Option<String>,
11080    #[serde(rename = "Id")]
11081    pub id: Option<i64>,
11082}
11083
11084#[derive(Serialize, Deserialize, Debug, Clone)]
11085pub struct HarvestsUpdateMoveV1RequestItem {
11086    #[serde(rename = "ActualDate")]
11087    pub actual_date: Option<String>,
11088    #[serde(rename = "DryingLocation")]
11089    pub drying_location: Option<String>,
11090    #[serde(rename = "DryingSublocation")]
11091    pub drying_sublocation: Option<String>,
11092    #[serde(rename = "HarvestName")]
11093    pub harvest_name: Option<String>,
11094    #[serde(rename = "Id")]
11095    pub id: Option<i64>,
11096}
11097
11098#[derive(Serialize, Deserialize, Debug, Clone)]
11099pub struct HarvestsUpdateRenameV1RequestItem {
11100    #[serde(rename = "Id")]
11101    pub id: Option<i64>,
11102    #[serde(rename = "NewName")]
11103    pub new_name: Option<String>,
11104    #[serde(rename = "OldName")]
11105    pub old_name: Option<String>,
11106}
11107
11108#[derive(Serialize, Deserialize, Debug, Clone)]
11109pub struct HarvestsUpdateRenameV2RequestItem {
11110    #[serde(rename = "Id")]
11111    pub id: Option<i64>,
11112    #[serde(rename = "NewName")]
11113    pub new_name: Option<String>,
11114    #[serde(rename = "OldName")]
11115    pub old_name: Option<String>,
11116}
11117
11118#[derive(Serialize, Deserialize, Debug, Clone)]
11119pub struct HarvestsUpdateRestoreHarvestedPlantsV2RequestItem {
11120    #[serde(rename = "HarvestId")]
11121    pub harvest_id: Option<i64>,
11122    #[serde(rename = "PlantTags")]
11123    pub plant_tags: Option<Vec<String>>,
11124}
11125
11126#[derive(Serialize, Deserialize, Debug, Clone)]
11127pub struct HarvestsUpdateUnfinishV2RequestItem {
11128    #[serde(rename = "Id")]
11129    pub id: Option<i64>,
11130}
11131
11132#[derive(Serialize, Deserialize, Debug, Clone)]
11133pub struct PatientsCreateV2RequestItem {
11134    #[serde(rename = "ActualDate")]
11135    pub actual_date: Option<String>,
11136    #[serde(rename = "ConcentrateOuncesAllowed")]
11137    pub concentrate_ounces_allowed: Option<i64>,
11138    #[serde(rename = "FlowerOuncesAllowed")]
11139    pub flower_ounces_allowed: Option<i64>,
11140    #[serde(rename = "HasSalesLimitExemption")]
11141    pub has_sales_limit_exemption: Option<bool>,
11142    #[serde(rename = "InfusedOuncesAllowed")]
11143    pub infused_ounces_allowed: Option<i64>,
11144    #[serde(rename = "LicenseEffectiveEndDate")]
11145    pub license_effective_end_date: Option<String>,
11146    #[serde(rename = "LicenseEffectiveStartDate")]
11147    pub license_effective_start_date: Option<String>,
11148    #[serde(rename = "LicenseNumber")]
11149    pub license_number: Option<String>,
11150    #[serde(rename = "MaxConcentrateThcPercentAllowed")]
11151    pub max_concentrate_thc_percent_allowed: Option<i64>,
11152    #[serde(rename = "MaxFlowerThcPercentAllowed")]
11153    pub max_flower_thc_percent_allowed: Option<i64>,
11154    #[serde(rename = "RecommendedPlants")]
11155    pub recommended_plants: Option<i64>,
11156    #[serde(rename = "RecommendedSmokableQuantity")]
11157    pub recommended_smokable_quantity: Option<i64>,
11158    #[serde(rename = "ThcOuncesAllowed")]
11159    pub thc_ounces_allowed: Option<i64>,
11160}
11161
11162#[derive(Serialize, Deserialize, Debug, Clone)]
11163pub struct PatientsCreateAddV1RequestItem {
11164    #[serde(rename = "ActualDate")]
11165    pub actual_date: Option<String>,
11166    #[serde(rename = "ConcentrateOuncesAllowed")]
11167    pub concentrate_ounces_allowed: Option<i64>,
11168    #[serde(rename = "FlowerOuncesAllowed")]
11169    pub flower_ounces_allowed: Option<i64>,
11170    #[serde(rename = "HasSalesLimitExemption")]
11171    pub has_sales_limit_exemption: Option<bool>,
11172    #[serde(rename = "InfusedOuncesAllowed")]
11173    pub infused_ounces_allowed: Option<i64>,
11174    #[serde(rename = "LicenseEffectiveEndDate")]
11175    pub license_effective_end_date: Option<String>,
11176    #[serde(rename = "LicenseEffectiveStartDate")]
11177    pub license_effective_start_date: Option<String>,
11178    #[serde(rename = "LicenseNumber")]
11179    pub license_number: Option<String>,
11180    #[serde(rename = "MaxConcentrateThcPercentAllowed")]
11181    pub max_concentrate_thc_percent_allowed: Option<i64>,
11182    #[serde(rename = "MaxFlowerThcPercentAllowed")]
11183    pub max_flower_thc_percent_allowed: Option<i64>,
11184    #[serde(rename = "RecommendedPlants")]
11185    pub recommended_plants: Option<i64>,
11186    #[serde(rename = "RecommendedSmokableQuantity")]
11187    pub recommended_smokable_quantity: Option<i64>,
11188    #[serde(rename = "ThcOuncesAllowed")]
11189    pub thc_ounces_allowed: Option<i64>,
11190}
11191
11192#[derive(Serialize, Deserialize, Debug, Clone)]
11193pub struct PatientsCreateUpdateV1RequestItem {
11194    #[serde(rename = "ActualDate")]
11195    pub actual_date: Option<String>,
11196    #[serde(rename = "ConcentrateOuncesAllowed")]
11197    pub concentrate_ounces_allowed: Option<i64>,
11198    #[serde(rename = "FlowerOuncesAllowed")]
11199    pub flower_ounces_allowed: Option<i64>,
11200    #[serde(rename = "HasSalesLimitExemption")]
11201    pub has_sales_limit_exemption: Option<bool>,
11202    #[serde(rename = "InfusedOuncesAllowed")]
11203    pub infused_ounces_allowed: Option<i64>,
11204    #[serde(rename = "LicenseEffectiveEndDate")]
11205    pub license_effective_end_date: Option<String>,
11206    #[serde(rename = "LicenseEffectiveStartDate")]
11207    pub license_effective_start_date: Option<String>,
11208    #[serde(rename = "LicenseNumber")]
11209    pub license_number: Option<String>,
11210    #[serde(rename = "MaxConcentrateThcPercentAllowed")]
11211    pub max_concentrate_thc_percent_allowed: Option<i64>,
11212    #[serde(rename = "MaxFlowerThcPercentAllowed")]
11213    pub max_flower_thc_percent_allowed: Option<i64>,
11214    #[serde(rename = "NewLicenseNumber")]
11215    pub new_license_number: Option<String>,
11216    #[serde(rename = "RecommendedPlants")]
11217    pub recommended_plants: Option<i64>,
11218    #[serde(rename = "RecommendedSmokableQuantity")]
11219    pub recommended_smokable_quantity: Option<i64>,
11220    #[serde(rename = "ThcOuncesAllowed")]
11221    pub thc_ounces_allowed: Option<i64>,
11222}
11223
11224#[derive(Serialize, Deserialize, Debug, Clone)]
11225pub struct PatientsUpdateV2RequestItem {
11226    #[serde(rename = "ActualDate")]
11227    pub actual_date: Option<String>,
11228    #[serde(rename = "ConcentrateOuncesAllowed")]
11229    pub concentrate_ounces_allowed: Option<i64>,
11230    #[serde(rename = "FlowerOuncesAllowed")]
11231    pub flower_ounces_allowed: Option<i64>,
11232    #[serde(rename = "HasSalesLimitExemption")]
11233    pub has_sales_limit_exemption: Option<bool>,
11234    #[serde(rename = "InfusedOuncesAllowed")]
11235    pub infused_ounces_allowed: Option<i64>,
11236    #[serde(rename = "LicenseEffectiveEndDate")]
11237    pub license_effective_end_date: Option<String>,
11238    #[serde(rename = "LicenseEffectiveStartDate")]
11239    pub license_effective_start_date: Option<String>,
11240    #[serde(rename = "LicenseNumber")]
11241    pub license_number: Option<String>,
11242    #[serde(rename = "MaxConcentrateThcPercentAllowed")]
11243    pub max_concentrate_thc_percent_allowed: Option<i64>,
11244    #[serde(rename = "MaxFlowerThcPercentAllowed")]
11245    pub max_flower_thc_percent_allowed: Option<i64>,
11246    #[serde(rename = "NewLicenseNumber")]
11247    pub new_license_number: Option<String>,
11248    #[serde(rename = "RecommendedPlants")]
11249    pub recommended_plants: Option<i64>,
11250    #[serde(rename = "RecommendedSmokableQuantity")]
11251    pub recommended_smokable_quantity: Option<i64>,
11252    #[serde(rename = "ThcOuncesAllowed")]
11253    pub thc_ounces_allowed: Option<i64>,
11254}
11255
11256#[derive(Serialize, Deserialize, Debug, Clone)]
11257pub struct SalesCreateDeliveryV1RequestItem {
11258    #[serde(rename = "ConsumerId")]
11259    pub consumer_id: Option<i64>,
11260    #[serde(rename = "DriverEmployeeId")]
11261    pub driver_employee_id: Option<String>,
11262    #[serde(rename = "DriverName")]
11263    pub driver_name: Option<String>,
11264    #[serde(rename = "DriversLicenseNumber")]
11265    pub drivers_license_number: Option<String>,
11266    #[serde(rename = "EstimatedArrivalDateTime")]
11267    pub estimated_arrival_date_time: Option<String>,
11268    #[serde(rename = "EstimatedDepartureDateTime")]
11269    pub estimated_departure_date_time: Option<String>,
11270    #[serde(rename = "PatientLicenseNumber")]
11271    pub patient_license_number: Option<String>,
11272    #[serde(rename = "PhoneNumberForQuestions")]
11273    pub phone_number_for_questions: Option<String>,
11274    #[serde(rename = "PlannedRoute")]
11275    pub planned_route: Option<String>,
11276    #[serde(rename = "RecipientAddressCity")]
11277    pub recipient_address_city: Option<String>,
11278    #[serde(rename = "RecipientAddressCounty")]
11279    pub recipient_address_county: Option<String>,
11280    #[serde(rename = "RecipientAddressPostalCode")]
11281    pub recipient_address_postal_code: Option<String>,
11282    #[serde(rename = "RecipientAddressState")]
11283    pub recipient_address_state: Option<String>,
11284    #[serde(rename = "RecipientAddressStreet1")]
11285    pub recipient_address_street1: Option<String>,
11286    #[serde(rename = "RecipientAddressStreet2")]
11287    pub recipient_address_street2: Option<String>,
11288    #[serde(rename = "RecipientName")]
11289    pub recipient_name: Option<String>,
11290    #[serde(rename = "RecipientZoneId")]
11291    pub recipient_zone_id: Option<i64>,
11292    #[serde(rename = "SalesCustomerType")]
11293    pub sales_customer_type: Option<String>,
11294    #[serde(rename = "SalesDateTime")]
11295    pub sales_date_time: Option<String>,
11296    #[serde(rename = "Transactions")]
11297    pub transactions: Option<Vec<SalesCreateDeliveryV1RequestItemTransactions>>,
11298    #[serde(rename = "TransporterFacilityLicenseNumber")]
11299    pub transporter_facility_license_number: Option<String>,
11300    #[serde(rename = "VehicleLicensePlateNumber")]
11301    pub vehicle_license_plate_number: Option<String>,
11302    #[serde(rename = "VehicleMake")]
11303    pub vehicle_make: Option<String>,
11304    #[serde(rename = "VehicleModel")]
11305    pub vehicle_model: Option<String>,
11306}
11307
11308#[derive(Serialize, Deserialize, Debug, Clone)]
11309pub struct SalesCreateDeliveryV1RequestItemTransactions {
11310    #[serde(rename = "CityTax")]
11311    pub city_tax: Option<String>,
11312    #[serde(rename = "CountyTax")]
11313    pub county_tax: Option<String>,
11314    #[serde(rename = "DiscountAmount")]
11315    pub discount_amount: Option<String>,
11316    #[serde(rename = "ExciseTax")]
11317    pub excise_tax: Option<String>,
11318    #[serde(rename = "InvoiceNumber")]
11319    pub invoice_number: Option<String>,
11320    #[serde(rename = "MunicipalTax")]
11321    pub municipal_tax: Option<String>,
11322    #[serde(rename = "PackageLabel")]
11323    pub package_label: Option<String>,
11324    #[serde(rename = "Price")]
11325    pub price: Option<String>,
11326    #[serde(rename = "QrCodes")]
11327    pub qr_codes: Option<String>,
11328    #[serde(rename = "Quantity")]
11329    pub quantity: Option<i64>,
11330    #[serde(rename = "SalesTax")]
11331    pub sales_tax: Option<String>,
11332    #[serde(rename = "SubTotal")]
11333    pub sub_total: Option<String>,
11334    #[serde(rename = "TotalAmount")]
11335    pub total_amount: Option<f64>,
11336    #[serde(rename = "UnitOfMeasure")]
11337    pub unit_of_measure: Option<String>,
11338    #[serde(rename = "UnitThcContent")]
11339    pub unit_thc_content: Option<f64>,
11340    #[serde(rename = "UnitThcContentUnitOfMeasure")]
11341    pub unit_thc_content_unit_of_measure: Option<String>,
11342    #[serde(rename = "UnitThcPercent")]
11343    pub unit_thc_percent: Option<f64>,
11344    #[serde(rename = "UnitWeight")]
11345    pub unit_weight: Option<f64>,
11346    #[serde(rename = "UnitWeightUnitOfMeasure")]
11347    pub unit_weight_unit_of_measure: Option<String>,
11348}
11349
11350#[derive(Serialize, Deserialize, Debug, Clone)]
11351pub struct SalesCreateDeliveryV2RequestItem {
11352    #[serde(rename = "ConsumerId")]
11353    pub consumer_id: Option<i64>,
11354    #[serde(rename = "DriverEmployeeId")]
11355    pub driver_employee_id: Option<String>,
11356    #[serde(rename = "DriverName")]
11357    pub driver_name: Option<String>,
11358    #[serde(rename = "DriversLicenseNumber")]
11359    pub drivers_license_number: Option<String>,
11360    #[serde(rename = "EstimatedArrivalDateTime")]
11361    pub estimated_arrival_date_time: Option<String>,
11362    #[serde(rename = "EstimatedDepartureDateTime")]
11363    pub estimated_departure_date_time: Option<String>,
11364    #[serde(rename = "PatientLicenseNumber")]
11365    pub patient_license_number: Option<String>,
11366    #[serde(rename = "PhoneNumberForQuestions")]
11367    pub phone_number_for_questions: Option<String>,
11368    #[serde(rename = "PlannedRoute")]
11369    pub planned_route: Option<String>,
11370    #[serde(rename = "RecipientAddressCity")]
11371    pub recipient_address_city: Option<String>,
11372    #[serde(rename = "RecipientAddressCounty")]
11373    pub recipient_address_county: Option<String>,
11374    #[serde(rename = "RecipientAddressPostalCode")]
11375    pub recipient_address_postal_code: Option<String>,
11376    #[serde(rename = "RecipientAddressState")]
11377    pub recipient_address_state: Option<String>,
11378    #[serde(rename = "RecipientAddressStreet1")]
11379    pub recipient_address_street1: Option<String>,
11380    #[serde(rename = "RecipientAddressStreet2")]
11381    pub recipient_address_street2: Option<String>,
11382    #[serde(rename = "RecipientName")]
11383    pub recipient_name: Option<String>,
11384    #[serde(rename = "RecipientZoneId")]
11385    pub recipient_zone_id: Option<i64>,
11386    #[serde(rename = "SalesCustomerType")]
11387    pub sales_customer_type: Option<String>,
11388    #[serde(rename = "SalesDateTime")]
11389    pub sales_date_time: Option<String>,
11390    #[serde(rename = "Transactions")]
11391    pub transactions: Option<Vec<SalesCreateDeliveryV2RequestItemTransactions>>,
11392    #[serde(rename = "TransporterFacilityLicenseNumber")]
11393    pub transporter_facility_license_number: Option<String>,
11394    #[serde(rename = "VehicleLicensePlateNumber")]
11395    pub vehicle_license_plate_number: Option<String>,
11396    #[serde(rename = "VehicleMake")]
11397    pub vehicle_make: Option<String>,
11398    #[serde(rename = "VehicleModel")]
11399    pub vehicle_model: Option<String>,
11400}
11401
11402#[derive(Serialize, Deserialize, Debug, Clone)]
11403pub struct SalesCreateDeliveryV2RequestItemTransactions {
11404    #[serde(rename = "CityTax")]
11405    pub city_tax: Option<String>,
11406    #[serde(rename = "CountyTax")]
11407    pub county_tax: Option<String>,
11408    #[serde(rename = "DiscountAmount")]
11409    pub discount_amount: Option<String>,
11410    #[serde(rename = "ExciseTax")]
11411    pub excise_tax: Option<String>,
11412    #[serde(rename = "InvoiceNumber")]
11413    pub invoice_number: Option<String>,
11414    #[serde(rename = "MunicipalTax")]
11415    pub municipal_tax: Option<String>,
11416    #[serde(rename = "PackageLabel")]
11417    pub package_label: Option<String>,
11418    #[serde(rename = "Price")]
11419    pub price: Option<String>,
11420    #[serde(rename = "QrCodes")]
11421    pub qr_codes: Option<String>,
11422    #[serde(rename = "Quantity")]
11423    pub quantity: Option<i64>,
11424    #[serde(rename = "SalesTax")]
11425    pub sales_tax: Option<String>,
11426    #[serde(rename = "SubTotal")]
11427    pub sub_total: Option<String>,
11428    #[serde(rename = "TotalAmount")]
11429    pub total_amount: Option<f64>,
11430    #[serde(rename = "UnitOfMeasure")]
11431    pub unit_of_measure: Option<String>,
11432    #[serde(rename = "UnitThcContent")]
11433    pub unit_thc_content: Option<f64>,
11434    #[serde(rename = "UnitThcContentUnitOfMeasure")]
11435    pub unit_thc_content_unit_of_measure: Option<String>,
11436    #[serde(rename = "UnitThcPercent")]
11437    pub unit_thc_percent: Option<f64>,
11438    #[serde(rename = "UnitWeight")]
11439    pub unit_weight: Option<f64>,
11440    #[serde(rename = "UnitWeightUnitOfMeasure")]
11441    pub unit_weight_unit_of_measure: Option<String>,
11442}
11443
11444#[derive(Serialize, Deserialize, Debug, Clone)]
11445pub struct SalesCreateDeliveryRetailerV1RequestItem {
11446    #[serde(rename = "DateTime")]
11447    pub date_time: Option<String>,
11448    #[serde(rename = "Destinations")]
11449    pub destinations: Option<Vec<SalesCreateDeliveryRetailerV1RequestItemDestinations>>,
11450    #[serde(rename = "DriverEmployeeId")]
11451    pub driver_employee_id: Option<String>,
11452    #[serde(rename = "DriverName")]
11453    pub driver_name: Option<String>,
11454    #[serde(rename = "DriversLicenseNumber")]
11455    pub drivers_license_number: Option<String>,
11456    #[serde(rename = "EstimatedDepartureDateTime")]
11457    pub estimated_departure_date_time: Option<String>,
11458    #[serde(rename = "Packages")]
11459    pub packages: Option<Vec<SalesCreateDeliveryRetailerV1RequestItemPackages>>,
11460    #[serde(rename = "PhoneNumberForQuestions")]
11461    pub phone_number_for_questions: Option<String>,
11462    #[serde(rename = "VehicleLicensePlateNumber")]
11463    pub vehicle_license_plate_number: Option<String>,
11464    #[serde(rename = "VehicleMake")]
11465    pub vehicle_make: Option<String>,
11466    #[serde(rename = "VehicleModel")]
11467    pub vehicle_model: Option<String>,
11468}
11469
11470#[derive(Serialize, Deserialize, Debug, Clone)]
11471pub struct SalesCreateDeliveryRetailerV1RequestItemDestinations {
11472    #[serde(rename = "ConsumerId")]
11473    pub consumer_id: Option<String>,
11474    #[serde(rename = "EstimatedArrivalDateTime")]
11475    pub estimated_arrival_date_time: Option<String>,
11476    #[serde(rename = "PatientLicenseNumber")]
11477    pub patient_license_number: Option<String>,
11478    #[serde(rename = "RecipientAddressCity")]
11479    pub recipient_address_city: Option<String>,
11480    #[serde(rename = "RecipientAddressCounty")]
11481    pub recipient_address_county: Option<String>,
11482    #[serde(rename = "RecipientAddressPostalCode")]
11483    pub recipient_address_postal_code: Option<String>,
11484    #[serde(rename = "RecipientAddressState")]
11485    pub recipient_address_state: Option<String>,
11486    #[serde(rename = "RecipientAddressStreet1")]
11487    pub recipient_address_street1: Option<String>,
11488    #[serde(rename = "RecipientAddressStreet2")]
11489    pub recipient_address_street2: Option<String>,
11490    #[serde(rename = "RecipientName")]
11491    pub recipient_name: Option<String>,
11492    #[serde(rename = "RecipientZoneId")]
11493    pub recipient_zone_id: Option<String>,
11494    #[serde(rename = "SalesCustomerType")]
11495    pub sales_customer_type: Option<String>,
11496    #[serde(rename = "Transactions")]
11497    pub transactions: Option<Vec<SalesCreateDeliveryRetailerV1RequestItemDestinationsTransactions>>,
11498}
11499
11500#[derive(Serialize, Deserialize, Debug, Clone)]
11501pub struct SalesCreateDeliveryRetailerV1RequestItemDestinationsTransactions {
11502    #[serde(rename = "CityTax")]
11503    pub city_tax: Option<String>,
11504    #[serde(rename = "CountyTax")]
11505    pub county_tax: Option<String>,
11506    #[serde(rename = "DiscountAmount")]
11507    pub discount_amount: Option<String>,
11508    #[serde(rename = "ExciseTax")]
11509    pub excise_tax: Option<String>,
11510    #[serde(rename = "InvoiceNumber")]
11511    pub invoice_number: Option<String>,
11512    #[serde(rename = "MunicipalTax")]
11513    pub municipal_tax: Option<String>,
11514    #[serde(rename = "PackageLabel")]
11515    pub package_label: Option<String>,
11516    #[serde(rename = "Price")]
11517    pub price: Option<String>,
11518    #[serde(rename = "QrCodes")]
11519    pub qr_codes: Option<String>,
11520    #[serde(rename = "Quantity")]
11521    pub quantity: Option<i64>,
11522    #[serde(rename = "SalesTax")]
11523    pub sales_tax: Option<String>,
11524    #[serde(rename = "SubTotal")]
11525    pub sub_total: Option<String>,
11526    #[serde(rename = "TotalAmount")]
11527    pub total_amount: Option<f64>,
11528    #[serde(rename = "UnitOfMeasure")]
11529    pub unit_of_measure: Option<String>,
11530    #[serde(rename = "UnitThcContent")]
11531    pub unit_thc_content: Option<f64>,
11532    #[serde(rename = "UnitThcContentUnitOfMeasure")]
11533    pub unit_thc_content_unit_of_measure: Option<String>,
11534    #[serde(rename = "UnitThcPercent")]
11535    pub unit_thc_percent: Option<f64>,
11536    #[serde(rename = "UnitWeight")]
11537    pub unit_weight: Option<f64>,
11538    #[serde(rename = "UnitWeightUnitOfMeasure")]
11539    pub unit_weight_unit_of_measure: Option<String>,
11540}
11541
11542#[derive(Serialize, Deserialize, Debug, Clone)]
11543pub struct SalesCreateDeliveryRetailerV1RequestItemPackages {
11544    #[serde(rename = "DateTime")]
11545    pub date_time: Option<String>,
11546    #[serde(rename = "PackageLabel")]
11547    pub package_label: Option<String>,
11548    #[serde(rename = "Quantity")]
11549    pub quantity: Option<i64>,
11550    #[serde(rename = "TotalPrice")]
11551    pub total_price: Option<f64>,
11552    #[serde(rename = "UnitOfMeasure")]
11553    pub unit_of_measure: Option<String>,
11554}
11555
11556#[derive(Serialize, Deserialize, Debug, Clone)]
11557pub struct SalesCreateDeliveryRetailerV2RequestItem {
11558    #[serde(rename = "DateTime")]
11559    pub date_time: Option<String>,
11560    #[serde(rename = "Destinations")]
11561    pub destinations: Option<Vec<SalesCreateDeliveryRetailerV2RequestItemDestinations>>,
11562    #[serde(rename = "DriverEmployeeId")]
11563    pub driver_employee_id: Option<String>,
11564    #[serde(rename = "DriverName")]
11565    pub driver_name: Option<String>,
11566    #[serde(rename = "DriversLicenseNumber")]
11567    pub drivers_license_number: Option<String>,
11568    #[serde(rename = "EstimatedDepartureDateTime")]
11569    pub estimated_departure_date_time: Option<String>,
11570    #[serde(rename = "Packages")]
11571    pub packages: Option<Vec<SalesCreateDeliveryRetailerV2RequestItemPackages>>,
11572    #[serde(rename = "PhoneNumberForQuestions")]
11573    pub phone_number_for_questions: Option<String>,
11574    #[serde(rename = "VehicleLicensePlateNumber")]
11575    pub vehicle_license_plate_number: Option<String>,
11576    #[serde(rename = "VehicleMake")]
11577    pub vehicle_make: Option<String>,
11578    #[serde(rename = "VehicleModel")]
11579    pub vehicle_model: Option<String>,
11580}
11581
11582#[derive(Serialize, Deserialize, Debug, Clone)]
11583pub struct SalesCreateDeliveryRetailerV2RequestItemDestinations {
11584    #[serde(rename = "ConsumerId")]
11585    pub consumer_id: Option<String>,
11586    #[serde(rename = "EstimatedArrivalDateTime")]
11587    pub estimated_arrival_date_time: Option<String>,
11588    #[serde(rename = "PatientLicenseNumber")]
11589    pub patient_license_number: Option<String>,
11590    #[serde(rename = "RecipientAddressCity")]
11591    pub recipient_address_city: Option<String>,
11592    #[serde(rename = "RecipientAddressCounty")]
11593    pub recipient_address_county: Option<String>,
11594    #[serde(rename = "RecipientAddressPostalCode")]
11595    pub recipient_address_postal_code: Option<String>,
11596    #[serde(rename = "RecipientAddressState")]
11597    pub recipient_address_state: Option<String>,
11598    #[serde(rename = "RecipientAddressStreet1")]
11599    pub recipient_address_street1: Option<String>,
11600    #[serde(rename = "RecipientAddressStreet2")]
11601    pub recipient_address_street2: Option<String>,
11602    #[serde(rename = "RecipientName")]
11603    pub recipient_name: Option<String>,
11604    #[serde(rename = "RecipientZoneId")]
11605    pub recipient_zone_id: Option<String>,
11606    #[serde(rename = "SalesCustomerType")]
11607    pub sales_customer_type: Option<String>,
11608    #[serde(rename = "Transactions")]
11609    pub transactions: Option<Vec<SalesCreateDeliveryRetailerV2RequestItemDestinationsTransactions>>,
11610}
11611
11612#[derive(Serialize, Deserialize, Debug, Clone)]
11613pub struct SalesCreateDeliveryRetailerV2RequestItemDestinationsTransactions {
11614    #[serde(rename = "CityTax")]
11615    pub city_tax: Option<String>,
11616    #[serde(rename = "CountyTax")]
11617    pub county_tax: Option<String>,
11618    #[serde(rename = "DiscountAmount")]
11619    pub discount_amount: Option<String>,
11620    #[serde(rename = "ExciseTax")]
11621    pub excise_tax: Option<String>,
11622    #[serde(rename = "InvoiceNumber")]
11623    pub invoice_number: Option<String>,
11624    #[serde(rename = "MunicipalTax")]
11625    pub municipal_tax: Option<String>,
11626    #[serde(rename = "PackageLabel")]
11627    pub package_label: Option<String>,
11628    #[serde(rename = "Price")]
11629    pub price: Option<String>,
11630    #[serde(rename = "QrCodes")]
11631    pub qr_codes: Option<String>,
11632    #[serde(rename = "Quantity")]
11633    pub quantity: Option<i64>,
11634    #[serde(rename = "SalesTax")]
11635    pub sales_tax: Option<String>,
11636    #[serde(rename = "SubTotal")]
11637    pub sub_total: Option<String>,
11638    #[serde(rename = "TotalAmount")]
11639    pub total_amount: Option<f64>,
11640    #[serde(rename = "UnitOfMeasure")]
11641    pub unit_of_measure: Option<String>,
11642    #[serde(rename = "UnitThcContent")]
11643    pub unit_thc_content: Option<f64>,
11644    #[serde(rename = "UnitThcContentUnitOfMeasure")]
11645    pub unit_thc_content_unit_of_measure: Option<String>,
11646    #[serde(rename = "UnitThcPercent")]
11647    pub unit_thc_percent: Option<f64>,
11648    #[serde(rename = "UnitWeight")]
11649    pub unit_weight: Option<f64>,
11650    #[serde(rename = "UnitWeightUnitOfMeasure")]
11651    pub unit_weight_unit_of_measure: Option<String>,
11652}
11653
11654#[derive(Serialize, Deserialize, Debug, Clone)]
11655pub struct SalesCreateDeliveryRetailerV2RequestItemPackages {
11656    #[serde(rename = "DateTime")]
11657    pub date_time: Option<String>,
11658    #[serde(rename = "PackageLabel")]
11659    pub package_label: Option<String>,
11660    #[serde(rename = "Quantity")]
11661    pub quantity: Option<i64>,
11662    #[serde(rename = "TotalPrice")]
11663    pub total_price: Option<f64>,
11664    #[serde(rename = "UnitOfMeasure")]
11665    pub unit_of_measure: Option<String>,
11666}
11667
11668#[derive(Serialize, Deserialize, Debug, Clone)]
11669pub struct SalesCreateDeliveryRetailerDepartV1RequestItem {
11670    #[serde(rename = "RetailerDeliveryId")]
11671    pub retailer_delivery_id: Option<i64>,
11672}
11673
11674#[derive(Serialize, Deserialize, Debug, Clone)]
11675pub struct SalesCreateDeliveryRetailerDepartV2RequestItem {
11676    #[serde(rename = "RetailerDeliveryId")]
11677    pub retailer_delivery_id: Option<i64>,
11678}
11679
11680#[derive(Serialize, Deserialize, Debug, Clone)]
11681pub struct SalesCreateDeliveryRetailerEndV1RequestItem {
11682    #[serde(rename = "ActualArrivalDateTime")]
11683    pub actual_arrival_date_time: Option<String>,
11684    #[serde(rename = "Packages")]
11685    pub packages: Option<Vec<SalesCreateDeliveryRetailerEndV1RequestItemPackages>>,
11686    #[serde(rename = "RetailerDeliveryId")]
11687    pub retailer_delivery_id: Option<i64>,
11688}
11689
11690#[derive(Serialize, Deserialize, Debug, Clone)]
11691pub struct SalesCreateDeliveryRetailerEndV1RequestItemPackages {
11692    #[serde(rename = "EndQuantity")]
11693    pub end_quantity: Option<i64>,
11694    #[serde(rename = "EndUnitOfMeasure")]
11695    pub end_unit_of_measure: Option<String>,
11696    #[serde(rename = "Label")]
11697    pub label: Option<String>,
11698}
11699
11700#[derive(Serialize, Deserialize, Debug, Clone)]
11701pub struct SalesCreateDeliveryRetailerEndV2RequestItem {
11702    #[serde(rename = "ActualArrivalDateTime")]
11703    pub actual_arrival_date_time: Option<String>,
11704    #[serde(rename = "Packages")]
11705    pub packages: Option<Vec<SalesCreateDeliveryRetailerEndV2RequestItemPackages>>,
11706    #[serde(rename = "RetailerDeliveryId")]
11707    pub retailer_delivery_id: Option<i64>,
11708}
11709
11710#[derive(Serialize, Deserialize, Debug, Clone)]
11711pub struct SalesCreateDeliveryRetailerEndV2RequestItemPackages {
11712    #[serde(rename = "EndQuantity")]
11713    pub end_quantity: Option<i64>,
11714    #[serde(rename = "EndUnitOfMeasure")]
11715    pub end_unit_of_measure: Option<String>,
11716    #[serde(rename = "Label")]
11717    pub label: Option<String>,
11718}
11719
11720#[derive(Serialize, Deserialize, Debug, Clone)]
11721pub struct SalesCreateDeliveryRetailerRestockV1RequestItem {
11722    #[serde(rename = "DateTime")]
11723    pub date_time: Option<String>,
11724    #[serde(rename = "Destinations")]
11725    pub destinations: Option<String>,
11726    #[serde(rename = "EstimatedDepartureDateTime")]
11727    pub estimated_departure_date_time: Option<String>,
11728    #[serde(rename = "Packages")]
11729    pub packages: Option<Vec<SalesCreateDeliveryRetailerRestockV1RequestItemPackages>>,
11730    #[serde(rename = "RetailerDeliveryId")]
11731    pub retailer_delivery_id: Option<i64>,
11732}
11733
11734#[derive(Serialize, Deserialize, Debug, Clone)]
11735pub struct SalesCreateDeliveryRetailerRestockV1RequestItemPackages {
11736    #[serde(rename = "PackageLabel")]
11737    pub package_label: Option<String>,
11738    #[serde(rename = "Quantity")]
11739    pub quantity: Option<i64>,
11740    #[serde(rename = "RemoveCurrentPackage")]
11741    pub remove_current_package: Option<bool>,
11742    #[serde(rename = "TotalPrice")]
11743    pub total_price: Option<f64>,
11744    #[serde(rename = "UnitOfMeasure")]
11745    pub unit_of_measure: Option<String>,
11746}
11747
11748#[derive(Serialize, Deserialize, Debug, Clone)]
11749pub struct SalesCreateDeliveryRetailerRestockV2RequestItem {
11750    #[serde(rename = "DateTime")]
11751    pub date_time: Option<String>,
11752    #[serde(rename = "Destinations")]
11753    pub destinations: Option<String>,
11754    #[serde(rename = "EstimatedDepartureDateTime")]
11755    pub estimated_departure_date_time: Option<String>,
11756    #[serde(rename = "Packages")]
11757    pub packages: Option<Vec<SalesCreateDeliveryRetailerRestockV2RequestItemPackages>>,
11758    #[serde(rename = "RetailerDeliveryId")]
11759    pub retailer_delivery_id: Option<i64>,
11760}
11761
11762#[derive(Serialize, Deserialize, Debug, Clone)]
11763pub struct SalesCreateDeliveryRetailerRestockV2RequestItemPackages {
11764    #[serde(rename = "PackageLabel")]
11765    pub package_label: Option<String>,
11766    #[serde(rename = "Quantity")]
11767    pub quantity: Option<i64>,
11768    #[serde(rename = "RemoveCurrentPackage")]
11769    pub remove_current_package: Option<bool>,
11770    #[serde(rename = "TotalPrice")]
11771    pub total_price: Option<f64>,
11772    #[serde(rename = "UnitOfMeasure")]
11773    pub unit_of_measure: Option<String>,
11774}
11775
11776#[derive(Serialize, Deserialize, Debug, Clone)]
11777pub struct SalesCreateDeliveryRetailerSaleV1RequestItem {
11778    #[serde(rename = "ConsumerId")]
11779    pub consumer_id: Option<i64>,
11780    #[serde(rename = "EstimatedArrivalDateTime")]
11781    pub estimated_arrival_date_time: Option<String>,
11782    #[serde(rename = "EstimatedDepartureDateTime")]
11783    pub estimated_departure_date_time: Option<String>,
11784    #[serde(rename = "PatientLicenseNumber")]
11785    pub patient_license_number: Option<String>,
11786    #[serde(rename = "PhoneNumberForQuestions")]
11787    pub phone_number_for_questions: Option<String>,
11788    #[serde(rename = "PlannedRoute")]
11789    pub planned_route: Option<String>,
11790    #[serde(rename = "RecipientAddressCity")]
11791    pub recipient_address_city: Option<String>,
11792    #[serde(rename = "RecipientAddressCounty")]
11793    pub recipient_address_county: Option<String>,
11794    #[serde(rename = "RecipientAddressPostalCode")]
11795    pub recipient_address_postal_code: Option<String>,
11796    #[serde(rename = "RecipientAddressState")]
11797    pub recipient_address_state: Option<String>,
11798    #[serde(rename = "RecipientAddressStreet1")]
11799    pub recipient_address_street1: Option<String>,
11800    #[serde(rename = "RecipientAddressStreet2")]
11801    pub recipient_address_street2: Option<String>,
11802    #[serde(rename = "RecipientName")]
11803    pub recipient_name: Option<String>,
11804    #[serde(rename = "RecipientZoneId")]
11805    pub recipient_zone_id: Option<i64>,
11806    #[serde(rename = "RetailerDeliveryId")]
11807    pub retailer_delivery_id: Option<i64>,
11808    #[serde(rename = "SalesCustomerType")]
11809    pub sales_customer_type: Option<String>,
11810    #[serde(rename = "SalesDateTime")]
11811    pub sales_date_time: Option<String>,
11812    #[serde(rename = "Transactions")]
11813    pub transactions: Option<Vec<SalesCreateDeliveryRetailerSaleV1RequestItemTransactions>>,
11814}
11815
11816#[derive(Serialize, Deserialize, Debug, Clone)]
11817pub struct SalesCreateDeliveryRetailerSaleV1RequestItemTransactions {
11818    #[serde(rename = "CityTax")]
11819    pub city_tax: Option<String>,
11820    #[serde(rename = "CountyTax")]
11821    pub county_tax: Option<String>,
11822    #[serde(rename = "DiscountAmount")]
11823    pub discount_amount: Option<String>,
11824    #[serde(rename = "ExciseTax")]
11825    pub excise_tax: Option<String>,
11826    #[serde(rename = "InvoiceNumber")]
11827    pub invoice_number: Option<String>,
11828    #[serde(rename = "MunicipalTax")]
11829    pub municipal_tax: Option<String>,
11830    #[serde(rename = "PackageLabel")]
11831    pub package_label: Option<String>,
11832    #[serde(rename = "Price")]
11833    pub price: Option<String>,
11834    #[serde(rename = "QrCodes")]
11835    pub qr_codes: Option<String>,
11836    #[serde(rename = "Quantity")]
11837    pub quantity: Option<i64>,
11838    #[serde(rename = "SalesTax")]
11839    pub sales_tax: Option<String>,
11840    #[serde(rename = "SubTotal")]
11841    pub sub_total: Option<String>,
11842    #[serde(rename = "TotalAmount")]
11843    pub total_amount: Option<f64>,
11844    #[serde(rename = "UnitOfMeasure")]
11845    pub unit_of_measure: Option<String>,
11846    #[serde(rename = "UnitThcContent")]
11847    pub unit_thc_content: Option<f64>,
11848    #[serde(rename = "UnitThcContentUnitOfMeasure")]
11849    pub unit_thc_content_unit_of_measure: Option<String>,
11850    #[serde(rename = "UnitThcPercent")]
11851    pub unit_thc_percent: Option<f64>,
11852    #[serde(rename = "UnitWeight")]
11853    pub unit_weight: Option<f64>,
11854    #[serde(rename = "UnitWeightUnitOfMeasure")]
11855    pub unit_weight_unit_of_measure: Option<String>,
11856}
11857
11858#[derive(Serialize, Deserialize, Debug, Clone)]
11859pub struct SalesCreateDeliveryRetailerSaleV2RequestItem {
11860    #[serde(rename = "ConsumerId")]
11861    pub consumer_id: Option<i64>,
11862    #[serde(rename = "EstimatedArrivalDateTime")]
11863    pub estimated_arrival_date_time: Option<String>,
11864    #[serde(rename = "EstimatedDepartureDateTime")]
11865    pub estimated_departure_date_time: Option<String>,
11866    #[serde(rename = "PatientLicenseNumber")]
11867    pub patient_license_number: Option<String>,
11868    #[serde(rename = "PhoneNumberForQuestions")]
11869    pub phone_number_for_questions: Option<String>,
11870    #[serde(rename = "PlannedRoute")]
11871    pub planned_route: Option<String>,
11872    #[serde(rename = "RecipientAddressCity")]
11873    pub recipient_address_city: Option<String>,
11874    #[serde(rename = "RecipientAddressCounty")]
11875    pub recipient_address_county: Option<String>,
11876    #[serde(rename = "RecipientAddressPostalCode")]
11877    pub recipient_address_postal_code: Option<String>,
11878    #[serde(rename = "RecipientAddressState")]
11879    pub recipient_address_state: Option<String>,
11880    #[serde(rename = "RecipientAddressStreet1")]
11881    pub recipient_address_street1: Option<String>,
11882    #[serde(rename = "RecipientAddressStreet2")]
11883    pub recipient_address_street2: Option<String>,
11884    #[serde(rename = "RecipientName")]
11885    pub recipient_name: Option<String>,
11886    #[serde(rename = "RecipientZoneId")]
11887    pub recipient_zone_id: Option<i64>,
11888    #[serde(rename = "RetailerDeliveryId")]
11889    pub retailer_delivery_id: Option<i64>,
11890    #[serde(rename = "SalesCustomerType")]
11891    pub sales_customer_type: Option<String>,
11892    #[serde(rename = "SalesDateTime")]
11893    pub sales_date_time: Option<String>,
11894    #[serde(rename = "Transactions")]
11895    pub transactions: Option<Vec<SalesCreateDeliveryRetailerSaleV2RequestItemTransactions>>,
11896}
11897
11898#[derive(Serialize, Deserialize, Debug, Clone)]
11899pub struct SalesCreateDeliveryRetailerSaleV2RequestItemTransactions {
11900    #[serde(rename = "CityTax")]
11901    pub city_tax: Option<String>,
11902    #[serde(rename = "CountyTax")]
11903    pub county_tax: Option<String>,
11904    #[serde(rename = "DiscountAmount")]
11905    pub discount_amount: Option<String>,
11906    #[serde(rename = "ExciseTax")]
11907    pub excise_tax: Option<String>,
11908    #[serde(rename = "InvoiceNumber")]
11909    pub invoice_number: Option<String>,
11910    #[serde(rename = "MunicipalTax")]
11911    pub municipal_tax: Option<String>,
11912    #[serde(rename = "PackageLabel")]
11913    pub package_label: Option<String>,
11914    #[serde(rename = "Price")]
11915    pub price: Option<String>,
11916    #[serde(rename = "QrCodes")]
11917    pub qr_codes: Option<String>,
11918    #[serde(rename = "Quantity")]
11919    pub quantity: Option<i64>,
11920    #[serde(rename = "SalesTax")]
11921    pub sales_tax: Option<String>,
11922    #[serde(rename = "SubTotal")]
11923    pub sub_total: Option<String>,
11924    #[serde(rename = "TotalAmount")]
11925    pub total_amount: Option<f64>,
11926    #[serde(rename = "UnitOfMeasure")]
11927    pub unit_of_measure: Option<String>,
11928    #[serde(rename = "UnitThcContent")]
11929    pub unit_thc_content: Option<f64>,
11930    #[serde(rename = "UnitThcContentUnitOfMeasure")]
11931    pub unit_thc_content_unit_of_measure: Option<String>,
11932    #[serde(rename = "UnitThcPercent")]
11933    pub unit_thc_percent: Option<f64>,
11934    #[serde(rename = "UnitWeight")]
11935    pub unit_weight: Option<f64>,
11936    #[serde(rename = "UnitWeightUnitOfMeasure")]
11937    pub unit_weight_unit_of_measure: Option<String>,
11938}
11939
11940#[derive(Serialize, Deserialize, Debug, Clone)]
11941pub struct SalesCreateReceiptV1RequestItem {
11942    #[serde(rename = "CaregiverLicenseNumber")]
11943    pub caregiver_license_number: Option<String>,
11944    #[serde(rename = "ExternalReceiptNumber")]
11945    pub external_receipt_number: Option<String>,
11946    #[serde(rename = "IdentificationMethod")]
11947    pub identification_method: Option<String>,
11948    #[serde(rename = "PatientLicenseNumber")]
11949    pub patient_license_number: Option<String>,
11950    #[serde(rename = "PatientRegistrationLocationId")]
11951    pub patient_registration_location_id: Option<i64>,
11952    #[serde(rename = "SalesCustomerType")]
11953    pub sales_customer_type: Option<String>,
11954    #[serde(rename = "SalesDateTime")]
11955    pub sales_date_time: Option<String>,
11956    #[serde(rename = "Transactions")]
11957    pub transactions: Option<Vec<SalesCreateReceiptV1RequestItemTransactions>>,
11958}
11959
11960#[derive(Serialize, Deserialize, Debug, Clone)]
11961pub struct SalesCreateReceiptV1RequestItemTransactions {
11962    #[serde(rename = "CityTax")]
11963    pub city_tax: Option<String>,
11964    #[serde(rename = "CountyTax")]
11965    pub county_tax: Option<String>,
11966    #[serde(rename = "DiscountAmount")]
11967    pub discount_amount: Option<String>,
11968    #[serde(rename = "ExciseTax")]
11969    pub excise_tax: Option<String>,
11970    #[serde(rename = "InvoiceNumber")]
11971    pub invoice_number: Option<String>,
11972    #[serde(rename = "MunicipalTax")]
11973    pub municipal_tax: Option<String>,
11974    #[serde(rename = "PackageLabel")]
11975    pub package_label: Option<String>,
11976    #[serde(rename = "Price")]
11977    pub price: Option<String>,
11978    #[serde(rename = "QrCodes")]
11979    pub qr_codes: Option<String>,
11980    #[serde(rename = "Quantity")]
11981    pub quantity: Option<i64>,
11982    #[serde(rename = "SalesTax")]
11983    pub sales_tax: Option<String>,
11984    #[serde(rename = "SubTotal")]
11985    pub sub_total: Option<String>,
11986    #[serde(rename = "TotalAmount")]
11987    pub total_amount: Option<f64>,
11988    #[serde(rename = "UnitOfMeasure")]
11989    pub unit_of_measure: Option<String>,
11990    #[serde(rename = "UnitThcContent")]
11991    pub unit_thc_content: Option<f64>,
11992    #[serde(rename = "UnitThcContentUnitOfMeasure")]
11993    pub unit_thc_content_unit_of_measure: Option<String>,
11994    #[serde(rename = "UnitThcPercent")]
11995    pub unit_thc_percent: Option<f64>,
11996    #[serde(rename = "UnitWeight")]
11997    pub unit_weight: Option<f64>,
11998    #[serde(rename = "UnitWeightUnitOfMeasure")]
11999    pub unit_weight_unit_of_measure: Option<String>,
12000}
12001
12002#[derive(Serialize, Deserialize, Debug, Clone)]
12003pub struct SalesCreateReceiptV2RequestItem {
12004    #[serde(rename = "CaregiverLicenseNumber")]
12005    pub caregiver_license_number: Option<String>,
12006    #[serde(rename = "ExternalReceiptNumber")]
12007    pub external_receipt_number: Option<String>,
12008    #[serde(rename = "IdentificationMethod")]
12009    pub identification_method: Option<String>,
12010    #[serde(rename = "PatientLicenseNumber")]
12011    pub patient_license_number: Option<String>,
12012    #[serde(rename = "PatientRegistrationLocationId")]
12013    pub patient_registration_location_id: Option<i64>,
12014    #[serde(rename = "SalesCustomerType")]
12015    pub sales_customer_type: Option<String>,
12016    #[serde(rename = "SalesDateTime")]
12017    pub sales_date_time: Option<String>,
12018    #[serde(rename = "Transactions")]
12019    pub transactions: Option<Vec<SalesCreateReceiptV2RequestItemTransactions>>,
12020}
12021
12022#[derive(Serialize, Deserialize, Debug, Clone)]
12023pub struct SalesCreateReceiptV2RequestItemTransactions {
12024    #[serde(rename = "CityTax")]
12025    pub city_tax: Option<String>,
12026    #[serde(rename = "CountyTax")]
12027    pub county_tax: Option<String>,
12028    #[serde(rename = "DiscountAmount")]
12029    pub discount_amount: Option<String>,
12030    #[serde(rename = "ExciseTax")]
12031    pub excise_tax: Option<String>,
12032    #[serde(rename = "InvoiceNumber")]
12033    pub invoice_number: Option<String>,
12034    #[serde(rename = "MunicipalTax")]
12035    pub municipal_tax: Option<String>,
12036    #[serde(rename = "PackageLabel")]
12037    pub package_label: Option<String>,
12038    #[serde(rename = "Price")]
12039    pub price: Option<String>,
12040    #[serde(rename = "QrCodes")]
12041    pub qr_codes: Option<String>,
12042    #[serde(rename = "Quantity")]
12043    pub quantity: Option<i64>,
12044    #[serde(rename = "SalesTax")]
12045    pub sales_tax: Option<String>,
12046    #[serde(rename = "SubTotal")]
12047    pub sub_total: Option<String>,
12048    #[serde(rename = "TotalAmount")]
12049    pub total_amount: Option<f64>,
12050    #[serde(rename = "UnitOfMeasure")]
12051    pub unit_of_measure: Option<String>,
12052    #[serde(rename = "UnitThcContent")]
12053    pub unit_thc_content: Option<f64>,
12054    #[serde(rename = "UnitThcContentUnitOfMeasure")]
12055    pub unit_thc_content_unit_of_measure: Option<String>,
12056    #[serde(rename = "UnitThcPercent")]
12057    pub unit_thc_percent: Option<f64>,
12058    #[serde(rename = "UnitWeight")]
12059    pub unit_weight: Option<f64>,
12060    #[serde(rename = "UnitWeightUnitOfMeasure")]
12061    pub unit_weight_unit_of_measure: Option<String>,
12062}
12063
12064#[derive(Serialize, Deserialize, Debug, Clone)]
12065pub struct SalesCreateTransactionByDateV1RequestItem {
12066    #[serde(rename = "CityTax")]
12067    pub city_tax: Option<String>,
12068    #[serde(rename = "CountyTax")]
12069    pub county_tax: Option<String>,
12070    #[serde(rename = "DiscountAmount")]
12071    pub discount_amount: Option<String>,
12072    #[serde(rename = "ExciseTax")]
12073    pub excise_tax: Option<String>,
12074    #[serde(rename = "InvoiceNumber")]
12075    pub invoice_number: Option<String>,
12076    #[serde(rename = "MunicipalTax")]
12077    pub municipal_tax: Option<String>,
12078    #[serde(rename = "PackageLabel")]
12079    pub package_label: Option<String>,
12080    #[serde(rename = "Price")]
12081    pub price: Option<String>,
12082    #[serde(rename = "QrCodes")]
12083    pub qr_codes: Option<String>,
12084    #[serde(rename = "Quantity")]
12085    pub quantity: Option<i64>,
12086    #[serde(rename = "SalesTax")]
12087    pub sales_tax: Option<String>,
12088    #[serde(rename = "SubTotal")]
12089    pub sub_total: Option<String>,
12090    #[serde(rename = "TotalAmount")]
12091    pub total_amount: Option<f64>,
12092    #[serde(rename = "UnitOfMeasure")]
12093    pub unit_of_measure: Option<String>,
12094    #[serde(rename = "UnitThcContent")]
12095    pub unit_thc_content: Option<f64>,
12096    #[serde(rename = "UnitThcContentUnitOfMeasure")]
12097    pub unit_thc_content_unit_of_measure: Option<String>,
12098    #[serde(rename = "UnitThcPercent")]
12099    pub unit_thc_percent: Option<f64>,
12100    #[serde(rename = "UnitWeight")]
12101    pub unit_weight: Option<f64>,
12102    #[serde(rename = "UnitWeightUnitOfMeasure")]
12103    pub unit_weight_unit_of_measure: Option<String>,
12104}
12105
12106#[derive(Serialize, Deserialize, Debug, Clone)]
12107pub struct SalesUpdateDeliveryV1RequestItem {
12108    #[serde(rename = "ConsumerId")]
12109    pub consumer_id: Option<i64>,
12110    #[serde(rename = "DriverEmployeeId")]
12111    pub driver_employee_id: Option<String>,
12112    #[serde(rename = "DriverName")]
12113    pub driver_name: Option<String>,
12114    #[serde(rename = "DriversLicenseNumber")]
12115    pub drivers_license_number: Option<String>,
12116    #[serde(rename = "EstimatedArrivalDateTime")]
12117    pub estimated_arrival_date_time: Option<String>,
12118    #[serde(rename = "EstimatedDepartureDateTime")]
12119    pub estimated_departure_date_time: Option<String>,
12120    #[serde(rename = "Id")]
12121    pub id: Option<i64>,
12122    #[serde(rename = "PatientLicenseNumber")]
12123    pub patient_license_number: Option<String>,
12124    #[serde(rename = "PhoneNumberForQuestions")]
12125    pub phone_number_for_questions: Option<String>,
12126    #[serde(rename = "PlannedRoute")]
12127    pub planned_route: Option<String>,
12128    #[serde(rename = "RecipientAddressCity")]
12129    pub recipient_address_city: Option<String>,
12130    #[serde(rename = "RecipientAddressCounty")]
12131    pub recipient_address_county: Option<String>,
12132    #[serde(rename = "RecipientAddressPostalCode")]
12133    pub recipient_address_postal_code: Option<String>,
12134    #[serde(rename = "RecipientAddressState")]
12135    pub recipient_address_state: Option<String>,
12136    #[serde(rename = "RecipientAddressStreet1")]
12137    pub recipient_address_street1: Option<String>,
12138    #[serde(rename = "RecipientAddressStreet2")]
12139    pub recipient_address_street2: Option<String>,
12140    #[serde(rename = "RecipientName")]
12141    pub recipient_name: Option<String>,
12142    #[serde(rename = "RecipientZoneId")]
12143    pub recipient_zone_id: Option<String>,
12144    #[serde(rename = "SalesCustomerType")]
12145    pub sales_customer_type: Option<String>,
12146    #[serde(rename = "SalesDateTime")]
12147    pub sales_date_time: Option<String>,
12148    #[serde(rename = "Transactions")]
12149    pub transactions: Option<Vec<SalesUpdateDeliveryV1RequestItemTransactions>>,
12150    #[serde(rename = "TransporterFacilityLicenseNumber")]
12151    pub transporter_facility_license_number: Option<String>,
12152    #[serde(rename = "VehicleLicensePlateNumber")]
12153    pub vehicle_license_plate_number: Option<String>,
12154    #[serde(rename = "VehicleMake")]
12155    pub vehicle_make: Option<String>,
12156    #[serde(rename = "VehicleModel")]
12157    pub vehicle_model: Option<String>,
12158}
12159
12160#[derive(Serialize, Deserialize, Debug, Clone)]
12161pub struct SalesUpdateDeliveryV1RequestItemTransactions {
12162    #[serde(rename = "CityTax")]
12163    pub city_tax: Option<String>,
12164    #[serde(rename = "CountyTax")]
12165    pub county_tax: Option<String>,
12166    #[serde(rename = "DiscountAmount")]
12167    pub discount_amount: Option<String>,
12168    #[serde(rename = "ExciseTax")]
12169    pub excise_tax: Option<String>,
12170    #[serde(rename = "InvoiceNumber")]
12171    pub invoice_number: Option<String>,
12172    #[serde(rename = "MunicipalTax")]
12173    pub municipal_tax: Option<String>,
12174    #[serde(rename = "PackageLabel")]
12175    pub package_label: Option<String>,
12176    #[serde(rename = "Price")]
12177    pub price: Option<String>,
12178    #[serde(rename = "QrCodes")]
12179    pub qr_codes: Option<String>,
12180    #[serde(rename = "Quantity")]
12181    pub quantity: Option<i64>,
12182    #[serde(rename = "SalesTax")]
12183    pub sales_tax: Option<String>,
12184    #[serde(rename = "SubTotal")]
12185    pub sub_total: Option<String>,
12186    #[serde(rename = "TotalAmount")]
12187    pub total_amount: Option<f64>,
12188    #[serde(rename = "UnitOfMeasure")]
12189    pub unit_of_measure: Option<String>,
12190    #[serde(rename = "UnitThcContent")]
12191    pub unit_thc_content: Option<f64>,
12192    #[serde(rename = "UnitThcContentUnitOfMeasure")]
12193    pub unit_thc_content_unit_of_measure: Option<String>,
12194    #[serde(rename = "UnitThcPercent")]
12195    pub unit_thc_percent: Option<f64>,
12196    #[serde(rename = "UnitWeight")]
12197    pub unit_weight: Option<f64>,
12198    #[serde(rename = "UnitWeightUnitOfMeasure")]
12199    pub unit_weight_unit_of_measure: Option<String>,
12200}
12201
12202#[derive(Serialize, Deserialize, Debug, Clone)]
12203pub struct SalesUpdateDeliveryV2RequestItem {
12204    #[serde(rename = "ConsumerId")]
12205    pub consumer_id: Option<i64>,
12206    #[serde(rename = "DriverEmployeeId")]
12207    pub driver_employee_id: Option<String>,
12208    #[serde(rename = "DriverName")]
12209    pub driver_name: Option<String>,
12210    #[serde(rename = "DriversLicenseNumber")]
12211    pub drivers_license_number: Option<String>,
12212    #[serde(rename = "EstimatedArrivalDateTime")]
12213    pub estimated_arrival_date_time: Option<String>,
12214    #[serde(rename = "EstimatedDepartureDateTime")]
12215    pub estimated_departure_date_time: Option<String>,
12216    #[serde(rename = "Id")]
12217    pub id: Option<i64>,
12218    #[serde(rename = "PatientLicenseNumber")]
12219    pub patient_license_number: Option<String>,
12220    #[serde(rename = "PhoneNumberForQuestions")]
12221    pub phone_number_for_questions: Option<String>,
12222    #[serde(rename = "PlannedRoute")]
12223    pub planned_route: Option<String>,
12224    #[serde(rename = "RecipientAddressCity")]
12225    pub recipient_address_city: Option<String>,
12226    #[serde(rename = "RecipientAddressCounty")]
12227    pub recipient_address_county: Option<String>,
12228    #[serde(rename = "RecipientAddressPostalCode")]
12229    pub recipient_address_postal_code: Option<String>,
12230    #[serde(rename = "RecipientAddressState")]
12231    pub recipient_address_state: Option<String>,
12232    #[serde(rename = "RecipientAddressStreet1")]
12233    pub recipient_address_street1: Option<String>,
12234    #[serde(rename = "RecipientAddressStreet2")]
12235    pub recipient_address_street2: Option<String>,
12236    #[serde(rename = "RecipientName")]
12237    pub recipient_name: Option<String>,
12238    #[serde(rename = "RecipientZoneId")]
12239    pub recipient_zone_id: Option<String>,
12240    #[serde(rename = "SalesCustomerType")]
12241    pub sales_customer_type: Option<String>,
12242    #[serde(rename = "SalesDateTime")]
12243    pub sales_date_time: Option<String>,
12244    #[serde(rename = "Transactions")]
12245    pub transactions: Option<Vec<SalesUpdateDeliveryV2RequestItemTransactions>>,
12246    #[serde(rename = "TransporterFacilityLicenseNumber")]
12247    pub transporter_facility_license_number: Option<String>,
12248    #[serde(rename = "VehicleLicensePlateNumber")]
12249    pub vehicle_license_plate_number: Option<String>,
12250    #[serde(rename = "VehicleMake")]
12251    pub vehicle_make: Option<String>,
12252    #[serde(rename = "VehicleModel")]
12253    pub vehicle_model: Option<String>,
12254}
12255
12256#[derive(Serialize, Deserialize, Debug, Clone)]
12257pub struct SalesUpdateDeliveryV2RequestItemTransactions {
12258    #[serde(rename = "CityTax")]
12259    pub city_tax: Option<String>,
12260    #[serde(rename = "CountyTax")]
12261    pub county_tax: Option<String>,
12262    #[serde(rename = "DiscountAmount")]
12263    pub discount_amount: Option<String>,
12264    #[serde(rename = "ExciseTax")]
12265    pub excise_tax: Option<String>,
12266    #[serde(rename = "InvoiceNumber")]
12267    pub invoice_number: Option<String>,
12268    #[serde(rename = "MunicipalTax")]
12269    pub municipal_tax: Option<String>,
12270    #[serde(rename = "PackageLabel")]
12271    pub package_label: Option<String>,
12272    #[serde(rename = "Price")]
12273    pub price: Option<String>,
12274    #[serde(rename = "QrCodes")]
12275    pub qr_codes: Option<String>,
12276    #[serde(rename = "Quantity")]
12277    pub quantity: Option<i64>,
12278    #[serde(rename = "SalesTax")]
12279    pub sales_tax: Option<String>,
12280    #[serde(rename = "SubTotal")]
12281    pub sub_total: Option<String>,
12282    #[serde(rename = "TotalAmount")]
12283    pub total_amount: Option<f64>,
12284    #[serde(rename = "UnitOfMeasure")]
12285    pub unit_of_measure: Option<String>,
12286    #[serde(rename = "UnitThcContent")]
12287    pub unit_thc_content: Option<f64>,
12288    #[serde(rename = "UnitThcContentUnitOfMeasure")]
12289    pub unit_thc_content_unit_of_measure: Option<String>,
12290    #[serde(rename = "UnitThcPercent")]
12291    pub unit_thc_percent: Option<f64>,
12292    #[serde(rename = "UnitWeight")]
12293    pub unit_weight: Option<f64>,
12294    #[serde(rename = "UnitWeightUnitOfMeasure")]
12295    pub unit_weight_unit_of_measure: Option<String>,
12296}
12297
12298#[derive(Serialize, Deserialize, Debug, Clone)]
12299pub struct SalesUpdateDeliveryCompleteV1RequestItem {
12300    #[serde(rename = "AcceptedPackages")]
12301    pub accepted_packages: Option<Vec<String>>,
12302    #[serde(rename = "ActualArrivalDateTime")]
12303    pub actual_arrival_date_time: Option<String>,
12304    #[serde(rename = "Id")]
12305    pub id: Option<i64>,
12306    #[serde(rename = "PaymentType")]
12307    pub payment_type: Option<String>,
12308    #[serde(rename = "ReturnedPackages")]
12309    pub returned_packages: Option<Vec<SalesUpdateDeliveryCompleteV1RequestItemReturnedPackages>>,
12310}
12311
12312#[derive(Serialize, Deserialize, Debug, Clone)]
12313pub struct SalesUpdateDeliveryCompleteV1RequestItemReturnedPackages {
12314    #[serde(rename = "Label")]
12315    pub label: Option<String>,
12316    #[serde(rename = "ReturnQuantityVerified")]
12317    pub return_quantity_verified: Option<i64>,
12318    #[serde(rename = "ReturnReason")]
12319    pub return_reason: Option<String>,
12320    #[serde(rename = "ReturnReasonNote")]
12321    pub return_reason_note: Option<String>,
12322    #[serde(rename = "ReturnUnitOfMeasure")]
12323    pub return_unit_of_measure: Option<String>,
12324}
12325
12326#[derive(Serialize, Deserialize, Debug, Clone)]
12327pub struct SalesUpdateDeliveryCompleteV2RequestItem {
12328    #[serde(rename = "AcceptedPackages")]
12329    pub accepted_packages: Option<Vec<String>>,
12330    #[serde(rename = "ActualArrivalDateTime")]
12331    pub actual_arrival_date_time: Option<String>,
12332    #[serde(rename = "Id")]
12333    pub id: Option<i64>,
12334    #[serde(rename = "PaymentType")]
12335    pub payment_type: Option<String>,
12336    #[serde(rename = "ReturnedPackages")]
12337    pub returned_packages: Option<Vec<SalesUpdateDeliveryCompleteV2RequestItemReturnedPackages>>,
12338}
12339
12340#[derive(Serialize, Deserialize, Debug, Clone)]
12341pub struct SalesUpdateDeliveryCompleteV2RequestItemReturnedPackages {
12342    #[serde(rename = "Label")]
12343    pub label: Option<String>,
12344    #[serde(rename = "ReturnQuantityVerified")]
12345    pub return_quantity_verified: Option<i64>,
12346    #[serde(rename = "ReturnReason")]
12347    pub return_reason: Option<String>,
12348    #[serde(rename = "ReturnReasonNote")]
12349    pub return_reason_note: Option<String>,
12350    #[serde(rename = "ReturnUnitOfMeasure")]
12351    pub return_unit_of_measure: Option<String>,
12352}
12353
12354#[derive(Serialize, Deserialize, Debug, Clone)]
12355pub struct SalesUpdateDeliveryHubV1RequestItem {
12356    #[serde(rename = "DriverEmployeeId")]
12357    pub driver_employee_id: Option<String>,
12358    #[serde(rename = "DriverName")]
12359    pub driver_name: Option<String>,
12360    #[serde(rename = "DriversLicenseNumber")]
12361    pub drivers_license_number: Option<String>,
12362    #[serde(rename = "EstimatedArrivalDateTime")]
12363    pub estimated_arrival_date_time: Option<String>,
12364    #[serde(rename = "EstimatedDepartureDateTime")]
12365    pub estimated_departure_date_time: Option<String>,
12366    #[serde(rename = "Id")]
12367    pub id: Option<i64>,
12368    #[serde(rename = "PhoneNumberForQuestions")]
12369    pub phone_number_for_questions: Option<String>,
12370    #[serde(rename = "PlannedRoute")]
12371    pub planned_route: Option<String>,
12372    #[serde(rename = "TransporterFacilityId")]
12373    pub transporter_facility_id: Option<String>,
12374    #[serde(rename = "VehicleLicensePlateNumber")]
12375    pub vehicle_license_plate_number: Option<String>,
12376    #[serde(rename = "VehicleMake")]
12377    pub vehicle_make: Option<String>,
12378    #[serde(rename = "VehicleModel")]
12379    pub vehicle_model: Option<String>,
12380}
12381
12382#[derive(Serialize, Deserialize, Debug, Clone)]
12383pub struct SalesUpdateDeliveryHubV2RequestItem {
12384    #[serde(rename = "DriverEmployeeId")]
12385    pub driver_employee_id: Option<String>,
12386    #[serde(rename = "DriverName")]
12387    pub driver_name: Option<String>,
12388    #[serde(rename = "DriversLicenseNumber")]
12389    pub drivers_license_number: Option<String>,
12390    #[serde(rename = "EstimatedArrivalDateTime")]
12391    pub estimated_arrival_date_time: Option<String>,
12392    #[serde(rename = "EstimatedDepartureDateTime")]
12393    pub estimated_departure_date_time: Option<String>,
12394    #[serde(rename = "Id")]
12395    pub id: Option<i64>,
12396    #[serde(rename = "PhoneNumberForQuestions")]
12397    pub phone_number_for_questions: Option<String>,
12398    #[serde(rename = "PlannedRoute")]
12399    pub planned_route: Option<String>,
12400    #[serde(rename = "TransporterFacilityId")]
12401    pub transporter_facility_id: Option<String>,
12402    #[serde(rename = "VehicleLicensePlateNumber")]
12403    pub vehicle_license_plate_number: Option<String>,
12404    #[serde(rename = "VehicleMake")]
12405    pub vehicle_make: Option<String>,
12406    #[serde(rename = "VehicleModel")]
12407    pub vehicle_model: Option<String>,
12408}
12409
12410#[derive(Serialize, Deserialize, Debug, Clone)]
12411pub struct SalesUpdateDeliveryHubAcceptV1RequestItem {
12412    #[serde(rename = "Id")]
12413    pub id: Option<i64>,
12414}
12415
12416#[derive(Serialize, Deserialize, Debug, Clone)]
12417pub struct SalesUpdateDeliveryHubAcceptV2RequestItem {
12418    #[serde(rename = "Id")]
12419    pub id: Option<i64>,
12420}
12421
12422#[derive(Serialize, Deserialize, Debug, Clone)]
12423pub struct SalesUpdateDeliveryHubDepartV1RequestItem {
12424    #[serde(rename = "Id")]
12425    pub id: Option<i64>,
12426}
12427
12428#[derive(Serialize, Deserialize, Debug, Clone)]
12429pub struct SalesUpdateDeliveryHubDepartV2RequestItem {
12430    #[serde(rename = "Id")]
12431    pub id: Option<i64>,
12432}
12433
12434#[derive(Serialize, Deserialize, Debug, Clone)]
12435pub struct SalesUpdateDeliveryHubVerifyIdV1RequestItem {
12436    #[serde(rename = "Id")]
12437    pub id: Option<i64>,
12438    #[serde(rename = "PaymentType")]
12439    pub payment_type: Option<String>,
12440}
12441
12442#[derive(Serialize, Deserialize, Debug, Clone)]
12443pub struct SalesUpdateDeliveryHubVerifyIdV2RequestItem {
12444    #[serde(rename = "Id")]
12445    pub id: Option<i64>,
12446    #[serde(rename = "PaymentType")]
12447    pub payment_type: Option<String>,
12448}
12449
12450#[derive(Serialize, Deserialize, Debug, Clone)]
12451pub struct SalesUpdateDeliveryRetailerV1RequestItem {
12452    #[serde(rename = "DateTime")]
12453    pub date_time: Option<String>,
12454    #[serde(rename = "Destinations")]
12455    pub destinations: Option<Vec<SalesUpdateDeliveryRetailerV1RequestItemDestinations>>,
12456    #[serde(rename = "DriverEmployeeId")]
12457    pub driver_employee_id: Option<String>,
12458    #[serde(rename = "DriverName")]
12459    pub driver_name: Option<String>,
12460    #[serde(rename = "DriversLicenseNumber")]
12461    pub drivers_license_number: Option<String>,
12462    #[serde(rename = "EstimatedDepartureDateTime")]
12463    pub estimated_departure_date_time: Option<String>,
12464    #[serde(rename = "Id")]
12465    pub id: Option<i64>,
12466    #[serde(rename = "Packages")]
12467    pub packages: Option<Vec<SalesUpdateDeliveryRetailerV1RequestItemPackages>>,
12468    #[serde(rename = "PhoneNumberForQuestions")]
12469    pub phone_number_for_questions: Option<String>,
12470    #[serde(rename = "VehicleLicensePlateNumber")]
12471    pub vehicle_license_plate_number: Option<String>,
12472    #[serde(rename = "VehicleMake")]
12473    pub vehicle_make: Option<String>,
12474    #[serde(rename = "VehicleModel")]
12475    pub vehicle_model: Option<String>,
12476}
12477
12478#[derive(Serialize, Deserialize, Debug, Clone)]
12479pub struct SalesUpdateDeliveryRetailerV1RequestItemDestinations {
12480    #[serde(rename = "ConsumerId")]
12481    pub consumer_id: Option<String>,
12482    #[serde(rename = "DriverEmployeeId")]
12483    pub driver_employee_id: Option<i64>,
12484    #[serde(rename = "DriverName")]
12485    pub driver_name: Option<String>,
12486    #[serde(rename = "DriversLicenseNumber")]
12487    pub drivers_license_number: Option<String>,
12488    #[serde(rename = "EstimatedArrivalDateTime")]
12489    pub estimated_arrival_date_time: Option<String>,
12490    #[serde(rename = "EstimatedDepartureDateTime")]
12491    pub estimated_departure_date_time: Option<String>,
12492    #[serde(rename = "Id")]
12493    pub id: Option<i64>,
12494    #[serde(rename = "PatientLicenseNumber")]
12495    pub patient_license_number: Option<String>,
12496    #[serde(rename = "PhoneNumberForQuestions")]
12497    pub phone_number_for_questions: Option<String>,
12498    #[serde(rename = "PlannedRoute")]
12499    pub planned_route: Option<String>,
12500    #[serde(rename = "RecipientAddressCity")]
12501    pub recipient_address_city: Option<String>,
12502    #[serde(rename = "RecipientAddressCounty")]
12503    pub recipient_address_county: Option<String>,
12504    #[serde(rename = "RecipientAddressPostalCode")]
12505    pub recipient_address_postal_code: Option<String>,
12506    #[serde(rename = "RecipientAddressState")]
12507    pub recipient_address_state: Option<String>,
12508    #[serde(rename = "RecipientAddressStreet1")]
12509    pub recipient_address_street1: Option<String>,
12510    #[serde(rename = "RecipientAddressStreet2")]
12511    pub recipient_address_street2: Option<String>,
12512    #[serde(rename = "RecipientName")]
12513    pub recipient_name: Option<String>,
12514    #[serde(rename = "RecipientZoneId")]
12515    pub recipient_zone_id: Option<String>,
12516    #[serde(rename = "SalesCustomerType")]
12517    pub sales_customer_type: Option<String>,
12518    #[serde(rename = "SalesDateTime")]
12519    pub sales_date_time: Option<String>,
12520    #[serde(rename = "Transactions")]
12521    pub transactions: Option<Vec<SalesUpdateDeliveryRetailerV1RequestItemDestinationsTransactions>>,
12522    #[serde(rename = "VehicleLicensePlateNumber")]
12523    pub vehicle_license_plate_number: Option<String>,
12524    #[serde(rename = "VehicleMake")]
12525    pub vehicle_make: Option<String>,
12526    #[serde(rename = "VehicleModel")]
12527    pub vehicle_model: Option<String>,
12528}
12529
12530#[derive(Serialize, Deserialize, Debug, Clone)]
12531pub struct SalesUpdateDeliveryRetailerV1RequestItemDestinationsTransactions {
12532    #[serde(rename = "CityTax")]
12533    pub city_tax: Option<String>,
12534    #[serde(rename = "CountyTax")]
12535    pub county_tax: Option<String>,
12536    #[serde(rename = "DiscountAmount")]
12537    pub discount_amount: Option<String>,
12538    #[serde(rename = "ExciseTax")]
12539    pub excise_tax: Option<String>,
12540    #[serde(rename = "InvoiceNumber")]
12541    pub invoice_number: Option<String>,
12542    #[serde(rename = "MunicipalTax")]
12543    pub municipal_tax: Option<String>,
12544    #[serde(rename = "PackageLabel")]
12545    pub package_label: Option<String>,
12546    #[serde(rename = "Price")]
12547    pub price: Option<String>,
12548    #[serde(rename = "QrCodes")]
12549    pub qr_codes: Option<String>,
12550    #[serde(rename = "Quantity")]
12551    pub quantity: Option<i64>,
12552    #[serde(rename = "SalesTax")]
12553    pub sales_tax: Option<String>,
12554    #[serde(rename = "SubTotal")]
12555    pub sub_total: Option<String>,
12556    #[serde(rename = "TotalAmount")]
12557    pub total_amount: Option<f64>,
12558    #[serde(rename = "UnitOfMeasure")]
12559    pub unit_of_measure: Option<String>,
12560    #[serde(rename = "UnitThcContent")]
12561    pub unit_thc_content: Option<f64>,
12562    #[serde(rename = "UnitThcContentUnitOfMeasure")]
12563    pub unit_thc_content_unit_of_measure: Option<String>,
12564    #[serde(rename = "UnitThcPercent")]
12565    pub unit_thc_percent: Option<f64>,
12566    #[serde(rename = "UnitWeight")]
12567    pub unit_weight: Option<f64>,
12568    #[serde(rename = "UnitWeightUnitOfMeasure")]
12569    pub unit_weight_unit_of_measure: Option<String>,
12570}
12571
12572#[derive(Serialize, Deserialize, Debug, Clone)]
12573pub struct SalesUpdateDeliveryRetailerV1RequestItemPackages {
12574    #[serde(rename = "DateTime")]
12575    pub date_time: Option<String>,
12576    #[serde(rename = "PackageLabel")]
12577    pub package_label: Option<String>,
12578    #[serde(rename = "Quantity")]
12579    pub quantity: Option<i64>,
12580    #[serde(rename = "TotalPrice")]
12581    pub total_price: Option<f64>,
12582    #[serde(rename = "UnitOfMeasure")]
12583    pub unit_of_measure: Option<String>,
12584}
12585
12586#[derive(Serialize, Deserialize, Debug, Clone)]
12587pub struct SalesUpdateDeliveryRetailerV2RequestItem {
12588    #[serde(rename = "DateTime")]
12589    pub date_time: Option<String>,
12590    #[serde(rename = "Destinations")]
12591    pub destinations: Option<Vec<SalesUpdateDeliveryRetailerV2RequestItemDestinations>>,
12592    #[serde(rename = "DriverEmployeeId")]
12593    pub driver_employee_id: Option<String>,
12594    #[serde(rename = "DriverName")]
12595    pub driver_name: Option<String>,
12596    #[serde(rename = "DriversLicenseNumber")]
12597    pub drivers_license_number: Option<String>,
12598    #[serde(rename = "EstimatedDepartureDateTime")]
12599    pub estimated_departure_date_time: Option<String>,
12600    #[serde(rename = "Id")]
12601    pub id: Option<i64>,
12602    #[serde(rename = "Packages")]
12603    pub packages: Option<Vec<SalesUpdateDeliveryRetailerV2RequestItemPackages>>,
12604    #[serde(rename = "PhoneNumberForQuestions")]
12605    pub phone_number_for_questions: Option<String>,
12606    #[serde(rename = "VehicleLicensePlateNumber")]
12607    pub vehicle_license_plate_number: Option<String>,
12608    #[serde(rename = "VehicleMake")]
12609    pub vehicle_make: Option<String>,
12610    #[serde(rename = "VehicleModel")]
12611    pub vehicle_model: Option<String>,
12612}
12613
12614#[derive(Serialize, Deserialize, Debug, Clone)]
12615pub struct SalesUpdateDeliveryRetailerV2RequestItemDestinations {
12616    #[serde(rename = "ConsumerId")]
12617    pub consumer_id: Option<String>,
12618    #[serde(rename = "DriverEmployeeId")]
12619    pub driver_employee_id: Option<i64>,
12620    #[serde(rename = "DriverName")]
12621    pub driver_name: Option<String>,
12622    #[serde(rename = "DriversLicenseNumber")]
12623    pub drivers_license_number: Option<String>,
12624    #[serde(rename = "EstimatedArrivalDateTime")]
12625    pub estimated_arrival_date_time: Option<String>,
12626    #[serde(rename = "EstimatedDepartureDateTime")]
12627    pub estimated_departure_date_time: Option<String>,
12628    #[serde(rename = "Id")]
12629    pub id: Option<i64>,
12630    #[serde(rename = "PatientLicenseNumber")]
12631    pub patient_license_number: Option<String>,
12632    #[serde(rename = "PhoneNumberForQuestions")]
12633    pub phone_number_for_questions: Option<String>,
12634    #[serde(rename = "PlannedRoute")]
12635    pub planned_route: Option<String>,
12636    #[serde(rename = "RecipientAddressCity")]
12637    pub recipient_address_city: Option<String>,
12638    #[serde(rename = "RecipientAddressCounty")]
12639    pub recipient_address_county: Option<String>,
12640    #[serde(rename = "RecipientAddressPostalCode")]
12641    pub recipient_address_postal_code: Option<String>,
12642    #[serde(rename = "RecipientAddressState")]
12643    pub recipient_address_state: Option<String>,
12644    #[serde(rename = "RecipientAddressStreet1")]
12645    pub recipient_address_street1: Option<String>,
12646    #[serde(rename = "RecipientAddressStreet2")]
12647    pub recipient_address_street2: Option<String>,
12648    #[serde(rename = "RecipientName")]
12649    pub recipient_name: Option<String>,
12650    #[serde(rename = "RecipientZoneId")]
12651    pub recipient_zone_id: Option<String>,
12652    #[serde(rename = "SalesCustomerType")]
12653    pub sales_customer_type: Option<String>,
12654    #[serde(rename = "SalesDateTime")]
12655    pub sales_date_time: Option<String>,
12656    #[serde(rename = "Transactions")]
12657    pub transactions: Option<Vec<SalesUpdateDeliveryRetailerV2RequestItemDestinationsTransactions>>,
12658    #[serde(rename = "VehicleLicensePlateNumber")]
12659    pub vehicle_license_plate_number: Option<String>,
12660    #[serde(rename = "VehicleMake")]
12661    pub vehicle_make: Option<String>,
12662    #[serde(rename = "VehicleModel")]
12663    pub vehicle_model: Option<String>,
12664}
12665
12666#[derive(Serialize, Deserialize, Debug, Clone)]
12667pub struct SalesUpdateDeliveryRetailerV2RequestItemDestinationsTransactions {
12668    #[serde(rename = "CityTax")]
12669    pub city_tax: Option<String>,
12670    #[serde(rename = "CountyTax")]
12671    pub county_tax: Option<String>,
12672    #[serde(rename = "DiscountAmount")]
12673    pub discount_amount: Option<String>,
12674    #[serde(rename = "ExciseTax")]
12675    pub excise_tax: Option<String>,
12676    #[serde(rename = "InvoiceNumber")]
12677    pub invoice_number: Option<String>,
12678    #[serde(rename = "MunicipalTax")]
12679    pub municipal_tax: Option<String>,
12680    #[serde(rename = "PackageLabel")]
12681    pub package_label: Option<String>,
12682    #[serde(rename = "Price")]
12683    pub price: Option<String>,
12684    #[serde(rename = "QrCodes")]
12685    pub qr_codes: Option<String>,
12686    #[serde(rename = "Quantity")]
12687    pub quantity: Option<i64>,
12688    #[serde(rename = "SalesTax")]
12689    pub sales_tax: Option<String>,
12690    #[serde(rename = "SubTotal")]
12691    pub sub_total: Option<String>,
12692    #[serde(rename = "TotalAmount")]
12693    pub total_amount: Option<f64>,
12694    #[serde(rename = "UnitOfMeasure")]
12695    pub unit_of_measure: Option<String>,
12696    #[serde(rename = "UnitThcContent")]
12697    pub unit_thc_content: Option<f64>,
12698    #[serde(rename = "UnitThcContentUnitOfMeasure")]
12699    pub unit_thc_content_unit_of_measure: Option<String>,
12700    #[serde(rename = "UnitThcPercent")]
12701    pub unit_thc_percent: Option<f64>,
12702    #[serde(rename = "UnitWeight")]
12703    pub unit_weight: Option<f64>,
12704    #[serde(rename = "UnitWeightUnitOfMeasure")]
12705    pub unit_weight_unit_of_measure: Option<String>,
12706}
12707
12708#[derive(Serialize, Deserialize, Debug, Clone)]
12709pub struct SalesUpdateDeliveryRetailerV2RequestItemPackages {
12710    #[serde(rename = "DateTime")]
12711    pub date_time: Option<String>,
12712    #[serde(rename = "PackageLabel")]
12713    pub package_label: Option<String>,
12714    #[serde(rename = "Quantity")]
12715    pub quantity: Option<i64>,
12716    #[serde(rename = "TotalPrice")]
12717    pub total_price: Option<f64>,
12718    #[serde(rename = "UnitOfMeasure")]
12719    pub unit_of_measure: Option<String>,
12720}
12721
12722#[derive(Serialize, Deserialize, Debug, Clone)]
12723pub struct SalesUpdateReceiptV1RequestItem {
12724    #[serde(rename = "CaregiverLicenseNumber")]
12725    pub caregiver_license_number: Option<String>,
12726    #[serde(rename = "ExternalReceiptNumber")]
12727    pub external_receipt_number: Option<String>,
12728    #[serde(rename = "Id")]
12729    pub id: Option<i64>,
12730    #[serde(rename = "IdentificationMethod")]
12731    pub identification_method: Option<String>,
12732    #[serde(rename = "PatientLicenseNumber")]
12733    pub patient_license_number: Option<String>,
12734    #[serde(rename = "PatientRegistrationLocationId")]
12735    pub patient_registration_location_id: Option<i64>,
12736    #[serde(rename = "SalesCustomerType")]
12737    pub sales_customer_type: Option<String>,
12738    #[serde(rename = "SalesDateTime")]
12739    pub sales_date_time: Option<String>,
12740    #[serde(rename = "Transactions")]
12741    pub transactions: Option<Vec<SalesUpdateReceiptV1RequestItemTransactions>>,
12742}
12743
12744#[derive(Serialize, Deserialize, Debug, Clone)]
12745pub struct SalesUpdateReceiptV1RequestItemTransactions {
12746    #[serde(rename = "CityTax")]
12747    pub city_tax: Option<String>,
12748    #[serde(rename = "CountyTax")]
12749    pub county_tax: Option<String>,
12750    #[serde(rename = "DiscountAmount")]
12751    pub discount_amount: Option<String>,
12752    #[serde(rename = "ExciseTax")]
12753    pub excise_tax: Option<String>,
12754    #[serde(rename = "InvoiceNumber")]
12755    pub invoice_number: Option<String>,
12756    #[serde(rename = "MunicipalTax")]
12757    pub municipal_tax: Option<String>,
12758    #[serde(rename = "PackageLabel")]
12759    pub package_label: Option<String>,
12760    #[serde(rename = "Price")]
12761    pub price: Option<String>,
12762    #[serde(rename = "QrCodes")]
12763    pub qr_codes: Option<String>,
12764    #[serde(rename = "Quantity")]
12765    pub quantity: Option<i64>,
12766    #[serde(rename = "SalesTax")]
12767    pub sales_tax: Option<String>,
12768    #[serde(rename = "SubTotal")]
12769    pub sub_total: Option<String>,
12770    #[serde(rename = "TotalAmount")]
12771    pub total_amount: Option<f64>,
12772    #[serde(rename = "UnitOfMeasure")]
12773    pub unit_of_measure: Option<String>,
12774    #[serde(rename = "UnitThcContent")]
12775    pub unit_thc_content: Option<f64>,
12776    #[serde(rename = "UnitThcContentUnitOfMeasure")]
12777    pub unit_thc_content_unit_of_measure: Option<String>,
12778    #[serde(rename = "UnitThcPercent")]
12779    pub unit_thc_percent: Option<f64>,
12780    #[serde(rename = "UnitWeight")]
12781    pub unit_weight: Option<f64>,
12782    #[serde(rename = "UnitWeightUnitOfMeasure")]
12783    pub unit_weight_unit_of_measure: Option<String>,
12784}
12785
12786#[derive(Serialize, Deserialize, Debug, Clone)]
12787pub struct SalesUpdateReceiptV2RequestItem {
12788    #[serde(rename = "CaregiverLicenseNumber")]
12789    pub caregiver_license_number: Option<String>,
12790    #[serde(rename = "ExternalReceiptNumber")]
12791    pub external_receipt_number: Option<String>,
12792    #[serde(rename = "Id")]
12793    pub id: Option<i64>,
12794    #[serde(rename = "IdentificationMethod")]
12795    pub identification_method: Option<String>,
12796    #[serde(rename = "PatientLicenseNumber")]
12797    pub patient_license_number: Option<String>,
12798    #[serde(rename = "PatientRegistrationLocationId")]
12799    pub patient_registration_location_id: Option<i64>,
12800    #[serde(rename = "SalesCustomerType")]
12801    pub sales_customer_type: Option<String>,
12802    #[serde(rename = "SalesDateTime")]
12803    pub sales_date_time: Option<String>,
12804    #[serde(rename = "Transactions")]
12805    pub transactions: Option<Vec<SalesUpdateReceiptV2RequestItemTransactions>>,
12806}
12807
12808#[derive(Serialize, Deserialize, Debug, Clone)]
12809pub struct SalesUpdateReceiptV2RequestItemTransactions {
12810    #[serde(rename = "CityTax")]
12811    pub city_tax: Option<String>,
12812    #[serde(rename = "CountyTax")]
12813    pub county_tax: Option<String>,
12814    #[serde(rename = "DiscountAmount")]
12815    pub discount_amount: Option<String>,
12816    #[serde(rename = "ExciseTax")]
12817    pub excise_tax: Option<String>,
12818    #[serde(rename = "InvoiceNumber")]
12819    pub invoice_number: Option<String>,
12820    #[serde(rename = "MunicipalTax")]
12821    pub municipal_tax: Option<String>,
12822    #[serde(rename = "PackageLabel")]
12823    pub package_label: Option<String>,
12824    #[serde(rename = "Price")]
12825    pub price: Option<String>,
12826    #[serde(rename = "QrCodes")]
12827    pub qr_codes: Option<String>,
12828    #[serde(rename = "Quantity")]
12829    pub quantity: Option<i64>,
12830    #[serde(rename = "SalesTax")]
12831    pub sales_tax: Option<String>,
12832    #[serde(rename = "SubTotal")]
12833    pub sub_total: Option<String>,
12834    #[serde(rename = "TotalAmount")]
12835    pub total_amount: Option<f64>,
12836    #[serde(rename = "UnitOfMeasure")]
12837    pub unit_of_measure: Option<String>,
12838    #[serde(rename = "UnitThcContent")]
12839    pub unit_thc_content: Option<f64>,
12840    #[serde(rename = "UnitThcContentUnitOfMeasure")]
12841    pub unit_thc_content_unit_of_measure: Option<String>,
12842    #[serde(rename = "UnitThcPercent")]
12843    pub unit_thc_percent: Option<f64>,
12844    #[serde(rename = "UnitWeight")]
12845    pub unit_weight: Option<f64>,
12846    #[serde(rename = "UnitWeightUnitOfMeasure")]
12847    pub unit_weight_unit_of_measure: Option<String>,
12848}
12849
12850#[derive(Serialize, Deserialize, Debug, Clone)]
12851pub struct SalesUpdateReceiptFinalizeV2RequestItem {
12852    #[serde(rename = "Id")]
12853    pub id: Option<i64>,
12854}
12855
12856#[derive(Serialize, Deserialize, Debug, Clone)]
12857pub struct SalesUpdateReceiptUnfinalizeV2RequestItem {
12858    #[serde(rename = "Id")]
12859    pub id: Option<i64>,
12860}
12861
12862#[derive(Serialize, Deserialize, Debug, Clone)]
12863pub struct SalesUpdateTransactionByDateV1RequestItem {
12864    #[serde(rename = "CityTax")]
12865    pub city_tax: Option<String>,
12866    #[serde(rename = "CountyTax")]
12867    pub county_tax: Option<String>,
12868    #[serde(rename = "DiscountAmount")]
12869    pub discount_amount: Option<String>,
12870    #[serde(rename = "ExciseTax")]
12871    pub excise_tax: Option<String>,
12872    #[serde(rename = "InvoiceNumber")]
12873    pub invoice_number: Option<String>,
12874    #[serde(rename = "MunicipalTax")]
12875    pub municipal_tax: Option<String>,
12876    #[serde(rename = "PackageLabel")]
12877    pub package_label: Option<String>,
12878    #[serde(rename = "Price")]
12879    pub price: Option<String>,
12880    #[serde(rename = "QrCodes")]
12881    pub qr_codes: Option<String>,
12882    #[serde(rename = "Quantity")]
12883    pub quantity: Option<i64>,
12884    #[serde(rename = "SalesTax")]
12885    pub sales_tax: Option<String>,
12886    #[serde(rename = "SubTotal")]
12887    pub sub_total: Option<String>,
12888    #[serde(rename = "TotalAmount")]
12889    pub total_amount: Option<f64>,
12890    #[serde(rename = "UnitOfMeasure")]
12891    pub unit_of_measure: Option<String>,
12892    #[serde(rename = "UnitThcContent")]
12893    pub unit_thc_content: Option<f64>,
12894    #[serde(rename = "UnitThcContentUnitOfMeasure")]
12895    pub unit_thc_content_unit_of_measure: Option<String>,
12896    #[serde(rename = "UnitThcPercent")]
12897    pub unit_thc_percent: Option<f64>,
12898    #[serde(rename = "UnitWeight")]
12899    pub unit_weight: Option<f64>,
12900    #[serde(rename = "UnitWeightUnitOfMeasure")]
12901    pub unit_weight_unit_of_measure: Option<String>,
12902}
12903
12904#[derive(Serialize, Deserialize, Debug, Clone)]
12905pub struct StrainsCreateV1RequestItem {
12906    #[serde(rename = "CbdLevel")]
12907    pub cbd_level: Option<f64>,
12908    #[serde(rename = "IndicaPercentage")]
12909    pub indica_percentage: Option<f64>,
12910    #[serde(rename = "Name")]
12911    pub name: Option<String>,
12912    #[serde(rename = "SativaPercentage")]
12913    pub sativa_percentage: Option<f64>,
12914    #[serde(rename = "TestingStatus")]
12915    pub testing_status: Option<String>,
12916    #[serde(rename = "ThcLevel")]
12917    pub thc_level: Option<f64>,
12918}
12919
12920#[derive(Serialize, Deserialize, Debug, Clone)]
12921pub struct StrainsCreateV2RequestItem {
12922    #[serde(rename = "CbdLevel")]
12923    pub cbd_level: Option<f64>,
12924    #[serde(rename = "IndicaPercentage")]
12925    pub indica_percentage: Option<f64>,
12926    #[serde(rename = "Name")]
12927    pub name: Option<String>,
12928    #[serde(rename = "SativaPercentage")]
12929    pub sativa_percentage: Option<f64>,
12930    #[serde(rename = "TestingStatus")]
12931    pub testing_status: Option<String>,
12932    #[serde(rename = "ThcLevel")]
12933    pub thc_level: Option<f64>,
12934}
12935
12936#[derive(Serialize, Deserialize, Debug, Clone)]
12937pub struct StrainsCreateUpdateV1RequestItem {
12938    #[serde(rename = "CbdLevel")]
12939    pub cbd_level: Option<f64>,
12940    #[serde(rename = "Id")]
12941    pub id: Option<i64>,
12942    #[serde(rename = "IndicaPercentage")]
12943    pub indica_percentage: Option<f64>,
12944    #[serde(rename = "Name")]
12945    pub name: Option<String>,
12946    #[serde(rename = "SativaPercentage")]
12947    pub sativa_percentage: Option<f64>,
12948    #[serde(rename = "TestingStatus")]
12949    pub testing_status: Option<String>,
12950    #[serde(rename = "ThcLevel")]
12951    pub thc_level: Option<f64>,
12952}
12953
12954#[derive(Serialize, Deserialize, Debug, Clone)]
12955pub struct StrainsUpdateV2RequestItem {
12956    #[serde(rename = "CbdLevel")]
12957    pub cbd_level: Option<f64>,
12958    #[serde(rename = "Id")]
12959    pub id: Option<i64>,
12960    #[serde(rename = "IndicaPercentage")]
12961    pub indica_percentage: Option<f64>,
12962    #[serde(rename = "Name")]
12963    pub name: Option<String>,
12964    #[serde(rename = "SativaPercentage")]
12965    pub sativa_percentage: Option<f64>,
12966    #[serde(rename = "TestingStatus")]
12967    pub testing_status: Option<String>,
12968    #[serde(rename = "ThcLevel")]
12969    pub thc_level: Option<f64>,
12970}
12971
12972#[derive(Serialize, Deserialize, Debug, Clone)]
12973pub struct TransfersCreateExternalIncomingV1RequestItem {
12974    #[serde(rename = "Destinations")]
12975    pub destinations: Option<Vec<TransfersCreateExternalIncomingV1RequestItemDestinations>>,
12976    #[serde(rename = "DriverLicenseNumber")]
12977    pub driver_license_number: Option<String>,
12978    #[serde(rename = "DriverName")]
12979    pub driver_name: Option<String>,
12980    #[serde(rename = "DriverOccupationalLicenseNumber")]
12981    pub driver_occupational_license_number: Option<String>,
12982    #[serde(rename = "PhoneNumberForQuestions")]
12983    pub phone_number_for_questions: Option<String>,
12984    #[serde(rename = "ShipperAddress1")]
12985    pub shipper_address1: Option<String>,
12986    #[serde(rename = "ShipperAddress2")]
12987    pub shipper_address2: Option<String>,
12988    #[serde(rename = "ShipperAddressCity")]
12989    pub shipper_address_city: Option<String>,
12990    #[serde(rename = "ShipperAddressPostalCode")]
12991    pub shipper_address_postal_code: Option<String>,
12992    #[serde(rename = "ShipperAddressState")]
12993    pub shipper_address_state: Option<String>,
12994    #[serde(rename = "ShipperLicenseNumber")]
12995    pub shipper_license_number: Option<String>,
12996    #[serde(rename = "ShipperMainPhoneNumber")]
12997    pub shipper_main_phone_number: Option<String>,
12998    #[serde(rename = "ShipperName")]
12999    pub shipper_name: Option<String>,
13000    #[serde(rename = "TransporterFacilityLicenseNumber")]
13001    pub transporter_facility_license_number: Option<String>,
13002    #[serde(rename = "VehicleLicensePlateNumber")]
13003    pub vehicle_license_plate_number: Option<String>,
13004    #[serde(rename = "VehicleMake")]
13005    pub vehicle_make: Option<String>,
13006    #[serde(rename = "VehicleModel")]
13007    pub vehicle_model: Option<String>,
13008}
13009
13010#[derive(Serialize, Deserialize, Debug, Clone)]
13011pub struct TransfersCreateExternalIncomingV1RequestItemDestinations {
13012    #[serde(rename = "EstimatedArrivalDateTime")]
13013    pub estimated_arrival_date_time: Option<String>,
13014    #[serde(rename = "EstimatedDepartureDateTime")]
13015    pub estimated_departure_date_time: Option<String>,
13016    #[serde(rename = "GrossUnitOfWeightId")]
13017    pub gross_unit_of_weight_id: Option<i64>,
13018    #[serde(rename = "GrossWeight")]
13019    pub gross_weight: Option<f64>,
13020    #[serde(rename = "InvoiceNumber")]
13021    pub invoice_number: Option<String>,
13022    #[serde(rename = "Packages")]
13023    pub packages: Option<Vec<TransfersCreateExternalIncomingV1RequestItemDestinationsPackages>>,
13024    #[serde(rename = "PlannedRoute")]
13025    pub planned_route: Option<String>,
13026    #[serde(rename = "RecipientLicenseNumber")]
13027    pub recipient_license_number: Option<String>,
13028    #[serde(rename = "TransferTypeName")]
13029    pub transfer_type_name: Option<String>,
13030    #[serde(rename = "Transporters")]
13031    pub transporters: Option<Vec<TransfersCreateExternalIncomingV1RequestItemDestinationsTransporters>>,
13032}
13033
13034#[derive(Serialize, Deserialize, Debug, Clone)]
13035pub struct TransfersCreateExternalIncomingV1RequestItemDestinationsPackages {
13036    #[serde(rename = "ExpirationDate")]
13037    pub expiration_date: Option<String>,
13038    #[serde(rename = "ExternalId")]
13039    pub external_id: Option<String>,
13040    #[serde(rename = "GrossUnitOfWeightName")]
13041    pub gross_unit_of_weight_name: Option<String>,
13042    #[serde(rename = "GrossWeight")]
13043    pub gross_weight: Option<f64>,
13044    #[serde(rename = "ItemName")]
13045    pub item_name: Option<String>,
13046    #[serde(rename = "PackagedDate")]
13047    pub packaged_date: Option<String>,
13048    #[serde(rename = "Quantity")]
13049    pub quantity: Option<i64>,
13050    #[serde(rename = "SellByDate")]
13051    pub sell_by_date: Option<String>,
13052    #[serde(rename = "UnitOfMeasureName")]
13053    pub unit_of_measure_name: Option<String>,
13054    #[serde(rename = "UseByDate")]
13055    pub use_by_date: Option<String>,
13056    #[serde(rename = "WholesalePrice")]
13057    pub wholesale_price: Option<String>,
13058}
13059
13060#[derive(Serialize, Deserialize, Debug, Clone)]
13061pub struct TransfersCreateExternalIncomingV1RequestItemDestinationsTransporters {
13062    #[serde(rename = "DriverLayoverLeg")]
13063    pub driver_layover_leg: Option<String>,
13064    #[serde(rename = "DriverLicenseNumber")]
13065    pub driver_license_number: Option<String>,
13066    #[serde(rename = "DriverName")]
13067    pub driver_name: Option<String>,
13068    #[serde(rename = "DriverOccupationalLicenseNumber")]
13069    pub driver_occupational_license_number: Option<String>,
13070    #[serde(rename = "EstimatedArrivalDateTime")]
13071    pub estimated_arrival_date_time: Option<String>,
13072    #[serde(rename = "EstimatedDepartureDateTime")]
13073    pub estimated_departure_date_time: Option<String>,
13074    #[serde(rename = "IsLayover")]
13075    pub is_layover: Option<bool>,
13076    #[serde(rename = "PhoneNumberForQuestions")]
13077    pub phone_number_for_questions: Option<String>,
13078    #[serde(rename = "TransporterDetails")]
13079    pub transporter_details: Option<String>,
13080    #[serde(rename = "TransporterFacilityLicenseNumber")]
13081    pub transporter_facility_license_number: Option<String>,
13082    #[serde(rename = "VehicleLicensePlateNumber")]
13083    pub vehicle_license_plate_number: Option<String>,
13084    #[serde(rename = "VehicleMake")]
13085    pub vehicle_make: Option<String>,
13086    #[serde(rename = "VehicleModel")]
13087    pub vehicle_model: Option<String>,
13088}
13089
13090#[derive(Serialize, Deserialize, Debug, Clone)]
13091pub struct TransfersCreateExternalIncomingV2RequestItem {
13092    #[serde(rename = "Destinations")]
13093    pub destinations: Option<Vec<TransfersCreateExternalIncomingV2RequestItemDestinations>>,
13094    #[serde(rename = "DriverLicenseNumber")]
13095    pub driver_license_number: Option<String>,
13096    #[serde(rename = "DriverName")]
13097    pub driver_name: Option<String>,
13098    #[serde(rename = "DriverOccupationalLicenseNumber")]
13099    pub driver_occupational_license_number: Option<String>,
13100    #[serde(rename = "PhoneNumberForQuestions")]
13101    pub phone_number_for_questions: Option<String>,
13102    #[serde(rename = "ShipperAddress1")]
13103    pub shipper_address1: Option<String>,
13104    #[serde(rename = "ShipperAddress2")]
13105    pub shipper_address2: Option<String>,
13106    #[serde(rename = "ShipperAddressCity")]
13107    pub shipper_address_city: Option<String>,
13108    #[serde(rename = "ShipperAddressPostalCode")]
13109    pub shipper_address_postal_code: Option<String>,
13110    #[serde(rename = "ShipperAddressState")]
13111    pub shipper_address_state: Option<String>,
13112    #[serde(rename = "ShipperLicenseNumber")]
13113    pub shipper_license_number: Option<String>,
13114    #[serde(rename = "ShipperMainPhoneNumber")]
13115    pub shipper_main_phone_number: Option<String>,
13116    #[serde(rename = "ShipperName")]
13117    pub shipper_name: Option<String>,
13118    #[serde(rename = "TransporterFacilityLicenseNumber")]
13119    pub transporter_facility_license_number: Option<String>,
13120    #[serde(rename = "VehicleLicensePlateNumber")]
13121    pub vehicle_license_plate_number: Option<String>,
13122    #[serde(rename = "VehicleMake")]
13123    pub vehicle_make: Option<String>,
13124    #[serde(rename = "VehicleModel")]
13125    pub vehicle_model: Option<String>,
13126}
13127
13128#[derive(Serialize, Deserialize, Debug, Clone)]
13129pub struct TransfersCreateExternalIncomingV2RequestItemDestinations {
13130    #[serde(rename = "EstimatedArrivalDateTime")]
13131    pub estimated_arrival_date_time: Option<String>,
13132    #[serde(rename = "EstimatedDepartureDateTime")]
13133    pub estimated_departure_date_time: Option<String>,
13134    #[serde(rename = "GrossUnitOfWeightId")]
13135    pub gross_unit_of_weight_id: Option<i64>,
13136    #[serde(rename = "GrossWeight")]
13137    pub gross_weight: Option<f64>,
13138    #[serde(rename = "InvoiceNumber")]
13139    pub invoice_number: Option<String>,
13140    #[serde(rename = "Packages")]
13141    pub packages: Option<Vec<TransfersCreateExternalIncomingV2RequestItemDestinationsPackages>>,
13142    #[serde(rename = "PlannedRoute")]
13143    pub planned_route: Option<String>,
13144    #[serde(rename = "RecipientLicenseNumber")]
13145    pub recipient_license_number: Option<String>,
13146    #[serde(rename = "TransferTypeName")]
13147    pub transfer_type_name: Option<String>,
13148    #[serde(rename = "Transporters")]
13149    pub transporters: Option<Vec<TransfersCreateExternalIncomingV2RequestItemDestinationsTransporters>>,
13150}
13151
13152#[derive(Serialize, Deserialize, Debug, Clone)]
13153pub struct TransfersCreateExternalIncomingV2RequestItemDestinationsPackages {
13154    #[serde(rename = "ExpirationDate")]
13155    pub expiration_date: Option<String>,
13156    #[serde(rename = "ExternalId")]
13157    pub external_id: Option<String>,
13158    #[serde(rename = "GrossUnitOfWeightName")]
13159    pub gross_unit_of_weight_name: Option<String>,
13160    #[serde(rename = "GrossWeight")]
13161    pub gross_weight: Option<f64>,
13162    #[serde(rename = "ItemName")]
13163    pub item_name: Option<String>,
13164    #[serde(rename = "PackagedDate")]
13165    pub packaged_date: Option<String>,
13166    #[serde(rename = "Quantity")]
13167    pub quantity: Option<i64>,
13168    #[serde(rename = "SellByDate")]
13169    pub sell_by_date: Option<String>,
13170    #[serde(rename = "UnitOfMeasureName")]
13171    pub unit_of_measure_name: Option<String>,
13172    #[serde(rename = "UseByDate")]
13173    pub use_by_date: Option<String>,
13174    #[serde(rename = "WholesalePrice")]
13175    pub wholesale_price: Option<String>,
13176}
13177
13178#[derive(Serialize, Deserialize, Debug, Clone)]
13179pub struct TransfersCreateExternalIncomingV2RequestItemDestinationsTransporters {
13180    #[serde(rename = "DriverLayoverLeg")]
13181    pub driver_layover_leg: Option<String>,
13182    #[serde(rename = "DriverLicenseNumber")]
13183    pub driver_license_number: Option<String>,
13184    #[serde(rename = "DriverName")]
13185    pub driver_name: Option<String>,
13186    #[serde(rename = "DriverOccupationalLicenseNumber")]
13187    pub driver_occupational_license_number: Option<String>,
13188    #[serde(rename = "EstimatedArrivalDateTime")]
13189    pub estimated_arrival_date_time: Option<String>,
13190    #[serde(rename = "EstimatedDepartureDateTime")]
13191    pub estimated_departure_date_time: Option<String>,
13192    #[serde(rename = "IsLayover")]
13193    pub is_layover: Option<bool>,
13194    #[serde(rename = "PhoneNumberForQuestions")]
13195    pub phone_number_for_questions: Option<String>,
13196    #[serde(rename = "TransporterDetails")]
13197    pub transporter_details: Option<Vec<TransfersCreateExternalIncomingV2RequestItemDestinationsTransportersTransporterDetails>>,
13198    #[serde(rename = "TransporterFacilityLicenseNumber")]
13199    pub transporter_facility_license_number: Option<String>,
13200    #[serde(rename = "VehicleLicensePlateNumber")]
13201    pub vehicle_license_plate_number: Option<String>,
13202    #[serde(rename = "VehicleMake")]
13203    pub vehicle_make: Option<String>,
13204    #[serde(rename = "VehicleModel")]
13205    pub vehicle_model: Option<String>,
13206}
13207
13208#[derive(Serialize, Deserialize, Debug, Clone)]
13209pub struct TransfersCreateExternalIncomingV2RequestItemDestinationsTransportersTransporterDetails {
13210    #[serde(rename = "DriverLayoverLeg")]
13211    pub driver_layover_leg: Option<String>,
13212    #[serde(rename = "DriverLicenseNumber")]
13213    pub driver_license_number: Option<String>,
13214    #[serde(rename = "DriverName")]
13215    pub driver_name: Option<String>,
13216    #[serde(rename = "DriverOccupationalLicenseNumber")]
13217    pub driver_occupational_license_number: Option<String>,
13218    #[serde(rename = "VehicleLicensePlateNumber")]
13219    pub vehicle_license_plate_number: Option<String>,
13220    #[serde(rename = "VehicleMake")]
13221    pub vehicle_make: Option<String>,
13222    #[serde(rename = "VehicleModel")]
13223    pub vehicle_model: Option<String>,
13224}
13225
13226#[derive(Serialize, Deserialize, Debug, Clone)]
13227pub struct TransfersCreateTemplatesV1RequestItem {
13228    #[serde(rename = "Destinations")]
13229    pub destinations: Option<Vec<TransfersCreateTemplatesV1RequestItemDestinations>>,
13230    #[serde(rename = "DriverLicenseNumber")]
13231    pub driver_license_number: Option<String>,
13232    #[serde(rename = "DriverName")]
13233    pub driver_name: Option<String>,
13234    #[serde(rename = "DriverOccupationalLicenseNumber")]
13235    pub driver_occupational_license_number: Option<String>,
13236    #[serde(rename = "Name")]
13237    pub name: Option<String>,
13238    #[serde(rename = "PhoneNumberForQuestions")]
13239    pub phone_number_for_questions: Option<String>,
13240    #[serde(rename = "TransporterFacilityLicenseNumber")]
13241    pub transporter_facility_license_number: Option<String>,
13242    #[serde(rename = "VehicleLicensePlateNumber")]
13243    pub vehicle_license_plate_number: Option<String>,
13244    #[serde(rename = "VehicleMake")]
13245    pub vehicle_make: Option<String>,
13246    #[serde(rename = "VehicleModel")]
13247    pub vehicle_model: Option<String>,
13248}
13249
13250#[derive(Serialize, Deserialize, Debug, Clone)]
13251pub struct TransfersCreateTemplatesV1RequestItemDestinations {
13252    #[serde(rename = "EstimatedArrivalDateTime")]
13253    pub estimated_arrival_date_time: Option<String>,
13254    #[serde(rename = "EstimatedDepartureDateTime")]
13255    pub estimated_departure_date_time: Option<String>,
13256    #[serde(rename = "InvoiceNumber")]
13257    pub invoice_number: Option<String>,
13258    #[serde(rename = "Packages")]
13259    pub packages: Option<Vec<TransfersCreateTemplatesV1RequestItemDestinationsPackages>>,
13260    #[serde(rename = "PlannedRoute")]
13261    pub planned_route: Option<String>,
13262    #[serde(rename = "RecipientLicenseNumber")]
13263    pub recipient_license_number: Option<String>,
13264    #[serde(rename = "TransferTypeName")]
13265    pub transfer_type_name: Option<String>,
13266    #[serde(rename = "Transporters")]
13267    pub transporters: Option<Vec<TransfersCreateTemplatesV1RequestItemDestinationsTransporters>>,
13268}
13269
13270#[derive(Serialize, Deserialize, Debug, Clone)]
13271pub struct TransfersCreateTemplatesV1RequestItemDestinationsPackages {
13272    #[serde(rename = "GrossUnitOfWeightName")]
13273    pub gross_unit_of_weight_name: Option<String>,
13274    #[serde(rename = "GrossWeight")]
13275    pub gross_weight: Option<f64>,
13276    #[serde(rename = "PackageLabel")]
13277    pub package_label: Option<String>,
13278    #[serde(rename = "WholesalePrice")]
13279    pub wholesale_price: Option<String>,
13280}
13281
13282#[derive(Serialize, Deserialize, Debug, Clone)]
13283pub struct TransfersCreateTemplatesV1RequestItemDestinationsTransporters {
13284    #[serde(rename = "DriverLayoverLeg")]
13285    pub driver_layover_leg: Option<String>,
13286    #[serde(rename = "DriverLicenseNumber")]
13287    pub driver_license_number: Option<String>,
13288    #[serde(rename = "DriverName")]
13289    pub driver_name: Option<String>,
13290    #[serde(rename = "DriverOccupationalLicenseNumber")]
13291    pub driver_occupational_license_number: Option<String>,
13292    #[serde(rename = "EstimatedArrivalDateTime")]
13293    pub estimated_arrival_date_time: Option<String>,
13294    #[serde(rename = "EstimatedDepartureDateTime")]
13295    pub estimated_departure_date_time: Option<String>,
13296    #[serde(rename = "IsLayover")]
13297    pub is_layover: Option<bool>,
13298    #[serde(rename = "PhoneNumberForQuestions")]
13299    pub phone_number_for_questions: Option<String>,
13300    #[serde(rename = "TransporterDetails")]
13301    pub transporter_details: Option<String>,
13302    #[serde(rename = "TransporterFacilityLicenseNumber")]
13303    pub transporter_facility_license_number: Option<String>,
13304    #[serde(rename = "VehicleLicensePlateNumber")]
13305    pub vehicle_license_plate_number: Option<String>,
13306    #[serde(rename = "VehicleMake")]
13307    pub vehicle_make: Option<String>,
13308    #[serde(rename = "VehicleModel")]
13309    pub vehicle_model: Option<String>,
13310}
13311
13312#[derive(Serialize, Deserialize, Debug, Clone)]
13313pub struct TransfersCreateTemplatesOutgoingV2RequestItem {
13314    #[serde(rename = "Destinations")]
13315    pub destinations: Option<Vec<TransfersCreateTemplatesOutgoingV2RequestItemDestinations>>,
13316    #[serde(rename = "DriverLicenseNumber")]
13317    pub driver_license_number: Option<String>,
13318    #[serde(rename = "DriverName")]
13319    pub driver_name: Option<String>,
13320    #[serde(rename = "DriverOccupationalLicenseNumber")]
13321    pub driver_occupational_license_number: Option<String>,
13322    #[serde(rename = "Name")]
13323    pub name: Option<String>,
13324    #[serde(rename = "PhoneNumberForQuestions")]
13325    pub phone_number_for_questions: Option<String>,
13326    #[serde(rename = "TransporterFacilityLicenseNumber")]
13327    pub transporter_facility_license_number: Option<String>,
13328    #[serde(rename = "VehicleLicensePlateNumber")]
13329    pub vehicle_license_plate_number: Option<String>,
13330    #[serde(rename = "VehicleMake")]
13331    pub vehicle_make: Option<String>,
13332    #[serde(rename = "VehicleModel")]
13333    pub vehicle_model: Option<String>,
13334}
13335
13336#[derive(Serialize, Deserialize, Debug, Clone)]
13337pub struct TransfersCreateTemplatesOutgoingV2RequestItemDestinations {
13338    #[serde(rename = "EstimatedArrivalDateTime")]
13339    pub estimated_arrival_date_time: Option<String>,
13340    #[serde(rename = "EstimatedDepartureDateTime")]
13341    pub estimated_departure_date_time: Option<String>,
13342    #[serde(rename = "InvoiceNumber")]
13343    pub invoice_number: Option<String>,
13344    #[serde(rename = "Packages")]
13345    pub packages: Option<Vec<TransfersCreateTemplatesOutgoingV2RequestItemDestinationsPackages>>,
13346    #[serde(rename = "PlannedRoute")]
13347    pub planned_route: Option<String>,
13348    #[serde(rename = "RecipientLicenseNumber")]
13349    pub recipient_license_number: Option<String>,
13350    #[serde(rename = "TransferTypeName")]
13351    pub transfer_type_name: Option<String>,
13352    #[serde(rename = "Transporters")]
13353    pub transporters: Option<Vec<TransfersCreateTemplatesOutgoingV2RequestItemDestinationsTransporters>>,
13354}
13355
13356#[derive(Serialize, Deserialize, Debug, Clone)]
13357pub struct TransfersCreateTemplatesOutgoingV2RequestItemDestinationsPackages {
13358    #[serde(rename = "GrossUnitOfWeightName")]
13359    pub gross_unit_of_weight_name: Option<String>,
13360    #[serde(rename = "GrossWeight")]
13361    pub gross_weight: Option<f64>,
13362    #[serde(rename = "PackageLabel")]
13363    pub package_label: Option<String>,
13364    #[serde(rename = "WholesalePrice")]
13365    pub wholesale_price: Option<String>,
13366}
13367
13368#[derive(Serialize, Deserialize, Debug, Clone)]
13369pub struct TransfersCreateTemplatesOutgoingV2RequestItemDestinationsTransporters {
13370    #[serde(rename = "DriverLayoverLeg")]
13371    pub driver_layover_leg: Option<String>,
13372    #[serde(rename = "DriverLicenseNumber")]
13373    pub driver_license_number: Option<String>,
13374    #[serde(rename = "DriverName")]
13375    pub driver_name: Option<String>,
13376    #[serde(rename = "DriverOccupationalLicenseNumber")]
13377    pub driver_occupational_license_number: Option<String>,
13378    #[serde(rename = "EstimatedArrivalDateTime")]
13379    pub estimated_arrival_date_time: Option<String>,
13380    #[serde(rename = "EstimatedDepartureDateTime")]
13381    pub estimated_departure_date_time: Option<String>,
13382    #[serde(rename = "IsLayover")]
13383    pub is_layover: Option<bool>,
13384    #[serde(rename = "PhoneNumberForQuestions")]
13385    pub phone_number_for_questions: Option<String>,
13386    #[serde(rename = "TransporterDetails")]
13387    pub transporter_details: Option<Vec<TransfersCreateTemplatesOutgoingV2RequestItemDestinationsTransportersTransporterDetails>>,
13388    #[serde(rename = "TransporterFacilityLicenseNumber")]
13389    pub transporter_facility_license_number: Option<String>,
13390    #[serde(rename = "VehicleLicensePlateNumber")]
13391    pub vehicle_license_plate_number: Option<String>,
13392    #[serde(rename = "VehicleMake")]
13393    pub vehicle_make: Option<String>,
13394    #[serde(rename = "VehicleModel")]
13395    pub vehicle_model: Option<String>,
13396}
13397
13398#[derive(Serialize, Deserialize, Debug, Clone)]
13399pub struct TransfersCreateTemplatesOutgoingV2RequestItemDestinationsTransportersTransporterDetails {
13400    #[serde(rename = "DriverLayoverLeg")]
13401    pub driver_layover_leg: Option<String>,
13402    #[serde(rename = "DriverLicenseNumber")]
13403    pub driver_license_number: Option<String>,
13404    #[serde(rename = "DriverName")]
13405    pub driver_name: Option<String>,
13406    #[serde(rename = "DriverOccupationalLicenseNumber")]
13407    pub driver_occupational_license_number: Option<String>,
13408    #[serde(rename = "VehicleLicensePlateNumber")]
13409    pub vehicle_license_plate_number: Option<String>,
13410    #[serde(rename = "VehicleMake")]
13411    pub vehicle_make: Option<String>,
13412    #[serde(rename = "VehicleModel")]
13413    pub vehicle_model: Option<String>,
13414}
13415
13416#[derive(Serialize, Deserialize, Debug, Clone)]
13417pub struct TransfersUpdateExternalIncomingV1RequestItem {
13418    #[serde(rename = "Destinations")]
13419    pub destinations: Option<Vec<TransfersUpdateExternalIncomingV1RequestItemDestinations>>,
13420    #[serde(rename = "DriverLicenseNumber")]
13421    pub driver_license_number: Option<String>,
13422    #[serde(rename = "DriverName")]
13423    pub driver_name: Option<String>,
13424    #[serde(rename = "DriverOccupationalLicenseNumber")]
13425    pub driver_occupational_license_number: Option<String>,
13426    #[serde(rename = "PhoneNumberForQuestions")]
13427    pub phone_number_for_questions: Option<String>,
13428    #[serde(rename = "ShipperAddress1")]
13429    pub shipper_address1: Option<String>,
13430    #[serde(rename = "ShipperAddress2")]
13431    pub shipper_address2: Option<String>,
13432    #[serde(rename = "ShipperAddressCity")]
13433    pub shipper_address_city: Option<String>,
13434    #[serde(rename = "ShipperAddressPostalCode")]
13435    pub shipper_address_postal_code: Option<String>,
13436    #[serde(rename = "ShipperAddressState")]
13437    pub shipper_address_state: Option<String>,
13438    #[serde(rename = "ShipperLicenseNumber")]
13439    pub shipper_license_number: Option<String>,
13440    #[serde(rename = "ShipperMainPhoneNumber")]
13441    pub shipper_main_phone_number: Option<String>,
13442    #[serde(rename = "ShipperName")]
13443    pub shipper_name: Option<String>,
13444    #[serde(rename = "TransferId")]
13445    pub transfer_id: Option<i64>,
13446    #[serde(rename = "TransporterFacilityLicenseNumber")]
13447    pub transporter_facility_license_number: Option<String>,
13448    #[serde(rename = "VehicleLicensePlateNumber")]
13449    pub vehicle_license_plate_number: Option<String>,
13450    #[serde(rename = "VehicleMake")]
13451    pub vehicle_make: Option<String>,
13452    #[serde(rename = "VehicleModel")]
13453    pub vehicle_model: Option<String>,
13454}
13455
13456#[derive(Serialize, Deserialize, Debug, Clone)]
13457pub struct TransfersUpdateExternalIncomingV1RequestItemDestinations {
13458    #[serde(rename = "EstimatedArrivalDateTime")]
13459    pub estimated_arrival_date_time: Option<String>,
13460    #[serde(rename = "EstimatedDepartureDateTime")]
13461    pub estimated_departure_date_time: Option<String>,
13462    #[serde(rename = "GrossUnitOfWeightId")]
13463    pub gross_unit_of_weight_id: Option<i64>,
13464    #[serde(rename = "GrossWeight")]
13465    pub gross_weight: Option<f64>,
13466    #[serde(rename = "InvoiceNumber")]
13467    pub invoice_number: Option<String>,
13468    #[serde(rename = "Packages")]
13469    pub packages: Option<Vec<TransfersUpdateExternalIncomingV1RequestItemDestinationsPackages>>,
13470    #[serde(rename = "PlannedRoute")]
13471    pub planned_route: Option<String>,
13472    #[serde(rename = "RecipientLicenseNumber")]
13473    pub recipient_license_number: Option<String>,
13474    #[serde(rename = "TransferDestinationId")]
13475    pub transfer_destination_id: Option<i64>,
13476    #[serde(rename = "TransferTypeName")]
13477    pub transfer_type_name: Option<String>,
13478    #[serde(rename = "Transporters")]
13479    pub transporters: Option<Vec<TransfersUpdateExternalIncomingV1RequestItemDestinationsTransporters>>,
13480}
13481
13482#[derive(Serialize, Deserialize, Debug, Clone)]
13483pub struct TransfersUpdateExternalIncomingV1RequestItemDestinationsPackages {
13484    #[serde(rename = "ExpirationDate")]
13485    pub expiration_date: Option<String>,
13486    #[serde(rename = "ExternalId")]
13487    pub external_id: Option<String>,
13488    #[serde(rename = "GrossUnitOfWeightName")]
13489    pub gross_unit_of_weight_name: Option<String>,
13490    #[serde(rename = "GrossWeight")]
13491    pub gross_weight: Option<f64>,
13492    #[serde(rename = "ItemName")]
13493    pub item_name: Option<String>,
13494    #[serde(rename = "PackagedDate")]
13495    pub packaged_date: Option<String>,
13496    #[serde(rename = "Quantity")]
13497    pub quantity: Option<i64>,
13498    #[serde(rename = "SellByDate")]
13499    pub sell_by_date: Option<String>,
13500    #[serde(rename = "UnitOfMeasureName")]
13501    pub unit_of_measure_name: Option<String>,
13502    #[serde(rename = "UseByDate")]
13503    pub use_by_date: Option<String>,
13504    #[serde(rename = "WholesalePrice")]
13505    pub wholesale_price: Option<String>,
13506}
13507
13508#[derive(Serialize, Deserialize, Debug, Clone)]
13509pub struct TransfersUpdateExternalIncomingV1RequestItemDestinationsTransporters {
13510    #[serde(rename = "DriverLayoverLeg")]
13511    pub driver_layover_leg: Option<String>,
13512    #[serde(rename = "DriverLicenseNumber")]
13513    pub driver_license_number: Option<String>,
13514    #[serde(rename = "DriverName")]
13515    pub driver_name: Option<String>,
13516    #[serde(rename = "DriverOccupationalLicenseNumber")]
13517    pub driver_occupational_license_number: Option<String>,
13518    #[serde(rename = "EstimatedArrivalDateTime")]
13519    pub estimated_arrival_date_time: Option<String>,
13520    #[serde(rename = "EstimatedDepartureDateTime")]
13521    pub estimated_departure_date_time: Option<String>,
13522    #[serde(rename = "IsLayover")]
13523    pub is_layover: Option<bool>,
13524    #[serde(rename = "PhoneNumberForQuestions")]
13525    pub phone_number_for_questions: Option<String>,
13526    #[serde(rename = "TransporterDetails")]
13527    pub transporter_details: Option<String>,
13528    #[serde(rename = "TransporterFacilityLicenseNumber")]
13529    pub transporter_facility_license_number: Option<String>,
13530    #[serde(rename = "VehicleLicensePlateNumber")]
13531    pub vehicle_license_plate_number: Option<String>,
13532    #[serde(rename = "VehicleMake")]
13533    pub vehicle_make: Option<String>,
13534    #[serde(rename = "VehicleModel")]
13535    pub vehicle_model: Option<String>,
13536}
13537
13538#[derive(Serialize, Deserialize, Debug, Clone)]
13539pub struct TransfersUpdateExternalIncomingV2RequestItem {
13540    #[serde(rename = "Destinations")]
13541    pub destinations: Option<Vec<TransfersUpdateExternalIncomingV2RequestItemDestinations>>,
13542    #[serde(rename = "DriverLicenseNumber")]
13543    pub driver_license_number: Option<String>,
13544    #[serde(rename = "DriverName")]
13545    pub driver_name: Option<String>,
13546    #[serde(rename = "DriverOccupationalLicenseNumber")]
13547    pub driver_occupational_license_number: Option<String>,
13548    #[serde(rename = "PhoneNumberForQuestions")]
13549    pub phone_number_for_questions: Option<String>,
13550    #[serde(rename = "ShipperAddress1")]
13551    pub shipper_address1: Option<String>,
13552    #[serde(rename = "ShipperAddress2")]
13553    pub shipper_address2: Option<String>,
13554    #[serde(rename = "ShipperAddressCity")]
13555    pub shipper_address_city: Option<String>,
13556    #[serde(rename = "ShipperAddressPostalCode")]
13557    pub shipper_address_postal_code: Option<String>,
13558    #[serde(rename = "ShipperAddressState")]
13559    pub shipper_address_state: Option<String>,
13560    #[serde(rename = "ShipperLicenseNumber")]
13561    pub shipper_license_number: Option<String>,
13562    #[serde(rename = "ShipperMainPhoneNumber")]
13563    pub shipper_main_phone_number: Option<String>,
13564    #[serde(rename = "ShipperName")]
13565    pub shipper_name: Option<String>,
13566    #[serde(rename = "TransferId")]
13567    pub transfer_id: Option<i64>,
13568    #[serde(rename = "TransporterFacilityLicenseNumber")]
13569    pub transporter_facility_license_number: Option<String>,
13570    #[serde(rename = "VehicleLicensePlateNumber")]
13571    pub vehicle_license_plate_number: Option<String>,
13572    #[serde(rename = "VehicleMake")]
13573    pub vehicle_make: Option<String>,
13574    #[serde(rename = "VehicleModel")]
13575    pub vehicle_model: Option<String>,
13576}
13577
13578#[derive(Serialize, Deserialize, Debug, Clone)]
13579pub struct TransfersUpdateExternalIncomingV2RequestItemDestinations {
13580    #[serde(rename = "EstimatedArrivalDateTime")]
13581    pub estimated_arrival_date_time: Option<String>,
13582    #[serde(rename = "EstimatedDepartureDateTime")]
13583    pub estimated_departure_date_time: Option<String>,
13584    #[serde(rename = "GrossUnitOfWeightId")]
13585    pub gross_unit_of_weight_id: Option<i64>,
13586    #[serde(rename = "GrossWeight")]
13587    pub gross_weight: Option<f64>,
13588    #[serde(rename = "InvoiceNumber")]
13589    pub invoice_number: Option<String>,
13590    #[serde(rename = "Packages")]
13591    pub packages: Option<Vec<TransfersUpdateExternalIncomingV2RequestItemDestinationsPackages>>,
13592    #[serde(rename = "PlannedRoute")]
13593    pub planned_route: Option<String>,
13594    #[serde(rename = "RecipientLicenseNumber")]
13595    pub recipient_license_number: Option<String>,
13596    #[serde(rename = "TransferDestinationId")]
13597    pub transfer_destination_id: Option<i64>,
13598    #[serde(rename = "TransferTypeName")]
13599    pub transfer_type_name: Option<String>,
13600    #[serde(rename = "Transporters")]
13601    pub transporters: Option<Vec<TransfersUpdateExternalIncomingV2RequestItemDestinationsTransporters>>,
13602}
13603
13604#[derive(Serialize, Deserialize, Debug, Clone)]
13605pub struct TransfersUpdateExternalIncomingV2RequestItemDestinationsPackages {
13606    #[serde(rename = "ExpirationDate")]
13607    pub expiration_date: Option<String>,
13608    #[serde(rename = "ExternalId")]
13609    pub external_id: Option<String>,
13610    #[serde(rename = "GrossUnitOfWeightName")]
13611    pub gross_unit_of_weight_name: Option<String>,
13612    #[serde(rename = "GrossWeight")]
13613    pub gross_weight: Option<f64>,
13614    #[serde(rename = "ItemName")]
13615    pub item_name: Option<String>,
13616    #[serde(rename = "PackagedDate")]
13617    pub packaged_date: Option<String>,
13618    #[serde(rename = "Quantity")]
13619    pub quantity: Option<i64>,
13620    #[serde(rename = "SellByDate")]
13621    pub sell_by_date: Option<String>,
13622    #[serde(rename = "UnitOfMeasureName")]
13623    pub unit_of_measure_name: Option<String>,
13624    #[serde(rename = "UseByDate")]
13625    pub use_by_date: Option<String>,
13626    #[serde(rename = "WholesalePrice")]
13627    pub wholesale_price: Option<String>,
13628}
13629
13630#[derive(Serialize, Deserialize, Debug, Clone)]
13631pub struct TransfersUpdateExternalIncomingV2RequestItemDestinationsTransporters {
13632    #[serde(rename = "DriverLayoverLeg")]
13633    pub driver_layover_leg: Option<String>,
13634    #[serde(rename = "DriverLicenseNumber")]
13635    pub driver_license_number: Option<String>,
13636    #[serde(rename = "DriverName")]
13637    pub driver_name: Option<String>,
13638    #[serde(rename = "DriverOccupationalLicenseNumber")]
13639    pub driver_occupational_license_number: Option<String>,
13640    #[serde(rename = "EstimatedArrivalDateTime")]
13641    pub estimated_arrival_date_time: Option<String>,
13642    #[serde(rename = "EstimatedDepartureDateTime")]
13643    pub estimated_departure_date_time: Option<String>,
13644    #[serde(rename = "IsLayover")]
13645    pub is_layover: Option<bool>,
13646    #[serde(rename = "PhoneNumberForQuestions")]
13647    pub phone_number_for_questions: Option<String>,
13648    #[serde(rename = "TransporterDetails")]
13649    pub transporter_details: Option<Vec<TransfersUpdateExternalIncomingV2RequestItemDestinationsTransportersTransporterDetails>>,
13650    #[serde(rename = "TransporterFacilityLicenseNumber")]
13651    pub transporter_facility_license_number: Option<String>,
13652    #[serde(rename = "VehicleLicensePlateNumber")]
13653    pub vehicle_license_plate_number: Option<String>,
13654    #[serde(rename = "VehicleMake")]
13655    pub vehicle_make: Option<String>,
13656    #[serde(rename = "VehicleModel")]
13657    pub vehicle_model: Option<String>,
13658}
13659
13660#[derive(Serialize, Deserialize, Debug, Clone)]
13661pub struct TransfersUpdateExternalIncomingV2RequestItemDestinationsTransportersTransporterDetails {
13662    #[serde(rename = "DriverLayoverLeg")]
13663    pub driver_layover_leg: Option<String>,
13664    #[serde(rename = "DriverLicenseNumber")]
13665    pub driver_license_number: Option<String>,
13666    #[serde(rename = "DriverName")]
13667    pub driver_name: Option<String>,
13668    #[serde(rename = "DriverOccupationalLicenseNumber")]
13669    pub driver_occupational_license_number: Option<String>,
13670    #[serde(rename = "VehicleLicensePlateNumber")]
13671    pub vehicle_license_plate_number: Option<String>,
13672    #[serde(rename = "VehicleMake")]
13673    pub vehicle_make: Option<String>,
13674    #[serde(rename = "VehicleModel")]
13675    pub vehicle_model: Option<String>,
13676}
13677
13678#[derive(Serialize, Deserialize, Debug, Clone)]
13679pub struct TransfersUpdateTemplatesV1RequestItem {
13680    #[serde(rename = "Destinations")]
13681    pub destinations: Option<Vec<TransfersUpdateTemplatesV1RequestItemDestinations>>,
13682    #[serde(rename = "DriverLicenseNumber")]
13683    pub driver_license_number: Option<String>,
13684    #[serde(rename = "DriverName")]
13685    pub driver_name: Option<String>,
13686    #[serde(rename = "DriverOccupationalLicenseNumber")]
13687    pub driver_occupational_license_number: Option<String>,
13688    #[serde(rename = "Name")]
13689    pub name: Option<String>,
13690    #[serde(rename = "PhoneNumberForQuestions")]
13691    pub phone_number_for_questions: Option<String>,
13692    #[serde(rename = "TransferTemplateId")]
13693    pub transfer_template_id: Option<i64>,
13694    #[serde(rename = "TransporterFacilityLicenseNumber")]
13695    pub transporter_facility_license_number: Option<String>,
13696    #[serde(rename = "VehicleLicensePlateNumber")]
13697    pub vehicle_license_plate_number: Option<String>,
13698    #[serde(rename = "VehicleMake")]
13699    pub vehicle_make: Option<String>,
13700    #[serde(rename = "VehicleModel")]
13701    pub vehicle_model: Option<String>,
13702}
13703
13704#[derive(Serialize, Deserialize, Debug, Clone)]
13705pub struct TransfersUpdateTemplatesV1RequestItemDestinations {
13706    #[serde(rename = "EstimatedArrivalDateTime")]
13707    pub estimated_arrival_date_time: Option<String>,
13708    #[serde(rename = "EstimatedDepartureDateTime")]
13709    pub estimated_departure_date_time: Option<String>,
13710    #[serde(rename = "InvoiceNumber")]
13711    pub invoice_number: Option<String>,
13712    #[serde(rename = "Packages")]
13713    pub packages: Option<Vec<TransfersUpdateTemplatesV1RequestItemDestinationsPackages>>,
13714    #[serde(rename = "PlannedRoute")]
13715    pub planned_route: Option<String>,
13716    #[serde(rename = "RecipientLicenseNumber")]
13717    pub recipient_license_number: Option<String>,
13718    #[serde(rename = "TransferDestinationId")]
13719    pub transfer_destination_id: Option<i64>,
13720    #[serde(rename = "TransferTypeName")]
13721    pub transfer_type_name: Option<String>,
13722    #[serde(rename = "Transporters")]
13723    pub transporters: Option<Vec<TransfersUpdateTemplatesV1RequestItemDestinationsTransporters>>,
13724}
13725
13726#[derive(Serialize, Deserialize, Debug, Clone)]
13727pub struct TransfersUpdateTemplatesV1RequestItemDestinationsPackages {
13728    #[serde(rename = "GrossUnitOfWeightName")]
13729    pub gross_unit_of_weight_name: Option<String>,
13730    #[serde(rename = "GrossWeight")]
13731    pub gross_weight: Option<f64>,
13732    #[serde(rename = "PackageLabel")]
13733    pub package_label: Option<String>,
13734    #[serde(rename = "WholesalePrice")]
13735    pub wholesale_price: Option<String>,
13736}
13737
13738#[derive(Serialize, Deserialize, Debug, Clone)]
13739pub struct TransfersUpdateTemplatesV1RequestItemDestinationsTransporters {
13740    #[serde(rename = "DriverLayoverLeg")]
13741    pub driver_layover_leg: Option<String>,
13742    #[serde(rename = "DriverLicenseNumber")]
13743    pub driver_license_number: Option<String>,
13744    #[serde(rename = "DriverName")]
13745    pub driver_name: Option<String>,
13746    #[serde(rename = "DriverOccupationalLicenseNumber")]
13747    pub driver_occupational_license_number: Option<String>,
13748    #[serde(rename = "EstimatedArrivalDateTime")]
13749    pub estimated_arrival_date_time: Option<String>,
13750    #[serde(rename = "EstimatedDepartureDateTime")]
13751    pub estimated_departure_date_time: Option<String>,
13752    #[serde(rename = "IsLayover")]
13753    pub is_layover: Option<bool>,
13754    #[serde(rename = "PhoneNumberForQuestions")]
13755    pub phone_number_for_questions: Option<String>,
13756    #[serde(rename = "TransporterDetails")]
13757    pub transporter_details: Option<String>,
13758    #[serde(rename = "TransporterFacilityLicenseNumber")]
13759    pub transporter_facility_license_number: Option<String>,
13760    #[serde(rename = "VehicleLicensePlateNumber")]
13761    pub vehicle_license_plate_number: Option<String>,
13762    #[serde(rename = "VehicleMake")]
13763    pub vehicle_make: Option<String>,
13764    #[serde(rename = "VehicleModel")]
13765    pub vehicle_model: Option<String>,
13766}
13767
13768#[derive(Serialize, Deserialize, Debug, Clone)]
13769pub struct TransfersUpdateTemplatesOutgoingV2RequestItem {
13770    #[serde(rename = "Destinations")]
13771    pub destinations: Option<Vec<TransfersUpdateTemplatesOutgoingV2RequestItemDestinations>>,
13772    #[serde(rename = "DriverLicenseNumber")]
13773    pub driver_license_number: Option<String>,
13774    #[serde(rename = "DriverName")]
13775    pub driver_name: Option<String>,
13776    #[serde(rename = "DriverOccupationalLicenseNumber")]
13777    pub driver_occupational_license_number: Option<String>,
13778    #[serde(rename = "Name")]
13779    pub name: Option<String>,
13780    #[serde(rename = "PhoneNumberForQuestions")]
13781    pub phone_number_for_questions: Option<String>,
13782    #[serde(rename = "TransferTemplateId")]
13783    pub transfer_template_id: Option<i64>,
13784    #[serde(rename = "TransporterFacilityLicenseNumber")]
13785    pub transporter_facility_license_number: Option<String>,
13786    #[serde(rename = "VehicleLicensePlateNumber")]
13787    pub vehicle_license_plate_number: Option<String>,
13788    #[serde(rename = "VehicleMake")]
13789    pub vehicle_make: Option<String>,
13790    #[serde(rename = "VehicleModel")]
13791    pub vehicle_model: Option<String>,
13792}
13793
13794#[derive(Serialize, Deserialize, Debug, Clone)]
13795pub struct TransfersUpdateTemplatesOutgoingV2RequestItemDestinations {
13796    #[serde(rename = "EstimatedArrivalDateTime")]
13797    pub estimated_arrival_date_time: Option<String>,
13798    #[serde(rename = "EstimatedDepartureDateTime")]
13799    pub estimated_departure_date_time: Option<String>,
13800    #[serde(rename = "InvoiceNumber")]
13801    pub invoice_number: Option<String>,
13802    #[serde(rename = "Packages")]
13803    pub packages: Option<Vec<TransfersUpdateTemplatesOutgoingV2RequestItemDestinationsPackages>>,
13804    #[serde(rename = "PlannedRoute")]
13805    pub planned_route: Option<String>,
13806    #[serde(rename = "RecipientLicenseNumber")]
13807    pub recipient_license_number: Option<String>,
13808    #[serde(rename = "TransferDestinationId")]
13809    pub transfer_destination_id: Option<i64>,
13810    #[serde(rename = "TransferTypeName")]
13811    pub transfer_type_name: Option<String>,
13812    #[serde(rename = "Transporters")]
13813    pub transporters: Option<Vec<TransfersUpdateTemplatesOutgoingV2RequestItemDestinationsTransporters>>,
13814}
13815
13816#[derive(Serialize, Deserialize, Debug, Clone)]
13817pub struct TransfersUpdateTemplatesOutgoingV2RequestItemDestinationsPackages {
13818    #[serde(rename = "GrossUnitOfWeightName")]
13819    pub gross_unit_of_weight_name: Option<String>,
13820    #[serde(rename = "GrossWeight")]
13821    pub gross_weight: Option<f64>,
13822    #[serde(rename = "PackageLabel")]
13823    pub package_label: Option<String>,
13824    #[serde(rename = "WholesalePrice")]
13825    pub wholesale_price: Option<String>,
13826}
13827
13828#[derive(Serialize, Deserialize, Debug, Clone)]
13829pub struct TransfersUpdateTemplatesOutgoingV2RequestItemDestinationsTransporters {
13830    #[serde(rename = "DriverLayoverLeg")]
13831    pub driver_layover_leg: Option<String>,
13832    #[serde(rename = "DriverLicenseNumber")]
13833    pub driver_license_number: Option<String>,
13834    #[serde(rename = "DriverName")]
13835    pub driver_name: Option<String>,
13836    #[serde(rename = "DriverOccupationalLicenseNumber")]
13837    pub driver_occupational_license_number: Option<String>,
13838    #[serde(rename = "EstimatedArrivalDateTime")]
13839    pub estimated_arrival_date_time: Option<String>,
13840    #[serde(rename = "EstimatedDepartureDateTime")]
13841    pub estimated_departure_date_time: Option<String>,
13842    #[serde(rename = "IsLayover")]
13843    pub is_layover: Option<bool>,
13844    #[serde(rename = "PhoneNumberForQuestions")]
13845    pub phone_number_for_questions: Option<String>,
13846    #[serde(rename = "TransporterDetails")]
13847    pub transporter_details: Option<Vec<TransfersUpdateTemplatesOutgoingV2RequestItemDestinationsTransportersTransporterDetails>>,
13848    #[serde(rename = "TransporterFacilityLicenseNumber")]
13849    pub transporter_facility_license_number: Option<String>,
13850    #[serde(rename = "VehicleLicensePlateNumber")]
13851    pub vehicle_license_plate_number: Option<String>,
13852    #[serde(rename = "VehicleMake")]
13853    pub vehicle_make: Option<String>,
13854    #[serde(rename = "VehicleModel")]
13855    pub vehicle_model: Option<String>,
13856}
13857
13858#[derive(Serialize, Deserialize, Debug, Clone)]
13859pub struct TransfersUpdateTemplatesOutgoingV2RequestItemDestinationsTransportersTransporterDetails {
13860    #[serde(rename = "DriverLayoverLeg")]
13861    pub driver_layover_leg: Option<String>,
13862    #[serde(rename = "DriverLicenseNumber")]
13863    pub driver_license_number: Option<String>,
13864    #[serde(rename = "DriverName")]
13865    pub driver_name: Option<String>,
13866    #[serde(rename = "DriverOccupationalLicenseNumber")]
13867    pub driver_occupational_license_number: Option<String>,
13868    #[serde(rename = "VehicleLicensePlateNumber")]
13869    pub vehicle_license_plate_number: Option<String>,
13870    #[serde(rename = "VehicleMake")]
13871    pub vehicle_make: Option<String>,
13872    #[serde(rename = "VehicleModel")]
13873    pub vehicle_model: Option<String>,
13874}
13875