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 CreateAdjust V1
30    /// Permissions Required:
31    ///   - ManageProcessingJobs
32    ///
33    pub async fn processing_jobs_create_adjust_v1(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsCreateAdjustV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
34        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
35        let client = self.client.clone();
36        let body_val = body_val.clone();
37        self.rate_limiter.execute(None, false, move || {
38            let client = client.clone();
39            let license_number = license_number.clone();
40            let body_val = body_val.clone();
41            async move { client.processing_jobs_create_adjust_v1(license_number, body_val.as_ref()).await }
42        }).await
43    }
44
45    /// POST CreateAdjust V2
46    /// Adjusts the details of existing processing jobs at a Facility, including units of measure and associated packages.
47    /// 
48    ///   Permissions Required:
49    ///   - Manage Processing Job
50    ///
51    pub async fn processing_jobs_create_adjust_v2(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsCreateAdjustV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
52        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
53        let client = self.client.clone();
54        let body_val = body_val.clone();
55        self.rate_limiter.execute(None, false, move || {
56            let client = client.clone();
57            let license_number = license_number.clone();
58            let body_val = body_val.clone();
59            async move { client.processing_jobs_create_adjust_v2(license_number, body_val.as_ref()).await }
60        }).await
61    }
62
63    /// POST CreateJobtypes V1
64    /// Permissions Required:
65    ///   - Manage Processing Job
66    ///
67    pub async fn processing_jobs_create_jobtypes_v1(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsCreateJobtypesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
68        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
69        let client = self.client.clone();
70        let body_val = body_val.clone();
71        self.rate_limiter.execute(None, false, move || {
72            let client = client.clone();
73            let license_number = license_number.clone();
74            let body_val = body_val.clone();
75            async move { client.processing_jobs_create_jobtypes_v1(license_number, body_val.as_ref()).await }
76        }).await
77    }
78
79    /// POST CreateJobtypes V2
80    /// Creates new processing job types for a Facility, including name, category, description, steps, and attributes.
81    /// 
82    ///   Permissions Required:
83    ///   - Manage Processing Job
84    ///
85    pub async fn processing_jobs_create_jobtypes_v2(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsCreateJobtypesV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
86        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
87        let client = self.client.clone();
88        let body_val = body_val.clone();
89        self.rate_limiter.execute(None, false, move || {
90            let client = client.clone();
91            let license_number = license_number.clone();
92            let body_val = body_val.clone();
93            async move { client.processing_jobs_create_jobtypes_v2(license_number, body_val.as_ref()).await }
94        }).await
95    }
96
97    /// POST CreateStart V1
98    /// Permissions Required:
99    ///   - ManageProcessingJobs
100    ///
101    pub async fn processing_jobs_create_start_v1(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsCreateStartV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
102        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
103        let client = self.client.clone();
104        let body_val = body_val.clone();
105        self.rate_limiter.execute(None, false, move || {
106            let client = client.clone();
107            let license_number = license_number.clone();
108            let body_val = body_val.clone();
109            async move { client.processing_jobs_create_start_v1(license_number, body_val.as_ref()).await }
110        }).await
111    }
112
113    /// POST CreateStart V2
114    /// Initiates new processing jobs at a Facility, including job details and associated packages.
115    /// 
116    ///   Permissions Required:
117    ///   - Manage Processing Job
118    ///
119    pub async fn processing_jobs_create_start_v2(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsCreateStartV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
120        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
121        let client = self.client.clone();
122        let body_val = body_val.clone();
123        self.rate_limiter.execute(None, false, move || {
124            let client = client.clone();
125            let license_number = license_number.clone();
126            let body_val = body_val.clone();
127            async move { client.processing_jobs_create_start_v2(license_number, body_val.as_ref()).await }
128        }).await
129    }
130
131    /// POST Createpackages V1
132    /// Permissions Required:
133    ///   - ManageProcessingJobs
134    ///
135    pub async fn processing_jobs_createpackages_v1(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsCreatepackagesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
136        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
137        let client = self.client.clone();
138        let body_val = body_val.clone();
139        self.rate_limiter.execute(None, false, move || {
140            let client = client.clone();
141            let license_number = license_number.clone();
142            let body_val = body_val.clone();
143            async move { client.processing_jobs_createpackages_v1(license_number, body_val.as_ref()).await }
144        }).await
145    }
146
147    /// POST Createpackages V2
148    /// Creates packages from processing jobs at a Facility, including optional location and note assignments.
149    /// 
150    ///   Permissions Required:
151    ///   - Manage Processing Job
152    ///
153    pub async fn processing_jobs_createpackages_v2(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsCreatepackagesV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
154        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
155        let client = self.client.clone();
156        let body_val = body_val.clone();
157        self.rate_limiter.execute(None, false, move || {
158            let client = client.clone();
159            let license_number = license_number.clone();
160            let body_val = body_val.clone();
161            async move { client.processing_jobs_createpackages_v2(license_number, body_val.as_ref()).await }
162        }).await
163    }
164
165    /// DELETE Delete V1
166    /// Permissions Required:
167    ///   - Manage Processing Job
168    ///
169    pub async fn processing_jobs_delete_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
170        let id = id.to_string();
171        let client = self.client.clone();
172        let body = body.cloned();
173        self.rate_limiter.execute(None, false, move || {
174            let client = client.clone();
175            let id = id.clone();
176            let license_number = license_number.clone();
177            let body = body.clone();
178            async move { client.processing_jobs_delete_v1(&id, license_number, body.as_ref()).await }
179        }).await
180    }
181
182    /// DELETE Delete V2
183    /// Archives a Processing Job at a Facility by marking it as inactive and removing it from active use.
184    /// 
185    ///   Permissions Required:
186    ///   - Manage Processing Job
187    ///
188    pub async fn processing_jobs_delete_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
189        let id = id.to_string();
190        let client = self.client.clone();
191        let body = body.cloned();
192        self.rate_limiter.execute(None, false, move || {
193            let client = client.clone();
194            let id = id.clone();
195            let license_number = license_number.clone();
196            let body = body.clone();
197            async move { client.processing_jobs_delete_v2(&id, license_number, body.as_ref()).await }
198        }).await
199    }
200
201    /// DELETE DeleteJobtypes V1
202    /// Permissions Required:
203    ///   - Manage Processing Job
204    ///
205    pub async fn processing_jobs_delete_jobtypes_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
206        let id = id.to_string();
207        let client = self.client.clone();
208        let body = body.cloned();
209        self.rate_limiter.execute(None, false, move || {
210            let client = client.clone();
211            let id = id.clone();
212            let license_number = license_number.clone();
213            let body = body.clone();
214            async move { client.processing_jobs_delete_jobtypes_v1(&id, license_number, body.as_ref()).await }
215        }).await
216    }
217
218    /// DELETE DeleteJobtypes V2
219    /// Archives a Processing Job Type at a Facility, making it inactive for future use.
220    /// 
221    ///   Permissions Required:
222    ///   - Manage Processing Job
223    ///
224    pub async fn processing_jobs_delete_jobtypes_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
225        let id = id.to_string();
226        let client = self.client.clone();
227        let body = body.cloned();
228        self.rate_limiter.execute(None, false, move || {
229            let client = client.clone();
230            let id = id.clone();
231            let license_number = license_number.clone();
232            let body = body.clone();
233            async move { client.processing_jobs_delete_jobtypes_v2(&id, license_number, body.as_ref()).await }
234        }).await
235    }
236
237    /// GET Get V1
238    /// Permissions Required:
239    ///   - Manage Processing Job
240    ///
241    pub async fn processing_jobs_get_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
242        let id = id.to_string();
243        let client = self.client.clone();
244        let body = body.cloned();
245        self.rate_limiter.execute(None, true, move || {
246            let client = client.clone();
247            let id = id.clone();
248            let license_number = license_number.clone();
249            let body = body.clone();
250            async move { client.processing_jobs_get_v1(&id, license_number, body.as_ref()).await }
251        }).await
252    }
253
254    /// GET Get V2
255    /// Retrieves a ProcessingJob by Id.
256    /// 
257    ///   Permissions Required:
258    ///   - Manage Processing Job
259    ///
260    pub async fn processing_jobs_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
261        let id = id.to_string();
262        let client = self.client.clone();
263        let body = body.cloned();
264        self.rate_limiter.execute(None, true, move || {
265            let client = client.clone();
266            let id = id.clone();
267            let license_number = license_number.clone();
268            let body = body.clone();
269            async move { client.processing_jobs_get_v2(&id, license_number, body.as_ref()).await }
270        }).await
271    }
272
273    /// GET GetActive V1
274    /// Permissions Required:
275    ///   - Manage Processing Job
276    ///
277    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>> {
278        let client = self.client.clone();
279        let body = body.cloned();
280        self.rate_limiter.execute(None, true, move || {
281            let client = client.clone();
282            let last_modified_end = last_modified_end.clone();
283            let last_modified_start = last_modified_start.clone();
284            let license_number = license_number.clone();
285            let body = body.clone();
286            async move { client.processing_jobs_get_active_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
287        }).await
288    }
289
290    /// GET GetActive V2
291    /// Retrieves active processing jobs at a specified Facility.
292    /// 
293    ///   Permissions Required:
294    ///   - Manage Processing Job
295    ///
296    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>> {
297        let client = self.client.clone();
298        let body = body.cloned();
299        self.rate_limiter.execute(None, true, move || {
300            let client = client.clone();
301            let last_modified_end = last_modified_end.clone();
302            let last_modified_start = last_modified_start.clone();
303            let license_number = license_number.clone();
304            let page_number = page_number.clone();
305            let page_size = page_size.clone();
306            let body = body.clone();
307            async move { client.processing_jobs_get_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
308        }).await
309    }
310
311    /// GET GetInactive V1
312    /// Permissions Required:
313    ///   - Manage Processing Job
314    ///
315    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>> {
316        let client = self.client.clone();
317        let body = body.cloned();
318        self.rate_limiter.execute(None, true, move || {
319            let client = client.clone();
320            let last_modified_end = last_modified_end.clone();
321            let last_modified_start = last_modified_start.clone();
322            let license_number = license_number.clone();
323            let body = body.clone();
324            async move { client.processing_jobs_get_inactive_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
325        }).await
326    }
327
328    /// GET GetInactive V2
329    /// Retrieves inactive processing jobs at a specified Facility.
330    /// 
331    ///   Permissions Required:
332    ///   - Manage Processing Job
333    ///
334    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>> {
335        let client = self.client.clone();
336        let body = body.cloned();
337        self.rate_limiter.execute(None, true, move || {
338            let client = client.clone();
339            let last_modified_end = last_modified_end.clone();
340            let last_modified_start = last_modified_start.clone();
341            let license_number = license_number.clone();
342            let page_number = page_number.clone();
343            let page_size = page_size.clone();
344            let body = body.clone();
345            async move { client.processing_jobs_get_inactive_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
346        }).await
347    }
348
349    /// GET GetJobtypesActive V1
350    /// Permissions Required:
351    ///   - Manage Processing Job
352    ///
353    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>> {
354        let client = self.client.clone();
355        let body = body.cloned();
356        self.rate_limiter.execute(None, true, move || {
357            let client = client.clone();
358            let last_modified_end = last_modified_end.clone();
359            let last_modified_start = last_modified_start.clone();
360            let license_number = license_number.clone();
361            let body = body.clone();
362            async move { client.processing_jobs_get_jobtypes_active_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
363        }).await
364    }
365
366    /// GET GetJobtypesActive V2
367    /// Retrieves a list of all active processing job types defined within a Facility.
368    /// 
369    ///   Permissions Required:
370    ///   - Manage Processing Job
371    ///
372    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>> {
373        let client = self.client.clone();
374        let body = body.cloned();
375        self.rate_limiter.execute(None, true, move || {
376            let client = client.clone();
377            let last_modified_end = last_modified_end.clone();
378            let last_modified_start = last_modified_start.clone();
379            let license_number = license_number.clone();
380            let page_number = page_number.clone();
381            let page_size = page_size.clone();
382            let body = body.clone();
383            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 }
384        }).await
385    }
386
387    /// GET GetJobtypesAttributes V1
388    /// Permissions Required:
389    ///   - Manage Processing Job
390    ///
391    pub async fn processing_jobs_get_jobtypes_attributes_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
392        let client = self.client.clone();
393        let body = body.cloned();
394        self.rate_limiter.execute(None, true, move || {
395            let client = client.clone();
396            let license_number = license_number.clone();
397            let body = body.clone();
398            async move { client.processing_jobs_get_jobtypes_attributes_v1(license_number, body.as_ref()).await }
399        }).await
400    }
401
402    /// GET GetJobtypesAttributes V2
403    /// Retrieves all processing job attributes available for a Facility.
404    /// 
405    ///   Permissions Required:
406    ///   - Manage Processing Job
407    ///
408    pub async fn processing_jobs_get_jobtypes_attributes_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
409        let client = self.client.clone();
410        let body = body.cloned();
411        self.rate_limiter.execute(None, true, move || {
412            let client = client.clone();
413            let license_number = license_number.clone();
414            let body = body.clone();
415            async move { client.processing_jobs_get_jobtypes_attributes_v2(license_number, body.as_ref()).await }
416        }).await
417    }
418
419    /// GET GetJobtypesCategories V1
420    /// Permissions Required:
421    ///   - Manage Processing Job
422    ///
423    pub async fn processing_jobs_get_jobtypes_categories_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
424        let client = self.client.clone();
425        let body = body.cloned();
426        self.rate_limiter.execute(None, true, move || {
427            let client = client.clone();
428            let license_number = license_number.clone();
429            let body = body.clone();
430            async move { client.processing_jobs_get_jobtypes_categories_v1(license_number, body.as_ref()).await }
431        }).await
432    }
433
434    /// GET GetJobtypesCategories V2
435    /// Retrieves all processing job categories available for a specified Facility.
436    /// 
437    ///   Permissions Required:
438    ///   - Manage Processing Job
439    ///
440    pub async fn processing_jobs_get_jobtypes_categories_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
441        let client = self.client.clone();
442        let body = body.cloned();
443        self.rate_limiter.execute(None, true, move || {
444            let client = client.clone();
445            let license_number = license_number.clone();
446            let body = body.clone();
447            async move { client.processing_jobs_get_jobtypes_categories_v2(license_number, body.as_ref()).await }
448        }).await
449    }
450
451    /// GET GetJobtypesInactive V1
452    /// Permissions Required:
453    ///   - Manage Processing Job
454    ///
455    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>> {
456        let client = self.client.clone();
457        let body = body.cloned();
458        self.rate_limiter.execute(None, true, move || {
459            let client = client.clone();
460            let last_modified_end = last_modified_end.clone();
461            let last_modified_start = last_modified_start.clone();
462            let license_number = license_number.clone();
463            let body = body.clone();
464            async move { client.processing_jobs_get_jobtypes_inactive_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
465        }).await
466    }
467
468    /// GET GetJobtypesInactive V2
469    /// Retrieves a list of all inactive processing job types defined within a Facility.
470    /// 
471    ///   Permissions Required:
472    ///   - Manage Processing Job
473    ///
474    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>> {
475        let client = self.client.clone();
476        let body = body.cloned();
477        self.rate_limiter.execute(None, true, move || {
478            let client = client.clone();
479            let last_modified_end = last_modified_end.clone();
480            let last_modified_start = last_modified_start.clone();
481            let license_number = license_number.clone();
482            let page_number = page_number.clone();
483            let page_size = page_size.clone();
484            let body = body.clone();
485            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 }
486        }).await
487    }
488
489    /// PUT UpdateFinish V1
490    /// Permissions Required:
491    ///   - Manage Processing Job
492    ///
493    pub async fn processing_jobs_update_finish_v1(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsUpdateFinishV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
494        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
495        let client = self.client.clone();
496        let body_val = body_val.clone();
497        self.rate_limiter.execute(None, false, move || {
498            let client = client.clone();
499            let license_number = license_number.clone();
500            let body_val = body_val.clone();
501            async move { client.processing_jobs_update_finish_v1(license_number, body_val.as_ref()).await }
502        }).await
503    }
504
505    /// PUT UpdateFinish V2
506    /// Completes processing jobs at a Facility by recording final notes and waste measurements.
507    /// 
508    ///   Permissions Required:
509    ///   - Manage Processing Job
510    ///
511    pub async fn processing_jobs_update_finish_v2(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsUpdateFinishV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
512        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
513        let client = self.client.clone();
514        let body_val = body_val.clone();
515        self.rate_limiter.execute(None, false, move || {
516            let client = client.clone();
517            let license_number = license_number.clone();
518            let body_val = body_val.clone();
519            async move { client.processing_jobs_update_finish_v2(license_number, body_val.as_ref()).await }
520        }).await
521    }
522
523    /// PUT UpdateJobtypes V1
524    /// Permissions Required:
525    ///   - Manage Processing Job
526    ///
527    pub async fn processing_jobs_update_jobtypes_v1(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsUpdateJobtypesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
528        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
529        let client = self.client.clone();
530        let body_val = body_val.clone();
531        self.rate_limiter.execute(None, false, move || {
532            let client = client.clone();
533            let license_number = license_number.clone();
534            let body_val = body_val.clone();
535            async move { client.processing_jobs_update_jobtypes_v1(license_number, body_val.as_ref()).await }
536        }).await
537    }
538
539    /// PUT UpdateJobtypes V2
540    /// Updates existing processing job types at a Facility, including their name, category, description, steps, and attributes.
541    /// 
542    ///   Permissions Required:
543    ///   - Manage Processing Job
544    ///
545    pub async fn processing_jobs_update_jobtypes_v2(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsUpdateJobtypesV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
546        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
547        let client = self.client.clone();
548        let body_val = body_val.clone();
549        self.rate_limiter.execute(None, false, move || {
550            let client = client.clone();
551            let license_number = license_number.clone();
552            let body_val = body_val.clone();
553            async move { client.processing_jobs_update_jobtypes_v2(license_number, body_val.as_ref()).await }
554        }).await
555    }
556
557    /// PUT UpdateUnfinish V1
558    /// Permissions Required:
559    ///   - Manage Processing Job
560    ///
561    pub async fn processing_jobs_update_unfinish_v1(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsUpdateUnfinishV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
562        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
563        let client = self.client.clone();
564        let body_val = body_val.clone();
565        self.rate_limiter.execute(None, false, move || {
566            let client = client.clone();
567            let license_number = license_number.clone();
568            let body_val = body_val.clone();
569            async move { client.processing_jobs_update_unfinish_v1(license_number, body_val.as_ref()).await }
570        }).await
571    }
572
573    /// PUT UpdateUnfinish V2
574    /// Reopens previously completed processing jobs at a Facility to allow further updates or corrections.
575    /// 
576    ///   Permissions Required:
577    ///   - Manage Processing Job
578    ///
579    pub async fn processing_jobs_update_unfinish_v2(&self, license_number: Option<String>, body: Option<&Vec<ProcessingJobsUpdateUnfinishV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
580        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
581        let client = self.client.clone();
582        let body_val = body_val.clone();
583        self.rate_limiter.execute(None, false, move || {
584            let client = client.clone();
585            let license_number = license_number.clone();
586            let body_val = body_val.clone();
587            async move { client.processing_jobs_update_unfinish_v2(license_number, body_val.as_ref()).await }
588        }).await
589    }
590
591    /// POST CreateDelivery V1
592    /// 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.
593    /// 
594    ///   Permissions Required:
595    ///   - Sales Delivery
596    ///
597    pub async fn sales_create_delivery_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
598        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
599        let client = self.client.clone();
600        let body_val = body_val.clone();
601        self.rate_limiter.execute(None, false, move || {
602            let client = client.clone();
603            let license_number = license_number.clone();
604            let body_val = body_val.clone();
605            async move { client.sales_create_delivery_v1(license_number, body_val.as_ref()).await }
606        }).await
607    }
608
609    /// POST CreateDelivery V2
610    /// 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.
611    /// 
612    ///   Permissions Required:
613    ///   - External Sources(ThirdPartyVendorV2)/Sales Deliveries(Write)
614    ///   - Industry/Facility Type/Consumer Sales Delivery or Industry/Facility Type/Patient Sales Delivery
615    ///   - WebApi Sales Deliveries Read Write State (All or WriteOnly)
616    ///   - WebApi Retail ID Read Write State (All or WriteOnly) - Required for RID only.
617    ///   - External Sources(ThirdPartyVendorV2)/Retail ID(Write) - Required for RID only.
618    ///
619    pub async fn sales_create_delivery_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
620        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
621        let client = self.client.clone();
622        let body_val = body_val.clone();
623        self.rate_limiter.execute(None, false, move || {
624            let client = client.clone();
625            let license_number = license_number.clone();
626            let body_val = body_val.clone();
627            async move { client.sales_create_delivery_v2(license_number, body_val.as_ref()).await }
628        }).await
629    }
630
631    /// POST CreateDeliveryRetailer V1
632    /// 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.
633    /// 
634    ///   Permissions Required:
635    ///   - Retailer Delivery
636    ///
637    pub async fn sales_create_delivery_retailer_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
638        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
639        let client = self.client.clone();
640        let body_val = body_val.clone();
641        self.rate_limiter.execute(None, false, move || {
642            let client = client.clone();
643            let license_number = license_number.clone();
644            let body_val = body_val.clone();
645            async move { client.sales_create_delivery_retailer_v1(license_number, body_val.as_ref()).await }
646        }).await
647    }
648
649    /// POST CreateDeliveryRetailer V2
650    /// 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.
651    /// 
652    ///   Permissions Required:
653    ///   - External Sources(ThirdPartyVendorV2)/Sales Deliveries(Write)
654    ///   - Industry/Facility Type/Retailer Delivery
655    ///   - Industry/Facility Type/Consumer Sales Delivery or Industry/Facility Type/Patient Sales Delivery
656    ///   - WebApi Sales Deliveries Read Write State (All or WriteOnly)
657    ///   - WebApi Retail ID Read Write State (All or WriteOnly) - Required for RID only.
658    ///   - External Sources(ThirdPartyVendorV2)/Retail ID(Write) - Required for RID only.
659    ///   - Manage Retailer Delivery
660    ///
661    pub async fn sales_create_delivery_retailer_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
662        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
663        let client = self.client.clone();
664        let body_val = body_val.clone();
665        self.rate_limiter.execute(None, false, move || {
666            let client = client.clone();
667            let license_number = license_number.clone();
668            let body_val = body_val.clone();
669            async move { client.sales_create_delivery_retailer_v2(license_number, body_val.as_ref()).await }
670        }).await
671    }
672
673    /// POST CreateDeliveryRetailerDepart V1
674    /// Permissions Required:
675    ///   - Retailer Delivery
676    ///
677    pub async fn sales_create_delivery_retailer_depart_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerDepartV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
678        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
679        let client = self.client.clone();
680        let body_val = body_val.clone();
681        self.rate_limiter.execute(None, false, move || {
682            let client = client.clone();
683            let license_number = license_number.clone();
684            let body_val = body_val.clone();
685            async move { client.sales_create_delivery_retailer_depart_v1(license_number, body_val.as_ref()).await }
686        }).await
687    }
688
689    /// POST CreateDeliveryRetailerDepart V2
690    /// Processes the departure of retailer deliveries for a Facility using the provided License Number and delivery data.
691    /// 
692    ///   Permissions Required:
693    ///   - External Sources(ThirdPartyVendorV2)/Sales Deliveries(Write)
694    ///   - Industry/Facility Type/Retailer Delivery
695    ///   - Industry/Facility Type/Consumer Sales Delivery or Industry/Facility Type/Patient Sales Delivery
696    ///   - WebApi Sales Deliveries Read Write State (All or WriteOnly)
697    ///   - Manage Retailer Delivery
698    ///
699    pub async fn sales_create_delivery_retailer_depart_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerDepartV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
700        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
701        let client = self.client.clone();
702        let body_val = body_val.clone();
703        self.rate_limiter.execute(None, false, move || {
704            let client = client.clone();
705            let license_number = license_number.clone();
706            let body_val = body_val.clone();
707            async move { client.sales_create_delivery_retailer_depart_v2(license_number, body_val.as_ref()).await }
708        }).await
709    }
710
711    /// POST CreateDeliveryRetailerEnd V1
712    /// 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.
713    /// 
714    ///   Permissions Required:
715    ///   - Retailer Delivery
716    ///
717    pub async fn sales_create_delivery_retailer_end_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerEndV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
718        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
719        let client = self.client.clone();
720        let body_val = body_val.clone();
721        self.rate_limiter.execute(None, false, move || {
722            let client = client.clone();
723            let license_number = license_number.clone();
724            let body_val = body_val.clone();
725            async move { client.sales_create_delivery_retailer_end_v1(license_number, body_val.as_ref()).await }
726        }).await
727    }
728
729    /// POST CreateDeliveryRetailerEnd V2
730    /// 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.
731    /// 
732    ///   Permissions Required:
733    ///   - External Sources(ThirdPartyVendorV2)/Sales Deliveries(Write)
734    ///   - Industry/Facility Type/Retailer Delivery
735    ///   - Industry/Facility Type/Consumer Sales Delivery or Industry/Facility Type/Patient Sales Delivery
736    ///   - WebApi Sales Deliveries Read Write State (All or WriteOnly)
737    ///   - Manage Retailer Delivery
738    ///
739    pub async fn sales_create_delivery_retailer_end_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerEndV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
740        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
741        let client = self.client.clone();
742        let body_val = body_val.clone();
743        self.rate_limiter.execute(None, false, move || {
744            let client = client.clone();
745            let license_number = license_number.clone();
746            let body_val = body_val.clone();
747            async move { client.sales_create_delivery_retailer_end_v2(license_number, body_val.as_ref()).await }
748        }).await
749    }
750
751    /// POST CreateDeliveryRetailerRestock V1
752    /// 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.
753    /// 
754    ///   Permissions Required:
755    ///   - Retailer Delivery
756    ///
757    pub async fn sales_create_delivery_retailer_restock_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerRestockV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
758        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
759        let client = self.client.clone();
760        let body_val = body_val.clone();
761        self.rate_limiter.execute(None, false, move || {
762            let client = client.clone();
763            let license_number = license_number.clone();
764            let body_val = body_val.clone();
765            async move { client.sales_create_delivery_retailer_restock_v1(license_number, body_val.as_ref()).await }
766        }).await
767    }
768
769    /// POST CreateDeliveryRetailerRestock V2
770    /// 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.
771    /// 
772    ///   Permissions Required:
773    ///   - External Sources(ThirdPartyVendorV2)/Sales Deliveries(Write)
774    ///   - Industry/Facility Type/Retailer Delivery
775    ///   - Industry/Facility Type/Consumer Sales Delivery or Industry/Facility Type/Patient Sales Delivery
776    ///   - WebApi Sales Deliveries Read Write State (All or WriteOnly)
777    ///   - Manage Retailer Delivery
778    ///
779    pub async fn sales_create_delivery_retailer_restock_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerRestockV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
780        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
781        let client = self.client.clone();
782        let body_val = body_val.clone();
783        self.rate_limiter.execute(None, false, move || {
784            let client = client.clone();
785            let license_number = license_number.clone();
786            let body_val = body_val.clone();
787            async move { client.sales_create_delivery_retailer_restock_v2(license_number, body_val.as_ref()).await }
788        }).await
789    }
790
791    /// POST CreateDeliveryRetailerSale V1
792    /// 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.
793    /// 
794    ///   Permissions Required:
795    ///   - Retailer Delivery
796    ///
797    pub async fn sales_create_delivery_retailer_sale_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerSaleV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
798        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
799        let client = self.client.clone();
800        let body_val = body_val.clone();
801        self.rate_limiter.execute(None, false, move || {
802            let client = client.clone();
803            let license_number = license_number.clone();
804            let body_val = body_val.clone();
805            async move { client.sales_create_delivery_retailer_sale_v1(license_number, body_val.as_ref()).await }
806        }).await
807    }
808
809    /// POST CreateDeliveryRetailerSale V2
810    /// 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.
811    /// 
812    ///   Permissions Required:
813    ///   - External Sources(ThirdPartyVendorV2)/Sales Deliveries(Write)
814    ///   - Industry/Facility Type/Retailer Delivery
815    ///   - Industry/Facility Type/Consumer Sales Delivery or Industry/Facility Type/Patient Sales Delivery
816    ///   - WebApi Sales Deliveries Read Write State (All or WriteOnly)
817    ///   - WebApi Retail ID Read Write State (All or WriteOnly) - Required for RID only.
818    ///   - External Sources(ThirdPartyVendorV2)/Retail ID(Write) - Required for RID only.
819    ///
820    pub async fn sales_create_delivery_retailer_sale_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateDeliveryRetailerSaleV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
821        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
822        let client = self.client.clone();
823        let body_val = body_val.clone();
824        self.rate_limiter.execute(None, false, move || {
825            let client = client.clone();
826            let license_number = license_number.clone();
827            let body_val = body_val.clone();
828            async move { client.sales_create_delivery_retailer_sale_v2(license_number, body_val.as_ref()).await }
829        }).await
830    }
831
832    /// POST CreateReceipt V1
833    /// 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.
834    /// 
835    ///   Permissions Required:
836    ///   - Sales
837    ///
838    pub async fn sales_create_receipt_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateReceiptV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
839        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
840        let client = self.client.clone();
841        let body_val = body_val.clone();
842        self.rate_limiter.execute(None, false, move || {
843            let client = client.clone();
844            let license_number = license_number.clone();
845            let body_val = body_val.clone();
846            async move { client.sales_create_receipt_v1(license_number, body_val.as_ref()).await }
847        }).await
848    }
849
850    /// POST CreateReceipt V2
851    /// 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.
852    /// 
853    ///   Permissions Required:
854    ///   - External Sources(ThirdPartyVendorV2)/Sales (Write)
855    ///   - Industry/Facility Type/Consumer Sales or Industry/Facility Type/Patient Sales or Industry/Facility Type/External Patient Sales or Industry/Facility Type/Caregiver Sales
856    ///   - Industry/Facility Type/Advanced Sales
857    ///   - WebApi Sales Read Write State (All or WriteOnly)
858    ///   - WebApi Retail ID Read Write State (All or WriteOnly) - Required for RID only.
859    ///   - External Sources(ThirdPartyVendorV2)/Retail ID(Write) - Required for RID only.
860    ///
861    pub async fn sales_create_receipt_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesCreateReceiptV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
862        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
863        let client = self.client.clone();
864        let body_val = body_val.clone();
865        self.rate_limiter.execute(None, false, move || {
866            let client = client.clone();
867            let license_number = license_number.clone();
868            let body_val = body_val.clone();
869            async move { client.sales_create_receipt_v2(license_number, body_val.as_ref()).await }
870        }).await
871    }
872
873    /// POST CreateTransactionByDate V1
874    /// Permissions Required:
875    ///   - Sales
876    ///
877    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>> {
878        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
879        let date = date.to_string();
880        let client = self.client.clone();
881        let body_val = body_val.clone();
882        self.rate_limiter.execute(None, false, move || {
883            let client = client.clone();
884            let date = date.clone();
885            let license_number = license_number.clone();
886            let body_val = body_val.clone();
887            async move { client.sales_create_transaction_by_date_v1(&date, license_number, body_val.as_ref()).await }
888        }).await
889    }
890
891    /// DELETE DeleteDelivery V1
892    /// Permissions Required:
893    ///   - Sales Delivery
894    ///
895    pub async fn sales_delete_delivery_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
896        let id = id.to_string();
897        let client = self.client.clone();
898        let body = body.cloned();
899        self.rate_limiter.execute(None, false, move || {
900            let client = client.clone();
901            let id = id.clone();
902            let license_number = license_number.clone();
903            let body = body.clone();
904            async move { client.sales_delete_delivery_v1(&id, license_number, body.as_ref()).await }
905        }).await
906    }
907
908    /// DELETE DeleteDelivery V2
909    /// Voids a sales delivery for a Facility using the provided License Number and delivery Id.
910    /// 
911    ///   Permissions Required:
912    ///   - Manage Sales Delivery
913    ///
914    pub async fn sales_delete_delivery_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
915        let id = id.to_string();
916        let client = self.client.clone();
917        let body = body.cloned();
918        self.rate_limiter.execute(None, false, move || {
919            let client = client.clone();
920            let id = id.clone();
921            let license_number = license_number.clone();
922            let body = body.clone();
923            async move { client.sales_delete_delivery_v2(&id, license_number, body.as_ref()).await }
924        }).await
925    }
926
927    /// DELETE DeleteDeliveryRetailer V1
928    /// Permissions Required:
929    ///   - Retailer Delivery
930    ///
931    pub async fn sales_delete_delivery_retailer_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
932        let id = id.to_string();
933        let client = self.client.clone();
934        let body = body.cloned();
935        self.rate_limiter.execute(None, false, move || {
936            let client = client.clone();
937            let id = id.clone();
938            let license_number = license_number.clone();
939            let body = body.clone();
940            async move { client.sales_delete_delivery_retailer_v1(&id, license_number, body.as_ref()).await }
941        }).await
942    }
943
944    /// DELETE DeleteDeliveryRetailer V2
945    /// Voids a retailer delivery for a Facility using the provided License Number and delivery Id.
946    /// 
947    ///   Permissions Required:
948    ///   - External Sources(ThirdPartyVendorV2)/Sales Deliveries(Write)
949    ///   - Industry/Facility Type/Retailer Delivery
950    ///   - Industry/Facility Type/Consumer Sales Delivery or Industry/Facility Type/Patient Sales Delivery
951    ///   - WebApi Sales Deliveries Read Write State (All or WriteOnly)
952    ///   - Manage Retailer Delivery
953    ///
954    pub async fn sales_delete_delivery_retailer_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
955        let id = id.to_string();
956        let client = self.client.clone();
957        let body = body.cloned();
958        self.rate_limiter.execute(None, false, move || {
959            let client = client.clone();
960            let id = id.clone();
961            let license_number = license_number.clone();
962            let body = body.clone();
963            async move { client.sales_delete_delivery_retailer_v2(&id, license_number, body.as_ref()).await }
964        }).await
965    }
966
967    /// DELETE DeleteReceipt V1
968    /// Permissions Required:
969    ///   - Sales
970    ///
971    pub async fn sales_delete_receipt_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
972        let id = id.to_string();
973        let client = self.client.clone();
974        let body = body.cloned();
975        self.rate_limiter.execute(None, false, move || {
976            let client = client.clone();
977            let id = id.clone();
978            let license_number = license_number.clone();
979            let body = body.clone();
980            async move { client.sales_delete_receipt_v1(&id, license_number, body.as_ref()).await }
981        }).await
982    }
983
984    /// DELETE DeleteReceipt V2
985    /// Archives a sales receipt for a Facility using the provided License Number and receipt Id.
986    /// 
987    ///   Permissions Required:
988    ///   - Manage Sales
989    ///
990    pub async fn sales_delete_receipt_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
991        let id = id.to_string();
992        let client = self.client.clone();
993        let body = body.cloned();
994        self.rate_limiter.execute(None, false, move || {
995            let client = client.clone();
996            let id = id.clone();
997            let license_number = license_number.clone();
998            let body = body.clone();
999            async move { client.sales_delete_receipt_v2(&id, license_number, body.as_ref()).await }
1000        }).await
1001    }
1002
1003    /// GET GetCounties V1
1004    /// Permissions Required:
1005    ///   - None
1006    ///
1007    pub async fn sales_get_counties_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1008        let client = self.client.clone();
1009        let body = body.cloned();
1010        self.rate_limiter.execute(None, true, move || {
1011            let client = client.clone();
1012            let no = no.clone();
1013            let body = body.clone();
1014            async move { client.sales_get_counties_v1(no, body.as_ref()).await }
1015        }).await
1016    }
1017
1018    /// GET GetCounties V2
1019    /// Returns a list of counties available for sales deliveries.
1020    /// 
1021    ///   Permissions Required:
1022    ///   - None
1023    ///
1024    pub async fn sales_get_counties_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1025        let client = self.client.clone();
1026        let body = body.cloned();
1027        self.rate_limiter.execute(None, true, move || {
1028            let client = client.clone();
1029            let no = no.clone();
1030            let body = body.clone();
1031            async move { client.sales_get_counties_v2(no, body.as_ref()).await }
1032        }).await
1033    }
1034
1035    /// GET GetCustomertypes V1
1036    /// Permissions Required:
1037    ///   - None
1038    ///
1039    pub async fn sales_get_customertypes_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1040        let client = self.client.clone();
1041        let body = body.cloned();
1042        self.rate_limiter.execute(None, true, move || {
1043            let client = client.clone();
1044            let no = no.clone();
1045            let body = body.clone();
1046            async move { client.sales_get_customertypes_v1(no, body.as_ref()).await }
1047        }).await
1048    }
1049
1050    /// GET GetCustomertypes V2
1051    /// Returns a list of customer types.
1052    /// 
1053    ///   Permissions Required:
1054    ///   - None
1055    ///
1056    pub async fn sales_get_customertypes_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1057        let client = self.client.clone();
1058        let body = body.cloned();
1059        self.rate_limiter.execute(None, true, move || {
1060            let client = client.clone();
1061            let no = no.clone();
1062            let body = body.clone();
1063            async move { client.sales_get_customertypes_v2(no, body.as_ref()).await }
1064        }).await
1065    }
1066
1067    /// GET GetDeliveriesActive V1
1068    /// Permissions Required:
1069    ///   - Sales Delivery
1070    ///
1071    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>> {
1072        let client = self.client.clone();
1073        let body = body.cloned();
1074        self.rate_limiter.execute(None, true, move || {
1075            let client = client.clone();
1076            let last_modified_end = last_modified_end.clone();
1077            let last_modified_start = last_modified_start.clone();
1078            let license_number = license_number.clone();
1079            let sales_date_end = sales_date_end.clone();
1080            let sales_date_start = sales_date_start.clone();
1081            let body = body.clone();
1082            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 }
1083        }).await
1084    }
1085
1086    /// GET GetDeliveriesActive V2
1087    /// Returns a list of active sales deliveries for a Facility, filtered by optional sales or last modified date ranges.
1088    /// 
1089    ///   Permissions Required:
1090    ///   - View Sales Delivery
1091    ///   - Manage Sales Delivery
1092    ///
1093    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>> {
1094        let client = self.client.clone();
1095        let body = body.cloned();
1096        self.rate_limiter.execute(None, true, move || {
1097            let client = client.clone();
1098            let last_modified_end = last_modified_end.clone();
1099            let last_modified_start = last_modified_start.clone();
1100            let license_number = license_number.clone();
1101            let page_number = page_number.clone();
1102            let page_size = page_size.clone();
1103            let sales_date_end = sales_date_end.clone();
1104            let sales_date_start = sales_date_start.clone();
1105            let body = body.clone();
1106            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 }
1107        }).await
1108    }
1109
1110    /// GET GetDeliveriesInactive V1
1111    /// Permissions Required:
1112    ///   - Sales Delivery
1113    ///
1114    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>> {
1115        let client = self.client.clone();
1116        let body = body.cloned();
1117        self.rate_limiter.execute(None, true, move || {
1118            let client = client.clone();
1119            let last_modified_end = last_modified_end.clone();
1120            let last_modified_start = last_modified_start.clone();
1121            let license_number = license_number.clone();
1122            let sales_date_end = sales_date_end.clone();
1123            let sales_date_start = sales_date_start.clone();
1124            let body = body.clone();
1125            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 }
1126        }).await
1127    }
1128
1129    /// GET GetDeliveriesInactive V2
1130    /// Returns a list of inactive sales deliveries for a Facility, filtered by optional sales or last modified date ranges.
1131    /// 
1132    ///   Permissions Required:
1133    ///   - View Sales Delivery
1134    ///   - Manage Sales Delivery
1135    ///
1136    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>> {
1137        let client = self.client.clone();
1138        let body = body.cloned();
1139        self.rate_limiter.execute(None, true, move || {
1140            let client = client.clone();
1141            let last_modified_end = last_modified_end.clone();
1142            let last_modified_start = last_modified_start.clone();
1143            let license_number = license_number.clone();
1144            let page_number = page_number.clone();
1145            let page_size = page_size.clone();
1146            let sales_date_end = sales_date_end.clone();
1147            let sales_date_start = sales_date_start.clone();
1148            let body = body.clone();
1149            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 }
1150        }).await
1151    }
1152
1153    /// GET GetDeliveriesRetailerActive V1
1154    /// Permissions Required:
1155    ///   - Retailer Delivery
1156    ///
1157    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>> {
1158        let client = self.client.clone();
1159        let body = body.cloned();
1160        self.rate_limiter.execute(None, true, move || {
1161            let client = client.clone();
1162            let last_modified_end = last_modified_end.clone();
1163            let last_modified_start = last_modified_start.clone();
1164            let license_number = license_number.clone();
1165            let body = body.clone();
1166            async move { client.sales_get_deliveries_retailer_active_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
1167        }).await
1168    }
1169
1170    /// GET GetDeliveriesRetailerActive V2
1171    /// Returns a list of active retailer deliveries for a Facility, optionally filtered by last modified date range
1172    /// 
1173    ///   Permissions Required:
1174    ///   - View Retailer Delivery
1175    ///   - Manage Retailer Delivery
1176    ///
1177    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>> {
1178        let client = self.client.clone();
1179        let body = body.cloned();
1180        self.rate_limiter.execute(None, true, move || {
1181            let client = client.clone();
1182            let last_modified_end = last_modified_end.clone();
1183            let last_modified_start = last_modified_start.clone();
1184            let license_number = license_number.clone();
1185            let page_number = page_number.clone();
1186            let page_size = page_size.clone();
1187            let body = body.clone();
1188            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 }
1189        }).await
1190    }
1191
1192    /// GET GetDeliveriesRetailerInactive V1
1193    /// Permissions Required:
1194    ///   - Retailer Delivery
1195    ///
1196    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>> {
1197        let client = self.client.clone();
1198        let body = body.cloned();
1199        self.rate_limiter.execute(None, true, move || {
1200            let client = client.clone();
1201            let last_modified_end = last_modified_end.clone();
1202            let last_modified_start = last_modified_start.clone();
1203            let license_number = license_number.clone();
1204            let body = body.clone();
1205            async move { client.sales_get_deliveries_retailer_inactive_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
1206        }).await
1207    }
1208
1209    /// GET GetDeliveriesRetailerInactive V2
1210    /// Returns a list of inactive retailer deliveries for a Facility, optionally filtered by last modified date range
1211    /// 
1212    ///   Permissions Required:
1213    ///   - View Retailer Delivery
1214    ///   - Manage Retailer Delivery
1215    ///
1216    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>> {
1217        let client = self.client.clone();
1218        let body = body.cloned();
1219        self.rate_limiter.execute(None, true, move || {
1220            let client = client.clone();
1221            let last_modified_end = last_modified_end.clone();
1222            let last_modified_start = last_modified_start.clone();
1223            let license_number = license_number.clone();
1224            let page_number = page_number.clone();
1225            let page_size = page_size.clone();
1226            let body = body.clone();
1227            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 }
1228        }).await
1229    }
1230
1231    /// GET GetDeliveriesReturnreasons V1
1232    /// Permissions Required:
1233    ///   -
1234    ///
1235    pub async fn sales_get_deliveries_returnreasons_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1236        let client = self.client.clone();
1237        let body = body.cloned();
1238        self.rate_limiter.execute(None, true, move || {
1239            let client = client.clone();
1240            let license_number = license_number.clone();
1241            let body = body.clone();
1242            async move { client.sales_get_deliveries_returnreasons_v1(license_number, body.as_ref()).await }
1243        }).await
1244    }
1245
1246    /// GET GetDeliveriesReturnreasons V2
1247    /// Returns a list of return reasons for sales deliveries based on the provided License Number.
1248    /// 
1249    ///   Permissions Required:
1250    ///   - Sales Delivery
1251    ///
1252    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>> {
1253        let client = self.client.clone();
1254        let body = body.cloned();
1255        self.rate_limiter.execute(None, true, move || {
1256            let client = client.clone();
1257            let license_number = license_number.clone();
1258            let page_number = page_number.clone();
1259            let page_size = page_size.clone();
1260            let body = body.clone();
1261            async move { client.sales_get_deliveries_returnreasons_v2(license_number, page_number, page_size, body.as_ref()).await }
1262        }).await
1263    }
1264
1265    /// GET GetDelivery V1
1266    /// Permissions Required:
1267    ///   - Sales Delivery
1268    ///
1269    pub async fn sales_get_delivery_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1270        let id = id.to_string();
1271        let client = self.client.clone();
1272        let body = body.cloned();
1273        self.rate_limiter.execute(None, true, move || {
1274            let client = client.clone();
1275            let id = id.clone();
1276            let license_number = license_number.clone();
1277            let body = body.clone();
1278            async move { client.sales_get_delivery_v1(&id, license_number, body.as_ref()).await }
1279        }).await
1280    }
1281
1282    /// GET GetDelivery V2
1283    /// Retrieves a sales delivery record by its Id, with an optional License Number.
1284    /// 
1285    ///   Permissions Required:
1286    ///   - View Sales Delivery
1287    ///   - Manage Sales Delivery
1288    ///
1289    pub async fn sales_get_delivery_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1290        let id = id.to_string();
1291        let client = self.client.clone();
1292        let body = body.cloned();
1293        self.rate_limiter.execute(None, true, move || {
1294            let client = client.clone();
1295            let id = id.clone();
1296            let license_number = license_number.clone();
1297            let body = body.clone();
1298            async move { client.sales_get_delivery_v2(&id, license_number, body.as_ref()).await }
1299        }).await
1300    }
1301
1302    /// GET GetDeliveryRetailer V1
1303    /// Permissions Required:
1304    ///   - Retailer Delivery
1305    ///
1306    pub async fn sales_get_delivery_retailer_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1307        let id = id.to_string();
1308        let client = self.client.clone();
1309        let body = body.cloned();
1310        self.rate_limiter.execute(None, true, move || {
1311            let client = client.clone();
1312            let id = id.clone();
1313            let license_number = license_number.clone();
1314            let body = body.clone();
1315            async move { client.sales_get_delivery_retailer_v1(&id, license_number, body.as_ref()).await }
1316        }).await
1317    }
1318
1319    /// GET GetDeliveryRetailer V2
1320    /// Retrieves a retailer delivery record by its ID, with an optional License Number.
1321    /// 
1322    ///   Permissions Required:
1323    ///   - View Retailer Delivery
1324    ///   - Manage Retailer Delivery
1325    ///
1326    pub async fn sales_get_delivery_retailer_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1327        let id = id.to_string();
1328        let client = self.client.clone();
1329        let body = body.cloned();
1330        self.rate_limiter.execute(None, true, move || {
1331            let client = client.clone();
1332            let id = id.clone();
1333            let license_number = license_number.clone();
1334            let body = body.clone();
1335            async move { client.sales_get_delivery_retailer_v2(&id, license_number, body.as_ref()).await }
1336        }).await
1337    }
1338
1339    /// GET GetPatientRegistrationsLocations V1
1340    /// Permissions Required:
1341    ///   -
1342    ///
1343    pub async fn sales_get_patient_registrations_locations_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
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 no = no.clone();
1349            let body = body.clone();
1350            async move { client.sales_get_patient_registrations_locations_v1(no, body.as_ref()).await }
1351        }).await
1352    }
1353
1354    /// GET GetPatientRegistrationsLocations V2
1355    /// Returns a list of valid Patient registration locations for sales.
1356    /// 
1357    ///   Permissions Required:
1358    ///   -
1359    ///
1360    pub async fn sales_get_patient_registrations_locations_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1361        let client = self.client.clone();
1362        let body = body.cloned();
1363        self.rate_limiter.execute(None, true, move || {
1364            let client = client.clone();
1365            let no = no.clone();
1366            let body = body.clone();
1367            async move { client.sales_get_patient_registrations_locations_v2(no, body.as_ref()).await }
1368        }).await
1369    }
1370
1371    /// GET GetPaymenttypes V1
1372    /// Permissions Required:
1373    ///   - Sales Delivery
1374    ///
1375    pub async fn sales_get_paymenttypes_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1376        let client = self.client.clone();
1377        let body = body.cloned();
1378        self.rate_limiter.execute(None, true, move || {
1379            let client = client.clone();
1380            let license_number = license_number.clone();
1381            let body = body.clone();
1382            async move { client.sales_get_paymenttypes_v1(license_number, body.as_ref()).await }
1383        }).await
1384    }
1385
1386    /// GET GetPaymenttypes V2
1387    /// Returns a list of available payment types for the specified License Number.
1388    /// 
1389    ///   Permissions Required:
1390    ///   - View Sales Delivery
1391    ///   - Manage Sales Delivery
1392    ///
1393    pub async fn sales_get_paymenttypes_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1394        let client = self.client.clone();
1395        let body = body.cloned();
1396        self.rate_limiter.execute(None, true, move || {
1397            let client = client.clone();
1398            let license_number = license_number.clone();
1399            let body = body.clone();
1400            async move { client.sales_get_paymenttypes_v2(license_number, body.as_ref()).await }
1401        }).await
1402    }
1403
1404    /// GET GetReceipt V1
1405    /// Permissions Required:
1406    ///   - Sales
1407    ///
1408    pub async fn sales_get_receipt_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1409        let id = id.to_string();
1410        let client = self.client.clone();
1411        let body = body.cloned();
1412        self.rate_limiter.execute(None, true, move || {
1413            let client = client.clone();
1414            let id = id.clone();
1415            let license_number = license_number.clone();
1416            let body = body.clone();
1417            async move { client.sales_get_receipt_v1(&id, license_number, body.as_ref()).await }
1418        }).await
1419    }
1420
1421    /// GET GetReceipt V2
1422    /// Retrieves a sales receipt by its Id, with an optional License Number.
1423    /// 
1424    ///   Permissions Required:
1425    ///   - View Sales
1426    ///   - Manage Sales
1427    ///
1428    pub async fn sales_get_receipt_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1429        let id = id.to_string();
1430        let client = self.client.clone();
1431        let body = body.cloned();
1432        self.rate_limiter.execute(None, true, move || {
1433            let client = client.clone();
1434            let id = id.clone();
1435            let license_number = license_number.clone();
1436            let body = body.clone();
1437            async move { client.sales_get_receipt_v2(&id, license_number, body.as_ref()).await }
1438        }).await
1439    }
1440
1441    /// GET GetReceiptsActive V1
1442    /// Permissions Required:
1443    ///   - Sales
1444    ///
1445    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>> {
1446        let client = self.client.clone();
1447        let body = body.cloned();
1448        self.rate_limiter.execute(None, true, move || {
1449            let client = client.clone();
1450            let last_modified_end = last_modified_end.clone();
1451            let last_modified_start = last_modified_start.clone();
1452            let license_number = license_number.clone();
1453            let sales_date_end = sales_date_end.clone();
1454            let sales_date_start = sales_date_start.clone();
1455            let body = body.clone();
1456            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 }
1457        }).await
1458    }
1459
1460    /// GET GetReceiptsActive V2
1461    /// Returns a list of active sales receipts for a Facility, filtered by optional sales or last modified date ranges.
1462    /// 
1463    ///   Permissions Required:
1464    ///   - View Sales
1465    ///   - Manage Sales
1466    ///
1467    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>> {
1468        let client = self.client.clone();
1469        let body = body.cloned();
1470        self.rate_limiter.execute(None, true, move || {
1471            let client = client.clone();
1472            let last_modified_end = last_modified_end.clone();
1473            let last_modified_start = last_modified_start.clone();
1474            let license_number = license_number.clone();
1475            let page_number = page_number.clone();
1476            let page_size = page_size.clone();
1477            let sales_date_end = sales_date_end.clone();
1478            let sales_date_start = sales_date_start.clone();
1479            let body = body.clone();
1480            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 }
1481        }).await
1482    }
1483
1484    /// GET GetReceiptsExternalByExternalNumber V2
1485    /// Retrieves a Sales Receipt by its external number, with an optional License Number.
1486    /// 
1487    ///   Permissions Required:
1488    ///   - View Sales
1489    ///   - Manage Sales
1490    ///
1491    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>> {
1492        let external_number = external_number.to_string();
1493        let client = self.client.clone();
1494        let body = body.cloned();
1495        self.rate_limiter.execute(None, true, move || {
1496            let client = client.clone();
1497            let external_number = external_number.clone();
1498            let license_number = license_number.clone();
1499            let body = body.clone();
1500            async move { client.sales_get_receipts_external_by_external_number_v2(&external_number, license_number, body.as_ref()).await }
1501        }).await
1502    }
1503
1504    /// GET GetReceiptsInactive V1
1505    /// Permissions Required:
1506    ///   - Sales
1507    ///
1508    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>> {
1509        let client = self.client.clone();
1510        let body = body.cloned();
1511        self.rate_limiter.execute(None, true, move || {
1512            let client = client.clone();
1513            let last_modified_end = last_modified_end.clone();
1514            let last_modified_start = last_modified_start.clone();
1515            let license_number = license_number.clone();
1516            let sales_date_end = sales_date_end.clone();
1517            let sales_date_start = sales_date_start.clone();
1518            let body = body.clone();
1519            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 }
1520        }).await
1521    }
1522
1523    /// GET GetReceiptsInactive V2
1524    /// Returns a list of inactive sales receipts for a Facility, filtered by optional sales or last modified date ranges.
1525    /// 
1526    ///   Permissions Required:
1527    ///   - View Sales
1528    ///   - Manage Sales
1529    ///
1530    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>> {
1531        let client = self.client.clone();
1532        let body = body.cloned();
1533        self.rate_limiter.execute(None, true, move || {
1534            let client = client.clone();
1535            let last_modified_end = last_modified_end.clone();
1536            let last_modified_start = last_modified_start.clone();
1537            let license_number = license_number.clone();
1538            let page_number = page_number.clone();
1539            let page_size = page_size.clone();
1540            let sales_date_end = sales_date_end.clone();
1541            let sales_date_start = sales_date_start.clone();
1542            let body = body.clone();
1543            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 }
1544        }).await
1545    }
1546
1547    /// GET GetTransactions V1
1548    /// Permissions Required:
1549    ///   - Sales
1550    ///
1551    pub async fn sales_get_transactions_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1552        let client = self.client.clone();
1553        let body = body.cloned();
1554        self.rate_limiter.execute(None, true, move || {
1555            let client = client.clone();
1556            let license_number = license_number.clone();
1557            let body = body.clone();
1558            async move { client.sales_get_transactions_v1(license_number, body.as_ref()).await }
1559        }).await
1560    }
1561
1562    /// GET GetTransactionsBySalesDateStartAndSalesDateEnd V1
1563    /// Permissions Required:
1564    ///   - Sales
1565    ///
1566    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>> {
1567        let sales_date_start = sales_date_start.to_string();
1568        let sales_date_end = sales_date_end.to_string();
1569        let client = self.client.clone();
1570        let body = body.cloned();
1571        self.rate_limiter.execute(None, true, move || {
1572            let client = client.clone();
1573            let sales_date_start = sales_date_start.clone();
1574            let sales_date_end = sales_date_end.clone();
1575            let license_number = license_number.clone();
1576            let body = body.clone();
1577            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 }
1578        }).await
1579    }
1580
1581    /// PUT UpdateDelivery V1
1582    /// 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.
1583    /// 
1584    ///   Permissions Required:
1585    ///   - Sales Delivery
1586    ///
1587    pub async fn sales_update_delivery_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1588        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1589        let client = self.client.clone();
1590        let body_val = body_val.clone();
1591        self.rate_limiter.execute(None, false, move || {
1592            let client = client.clone();
1593            let license_number = license_number.clone();
1594            let body_val = body_val.clone();
1595            async move { client.sales_update_delivery_v1(license_number, body_val.as_ref()).await }
1596        }).await
1597    }
1598
1599    /// PUT UpdateDelivery V2
1600    /// 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.
1601    /// 
1602    ///   Permissions Required:
1603    ///   - Manage Sales Delivery
1604    ///
1605    pub async fn sales_update_delivery_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1606        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1607        let client = self.client.clone();
1608        let body_val = body_val.clone();
1609        self.rate_limiter.execute(None, false, move || {
1610            let client = client.clone();
1611            let license_number = license_number.clone();
1612            let body_val = body_val.clone();
1613            async move { client.sales_update_delivery_v2(license_number, body_val.as_ref()).await }
1614        }).await
1615    }
1616
1617    /// PUT UpdateDeliveryComplete V1
1618    /// Permissions Required:
1619    ///   - Sales Delivery
1620    ///
1621    pub async fn sales_update_delivery_complete_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryCompleteV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1622        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1623        let client = self.client.clone();
1624        let body_val = body_val.clone();
1625        self.rate_limiter.execute(None, false, move || {
1626            let client = client.clone();
1627            let license_number = license_number.clone();
1628            let body_val = body_val.clone();
1629            async move { client.sales_update_delivery_complete_v1(license_number, body_val.as_ref()).await }
1630        }).await
1631    }
1632
1633    /// PUT UpdateDeliveryComplete V2
1634    /// Completes a list of sales deliveries for a Facility using the provided License Number and delivery data.
1635    /// 
1636    ///   Permissions Required:
1637    ///   - Manage Sales Delivery
1638    ///
1639    pub async fn sales_update_delivery_complete_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryCompleteV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1640        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1641        let client = self.client.clone();
1642        let body_val = body_val.clone();
1643        self.rate_limiter.execute(None, false, move || {
1644            let client = client.clone();
1645            let license_number = license_number.clone();
1646            let body_val = body_val.clone();
1647            async move { client.sales_update_delivery_complete_v2(license_number, body_val.as_ref()).await }
1648        }).await
1649    }
1650
1651    /// PUT UpdateDeliveryHub V1
1652    /// 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.
1653    /// 
1654    ///   Permissions Required:
1655    ///   - Sales Delivery
1656    ///
1657    pub async fn sales_update_delivery_hub_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryHubV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1658        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1659        let client = self.client.clone();
1660        let body_val = body_val.clone();
1661        self.rate_limiter.execute(None, false, move || {
1662            let client = client.clone();
1663            let license_number = license_number.clone();
1664            let body_val = body_val.clone();
1665            async move { client.sales_update_delivery_hub_v1(license_number, body_val.as_ref()).await }
1666        }).await
1667    }
1668
1669    /// PUT UpdateDeliveryHub V2
1670    /// 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.
1671    /// 
1672    ///   Permissions Required:
1673    ///   - Manage Sales Delivery, Manage Sales Delivery Hub
1674    ///
1675    pub async fn sales_update_delivery_hub_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryHubV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1676        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1677        let client = self.client.clone();
1678        let body_val = body_val.clone();
1679        self.rate_limiter.execute(None, false, move || {
1680            let client = client.clone();
1681            let license_number = license_number.clone();
1682            let body_val = body_val.clone();
1683            async move { client.sales_update_delivery_hub_v2(license_number, body_val.as_ref()).await }
1684        }).await
1685    }
1686
1687    /// PUT UpdateDeliveryHubAccept V1
1688    /// Permissions Required:
1689    ///   - Sales
1690    ///
1691    pub async fn sales_update_delivery_hub_accept_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryHubAcceptV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1692        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1693        let client = self.client.clone();
1694        let body_val = body_val.clone();
1695        self.rate_limiter.execute(None, false, move || {
1696            let client = client.clone();
1697            let license_number = license_number.clone();
1698            let body_val = body_val.clone();
1699            async move { client.sales_update_delivery_hub_accept_v1(license_number, body_val.as_ref()).await }
1700        }).await
1701    }
1702
1703    /// PUT UpdateDeliveryHubAccept V2
1704    /// Accepts a list of hub sales deliveries for a Facility based on the provided License Number and delivery data.
1705    /// 
1706    ///   Permissions Required:
1707    ///   - Manage Sales Delivery Hub
1708    ///
1709    pub async fn sales_update_delivery_hub_accept_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryHubAcceptV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1710        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1711        let client = self.client.clone();
1712        let body_val = body_val.clone();
1713        self.rate_limiter.execute(None, false, move || {
1714            let client = client.clone();
1715            let license_number = license_number.clone();
1716            let body_val = body_val.clone();
1717            async move { client.sales_update_delivery_hub_accept_v2(license_number, body_val.as_ref()).await }
1718        }).await
1719    }
1720
1721    /// PUT UpdateDeliveryHubDepart V1
1722    /// Permissions Required:
1723    ///   - Sales
1724    ///
1725    pub async fn sales_update_delivery_hub_depart_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryHubDepartV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1726        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1727        let client = self.client.clone();
1728        let body_val = body_val.clone();
1729        self.rate_limiter.execute(None, false, move || {
1730            let client = client.clone();
1731            let license_number = license_number.clone();
1732            let body_val = body_val.clone();
1733            async move { client.sales_update_delivery_hub_depart_v1(license_number, body_val.as_ref()).await }
1734        }).await
1735    }
1736
1737    /// PUT UpdateDeliveryHubDepart V2
1738    /// Processes the departure of hub sales deliveries for a Facility using the provided License Number and delivery data.
1739    /// 
1740    ///   Permissions Required:
1741    ///   - Manage Sales Delivery Hub
1742    ///
1743    pub async fn sales_update_delivery_hub_depart_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryHubDepartV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1744        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1745        let client = self.client.clone();
1746        let body_val = body_val.clone();
1747        self.rate_limiter.execute(None, false, move || {
1748            let client = client.clone();
1749            let license_number = license_number.clone();
1750            let body_val = body_val.clone();
1751            async move { client.sales_update_delivery_hub_depart_v2(license_number, body_val.as_ref()).await }
1752        }).await
1753    }
1754
1755    /// PUT UpdateDeliveryHubVerifyID V1
1756    /// Permissions Required:
1757    ///   - Sales
1758    ///
1759    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>> {
1760        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1761        let client = self.client.clone();
1762        let body_val = body_val.clone();
1763        self.rate_limiter.execute(None, false, move || {
1764            let client = client.clone();
1765            let license_number = license_number.clone();
1766            let body_val = body_val.clone();
1767            async move { client.sales_update_delivery_hub_verify_id_v1(license_number, body_val.as_ref()).await }
1768        }).await
1769    }
1770
1771    /// PUT UpdateDeliveryHubVerifyID V2
1772    /// Verifies identification for a list of hub sales deliveries using the provided License Number and delivery data.
1773    /// 
1774    ///   Permissions Required:
1775    ///   - Manage Sales Delivery Hub
1776    ///
1777    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>> {
1778        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1779        let client = self.client.clone();
1780        let body_val = body_val.clone();
1781        self.rate_limiter.execute(None, false, move || {
1782            let client = client.clone();
1783            let license_number = license_number.clone();
1784            let body_val = body_val.clone();
1785            async move { client.sales_update_delivery_hub_verify_id_v2(license_number, body_val.as_ref()).await }
1786        }).await
1787    }
1788
1789    /// PUT UpdateDeliveryRetailer V1
1790    /// 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.
1791    /// 
1792    ///   Permissions Required:
1793    ///   - Retailer Delivery
1794    ///
1795    pub async fn sales_update_delivery_retailer_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryRetailerV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1796        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1797        let client = self.client.clone();
1798        let body_val = body_val.clone();
1799        self.rate_limiter.execute(None, false, move || {
1800            let client = client.clone();
1801            let license_number = license_number.clone();
1802            let body_val = body_val.clone();
1803            async move { client.sales_update_delivery_retailer_v1(license_number, body_val.as_ref()).await }
1804        }).await
1805    }
1806
1807    /// PUT UpdateDeliveryRetailer V2
1808    /// 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.
1809    /// 
1810    ///   Permissions Required:
1811    ///   - External Sources(ThirdPartyVendorV2)/Sales Deliveries(Write)
1812    ///   - Industry/Facility Type/Retailer Delivery
1813    ///   - Industry/Facility Type/Consumer Sales Delivery or Industry/Facility Type/Patient Sales Delivery
1814    ///   - WebApi Sales Deliveries Read Write State (All or WriteOnly)
1815    ///   - WebApi Retail ID Read Write State (All or WriteOnly) - Required for RID only.
1816    ///   - External Sources(ThirdPartyVendorV2)/Retail ID(Write) - Required for RID only.
1817    ///   - Manage Retailer Delivery
1818    ///
1819    pub async fn sales_update_delivery_retailer_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateDeliveryRetailerV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1820        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1821        let client = self.client.clone();
1822        let body_val = body_val.clone();
1823        self.rate_limiter.execute(None, false, move || {
1824            let client = client.clone();
1825            let license_number = license_number.clone();
1826            let body_val = body_val.clone();
1827            async move { client.sales_update_delivery_retailer_v2(license_number, body_val.as_ref()).await }
1828        }).await
1829    }
1830
1831    /// PUT UpdateReceipt V1
1832    /// 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.
1833    /// 
1834    ///   Permissions Required:
1835    ///   - Sales
1836    ///
1837    pub async fn sales_update_receipt_v1(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateReceiptV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1838        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1839        let client = self.client.clone();
1840        let body_val = body_val.clone();
1841        self.rate_limiter.execute(None, false, move || {
1842            let client = client.clone();
1843            let license_number = license_number.clone();
1844            let body_val = body_val.clone();
1845            async move { client.sales_update_receipt_v1(license_number, body_val.as_ref()).await }
1846        }).await
1847    }
1848
1849    /// PUT UpdateReceipt V2
1850    /// 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.
1851    /// 
1852    ///   Permissions Required:
1853    ///   - Manage Sales
1854    ///
1855    pub async fn sales_update_receipt_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateReceiptV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1856        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1857        let client = self.client.clone();
1858        let body_val = body_val.clone();
1859        self.rate_limiter.execute(None, false, move || {
1860            let client = client.clone();
1861            let license_number = license_number.clone();
1862            let body_val = body_val.clone();
1863            async move { client.sales_update_receipt_v2(license_number, body_val.as_ref()).await }
1864        }).await
1865    }
1866
1867    /// PUT UpdateReceiptFinalize V2
1868    /// Finalizes a list of sales receipts for a Facility using the provided License Number and receipt data.
1869    /// 
1870    ///   Permissions Required:
1871    ///   - Manage Sales
1872    ///
1873    pub async fn sales_update_receipt_finalize_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateReceiptFinalizeV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1874        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1875        let client = self.client.clone();
1876        let body_val = body_val.clone();
1877        self.rate_limiter.execute(None, false, move || {
1878            let client = client.clone();
1879            let license_number = license_number.clone();
1880            let body_val = body_val.clone();
1881            async move { client.sales_update_receipt_finalize_v2(license_number, body_val.as_ref()).await }
1882        }).await
1883    }
1884
1885    /// PUT UpdateReceiptUnfinalize V2
1886    /// Unfinalizes a list of sales receipts for a Facility using the provided License Number and receipt data.
1887    /// 
1888    ///   Permissions Required:
1889    ///   - Manage Sales
1890    ///
1891    pub async fn sales_update_receipt_unfinalize_v2(&self, license_number: Option<String>, body: Option<&Vec<SalesUpdateReceiptUnfinalizeV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1892        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1893        let client = self.client.clone();
1894        let body_val = body_val.clone();
1895        self.rate_limiter.execute(None, false, move || {
1896            let client = client.clone();
1897            let license_number = license_number.clone();
1898            let body_val = body_val.clone();
1899            async move { client.sales_update_receipt_unfinalize_v2(license_number, body_val.as_ref()).await }
1900        }).await
1901    }
1902
1903    /// PUT UpdateTransactionByDate V1
1904    /// Permissions Required:
1905    ///   - Sales
1906    ///
1907    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>> {
1908        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1909        let date = date.to_string();
1910        let client = self.client.clone();
1911        let body_val = body_val.clone();
1912        self.rate_limiter.execute(None, false, move || {
1913            let client = client.clone();
1914            let date = date.clone();
1915            let license_number = license_number.clone();
1916            let body_val = body_val.clone();
1917            async move { client.sales_update_transaction_by_date_v1(&date, license_number, body_val.as_ref()).await }
1918        }).await
1919    }
1920
1921    /// POST Create V1
1922    /// Permissions Required:
1923    ///   - Manage Strains
1924    ///
1925    pub async fn strains_create_v1(&self, license_number: Option<String>, body: Option<&Vec<StrainsCreateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1926        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1927        let client = self.client.clone();
1928        let body_val = body_val.clone();
1929        self.rate_limiter.execute(None, false, move || {
1930            let client = client.clone();
1931            let license_number = license_number.clone();
1932            let body_val = body_val.clone();
1933            async move { client.strains_create_v1(license_number, body_val.as_ref()).await }
1934        }).await
1935    }
1936
1937    /// POST Create V2
1938    /// Creates new strain records for a specified Facility.
1939    /// 
1940    ///   Permissions Required:
1941    ///   - Manage Strains
1942    ///
1943    pub async fn strains_create_v2(&self, license_number: Option<String>, body: Option<&Vec<StrainsCreateV2RequestItem>>) -> 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.strains_create_v2(license_number, body_val.as_ref()).await }
1952        }).await
1953    }
1954
1955    /// POST CreateUpdate V1
1956    /// Permissions Required:
1957    ///   - Manage Strains
1958    ///
1959    pub async fn strains_create_update_v1(&self, license_number: Option<String>, body: Option<&Vec<StrainsCreateUpdateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
1960        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
1961        let client = self.client.clone();
1962        let body_val = body_val.clone();
1963        self.rate_limiter.execute(None, false, move || {
1964            let client = client.clone();
1965            let license_number = license_number.clone();
1966            let body_val = body_val.clone();
1967            async move { client.strains_create_update_v1(license_number, body_val.as_ref()).await }
1968        }).await
1969    }
1970
1971    /// DELETE Delete V1
1972    /// Permissions Required:
1973    ///   - Manage Strains
1974    ///
1975    pub async fn strains_delete_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1976        let id = id.to_string();
1977        let client = self.client.clone();
1978        let body = body.cloned();
1979        self.rate_limiter.execute(None, false, move || {
1980            let client = client.clone();
1981            let id = id.clone();
1982            let license_number = license_number.clone();
1983            let body = body.clone();
1984            async move { client.strains_delete_v1(&id, license_number, body.as_ref()).await }
1985        }).await
1986    }
1987
1988    /// DELETE Delete V2
1989    /// Archives an existing strain record for a Facility
1990    /// 
1991    ///   Permissions Required:
1992    ///   - Manage Strains
1993    ///
1994    pub async fn strains_delete_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
1995        let id = id.to_string();
1996        let client = self.client.clone();
1997        let body = body.cloned();
1998        self.rate_limiter.execute(None, false, move || {
1999            let client = client.clone();
2000            let id = id.clone();
2001            let license_number = license_number.clone();
2002            let body = body.clone();
2003            async move { client.strains_delete_v2(&id, license_number, body.as_ref()).await }
2004        }).await
2005    }
2006
2007    /// GET Get V1
2008    /// Permissions Required:
2009    ///   - Manage Strains
2010    ///
2011    pub async fn strains_get_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2012        let id = id.to_string();
2013        let client = self.client.clone();
2014        let body = body.cloned();
2015        self.rate_limiter.execute(None, true, move || {
2016            let client = client.clone();
2017            let id = id.clone();
2018            let license_number = license_number.clone();
2019            let body = body.clone();
2020            async move { client.strains_get_v1(&id, license_number, body.as_ref()).await }
2021        }).await
2022    }
2023
2024    /// GET Get V2
2025    /// Retrieves a Strain record by its Id, with an optional license number.
2026    /// 
2027    ///   Permissions Required:
2028    ///   - Manage Strains
2029    ///
2030    pub async fn strains_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2031        let id = id.to_string();
2032        let client = self.client.clone();
2033        let body = body.cloned();
2034        self.rate_limiter.execute(None, true, move || {
2035            let client = client.clone();
2036            let id = id.clone();
2037            let license_number = license_number.clone();
2038            let body = body.clone();
2039            async move { client.strains_get_v2(&id, license_number, body.as_ref()).await }
2040        }).await
2041    }
2042
2043    /// GET GetActive V1
2044    /// Permissions Required:
2045    ///   - Manage Strains
2046    ///
2047    pub async fn strains_get_active_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2048        let client = self.client.clone();
2049        let body = body.cloned();
2050        self.rate_limiter.execute(None, true, move || {
2051            let client = client.clone();
2052            let license_number = license_number.clone();
2053            let body = body.clone();
2054            async move { client.strains_get_active_v1(license_number, body.as_ref()).await }
2055        }).await
2056    }
2057
2058    /// GET GetActive V2
2059    /// Retrieves a list of active strains for the current Facility, optionally filtered by last modified date range.
2060    /// 
2061    ///   Permissions Required:
2062    ///   - Manage Strains
2063    ///
2064    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>> {
2065        let client = self.client.clone();
2066        let body = body.cloned();
2067        self.rate_limiter.execute(None, true, move || {
2068            let client = client.clone();
2069            let last_modified_end = last_modified_end.clone();
2070            let last_modified_start = last_modified_start.clone();
2071            let license_number = license_number.clone();
2072            let page_number = page_number.clone();
2073            let page_size = page_size.clone();
2074            let body = body.clone();
2075            async move { client.strains_get_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
2076        }).await
2077    }
2078
2079    /// GET GetInactive V2
2080    /// Retrieves a list of inactive strains for the current Facility, optionally filtered by last modified date range.
2081    /// 
2082    ///   Permissions Required:
2083    ///   - Manage Strains
2084    ///
2085    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>> {
2086        let client = self.client.clone();
2087        let body = body.cloned();
2088        self.rate_limiter.execute(None, true, move || {
2089            let client = client.clone();
2090            let license_number = license_number.clone();
2091            let page_number = page_number.clone();
2092            let page_size = page_size.clone();
2093            let body = body.clone();
2094            async move { client.strains_get_inactive_v2(license_number, page_number, page_size, body.as_ref()).await }
2095        }).await
2096    }
2097
2098    /// PUT Update V2
2099    /// Updates existing strain records for a specified Facility.
2100    /// 
2101    ///   Permissions Required:
2102    ///   - Manage Strains
2103    ///
2104    pub async fn strains_update_v2(&self, license_number: Option<String>, body: Option<&Vec<StrainsUpdateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2105        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2106        let client = self.client.clone();
2107        let body_val = body_val.clone();
2108        self.rate_limiter.execute(None, false, move || {
2109            let client = client.clone();
2110            let license_number = license_number.clone();
2111            let body_val = body_val.clone();
2112            async move { client.strains_update_v2(license_number, body_val.as_ref()).await }
2113        }).await
2114    }
2115
2116    /// POST CreateDriver V2
2117    /// Creates new driver records for a Facility.
2118    /// 
2119    ///   Permissions Required:
2120    ///   - Manage Transporters
2121    ///
2122    pub async fn transporters_create_driver_v2(&self, license_number: Option<String>, body: Option<&Vec<TransportersCreateDriverV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2123        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2124        let client = self.client.clone();
2125        let body_val = body_val.clone();
2126        self.rate_limiter.execute(None, false, move || {
2127            let client = client.clone();
2128            let license_number = license_number.clone();
2129            let body_val = body_val.clone();
2130            async move { client.transporters_create_driver_v2(license_number, body_val.as_ref()).await }
2131        }).await
2132    }
2133
2134    /// POST CreateVehicle V2
2135    /// Creates new vehicle records for a Facility.
2136    /// 
2137    ///   Permissions Required:
2138    ///   - Manage Transporters
2139    ///
2140    pub async fn transporters_create_vehicle_v2(&self, license_number: Option<String>, body: Option<&Vec<TransportersCreateVehicleV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2141        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2142        let client = self.client.clone();
2143        let body_val = body_val.clone();
2144        self.rate_limiter.execute(None, false, move || {
2145            let client = client.clone();
2146            let license_number = license_number.clone();
2147            let body_val = body_val.clone();
2148            async move { client.transporters_create_vehicle_v2(license_number, body_val.as_ref()).await }
2149        }).await
2150    }
2151
2152    /// DELETE DeleteDriver V2
2153    /// Archives a Driver record for a Facility.  Please note: The {id} parameter above represents a Driver Id.
2154    /// 
2155    ///   Permissions Required:
2156    ///   - Manage Transporters
2157    ///
2158    pub async fn transporters_delete_driver_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2159        let id = id.to_string();
2160        let client = self.client.clone();
2161        let body = body.cloned();
2162        self.rate_limiter.execute(None, false, move || {
2163            let client = client.clone();
2164            let id = id.clone();
2165            let license_number = license_number.clone();
2166            let body = body.clone();
2167            async move { client.transporters_delete_driver_v2(&id, license_number, body.as_ref()).await }
2168        }).await
2169    }
2170
2171    /// DELETE DeleteVehicle V2
2172    /// Archives a Vehicle for a facility.  Please note: The {id} parameter above represents a Vehicle Id.
2173    /// 
2174    ///   Permissions Required:
2175    ///   - Manage Transporters
2176    ///
2177    pub async fn transporters_delete_vehicle_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2178        let id = id.to_string();
2179        let client = self.client.clone();
2180        let body = body.cloned();
2181        self.rate_limiter.execute(None, false, move || {
2182            let client = client.clone();
2183            let id = id.clone();
2184            let license_number = license_number.clone();
2185            let body = body.clone();
2186            async move { client.transporters_delete_vehicle_v2(&id, license_number, body.as_ref()).await }
2187        }).await
2188    }
2189
2190    /// GET GetDriver V2
2191    /// Retrieves a Driver by its Id, with an optional license number. Please note: The {id} parameter above represents a Driver Id.
2192    /// 
2193    ///   Permissions Required:
2194    ///   - Transporters
2195    ///
2196    pub async fn transporters_get_driver_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2197        let id = id.to_string();
2198        let client = self.client.clone();
2199        let body = body.cloned();
2200        self.rate_limiter.execute(None, true, move || {
2201            let client = client.clone();
2202            let id = id.clone();
2203            let license_number = license_number.clone();
2204            let body = body.clone();
2205            async move { client.transporters_get_driver_v2(&id, license_number, body.as_ref()).await }
2206        }).await
2207    }
2208
2209    /// GET GetDrivers V2
2210    /// Retrieves a list of drivers for a Facility.
2211    /// 
2212    ///   Permissions Required:
2213    ///   - Transporters
2214    ///
2215    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>> {
2216        let client = self.client.clone();
2217        let body = body.cloned();
2218        self.rate_limiter.execute(None, true, move || {
2219            let client = client.clone();
2220            let license_number = license_number.clone();
2221            let page_number = page_number.clone();
2222            let page_size = page_size.clone();
2223            let body = body.clone();
2224            async move { client.transporters_get_drivers_v2(license_number, page_number, page_size, body.as_ref()).await }
2225        }).await
2226    }
2227
2228    /// GET GetVehicle V2
2229    /// Retrieves a Vehicle by its Id, with an optional license number. Please note: The {id} parameter above represents a Vehicle Id.
2230    /// 
2231    ///   Permissions Required:
2232    ///   - Transporters
2233    ///
2234    pub async fn transporters_get_vehicle_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2235        let id = id.to_string();
2236        let client = self.client.clone();
2237        let body = body.cloned();
2238        self.rate_limiter.execute(None, true, move || {
2239            let client = client.clone();
2240            let id = id.clone();
2241            let license_number = license_number.clone();
2242            let body = body.clone();
2243            async move { client.transporters_get_vehicle_v2(&id, license_number, body.as_ref()).await }
2244        }).await
2245    }
2246
2247    /// GET GetVehicles V2
2248    /// Retrieves a list of vehicles for a Facility.
2249    /// 
2250    ///   Permissions Required:
2251    ///   - Transporters
2252    ///
2253    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>> {
2254        let client = self.client.clone();
2255        let body = body.cloned();
2256        self.rate_limiter.execute(None, true, move || {
2257            let client = client.clone();
2258            let license_number = license_number.clone();
2259            let page_number = page_number.clone();
2260            let page_size = page_size.clone();
2261            let body = body.clone();
2262            async move { client.transporters_get_vehicles_v2(license_number, page_number, page_size, body.as_ref()).await }
2263        }).await
2264    }
2265
2266    /// PUT UpdateDriver V2
2267    /// Updates existing driver records for a Facility.
2268    /// 
2269    ///   Permissions Required:
2270    ///   - Manage Transporters
2271    ///
2272    pub async fn transporters_update_driver_v2(&self, license_number: Option<String>, body: Option<&Vec<TransportersUpdateDriverV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2273        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2274        let client = self.client.clone();
2275        let body_val = body_val.clone();
2276        self.rate_limiter.execute(None, false, move || {
2277            let client = client.clone();
2278            let license_number = license_number.clone();
2279            let body_val = body_val.clone();
2280            async move { client.transporters_update_driver_v2(license_number, body_val.as_ref()).await }
2281        }).await
2282    }
2283
2284    /// PUT UpdateVehicle V2
2285    /// Updates existing vehicle records for a facility.
2286    /// 
2287    ///   Permissions Required:
2288    ///   - Manage Transporters
2289    ///
2290    pub async fn transporters_update_vehicle_v2(&self, license_number: Option<String>, body: Option<&Vec<TransportersUpdateVehicleV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2291        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2292        let client = self.client.clone();
2293        let body_val = body_val.clone();
2294        self.rate_limiter.execute(None, false, move || {
2295            let client = client.clone();
2296            let license_number = license_number.clone();
2297            let body_val = body_val.clone();
2298            async move { client.transporters_update_vehicle_v2(license_number, body_val.as_ref()).await }
2299        }).await
2300    }
2301
2302    /// POST CreateAdditives V1
2303    /// Permissions Required:
2304    ///   - Manage Plants Additives
2305    ///
2306    pub async fn plants_create_additives_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateAdditivesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2307        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2308        let client = self.client.clone();
2309        let body_val = body_val.clone();
2310        self.rate_limiter.execute(None, false, move || {
2311            let client = client.clone();
2312            let license_number = license_number.clone();
2313            let body_val = body_val.clone();
2314            async move { client.plants_create_additives_v1(license_number, body_val.as_ref()).await }
2315        }).await
2316    }
2317
2318    /// POST CreateAdditives V2
2319    /// Records additive usage details applied to specific plants at a Facility.
2320    /// 
2321    ///   Permissions Required:
2322    ///   - Manage Plants Additives
2323    ///
2324    pub async fn plants_create_additives_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateAdditivesV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2325        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2326        let client = self.client.clone();
2327        let body_val = body_val.clone();
2328        self.rate_limiter.execute(None, false, move || {
2329            let client = client.clone();
2330            let license_number = license_number.clone();
2331            let body_val = body_val.clone();
2332            async move { client.plants_create_additives_v2(license_number, body_val.as_ref()).await }
2333        }).await
2334    }
2335
2336    /// POST CreateAdditivesBylocation V1
2337    /// Permissions Required:
2338    ///   - Manage Plants
2339    ///   - Manage Plants Additives
2340    ///
2341    pub async fn plants_create_additives_bylocation_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateAdditivesBylocationV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2342        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2343        let client = self.client.clone();
2344        let body_val = body_val.clone();
2345        self.rate_limiter.execute(None, false, move || {
2346            let client = client.clone();
2347            let license_number = license_number.clone();
2348            let body_val = body_val.clone();
2349            async move { client.plants_create_additives_bylocation_v1(license_number, body_val.as_ref()).await }
2350        }).await
2351    }
2352
2353    /// POST CreateAdditivesBylocation V2
2354    /// Records additive usage for plants based on their location within a specified Facility.
2355    /// 
2356    ///   Permissions Required:
2357    ///   - Manage Plants
2358    ///   - Manage Plants Additives
2359    ///
2360    pub async fn plants_create_additives_bylocation_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateAdditivesBylocationV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2361        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2362        let client = self.client.clone();
2363        let body_val = body_val.clone();
2364        self.rate_limiter.execute(None, false, move || {
2365            let client = client.clone();
2366            let license_number = license_number.clone();
2367            let body_val = body_val.clone();
2368            async move { client.plants_create_additives_bylocation_v2(license_number, body_val.as_ref()).await }
2369        }).await
2370    }
2371
2372    /// POST CreateAdditivesBylocationUsingtemplate V2
2373    /// Records additive usage for plants by location using a predefined additive template at a specified Facility.
2374    /// 
2375    ///   Permissions Required:
2376    ///   - Manage Plants Additives
2377    ///
2378    pub async fn plants_create_additives_bylocation_usingtemplate_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateAdditivesBylocationUsingtemplateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2379        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2380        let client = self.client.clone();
2381        let body_val = body_val.clone();
2382        self.rate_limiter.execute(None, false, move || {
2383            let client = client.clone();
2384            let license_number = license_number.clone();
2385            let body_val = body_val.clone();
2386            async move { client.plants_create_additives_bylocation_usingtemplate_v2(license_number, body_val.as_ref()).await }
2387        }).await
2388    }
2389
2390    /// POST CreateAdditivesUsingtemplate V2
2391    /// Records additive usage for plants using predefined additive templates at a specified Facility.
2392    /// 
2393    ///   Permissions Required:
2394    ///   - Manage Plants Additives
2395    ///
2396    pub async fn plants_create_additives_usingtemplate_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateAdditivesUsingtemplateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2397        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2398        let client = self.client.clone();
2399        let body_val = body_val.clone();
2400        self.rate_limiter.execute(None, false, move || {
2401            let client = client.clone();
2402            let license_number = license_number.clone();
2403            let body_val = body_val.clone();
2404            async move { client.plants_create_additives_usingtemplate_v2(license_number, body_val.as_ref()).await }
2405        }).await
2406    }
2407
2408    /// POST CreateChangegrowthphases V1
2409    /// Permissions Required:
2410    ///   - View Veg/Flower Plants
2411    ///   - Manage Veg/Flower Plants Inventory
2412    ///
2413    pub async fn plants_create_changegrowthphases_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateChangegrowthphasesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2414        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2415        let client = self.client.clone();
2416        let body_val = body_val.clone();
2417        self.rate_limiter.execute(None, false, move || {
2418            let client = client.clone();
2419            let license_number = license_number.clone();
2420            let body_val = body_val.clone();
2421            async move { client.plants_create_changegrowthphases_v1(license_number, body_val.as_ref()).await }
2422        }).await
2423    }
2424
2425    /// POST CreateHarvestplants V1
2426    /// NOTE: If HarvestName is excluded from the request body, or if it is passed in as null, the harvest name is auto-generated.
2427    /// 
2428    ///   Permissions Required:
2429    ///   - View Veg/Flower Plants
2430    ///   - Manicure/Harvest Veg/Flower Plants
2431    ///
2432    pub async fn plants_create_harvestplants_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateHarvestplantsV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2433        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2434        let client = self.client.clone();
2435        let body_val = body_val.clone();
2436        self.rate_limiter.execute(None, false, move || {
2437            let client = client.clone();
2438            let license_number = license_number.clone();
2439            let body_val = body_val.clone();
2440            async move { client.plants_create_harvestplants_v1(license_number, body_val.as_ref()).await }
2441        }).await
2442    }
2443
2444    /// POST CreateManicure V2
2445    /// Creates harvest product records from plant batches at a specified Facility.
2446    /// 
2447    ///   Permissions Required:
2448    ///   - View Veg/Flower Plants
2449    ///   - Manicure/Harvest Veg/Flower Plants
2450    ///
2451    pub async fn plants_create_manicure_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateManicureV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2452        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2453        let client = self.client.clone();
2454        let body_val = body_val.clone();
2455        self.rate_limiter.execute(None, false, move || {
2456            let client = client.clone();
2457            let license_number = license_number.clone();
2458            let body_val = body_val.clone();
2459            async move { client.plants_create_manicure_v2(license_number, body_val.as_ref()).await }
2460        }).await
2461    }
2462
2463    /// POST CreateManicureplants V1
2464    /// Permissions Required:
2465    ///   - View Veg/Flower Plants
2466    ///   - Manicure/Harvest Veg/Flower Plants
2467    ///
2468    pub async fn plants_create_manicureplants_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateManicureplantsV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2469        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2470        let client = self.client.clone();
2471        let body_val = body_val.clone();
2472        self.rate_limiter.execute(None, false, move || {
2473            let client = client.clone();
2474            let license_number = license_number.clone();
2475            let body_val = body_val.clone();
2476            async move { client.plants_create_manicureplants_v1(license_number, body_val.as_ref()).await }
2477        }).await
2478    }
2479
2480    /// POST CreateMoveplants V1
2481    /// Permissions Required:
2482    ///   - View Veg/Flower Plants
2483    ///   - Manage Veg/Flower Plants Inventory
2484    ///
2485    pub async fn plants_create_moveplants_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateMoveplantsV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2486        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2487        let client = self.client.clone();
2488        let body_val = body_val.clone();
2489        self.rate_limiter.execute(None, false, move || {
2490            let client = client.clone();
2491            let license_number = license_number.clone();
2492            let body_val = body_val.clone();
2493            async move { client.plants_create_moveplants_v1(license_number, body_val.as_ref()).await }
2494        }).await
2495    }
2496
2497    /// POST CreatePlantbatchPackage V1
2498    /// Permissions Required:
2499    ///   - View Immature Plants
2500    ///   - Manage Immature Plants Inventory
2501    ///   - View Veg/Flower Plants
2502    ///   - Manage Veg/Flower Plants Inventory
2503    ///   - View Packages
2504    ///   - Create/Submit/Discontinue Packages
2505    ///
2506    pub async fn plants_create_plantbatch_package_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreatePlantbatchPackageV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2507        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2508        let client = self.client.clone();
2509        let body_val = body_val.clone();
2510        self.rate_limiter.execute(None, false, move || {
2511            let client = client.clone();
2512            let license_number = license_number.clone();
2513            let body_val = body_val.clone();
2514            async move { client.plants_create_plantbatch_package_v1(license_number, body_val.as_ref()).await }
2515        }).await
2516    }
2517
2518    /// POST CreatePlantbatchPackage V2
2519    /// Creates packages from plant batches at a specified Facility.
2520    /// 
2521    ///   Permissions Required:
2522    ///   - View Immature Plants
2523    ///   - Manage Immature Plants Inventory
2524    ///   - View Veg/Flower Plants
2525    ///   - Manage Veg/Flower Plants Inventory
2526    ///   - View Packages
2527    ///   - Create/Submit/Discontinue Packages
2528    ///
2529    pub async fn plants_create_plantbatch_package_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreatePlantbatchPackageV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2530        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2531        let client = self.client.clone();
2532        let body_val = body_val.clone();
2533        self.rate_limiter.execute(None, false, move || {
2534            let client = client.clone();
2535            let license_number = license_number.clone();
2536            let body_val = body_val.clone();
2537            async move { client.plants_create_plantbatch_package_v2(license_number, body_val.as_ref()).await }
2538        }).await
2539    }
2540
2541    /// POST CreatePlantings V1
2542    /// Permissions Required:
2543    ///   - View Immature Plants
2544    ///   - Manage Immature Plants Inventory
2545    ///   - View Veg/Flower Plants
2546    ///   - Manage Veg/Flower Plants Inventory
2547    ///
2548    pub async fn plants_create_plantings_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreatePlantingsV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2549        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2550        let client = self.client.clone();
2551        let body_val = body_val.clone();
2552        self.rate_limiter.execute(None, false, move || {
2553            let client = client.clone();
2554            let license_number = license_number.clone();
2555            let body_val = body_val.clone();
2556            async move { client.plants_create_plantings_v1(license_number, body_val.as_ref()).await }
2557        }).await
2558    }
2559
2560    /// POST CreatePlantings V2
2561    /// Creates new plant batches at a specified Facility from existing plant data.
2562    /// 
2563    ///   Permissions Required:
2564    ///   - View Immature Plants
2565    ///   - Manage Immature Plants Inventory
2566    ///   - View Veg/Flower Plants
2567    ///   - Manage Veg/Flower Plants Inventory
2568    ///
2569    pub async fn plants_create_plantings_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreatePlantingsV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2570        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2571        let client = self.client.clone();
2572        let body_val = body_val.clone();
2573        self.rate_limiter.execute(None, false, move || {
2574            let client = client.clone();
2575            let license_number = license_number.clone();
2576            let body_val = body_val.clone();
2577            async move { client.plants_create_plantings_v2(license_number, body_val.as_ref()).await }
2578        }).await
2579    }
2580
2581    /// POST CreateWaste V1
2582    /// Permissions Required:
2583    ///   - Manage Plants Waste
2584    ///
2585    pub async fn plants_create_waste_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateWasteV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2586        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2587        let client = self.client.clone();
2588        let body_val = body_val.clone();
2589        self.rate_limiter.execute(None, false, move || {
2590            let client = client.clone();
2591            let license_number = license_number.clone();
2592            let body_val = body_val.clone();
2593            async move { client.plants_create_waste_v1(license_number, body_val.as_ref()).await }
2594        }).await
2595    }
2596
2597    /// POST CreateWaste V2
2598    /// Records waste events for plants at a Facility, including method, reason, and location details.
2599    /// 
2600    ///   Permissions Required:
2601    ///   - Manage Plants Waste
2602    ///
2603    pub async fn plants_create_waste_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsCreateWasteV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
2604        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
2605        let client = self.client.clone();
2606        let body_val = body_val.clone();
2607        self.rate_limiter.execute(None, false, move || {
2608            let client = client.clone();
2609            let license_number = license_number.clone();
2610            let body_val = body_val.clone();
2611            async move { client.plants_create_waste_v2(license_number, body_val.as_ref()).await }
2612        }).await
2613    }
2614
2615    /// DELETE Delete V1
2616    /// Permissions Required:
2617    ///   - View Veg/Flower Plants
2618    ///   - Destroy Veg/Flower Plants
2619    ///
2620    pub async fn plants_delete_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2621        let client = self.client.clone();
2622        let body = body.cloned();
2623        self.rate_limiter.execute(None, false, move || {
2624            let client = client.clone();
2625            let license_number = license_number.clone();
2626            let body = body.clone();
2627            async move { client.plants_delete_v1(license_number, body.as_ref()).await }
2628        }).await
2629    }
2630
2631    /// DELETE Delete V2
2632    /// Removes plants from a Facility’s inventory while recording the reason for their disposal.
2633    /// 
2634    ///   Permissions Required:
2635    ///   - View Veg/Flower Plants
2636    ///   - Destroy Veg/Flower Plants
2637    ///
2638    pub async fn plants_delete_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2639        let client = self.client.clone();
2640        let body = body.cloned();
2641        self.rate_limiter.execute(None, false, move || {
2642            let client = client.clone();
2643            let license_number = license_number.clone();
2644            let body = body.clone();
2645            async move { client.plants_delete_v2(license_number, body.as_ref()).await }
2646        }).await
2647    }
2648
2649    /// GET Get V1
2650    /// Permissions Required:
2651    ///   - View Veg/Flower Plants
2652    ///
2653    pub async fn plants_get_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2654        let id = id.to_string();
2655        let client = self.client.clone();
2656        let body = body.cloned();
2657        self.rate_limiter.execute(None, true, move || {
2658            let client = client.clone();
2659            let id = id.clone();
2660            let license_number = license_number.clone();
2661            let body = body.clone();
2662            async move { client.plants_get_v1(&id, license_number, body.as_ref()).await }
2663        }).await
2664    }
2665
2666    /// GET Get V2
2667    /// Retrieves a Plant by Id.
2668    /// 
2669    ///   Permissions Required:
2670    ///   - View Veg/Flower Plants
2671    ///
2672    pub async fn plants_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2673        let id = id.to_string();
2674        let client = self.client.clone();
2675        let body = body.cloned();
2676        self.rate_limiter.execute(None, true, move || {
2677            let client = client.clone();
2678            let id = id.clone();
2679            let license_number = license_number.clone();
2680            let body = body.clone();
2681            async move { client.plants_get_v2(&id, license_number, body.as_ref()).await }
2682        }).await
2683    }
2684
2685    /// GET GetAdditives V1
2686    /// Permissions Required:
2687    ///   - View/Manage Plants Additives
2688    ///
2689    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>> {
2690        let client = self.client.clone();
2691        let body = body.cloned();
2692        self.rate_limiter.execute(None, true, move || {
2693            let client = client.clone();
2694            let last_modified_end = last_modified_end.clone();
2695            let last_modified_start = last_modified_start.clone();
2696            let license_number = license_number.clone();
2697            let body = body.clone();
2698            async move { client.plants_get_additives_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
2699        }).await
2700    }
2701
2702    /// GET GetAdditives V2
2703    /// Retrieves additive records applied to plants at a specified Facility.
2704    /// 
2705    ///   Permissions Required:
2706    ///   - View/Manage Plants Additives
2707    ///
2708    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>> {
2709        let client = self.client.clone();
2710        let body = body.cloned();
2711        self.rate_limiter.execute(None, true, move || {
2712            let client = client.clone();
2713            let last_modified_end = last_modified_end.clone();
2714            let last_modified_start = last_modified_start.clone();
2715            let license_number = license_number.clone();
2716            let page_number = page_number.clone();
2717            let page_size = page_size.clone();
2718            let body = body.clone();
2719            async move { client.plants_get_additives_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
2720        }).await
2721    }
2722
2723    /// GET GetAdditivesTypes V1
2724    /// Permissions Required:
2725    ///   -
2726    ///
2727    pub async fn plants_get_additives_types_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2728        let client = self.client.clone();
2729        let body = body.cloned();
2730        self.rate_limiter.execute(None, true, move || {
2731            let client = client.clone();
2732            let no = no.clone();
2733            let body = body.clone();
2734            async move { client.plants_get_additives_types_v1(no, body.as_ref()).await }
2735        }).await
2736    }
2737
2738    /// GET GetAdditivesTypes V2
2739    /// Retrieves a list of all plant additive types defined within a Facility.
2740    /// 
2741    ///   Permissions Required:
2742    ///   - None
2743    ///
2744    pub async fn plants_get_additives_types_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2745        let client = self.client.clone();
2746        let body = body.cloned();
2747        self.rate_limiter.execute(None, true, move || {
2748            let client = client.clone();
2749            let no = no.clone();
2750            let body = body.clone();
2751            async move { client.plants_get_additives_types_v2(no, body.as_ref()).await }
2752        }).await
2753    }
2754
2755    /// GET GetByLabel V1
2756    /// Permissions Required:
2757    ///   - View Veg/Flower Plants
2758    ///
2759    pub async fn plants_get_by_label_v1(&self, label: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2760        let label = label.to_string();
2761        let client = self.client.clone();
2762        let body = body.cloned();
2763        self.rate_limiter.execute(None, true, move || {
2764            let client = client.clone();
2765            let label = label.clone();
2766            let license_number = license_number.clone();
2767            let body = body.clone();
2768            async move { client.plants_get_by_label_v1(&label, license_number, body.as_ref()).await }
2769        }).await
2770    }
2771
2772    /// GET GetByLabel V2
2773    /// Retrieves a Plant by label.
2774    /// 
2775    ///   Permissions Required:
2776    ///   - View Veg/Flower Plants
2777    ///
2778    pub async fn plants_get_by_label_v2(&self, label: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2779        let label = label.to_string();
2780        let client = self.client.clone();
2781        let body = body.cloned();
2782        self.rate_limiter.execute(None, true, move || {
2783            let client = client.clone();
2784            let label = label.clone();
2785            let license_number = license_number.clone();
2786            let body = body.clone();
2787            async move { client.plants_get_by_label_v2(&label, license_number, body.as_ref()).await }
2788        }).await
2789    }
2790
2791    /// GET GetFlowering V1
2792    /// Permissions Required:
2793    ///   - View Veg/Flower Plants
2794    ///
2795    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>> {
2796        let client = self.client.clone();
2797        let body = body.cloned();
2798        self.rate_limiter.execute(None, true, move || {
2799            let client = client.clone();
2800            let last_modified_end = last_modified_end.clone();
2801            let last_modified_start = last_modified_start.clone();
2802            let license_number = license_number.clone();
2803            let body = body.clone();
2804            async move { client.plants_get_flowering_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
2805        }).await
2806    }
2807
2808    /// GET GetFlowering V2
2809    /// Retrieves flowering-phase plants at a specified Facility, optionally filtered by last modified date.
2810    /// 
2811    ///   Permissions Required:
2812    ///   - View Veg/Flower Plants
2813    ///
2814    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>> {
2815        let client = self.client.clone();
2816        let body = body.cloned();
2817        self.rate_limiter.execute(None, true, move || {
2818            let client = client.clone();
2819            let last_modified_end = last_modified_end.clone();
2820            let last_modified_start = last_modified_start.clone();
2821            let license_number = license_number.clone();
2822            let page_number = page_number.clone();
2823            let page_size = page_size.clone();
2824            let body = body.clone();
2825            async move { client.plants_get_flowering_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
2826        }).await
2827    }
2828
2829    /// GET GetGrowthPhases V1
2830    /// Permissions Required:
2831    ///   - None
2832    ///
2833    pub async fn plants_get_growth_phases_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2834        let client = self.client.clone();
2835        let body = body.cloned();
2836        self.rate_limiter.execute(None, true, move || {
2837            let client = client.clone();
2838            let license_number = license_number.clone();
2839            let body = body.clone();
2840            async move { client.plants_get_growth_phases_v1(license_number, body.as_ref()).await }
2841        }).await
2842    }
2843
2844    /// GET GetGrowthPhases V2
2845    /// Retrieves the list of growth phases supported by a specified Facility.
2846    /// 
2847    ///   Permissions Required:
2848    ///   - None
2849    ///
2850    pub async fn plants_get_growth_phases_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
2851        let client = self.client.clone();
2852        let body = body.cloned();
2853        self.rate_limiter.execute(None, true, move || {
2854            let client = client.clone();
2855            let license_number = license_number.clone();
2856            let body = body.clone();
2857            async move { client.plants_get_growth_phases_v2(license_number, body.as_ref()).await }
2858        }).await
2859    }
2860
2861    /// GET GetInactive V1
2862    /// Permissions Required:
2863    ///   - View Veg/Flower Plants
2864    ///
2865    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>> {
2866        let client = self.client.clone();
2867        let body = body.cloned();
2868        self.rate_limiter.execute(None, true, move || {
2869            let client = client.clone();
2870            let last_modified_end = last_modified_end.clone();
2871            let last_modified_start = last_modified_start.clone();
2872            let license_number = license_number.clone();
2873            let body = body.clone();
2874            async move { client.plants_get_inactive_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
2875        }).await
2876    }
2877
2878    /// GET GetInactive V2
2879    /// Retrieves inactive plants at a specified Facility.
2880    /// 
2881    ///   Permissions Required:
2882    ///   - View Veg/Flower Plants
2883    ///
2884    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>> {
2885        let client = self.client.clone();
2886        let body = body.cloned();
2887        self.rate_limiter.execute(None, true, move || {
2888            let client = client.clone();
2889            let last_modified_end = last_modified_end.clone();
2890            let last_modified_start = last_modified_start.clone();
2891            let license_number = license_number.clone();
2892            let page_number = page_number.clone();
2893            let page_size = page_size.clone();
2894            let body = body.clone();
2895            async move { client.plants_get_inactive_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
2896        }).await
2897    }
2898
2899    /// GET GetMother V2
2900    /// Retrieves mother-phase plants at a specified Facility.
2901    /// 
2902    ///   Permissions Required:
2903    ///   - View Mother Plants
2904    ///
2905    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>> {
2906        let client = self.client.clone();
2907        let body = body.cloned();
2908        self.rate_limiter.execute(None, true, move || {
2909            let client = client.clone();
2910            let last_modified_end = last_modified_end.clone();
2911            let last_modified_start = last_modified_start.clone();
2912            let license_number = license_number.clone();
2913            let page_number = page_number.clone();
2914            let page_size = page_size.clone();
2915            let body = body.clone();
2916            async move { client.plants_get_mother_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
2917        }).await
2918    }
2919
2920    /// GET GetMotherInactive V2
2921    /// Retrieves inactive mother-phase plants at a specified Facility.
2922    /// 
2923    ///   Permissions Required:
2924    ///   - View Mother Plants
2925    ///
2926    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>> {
2927        let client = self.client.clone();
2928        let body = body.cloned();
2929        self.rate_limiter.execute(None, true, move || {
2930            let client = client.clone();
2931            let last_modified_end = last_modified_end.clone();
2932            let last_modified_start = last_modified_start.clone();
2933            let license_number = license_number.clone();
2934            let page_number = page_number.clone();
2935            let page_size = page_size.clone();
2936            let body = body.clone();
2937            async move { client.plants_get_mother_inactive_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
2938        }).await
2939    }
2940
2941    /// GET GetMotherOnhold V2
2942    /// Retrieves mother-phase plants currently marked as on hold at a specified Facility.
2943    /// 
2944    ///   Permissions Required:
2945    ///   - View Mother Plants
2946    ///
2947    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>> {
2948        let client = self.client.clone();
2949        let body = body.cloned();
2950        self.rate_limiter.execute(None, true, move || {
2951            let client = client.clone();
2952            let last_modified_end = last_modified_end.clone();
2953            let last_modified_start = last_modified_start.clone();
2954            let license_number = license_number.clone();
2955            let page_number = page_number.clone();
2956            let page_size = page_size.clone();
2957            let body = body.clone();
2958            async move { client.plants_get_mother_onhold_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
2959        }).await
2960    }
2961
2962    /// GET GetOnhold V1
2963    /// Permissions Required:
2964    ///   - View Veg/Flower Plants
2965    ///
2966    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>> {
2967        let client = self.client.clone();
2968        let body = body.cloned();
2969        self.rate_limiter.execute(None, true, move || {
2970            let client = client.clone();
2971            let last_modified_end = last_modified_end.clone();
2972            let last_modified_start = last_modified_start.clone();
2973            let license_number = license_number.clone();
2974            let body = body.clone();
2975            async move { client.plants_get_onhold_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
2976        }).await
2977    }
2978
2979    /// GET GetOnhold V2
2980    /// Retrieves plants that are currently on hold at a specified Facility.
2981    /// 
2982    ///   Permissions Required:
2983    ///   - View Veg/Flower Plants
2984    ///
2985    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>> {
2986        let client = self.client.clone();
2987        let body = body.cloned();
2988        self.rate_limiter.execute(None, true, move || {
2989            let client = client.clone();
2990            let last_modified_end = last_modified_end.clone();
2991            let last_modified_start = last_modified_start.clone();
2992            let license_number = license_number.clone();
2993            let page_number = page_number.clone();
2994            let page_size = page_size.clone();
2995            let body = body.clone();
2996            async move { client.plants_get_onhold_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
2997        }).await
2998    }
2999
3000    /// GET GetVegetative V1
3001    /// Permissions Required:
3002    ///   - View Veg/Flower Plants
3003    ///
3004    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>> {
3005        let client = self.client.clone();
3006        let body = body.cloned();
3007        self.rate_limiter.execute(None, true, move || {
3008            let client = client.clone();
3009            let last_modified_end = last_modified_end.clone();
3010            let last_modified_start = last_modified_start.clone();
3011            let license_number = license_number.clone();
3012            let body = body.clone();
3013            async move { client.plants_get_vegetative_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
3014        }).await
3015    }
3016
3017    /// GET GetVegetative V2
3018    /// Retrieves vegetative-phase plants at a specified Facility, optionally filtered by last modified date.
3019    /// 
3020    ///   Permissions Required:
3021    ///   - View Veg/Flower Plants
3022    ///
3023    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>> {
3024        let client = self.client.clone();
3025        let body = body.cloned();
3026        self.rate_limiter.execute(None, true, move || {
3027            let client = client.clone();
3028            let last_modified_end = last_modified_end.clone();
3029            let last_modified_start = last_modified_start.clone();
3030            let license_number = license_number.clone();
3031            let page_number = page_number.clone();
3032            let page_size = page_size.clone();
3033            let body = body.clone();
3034            async move { client.plants_get_vegetative_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
3035        }).await
3036    }
3037
3038    /// GET GetWaste V2
3039    /// Retrieves a list of recorded plant waste events for a specific Facility.
3040    /// 
3041    ///   Permissions Required:
3042    ///   - View Plants Waste
3043    ///
3044    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>> {
3045        let client = self.client.clone();
3046        let body = body.cloned();
3047        self.rate_limiter.execute(None, true, move || {
3048            let client = client.clone();
3049            let license_number = license_number.clone();
3050            let page_number = page_number.clone();
3051            let page_size = page_size.clone();
3052            let body = body.clone();
3053            async move { client.plants_get_waste_v2(license_number, page_number, page_size, body.as_ref()).await }
3054        }).await
3055    }
3056
3057    /// GET GetWasteMethodsAll V1
3058    /// Permissions Required:
3059    ///   - None
3060    ///
3061    pub async fn plants_get_waste_methods_all_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3062        let client = self.client.clone();
3063        let body = body.cloned();
3064        self.rate_limiter.execute(None, true, move || {
3065            let client = client.clone();
3066            let no = no.clone();
3067            let body = body.clone();
3068            async move { client.plants_get_waste_methods_all_v1(no, body.as_ref()).await }
3069        }).await
3070    }
3071
3072    /// GET GetWasteMethodsAll V2
3073    /// Retrieves a list of all available plant waste methods for use within a Facility.
3074    /// 
3075    ///   Permissions Required:
3076    ///   - None
3077    ///
3078    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>> {
3079        let client = self.client.clone();
3080        let body = body.cloned();
3081        self.rate_limiter.execute(None, true, move || {
3082            let client = client.clone();
3083            let page_number = page_number.clone();
3084            let page_size = page_size.clone();
3085            let body = body.clone();
3086            async move { client.plants_get_waste_methods_all_v2(page_number, page_size, body.as_ref()).await }
3087        }).await
3088    }
3089
3090    /// GET GetWastePackage V2
3091    /// Retrieves a list of package records linked to the specified plantWasteId for a given facility.
3092    /// 
3093    ///   Permissions Required:
3094    ///   - View Plants Waste
3095    ///
3096    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>> {
3097        let id = id.to_string();
3098        let client = self.client.clone();
3099        let body = body.cloned();
3100        self.rate_limiter.execute(None, true, move || {
3101            let client = client.clone();
3102            let id = id.clone();
3103            let license_number = license_number.clone();
3104            let page_number = page_number.clone();
3105            let page_size = page_size.clone();
3106            let body = body.clone();
3107            async move { client.plants_get_waste_package_v2(&id, license_number, page_number, page_size, body.as_ref()).await }
3108        }).await
3109    }
3110
3111    /// GET GetWastePlant V2
3112    /// Retrieves a list of plants records linked to the specified plantWasteId for a given facility.
3113    /// 
3114    ///   Permissions Required:
3115    ///   - View Plants Waste
3116    ///
3117    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>> {
3118        let id = id.to_string();
3119        let client = self.client.clone();
3120        let body = body.cloned();
3121        self.rate_limiter.execute(None, true, move || {
3122            let client = client.clone();
3123            let id = id.clone();
3124            let license_number = license_number.clone();
3125            let page_number = page_number.clone();
3126            let page_size = page_size.clone();
3127            let body = body.clone();
3128            async move { client.plants_get_waste_plant_v2(&id, license_number, page_number, page_size, body.as_ref()).await }
3129        }).await
3130    }
3131
3132    /// GET GetWasteReasons V1
3133    /// Permissions Required:
3134    ///   - None
3135    ///
3136    pub async fn plants_get_waste_reasons_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3137        let client = self.client.clone();
3138        let body = body.cloned();
3139        self.rate_limiter.execute(None, true, move || {
3140            let client = client.clone();
3141            let license_number = license_number.clone();
3142            let body = body.clone();
3143            async move { client.plants_get_waste_reasons_v1(license_number, body.as_ref()).await }
3144        }).await
3145    }
3146
3147    /// GET GetWasteReasons V2
3148    /// Retriveves available reasons for recording mature plant waste at a specified Facility.
3149    /// 
3150    ///   Permissions Required:
3151    ///   - None
3152    ///
3153    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>> {
3154        let client = self.client.clone();
3155        let body = body.cloned();
3156        self.rate_limiter.execute(None, true, move || {
3157            let client = client.clone();
3158            let license_number = license_number.clone();
3159            let page_number = page_number.clone();
3160            let page_size = page_size.clone();
3161            let body = body.clone();
3162            async move { client.plants_get_waste_reasons_v2(license_number, page_number, page_size, body.as_ref()).await }
3163        }).await
3164    }
3165
3166    /// PUT UpdateAdjust V2
3167    /// Adjusts the recorded count of plants at a specified Facility.
3168    /// 
3169    ///   Permissions Required:
3170    ///   - View Veg/Flower Plants
3171    ///   - Manage Veg/Flower Plants Inventory
3172    ///
3173    pub async fn plants_update_adjust_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsUpdateAdjustV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3174        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3175        let client = self.client.clone();
3176        let body_val = body_val.clone();
3177        self.rate_limiter.execute(None, false, move || {
3178            let client = client.clone();
3179            let license_number = license_number.clone();
3180            let body_val = body_val.clone();
3181            async move { client.plants_update_adjust_v2(license_number, body_val.as_ref()).await }
3182        }).await
3183    }
3184
3185    /// PUT UpdateGrowthphase V2
3186    /// Changes the growth phases of plants within a specified Facility.
3187    /// 
3188    ///   Permissions Required:
3189    ///   - View Veg/Flower Plants
3190    ///   - Manage Veg/Flower Plants Inventory
3191    ///
3192    pub async fn plants_update_growthphase_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsUpdateGrowthphaseV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3193        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3194        let client = self.client.clone();
3195        let body_val = body_val.clone();
3196        self.rate_limiter.execute(None, false, move || {
3197            let client = client.clone();
3198            let license_number = license_number.clone();
3199            let body_val = body_val.clone();
3200            async move { client.plants_update_growthphase_v2(license_number, body_val.as_ref()).await }
3201        }).await
3202    }
3203
3204    /// PUT UpdateHarvest V2
3205    /// 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.
3206    /// 
3207    ///   Permissions Required:
3208    ///   - View Veg/Flower Plants
3209    ///   - Manicure/Harvest Veg/Flower Plants
3210    ///
3211    pub async fn plants_update_harvest_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsUpdateHarvestV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3212        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3213        let client = self.client.clone();
3214        let body_val = body_val.clone();
3215        self.rate_limiter.execute(None, false, move || {
3216            let client = client.clone();
3217            let license_number = license_number.clone();
3218            let body_val = body_val.clone();
3219            async move { client.plants_update_harvest_v2(license_number, body_val.as_ref()).await }
3220        }).await
3221    }
3222
3223    /// PUT UpdateLocation V2
3224    /// Moves plant batches to new locations within a specified Facility.
3225    /// 
3226    ///   Permissions Required:
3227    ///   - View Veg/Flower Plants
3228    ///   - Manage Veg/Flower Plants Inventory
3229    ///
3230    pub async fn plants_update_location_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsUpdateLocationV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3231        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3232        let client = self.client.clone();
3233        let body_val = body_val.clone();
3234        self.rate_limiter.execute(None, false, move || {
3235            let client = client.clone();
3236            let license_number = license_number.clone();
3237            let body_val = body_val.clone();
3238            async move { client.plants_update_location_v2(license_number, body_val.as_ref()).await }
3239        }).await
3240    }
3241
3242    /// PUT UpdateMerge V2
3243    /// Merges multiple plant groups into a single group within a Facility.
3244    /// 
3245    ///   Permissions Required:
3246    ///   - View Veg/Flower Plants
3247    ///   - Manicure/Harvest Veg/Flower Plants
3248    ///
3249    pub async fn plants_update_merge_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsUpdateMergeV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3250        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3251        let client = self.client.clone();
3252        let body_val = body_val.clone();
3253        self.rate_limiter.execute(None, false, move || {
3254            let client = client.clone();
3255            let license_number = license_number.clone();
3256            let body_val = body_val.clone();
3257            async move { client.plants_update_merge_v2(license_number, body_val.as_ref()).await }
3258        }).await
3259    }
3260
3261    /// PUT UpdateSplit V2
3262    /// Splits an existing plant group into multiple groups within a Facility.
3263    /// 
3264    ///   Permissions Required:
3265    ///   - View Plant
3266    ///
3267    pub async fn plants_update_split_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsUpdateSplitV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3268        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3269        let client = self.client.clone();
3270        let body_val = body_val.clone();
3271        self.rate_limiter.execute(None, false, move || {
3272            let client = client.clone();
3273            let license_number = license_number.clone();
3274            let body_val = body_val.clone();
3275            async move { client.plants_update_split_v2(license_number, body_val.as_ref()).await }
3276        }).await
3277    }
3278
3279    /// PUT UpdateStrain V2
3280    /// Updates the strain information for plants within a Facility.
3281    /// 
3282    ///   Permissions Required:
3283    ///   - View Veg/Flower Plants
3284    ///   - Manage Veg/Flower Plants Inventory
3285    ///
3286    pub async fn plants_update_strain_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsUpdateStrainV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3287        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3288        let client = self.client.clone();
3289        let body_val = body_val.clone();
3290        self.rate_limiter.execute(None, false, move || {
3291            let client = client.clone();
3292            let license_number = license_number.clone();
3293            let body_val = body_val.clone();
3294            async move { client.plants_update_strain_v2(license_number, body_val.as_ref()).await }
3295        }).await
3296    }
3297
3298    /// PUT UpdateTag V2
3299    /// Replaces existing plant tags with new tags for plants within a Facility.
3300    /// 
3301    ///   Permissions Required:
3302    ///   - View Veg/Flower Plants
3303    ///   - Manage Veg/Flower Plants Inventory
3304    ///
3305    pub async fn plants_update_tag_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantsUpdateTagV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3306        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3307        let client = self.client.clone();
3308        let body_val = body_val.clone();
3309        self.rate_limiter.execute(None, false, move || {
3310            let client = client.clone();
3311            let license_number = license_number.clone();
3312            let body_val = body_val.clone();
3313            async move { client.plants_update_tag_v2(license_number, body_val.as_ref()).await }
3314        }).await
3315    }
3316
3317    /// POST CreateAssociate V2
3318    /// Facilitate association of QR codes and Package labels. This will return the count of packages and QR codes associated that were added or replaced.
3319    /// 
3320    ///   Permissions Required:
3321    ///   - External Sources(ThirdPartyVendorV2)/Retail ID(Write)
3322    ///   - WebApi Retail ID Read Write State (All or WriteOnly)
3323    ///   - Industry/View Packages
3324    ///   - 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)
3325    ///
3326    pub async fn retail_id_create_associate_v2(&self, license_number: Option<String>, body: Option<&Vec<RetailIdCreateAssociateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3327        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3328        let client = self.client.clone();
3329        let body_val = body_val.clone();
3330        self.rate_limiter.execute(None, false, move || {
3331            let client = client.clone();
3332            let license_number = license_number.clone();
3333            let body_val = body_val.clone();
3334            async move { client.retail_id_create_associate_v2(license_number, body_val.as_ref()).await }
3335        }).await
3336    }
3337
3338    /// POST CreateGenerate V2
3339    /// Allows you to generate a specific quantity of QR codes. Id value returned (issuance ID) could be used for printing.
3340    /// 
3341    ///   Permissions Required:
3342    ///   - External Sources(ThirdPartyVendorV2)/Retail ID(Write)
3343    ///   - WebApi Retail ID Read Write State (All or WriteOnly)
3344    ///   - Industry/View Packages
3345    ///   - One of the following: Industry/Facility Type/Can Download Product Label, Licensee/Download Product Label or Admin/Employees/Packages Page/Product Labels(Manage)
3346    ///
3347    pub async fn retail_id_create_generate_v2(&self, license_number: Option<String>, body: Option<&RetailIdCreateGenerateV2Request>) -> Result<Option<Value>, Box<dyn Error>> {
3348        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3349        let client = self.client.clone();
3350        let body_val = body_val.clone();
3351        self.rate_limiter.execute(None, false, move || {
3352            let client = client.clone();
3353            let license_number = license_number.clone();
3354            let body_val = body_val.clone();
3355            async move { client.retail_id_create_generate_v2(license_number, body_val.as_ref()).await }
3356        }).await
3357    }
3358
3359    /// POST CreateMerge V2
3360    /// 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.
3361    /// 
3362    ///   Permissions Required:
3363    ///   - External Sources(ThirdPartyVendorV2)/Retail ID(Write)
3364    ///   - WebApi Retail ID Read Write State (All or WriteOnly)
3365    ///   - Key Value Settings/Retail ID Merge Packages Enabled
3366    ///
3367    pub async fn retail_id_create_merge_v2(&self, license_number: Option<String>, body: Option<&RetailIdCreateMergeV2Request>) -> Result<Option<Value>, Box<dyn Error>> {
3368        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3369        let client = self.client.clone();
3370        let body_val = body_val.clone();
3371        self.rate_limiter.execute(None, false, move || {
3372            let client = client.clone();
3373            let license_number = license_number.clone();
3374            let body_val = body_val.clone();
3375            async move { client.retail_id_create_merge_v2(license_number, body_val.as_ref()).await }
3376        }).await
3377    }
3378
3379    /// POST CreatePackageInfo V2
3380    /// Retrieves Package information for given list of Package labels.
3381    /// 
3382    ///   Permissions Required:
3383    ///   - External Sources(ThirdPartyVendorV2)/Retail ID(Write)
3384    ///   - WebApi Retail ID Read Write State (All or WriteOnly)
3385    ///   - Industry/View Packages
3386    ///   - Admin/Employees/Packages Page/Product Labels(Manage)
3387    ///
3388    pub async fn retail_id_create_package_info_v2(&self, license_number: Option<String>, body: Option<&RetailIdCreatePackageInfoV2Request>) -> Result<Option<Value>, Box<dyn Error>> {
3389        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3390        let client = self.client.clone();
3391        let body_val = body_val.clone();
3392        self.rate_limiter.execute(None, false, move || {
3393            let client = client.clone();
3394            let license_number = license_number.clone();
3395            let body_val = body_val.clone();
3396            async move { client.retail_id_create_package_info_v2(license_number, body_val.as_ref()).await }
3397        }).await
3398    }
3399
3400    /// GET GetReceiveByLabel V2
3401    /// Get a list of eaches (Retail ID QR code URL) and sibling tags based on given Package label.
3402    /// 
3403    ///   Permissions Required:
3404    ///   - External Sources(ThirdPartyVendorV2)/Manage RetailId
3405    ///   - WebApi Retail ID Read Write State (All or ReadOnly)
3406    ///   - Industry/View Packages
3407    ///   - 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)
3408    ///
3409    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>> {
3410        let label = label.to_string();
3411        let client = self.client.clone();
3412        let body = body.cloned();
3413        self.rate_limiter.execute(None, true, move || {
3414            let client = client.clone();
3415            let label = label.clone();
3416            let license_number = license_number.clone();
3417            let body = body.clone();
3418            async move { client.retail_id_get_receive_by_label_v2(&label, license_number, body.as_ref()).await }
3419        }).await
3420    }
3421
3422    /// GET GetReceiveQrByShortCode V2
3423    /// 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).
3424    /// 
3425    ///   Permissions Required:
3426    ///   - External Sources(ThirdPartyVendorV2)/Manage RetailId
3427    ///   - WebApi Retail ID Read Write State (All or ReadOnly)
3428    ///   - Industry/View Packages
3429    ///   - 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)
3430    ///
3431    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>> {
3432        let short_code = short_code.to_string();
3433        let client = self.client.clone();
3434        let body = body.cloned();
3435        self.rate_limiter.execute(None, true, move || {
3436            let client = client.clone();
3437            let short_code = short_code.clone();
3438            let license_number = license_number.clone();
3439            let body = body.clone();
3440            async move { client.retail_id_get_receive_qr_by_short_code_v2(&short_code, license_number, body.as_ref()).await }
3441        }).await
3442    }
3443
3444    /// POST CreateIntegratorSetup V2
3445    /// 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.
3446    /// 
3447    ///   Permissions Required:
3448    ///   - None
3449    ///
3450    pub async fn sandbox_create_integrator_setup_v2(&self, user_key: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3451        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3452        let client = self.client.clone();
3453        let body_val = body_val.clone();
3454        self.rate_limiter.execute(None, false, move || {
3455            let client = client.clone();
3456            let user_key = user_key.clone();
3457            let body_val = body_val.clone();
3458            async move { client.sandbox_create_integrator_setup_v2(user_key, body_val.as_ref()).await }
3459        }).await
3460    }
3461
3462    /// POST Create V2
3463    /// Creates new sublocation records for a Facility.
3464    /// 
3465    ///   Permissions Required:
3466    ///   - Manage Locations
3467    ///
3468    pub async fn sublocations_create_v2(&self, license_number: Option<String>, body: Option<&Vec<SublocationsCreateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3469        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3470        let client = self.client.clone();
3471        let body_val = body_val.clone();
3472        self.rate_limiter.execute(None, false, move || {
3473            let client = client.clone();
3474            let license_number = license_number.clone();
3475            let body_val = body_val.clone();
3476            async move { client.sublocations_create_v2(license_number, body_val.as_ref()).await }
3477        }).await
3478    }
3479
3480    /// DELETE Delete V2
3481    /// Archives an existing Sublocation record for a Facility.
3482    /// 
3483    ///   Permissions Required:
3484    ///   - Manage Locations
3485    ///
3486    pub async fn sublocations_delete_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3487        let id = id.to_string();
3488        let client = self.client.clone();
3489        let body = body.cloned();
3490        self.rate_limiter.execute(None, false, move || {
3491            let client = client.clone();
3492            let id = id.clone();
3493            let license_number = license_number.clone();
3494            let body = body.clone();
3495            async move { client.sublocations_delete_v2(&id, license_number, body.as_ref()).await }
3496        }).await
3497    }
3498
3499    /// GET Get V2
3500    /// Retrieves a Sublocation by its Id, with an optional license number.
3501    /// 
3502    ///   Permissions Required:
3503    ///   - Manage Locations
3504    ///
3505    pub async fn sublocations_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3506        let id = id.to_string();
3507        let client = self.client.clone();
3508        let body = body.cloned();
3509        self.rate_limiter.execute(None, true, move || {
3510            let client = client.clone();
3511            let id = id.clone();
3512            let license_number = license_number.clone();
3513            let body = body.clone();
3514            async move { client.sublocations_get_v2(&id, license_number, body.as_ref()).await }
3515        }).await
3516    }
3517
3518    /// GET GetActive V2
3519    /// Retrieves a list of active sublocations for the current Facility, optionally filtered by last modified date range.
3520    /// 
3521    ///   Permissions Required:
3522    ///   - Manage Locations
3523    ///
3524    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>> {
3525        let client = self.client.clone();
3526        let body = body.cloned();
3527        self.rate_limiter.execute(None, true, move || {
3528            let client = client.clone();
3529            let last_modified_end = last_modified_end.clone();
3530            let last_modified_start = last_modified_start.clone();
3531            let license_number = license_number.clone();
3532            let page_number = page_number.clone();
3533            let page_size = page_size.clone();
3534            let body = body.clone();
3535            async move { client.sublocations_get_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
3536        }).await
3537    }
3538
3539    /// GET GetInactive V2
3540    /// Retrieves a list of inactive sublocations for the specified Facility.
3541    /// 
3542    ///   Permissions Required:
3543    ///   - Manage Locations
3544    ///
3545    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>> {
3546        let client = self.client.clone();
3547        let body = body.cloned();
3548        self.rate_limiter.execute(None, true, move || {
3549            let client = client.clone();
3550            let license_number = license_number.clone();
3551            let page_number = page_number.clone();
3552            let page_size = page_size.clone();
3553            let body = body.clone();
3554            async move { client.sublocations_get_inactive_v2(license_number, page_number, page_size, body.as_ref()).await }
3555        }).await
3556    }
3557
3558    /// PUT Update V2
3559    /// Updates existing sublocation records for a specified Facility.
3560    /// 
3561    ///   Permissions Required:
3562    ///   - Manage Locations
3563    ///
3564    pub async fn sublocations_update_v2(&self, license_number: Option<String>, body: Option<&Vec<SublocationsUpdateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3565        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3566        let client = self.client.clone();
3567        let body_val = body_val.clone();
3568        self.rate_limiter.execute(None, false, move || {
3569            let client = client.clone();
3570            let license_number = license_number.clone();
3571            let body_val = body_val.clone();
3572            async move { client.sublocations_update_v2(license_number, body_val.as_ref()).await }
3573        }).await
3574    }
3575
3576    /// GET GetAll V1
3577    /// This endpoint provides a list of facilities for which the authenticated user has access.
3578    /// 
3579    ///   Permissions Required:
3580    ///   - None
3581    ///
3582    pub async fn facilities_get_all_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3583        let client = self.client.clone();
3584        let body = body.cloned();
3585        self.rate_limiter.execute(None, true, move || {
3586            let client = client.clone();
3587            let no = no.clone();
3588            let body = body.clone();
3589            async move { client.facilities_get_all_v1(no, body.as_ref()).await }
3590        }).await
3591    }
3592
3593    /// GET GetAll V2
3594    /// This endpoint provides a list of facilities for which the authenticated user has access.
3595    /// 
3596    ///   Permissions Required:
3597    ///   - None
3598    ///
3599    pub async fn facilities_get_all_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3600        let client = self.client.clone();
3601        let body = body.cloned();
3602        self.rate_limiter.execute(None, true, move || {
3603            let client = client.clone();
3604            let no = no.clone();
3605            let body = body.clone();
3606            async move { client.facilities_get_all_v2(no, body.as_ref()).await }
3607        }).await
3608    }
3609
3610    /// POST CreateFinish V1
3611    /// Permissions Required:
3612    ///   - View Harvests
3613    ///   - Finish/Discontinue Harvests
3614    ///
3615    pub async fn harvests_create_finish_v1(&self, license_number: Option<String>, body: Option<&Vec<HarvestsCreateFinishV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3616        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3617        let client = self.client.clone();
3618        let body_val = body_val.clone();
3619        self.rate_limiter.execute(None, false, move || {
3620            let client = client.clone();
3621            let license_number = license_number.clone();
3622            let body_val = body_val.clone();
3623            async move { client.harvests_create_finish_v1(license_number, body_val.as_ref()).await }
3624        }).await
3625    }
3626
3627    /// POST CreatePackage V1
3628    /// Permissions Required:
3629    ///   - View Harvests
3630    ///   - Manage Harvests
3631    ///   - View Packages
3632    ///   - Create/Submit/Discontinue Packages
3633    ///
3634    pub async fn harvests_create_package_v1(&self, license_number: Option<String>, body: Option<&Vec<HarvestsCreatePackageV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3635        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3636        let client = self.client.clone();
3637        let body_val = body_val.clone();
3638        self.rate_limiter.execute(None, false, move || {
3639            let client = client.clone();
3640            let license_number = license_number.clone();
3641            let body_val = body_val.clone();
3642            async move { client.harvests_create_package_v1(license_number, body_val.as_ref()).await }
3643        }).await
3644    }
3645
3646    /// POST CreatePackage V2
3647    /// Creates packages from harvested products for a specified Facility.
3648    /// 
3649    ///   Permissions Required:
3650    ///   - View Harvests
3651    ///   - Manage Harvests
3652    ///   - View Packages
3653    ///   - Create/Submit/Discontinue Packages
3654    ///
3655    pub async fn harvests_create_package_v2(&self, license_number: Option<String>, body: Option<&Vec<HarvestsCreatePackageV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3656        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3657        let client = self.client.clone();
3658        let body_val = body_val.clone();
3659        self.rate_limiter.execute(None, false, move || {
3660            let client = client.clone();
3661            let license_number = license_number.clone();
3662            let body_val = body_val.clone();
3663            async move { client.harvests_create_package_v2(license_number, body_val.as_ref()).await }
3664        }).await
3665    }
3666
3667    /// POST CreatePackageTesting V1
3668    /// Permissions Required:
3669    ///   - View Harvests
3670    ///   - Manage Harvests
3671    ///   - View Packages
3672    ///   - Create/Submit/Discontinue Packages
3673    ///
3674    pub async fn harvests_create_package_testing_v1(&self, license_number: Option<String>, body: Option<&Vec<HarvestsCreatePackageTestingV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3675        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3676        let client = self.client.clone();
3677        let body_val = body_val.clone();
3678        self.rate_limiter.execute(None, false, move || {
3679            let client = client.clone();
3680            let license_number = license_number.clone();
3681            let body_val = body_val.clone();
3682            async move { client.harvests_create_package_testing_v1(license_number, body_val.as_ref()).await }
3683        }).await
3684    }
3685
3686    /// POST CreatePackageTesting V2
3687    /// Creates packages for testing from harvested products for a specified Facility.
3688    /// 
3689    ///   Permissions Required:
3690    ///   - View Harvests
3691    ///   - Manage Harvests
3692    ///   - View Packages
3693    ///   - Create/Submit/Discontinue Packages
3694    ///
3695    pub async fn harvests_create_package_testing_v2(&self, license_number: Option<String>, body: Option<&Vec<HarvestsCreatePackageTestingV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3696        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3697        let client = self.client.clone();
3698        let body_val = body_val.clone();
3699        self.rate_limiter.execute(None, false, move || {
3700            let client = client.clone();
3701            let license_number = license_number.clone();
3702            let body_val = body_val.clone();
3703            async move { client.harvests_create_package_testing_v2(license_number, body_val.as_ref()).await }
3704        }).await
3705    }
3706
3707    /// POST CreateRemoveWaste V1
3708    /// Permissions Required:
3709    ///   - View Harvests
3710    ///   - Manage Harvests
3711    ///
3712    pub async fn harvests_create_remove_waste_v1(&self, license_number: Option<String>, body: Option<&Vec<HarvestsCreateRemoveWasteV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3713        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3714        let client = self.client.clone();
3715        let body_val = body_val.clone();
3716        self.rate_limiter.execute(None, false, move || {
3717            let client = client.clone();
3718            let license_number = license_number.clone();
3719            let body_val = body_val.clone();
3720            async move { client.harvests_create_remove_waste_v1(license_number, body_val.as_ref()).await }
3721        }).await
3722    }
3723
3724    /// POST CreateUnfinish V1
3725    /// Permissions Required:
3726    ///   - View Harvests
3727    ///   - Finish/Discontinue Harvests
3728    ///
3729    pub async fn harvests_create_unfinish_v1(&self, license_number: Option<String>, body: Option<&Vec<HarvestsCreateUnfinishV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3730        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3731        let client = self.client.clone();
3732        let body_val = body_val.clone();
3733        self.rate_limiter.execute(None, false, move || {
3734            let client = client.clone();
3735            let license_number = license_number.clone();
3736            let body_val = body_val.clone();
3737            async move { client.harvests_create_unfinish_v1(license_number, body_val.as_ref()).await }
3738        }).await
3739    }
3740
3741    /// POST CreateWaste V2
3742    /// 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.
3743    /// 
3744    ///   Permissions Required:
3745    ///   - View Harvests
3746    ///   - Manage Harvests
3747    ///
3748    pub async fn harvests_create_waste_v2(&self, license_number: Option<String>, body: Option<&Vec<HarvestsCreateWasteV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3749        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3750        let client = self.client.clone();
3751        let body_val = body_val.clone();
3752        self.rate_limiter.execute(None, false, move || {
3753            let client = client.clone();
3754            let license_number = license_number.clone();
3755            let body_val = body_val.clone();
3756            async move { client.harvests_create_waste_v2(license_number, body_val.as_ref()).await }
3757        }).await
3758    }
3759
3760    /// DELETE DeleteWaste V2
3761    /// Discontinues a specific harvest waste record by Id for the specified Facility.
3762    /// 
3763    ///   Permissions Required:
3764    ///   - View Harvests
3765    ///   - Discontinue Harvest Waste
3766    ///
3767    pub async fn harvests_delete_waste_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3768        let id = id.to_string();
3769        let client = self.client.clone();
3770        let body = body.cloned();
3771        self.rate_limiter.execute(None, false, move || {
3772            let client = client.clone();
3773            let id = id.clone();
3774            let license_number = license_number.clone();
3775            let body = body.clone();
3776            async move { client.harvests_delete_waste_v2(&id, license_number, body.as_ref()).await }
3777        }).await
3778    }
3779
3780    /// GET Get V1
3781    /// Permissions Required:
3782    ///   - View Harvests
3783    ///
3784    pub async fn harvests_get_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3785        let id = id.to_string();
3786        let client = self.client.clone();
3787        let body = body.cloned();
3788        self.rate_limiter.execute(None, true, move || {
3789            let client = client.clone();
3790            let id = id.clone();
3791            let license_number = license_number.clone();
3792            let body = body.clone();
3793            async move { client.harvests_get_v1(&id, license_number, body.as_ref()).await }
3794        }).await
3795    }
3796
3797    /// GET Get V2
3798    /// Retrieves a Harvest by its Id, optionally validated against a specified Facility License Number.
3799    /// 
3800    ///   Permissions Required:
3801    ///   - View Harvests
3802    ///
3803    pub async fn harvests_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3804        let id = id.to_string();
3805        let client = self.client.clone();
3806        let body = body.cloned();
3807        self.rate_limiter.execute(None, true, move || {
3808            let client = client.clone();
3809            let id = id.clone();
3810            let license_number = license_number.clone();
3811            let body = body.clone();
3812            async move { client.harvests_get_v2(&id, license_number, body.as_ref()).await }
3813        }).await
3814    }
3815
3816    /// GET GetActive V1
3817    /// Permissions Required:
3818    ///   - View Harvests
3819    ///
3820    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>> {
3821        let client = self.client.clone();
3822        let body = body.cloned();
3823        self.rate_limiter.execute(None, true, move || {
3824            let client = client.clone();
3825            let last_modified_end = last_modified_end.clone();
3826            let last_modified_start = last_modified_start.clone();
3827            let license_number = license_number.clone();
3828            let body = body.clone();
3829            async move { client.harvests_get_active_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
3830        }).await
3831    }
3832
3833    /// GET GetActive V2
3834    /// Retrieves a list of active harvests for a specified Facility.
3835    /// 
3836    ///   Permissions Required:
3837    ///   - View Harvests
3838    ///
3839    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>> {
3840        let client = self.client.clone();
3841        let body = body.cloned();
3842        self.rate_limiter.execute(None, true, move || {
3843            let client = client.clone();
3844            let last_modified_end = last_modified_end.clone();
3845            let last_modified_start = last_modified_start.clone();
3846            let license_number = license_number.clone();
3847            let page_number = page_number.clone();
3848            let page_size = page_size.clone();
3849            let body = body.clone();
3850            async move { client.harvests_get_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
3851        }).await
3852    }
3853
3854    /// GET GetInactive V1
3855    /// Permissions Required:
3856    ///   - View Harvests
3857    ///
3858    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>> {
3859        let client = self.client.clone();
3860        let body = body.cloned();
3861        self.rate_limiter.execute(None, true, move || {
3862            let client = client.clone();
3863            let last_modified_end = last_modified_end.clone();
3864            let last_modified_start = last_modified_start.clone();
3865            let license_number = license_number.clone();
3866            let body = body.clone();
3867            async move { client.harvests_get_inactive_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
3868        }).await
3869    }
3870
3871    /// GET GetInactive V2
3872    /// Retrieves a list of inactive harvests for a specified Facility.
3873    /// 
3874    ///   Permissions Required:
3875    ///   - View Harvests
3876    ///
3877    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>> {
3878        let client = self.client.clone();
3879        let body = body.cloned();
3880        self.rate_limiter.execute(None, true, move || {
3881            let client = client.clone();
3882            let last_modified_end = last_modified_end.clone();
3883            let last_modified_start = last_modified_start.clone();
3884            let license_number = license_number.clone();
3885            let page_number = page_number.clone();
3886            let page_size = page_size.clone();
3887            let body = body.clone();
3888            async move { client.harvests_get_inactive_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
3889        }).await
3890    }
3891
3892    /// GET GetOnhold V1
3893    /// Permissions Required:
3894    ///   - View Harvests
3895    ///
3896    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>> {
3897        let client = self.client.clone();
3898        let body = body.cloned();
3899        self.rate_limiter.execute(None, true, move || {
3900            let client = client.clone();
3901            let last_modified_end = last_modified_end.clone();
3902            let last_modified_start = last_modified_start.clone();
3903            let license_number = license_number.clone();
3904            let body = body.clone();
3905            async move { client.harvests_get_onhold_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
3906        }).await
3907    }
3908
3909    /// GET GetOnhold V2
3910    /// Retrieves a list of harvests on hold for a specified Facility.
3911    /// 
3912    ///   Permissions Required:
3913    ///   - View Harvests
3914    ///
3915    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>> {
3916        let client = self.client.clone();
3917        let body = body.cloned();
3918        self.rate_limiter.execute(None, true, move || {
3919            let client = client.clone();
3920            let last_modified_end = last_modified_end.clone();
3921            let last_modified_start = last_modified_start.clone();
3922            let license_number = license_number.clone();
3923            let page_number = page_number.clone();
3924            let page_size = page_size.clone();
3925            let body = body.clone();
3926            async move { client.harvests_get_onhold_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
3927        }).await
3928    }
3929
3930    /// GET GetWaste V2
3931    /// Retrieves a list of Waste records for a specified Harvest, identified by its Harvest Id, within a Facility identified by its License Number.
3932    /// 
3933    ///   Permissions Required:
3934    ///   - View Harvests
3935    ///
3936    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>> {
3937        let client = self.client.clone();
3938        let body = body.cloned();
3939        self.rate_limiter.execute(None, true, move || {
3940            let client = client.clone();
3941            let harvest_id = harvest_id.clone();
3942            let license_number = license_number.clone();
3943            let page_number = page_number.clone();
3944            let page_size = page_size.clone();
3945            let body = body.clone();
3946            async move { client.harvests_get_waste_v2(harvest_id, license_number, page_number, page_size, body.as_ref()).await }
3947        }).await
3948    }
3949
3950    /// GET GetWasteTypes V1
3951    /// Permissions Required:
3952    ///   - None
3953    ///
3954    pub async fn harvests_get_waste_types_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
3955        let client = self.client.clone();
3956        let body = body.cloned();
3957        self.rate_limiter.execute(None, true, move || {
3958            let client = client.clone();
3959            let no = no.clone();
3960            let body = body.clone();
3961            async move { client.harvests_get_waste_types_v1(no, body.as_ref()).await }
3962        }).await
3963    }
3964
3965    /// GET GetWasteTypes V2
3966    /// Retrieves a list of Waste types for harvests.
3967    /// 
3968    ///   Permissions Required:
3969    ///   - None
3970    ///
3971    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>> {
3972        let client = self.client.clone();
3973        let body = body.cloned();
3974        self.rate_limiter.execute(None, true, move || {
3975            let client = client.clone();
3976            let page_number = page_number.clone();
3977            let page_size = page_size.clone();
3978            let body = body.clone();
3979            async move { client.harvests_get_waste_types_v2(page_number, page_size, body.as_ref()).await }
3980        }).await
3981    }
3982
3983    /// PUT UpdateFinish V2
3984    /// Marks one or more harvests as finished for the specified Facility.
3985    /// 
3986    ///   Permissions Required:
3987    ///   - View Harvests
3988    ///   - Finish/Discontinue Harvests
3989    ///
3990    pub async fn harvests_update_finish_v2(&self, license_number: Option<String>, body: Option<&Vec<HarvestsUpdateFinishV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
3991        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
3992        let client = self.client.clone();
3993        let body_val = body_val.clone();
3994        self.rate_limiter.execute(None, false, move || {
3995            let client = client.clone();
3996            let license_number = license_number.clone();
3997            let body_val = body_val.clone();
3998            async move { client.harvests_update_finish_v2(license_number, body_val.as_ref()).await }
3999        }).await
4000    }
4001
4002    /// PUT UpdateLocation V2
4003    /// Updates the Location of Harvest for a specified Facility.
4004    /// 
4005    ///   Permissions Required:
4006    ///   - View Harvests
4007    ///   - Manage Harvests
4008    ///
4009    pub async fn harvests_update_location_v2(&self, license_number: Option<String>, body: Option<&Vec<HarvestsUpdateLocationV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4010        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4011        let client = self.client.clone();
4012        let body_val = body_val.clone();
4013        self.rate_limiter.execute(None, false, move || {
4014            let client = client.clone();
4015            let license_number = license_number.clone();
4016            let body_val = body_val.clone();
4017            async move { client.harvests_update_location_v2(license_number, body_val.as_ref()).await }
4018        }).await
4019    }
4020
4021    /// PUT UpdateMove V1
4022    /// Permissions Required:
4023    ///   - View Harvests
4024    ///   - Manage Harvests
4025    ///
4026    pub async fn harvests_update_move_v1(&self, license_number: Option<String>, body: Option<&Vec<HarvestsUpdateMoveV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4027        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4028        let client = self.client.clone();
4029        let body_val = body_val.clone();
4030        self.rate_limiter.execute(None, false, move || {
4031            let client = client.clone();
4032            let license_number = license_number.clone();
4033            let body_val = body_val.clone();
4034            async move { client.harvests_update_move_v1(license_number, body_val.as_ref()).await }
4035        }).await
4036    }
4037
4038    /// PUT UpdateRename V1
4039    /// Permissions Required:
4040    ///   - View Harvests
4041    ///   - Manage Harvests
4042    ///
4043    pub async fn harvests_update_rename_v1(&self, license_number: Option<String>, body: Option<&Vec<HarvestsUpdateRenameV1RequestItem>>) -> 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.harvests_update_rename_v1(license_number, body_val.as_ref()).await }
4052        }).await
4053    }
4054
4055    /// PUT UpdateRename V2
4056    /// Renames one or more harvests for the specified Facility.
4057    /// 
4058    ///   Permissions Required:
4059    ///   - View Harvests
4060    ///   - Manage Harvests
4061    ///
4062    pub async fn harvests_update_rename_v2(&self, license_number: Option<String>, body: Option<&Vec<HarvestsUpdateRenameV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4063        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4064        let client = self.client.clone();
4065        let body_val = body_val.clone();
4066        self.rate_limiter.execute(None, false, move || {
4067            let client = client.clone();
4068            let license_number = license_number.clone();
4069            let body_val = body_val.clone();
4070            async move { client.harvests_update_rename_v2(license_number, body_val.as_ref()).await }
4071        }).await
4072    }
4073
4074    /// PUT UpdateRestoreHarvestedPlants V2
4075    /// Restores previously harvested plants to their original state for the specified Facility.
4076    /// 
4077    ///   Permissions Required:
4078    ///   - View Harvests
4079    ///   - Finish/Discontinue Harvests
4080    ///
4081    pub async fn harvests_update_restore_harvested_plants_v2(&self, license_number: Option<String>, body: Option<&Vec<HarvestsUpdateRestoreHarvestedPlantsV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4082        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4083        let client = self.client.clone();
4084        let body_val = body_val.clone();
4085        self.rate_limiter.execute(None, false, move || {
4086            let client = client.clone();
4087            let license_number = license_number.clone();
4088            let body_val = body_val.clone();
4089            async move { client.harvests_update_restore_harvested_plants_v2(license_number, body_val.as_ref()).await }
4090        }).await
4091    }
4092
4093    /// PUT UpdateUnfinish V2
4094    /// Reopens one or more previously finished harvests for the specified Facility.
4095    /// 
4096    ///   Permissions Required:
4097    ///   - View Harvests
4098    ///   - Finish/Discontinue Harvests
4099    ///
4100    pub async fn harvests_update_unfinish_v2(&self, license_number: Option<String>, body: Option<&Vec<HarvestsUpdateUnfinishV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4101        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4102        let client = self.client.clone();
4103        let body_val = body_val.clone();
4104        self.rate_limiter.execute(None, false, move || {
4105            let client = client.clone();
4106            let license_number = license_number.clone();
4107            let body_val = body_val.clone();
4108            async move { client.harvests_update_unfinish_v2(license_number, body_val.as_ref()).await }
4109        }).await
4110    }
4111
4112    /// POST CreateAdditives V1
4113    /// Permissions Required:
4114    ///   - Manage Plants Additives
4115    ///
4116    pub async fn plant_batches_create_additives_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateAdditivesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4117        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4118        let client = self.client.clone();
4119        let body_val = body_val.clone();
4120        self.rate_limiter.execute(None, false, move || {
4121            let client = client.clone();
4122            let license_number = license_number.clone();
4123            let body_val = body_val.clone();
4124            async move { client.plant_batches_create_additives_v1(license_number, body_val.as_ref()).await }
4125        }).await
4126    }
4127
4128    /// POST CreateAdditives V2
4129    /// Records Additive usage details for plant batches at a specific Facility.
4130    /// 
4131    ///   Permissions Required:
4132    ///   - Manage Plants Additives
4133    ///
4134    pub async fn plant_batches_create_additives_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateAdditivesV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4135        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4136        let client = self.client.clone();
4137        let body_val = body_val.clone();
4138        self.rate_limiter.execute(None, false, move || {
4139            let client = client.clone();
4140            let license_number = license_number.clone();
4141            let body_val = body_val.clone();
4142            async move { client.plant_batches_create_additives_v2(license_number, body_val.as_ref()).await }
4143        }).await
4144    }
4145
4146    /// POST CreateAdditivesUsingtemplate V2
4147    /// Records Additive usage for plant batches at a Facility using predefined additive templates.
4148    /// 
4149    ///   Permissions Required:
4150    ///   - Manage Plants Additives
4151    ///
4152    pub async fn plant_batches_create_additives_usingtemplate_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateAdditivesUsingtemplateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4153        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4154        let client = self.client.clone();
4155        let body_val = body_val.clone();
4156        self.rate_limiter.execute(None, false, move || {
4157            let client = client.clone();
4158            let license_number = license_number.clone();
4159            let body_val = body_val.clone();
4160            async move { client.plant_batches_create_additives_usingtemplate_v2(license_number, body_val.as_ref()).await }
4161        }).await
4162    }
4163
4164    /// POST CreateAdjust V1
4165    /// Permissions Required:
4166    ///   - View Immature Plants
4167    ///   - Manage Immature Plants Inventory
4168    ///
4169    pub async fn plant_batches_create_adjust_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateAdjustV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4170        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4171        let client = self.client.clone();
4172        let body_val = body_val.clone();
4173        self.rate_limiter.execute(None, false, move || {
4174            let client = client.clone();
4175            let license_number = license_number.clone();
4176            let body_val = body_val.clone();
4177            async move { client.plant_batches_create_adjust_v1(license_number, body_val.as_ref()).await }
4178        }).await
4179    }
4180
4181    /// POST CreateAdjust V2
4182    /// Applies Facility specific adjustments to plant batches based on submitted reasons and input data.
4183    /// 
4184    ///   Permissions Required:
4185    ///   - View Immature Plants
4186    ///   - Manage Immature Plants Inventory
4187    ///
4188    pub async fn plant_batches_create_adjust_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateAdjustV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4189        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4190        let client = self.client.clone();
4191        let body_val = body_val.clone();
4192        self.rate_limiter.execute(None, false, move || {
4193            let client = client.clone();
4194            let license_number = license_number.clone();
4195            let body_val = body_val.clone();
4196            async move { client.plant_batches_create_adjust_v2(license_number, body_val.as_ref()).await }
4197        }).await
4198    }
4199
4200    /// POST CreateChangegrowthphase V1
4201    /// Permissions Required:
4202    ///   - View Immature Plants
4203    ///   - Manage Immature Plants Inventory
4204    ///   - View Veg/Flower Plants
4205    ///   - Manage Veg/Flower Plants Inventory
4206    ///
4207    pub async fn plant_batches_create_changegrowthphase_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateChangegrowthphaseV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4208        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4209        let client = self.client.clone();
4210        let body_val = body_val.clone();
4211        self.rate_limiter.execute(None, false, move || {
4212            let client = client.clone();
4213            let license_number = license_number.clone();
4214            let body_val = body_val.clone();
4215            async move { client.plant_batches_create_changegrowthphase_v1(license_number, body_val.as_ref()).await }
4216        }).await
4217    }
4218
4219    /// POST CreateGrowthphase V2
4220    /// Updates the growth phase of plants at a specified Facility based on tracking information.
4221    /// 
4222    ///   Permissions Required:
4223    ///   - View Immature Plants
4224    ///   - Manage Immature Plants Inventory
4225    ///   - View Veg/Flower Plants
4226    ///   - Manage Veg/Flower Plants Inventory
4227    ///
4228    pub async fn plant_batches_create_growthphase_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateGrowthphaseV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4229        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4230        let client = self.client.clone();
4231        let body_val = body_val.clone();
4232        self.rate_limiter.execute(None, false, move || {
4233            let client = client.clone();
4234            let license_number = license_number.clone();
4235            let body_val = body_val.clone();
4236            async move { client.plant_batches_create_growthphase_v2(license_number, body_val.as_ref()).await }
4237        }).await
4238    }
4239
4240    /// POST CreatePackage V2
4241    /// Creates packages from plant batches at a Facility, with optional support for packaging from mother plants.
4242    /// 
4243    ///   Permissions Required:
4244    ///   - View Immature Plants
4245    ///   - Manage Immature Plants Inventory
4246    ///   - View Packages
4247    ///   - Create/Submit/Discontinue Packages
4248    ///
4249    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>> {
4250        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4251        let client = self.client.clone();
4252        let body_val = body_val.clone();
4253        self.rate_limiter.execute(None, false, move || {
4254            let client = client.clone();
4255            let is_from_mother_plant = is_from_mother_plant.clone();
4256            let license_number = license_number.clone();
4257            let body_val = body_val.clone();
4258            async move { client.plant_batches_create_package_v2(is_from_mother_plant, license_number, body_val.as_ref()).await }
4259        }).await
4260    }
4261
4262    /// POST CreatePackageFrommotherplant V1
4263    /// Permissions Required:
4264    ///   - View Immature Plants
4265    ///   - Manage Immature Plants Inventory
4266    ///   - View Packages
4267    ///   - Create/Submit/Discontinue Packages
4268    ///
4269    pub async fn plant_batches_create_package_frommotherplant_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreatePackageFrommotherplantV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4270        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4271        let client = self.client.clone();
4272        let body_val = body_val.clone();
4273        self.rate_limiter.execute(None, false, move || {
4274            let client = client.clone();
4275            let license_number = license_number.clone();
4276            let body_val = body_val.clone();
4277            async move { client.plant_batches_create_package_frommotherplant_v1(license_number, body_val.as_ref()).await }
4278        }).await
4279    }
4280
4281    /// POST CreatePackageFrommotherplant V2
4282    /// Creates packages from mother plants at the specified Facility.
4283    /// 
4284    ///   Permissions Required:
4285    ///   - View Immature Plants
4286    ///   - Manage Immature Plants Inventory
4287    ///   - View Packages
4288    ///   - Create/Submit/Discontinue Packages
4289    ///
4290    pub async fn plant_batches_create_package_frommotherplant_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreatePackageFrommotherplantV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4291        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4292        let client = self.client.clone();
4293        let body_val = body_val.clone();
4294        self.rate_limiter.execute(None, false, move || {
4295            let client = client.clone();
4296            let license_number = license_number.clone();
4297            let body_val = body_val.clone();
4298            async move { client.plant_batches_create_package_frommotherplant_v2(license_number, body_val.as_ref()).await }
4299        }).await
4300    }
4301
4302    /// POST CreatePlantings V2
4303    /// Creates new plantings for a Facility by generating plant batches based on provided planting details.
4304    /// 
4305    ///   Permissions Required:
4306    ///   - View Immature Plants
4307    ///   - Manage Immature Plants Inventory
4308    ///
4309    pub async fn plant_batches_create_plantings_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreatePlantingsV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4310        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4311        let client = self.client.clone();
4312        let body_val = body_val.clone();
4313        self.rate_limiter.execute(None, false, move || {
4314            let client = client.clone();
4315            let license_number = license_number.clone();
4316            let body_val = body_val.clone();
4317            async move { client.plant_batches_create_plantings_v2(license_number, body_val.as_ref()).await }
4318        }).await
4319    }
4320
4321    /// POST CreateSplit V1
4322    /// Permissions Required:
4323    ///   - View Immature Plants
4324    ///   - Manage Immature Plants Inventory
4325    ///
4326    pub async fn plant_batches_create_split_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateSplitV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4327        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4328        let client = self.client.clone();
4329        let body_val = body_val.clone();
4330        self.rate_limiter.execute(None, false, move || {
4331            let client = client.clone();
4332            let license_number = license_number.clone();
4333            let body_val = body_val.clone();
4334            async move { client.plant_batches_create_split_v1(license_number, body_val.as_ref()).await }
4335        }).await
4336    }
4337
4338    /// POST CreateSplit V2
4339    /// Splits an existing Plant Batch into multiple groups at the specified Facility.
4340    /// 
4341    ///   Permissions Required:
4342    ///   - View Immature Plants
4343    ///   - Manage Immature Plants Inventory
4344    ///
4345    pub async fn plant_batches_create_split_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateSplitV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4346        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4347        let client = self.client.clone();
4348        let body_val = body_val.clone();
4349        self.rate_limiter.execute(None, false, move || {
4350            let client = client.clone();
4351            let license_number = license_number.clone();
4352            let body_val = body_val.clone();
4353            async move { client.plant_batches_create_split_v2(license_number, body_val.as_ref()).await }
4354        }).await
4355    }
4356
4357    /// POST CreateWaste V1
4358    /// Permissions Required:
4359    ///   - Manage Plants Waste
4360    ///
4361    pub async fn plant_batches_create_waste_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateWasteV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4362        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4363        let client = self.client.clone();
4364        let body_val = body_val.clone();
4365        self.rate_limiter.execute(None, false, move || {
4366            let client = client.clone();
4367            let license_number = license_number.clone();
4368            let body_val = body_val.clone();
4369            async move { client.plant_batches_create_waste_v1(license_number, body_val.as_ref()).await }
4370        }).await
4371    }
4372
4373    /// POST CreateWaste V2
4374    /// Records waste information for plant batches based on the submitted data for the specified Facility.
4375    /// 
4376    ///   Permissions Required:
4377    ///   - Manage Plants Waste
4378    ///
4379    pub async fn plant_batches_create_waste_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateWasteV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4380        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4381        let client = self.client.clone();
4382        let body_val = body_val.clone();
4383        self.rate_limiter.execute(None, false, move || {
4384            let client = client.clone();
4385            let license_number = license_number.clone();
4386            let body_val = body_val.clone();
4387            async move { client.plant_batches_create_waste_v2(license_number, body_val.as_ref()).await }
4388        }).await
4389    }
4390
4391    /// POST Createpackages V1
4392    /// Permissions Required:
4393    ///   - View Immature Plants
4394    ///   - Manage Immature Plants Inventory
4395    ///   - View Packages
4396    ///   - Create/Submit/Discontinue Packages
4397    ///
4398    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>> {
4399        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4400        let client = self.client.clone();
4401        let body_val = body_val.clone();
4402        self.rate_limiter.execute(None, false, move || {
4403            let client = client.clone();
4404            let is_from_mother_plant = is_from_mother_plant.clone();
4405            let license_number = license_number.clone();
4406            let body_val = body_val.clone();
4407            async move { client.plant_batches_createpackages_v1(is_from_mother_plant, license_number, body_val.as_ref()).await }
4408        }).await
4409    }
4410
4411    /// POST Createplantings V1
4412    /// Permissions Required:
4413    ///   - View Immature Plants
4414    ///   - Manage Immature Plants Inventory
4415    ///
4416    pub async fn plant_batches_createplantings_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesCreateplantingsV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4417        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4418        let client = self.client.clone();
4419        let body_val = body_val.clone();
4420        self.rate_limiter.execute(None, false, move || {
4421            let client = client.clone();
4422            let license_number = license_number.clone();
4423            let body_val = body_val.clone();
4424            async move { client.plant_batches_createplantings_v1(license_number, body_val.as_ref()).await }
4425        }).await
4426    }
4427
4428    /// DELETE Delete V1
4429    /// Permissions Required:
4430    ///   - View Immature Plants
4431    ///   - Destroy Immature Plants
4432    ///
4433    pub async fn plant_batches_delete_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4434        let client = self.client.clone();
4435        let body = body.cloned();
4436        self.rate_limiter.execute(None, false, move || {
4437            let client = client.clone();
4438            let license_number = license_number.clone();
4439            let body = body.clone();
4440            async move { client.plant_batches_delete_v1(license_number, body.as_ref()).await }
4441        }).await
4442    }
4443
4444    /// DELETE Delete V2
4445    /// Completes the destruction of plant batches based on the provided input data.
4446    /// 
4447    ///   Permissions Required:
4448    ///   - View Immature Plants
4449    ///   - Destroy Immature Plants
4450    ///
4451    pub async fn plant_batches_delete_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4452        let client = self.client.clone();
4453        let body = body.cloned();
4454        self.rate_limiter.execute(None, false, move || {
4455            let client = client.clone();
4456            let license_number = license_number.clone();
4457            let body = body.clone();
4458            async move { client.plant_batches_delete_v2(license_number, body.as_ref()).await }
4459        }).await
4460    }
4461
4462    /// GET Get V1
4463    /// Permissions Required:
4464    ///   - View Immature Plants
4465    ///
4466    pub async fn plant_batches_get_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4467        let id = id.to_string();
4468        let client = self.client.clone();
4469        let body = body.cloned();
4470        self.rate_limiter.execute(None, true, move || {
4471            let client = client.clone();
4472            let id = id.clone();
4473            let license_number = license_number.clone();
4474            let body = body.clone();
4475            async move { client.plant_batches_get_v1(&id, license_number, body.as_ref()).await }
4476        }).await
4477    }
4478
4479    /// GET Get V2
4480    /// Retrieves a Plant Batch by Id.
4481    /// 
4482    ///   Permissions Required:
4483    ///   - View Immature Plants
4484    ///
4485    pub async fn plant_batches_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4486        let id = id.to_string();
4487        let client = self.client.clone();
4488        let body = body.cloned();
4489        self.rate_limiter.execute(None, true, move || {
4490            let client = client.clone();
4491            let id = id.clone();
4492            let license_number = license_number.clone();
4493            let body = body.clone();
4494            async move { client.plant_batches_get_v2(&id, license_number, body.as_ref()).await }
4495        }).await
4496    }
4497
4498    /// GET GetActive V1
4499    /// Permissions Required:
4500    ///   - View Immature Plants
4501    ///
4502    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>> {
4503        let client = self.client.clone();
4504        let body = body.cloned();
4505        self.rate_limiter.execute(None, true, move || {
4506            let client = client.clone();
4507            let last_modified_end = last_modified_end.clone();
4508            let last_modified_start = last_modified_start.clone();
4509            let license_number = license_number.clone();
4510            let body = body.clone();
4511            async move { client.plant_batches_get_active_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
4512        }).await
4513    }
4514
4515    /// GET GetActive V2
4516    /// Retrieves a list of active plant batches for the specified Facility, optionally filtered by last modified date.
4517    /// 
4518    ///   Permissions Required:
4519    ///   - View Immature Plants
4520    ///
4521    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>> {
4522        let client = self.client.clone();
4523        let body = body.cloned();
4524        self.rate_limiter.execute(None, true, move || {
4525            let client = client.clone();
4526            let last_modified_end = last_modified_end.clone();
4527            let last_modified_start = last_modified_start.clone();
4528            let license_number = license_number.clone();
4529            let page_number = page_number.clone();
4530            let page_size = page_size.clone();
4531            let body = body.clone();
4532            async move { client.plant_batches_get_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
4533        }).await
4534    }
4535
4536    /// GET GetInactive V1
4537    /// Permissions Required:
4538    ///   - View Immature Plants
4539    ///
4540    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>> {
4541        let client = self.client.clone();
4542        let body = body.cloned();
4543        self.rate_limiter.execute(None, true, move || {
4544            let client = client.clone();
4545            let last_modified_end = last_modified_end.clone();
4546            let last_modified_start = last_modified_start.clone();
4547            let license_number = license_number.clone();
4548            let body = body.clone();
4549            async move { client.plant_batches_get_inactive_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
4550        }).await
4551    }
4552
4553    /// GET GetInactive V2
4554    /// Retrieves a list of inactive plant batches for the specified Facility, optionally filtered by last modified date.
4555    /// 
4556    ///   Permissions Required:
4557    ///   - View Immature Plants
4558    ///
4559    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>> {
4560        let client = self.client.clone();
4561        let body = body.cloned();
4562        self.rate_limiter.execute(None, true, move || {
4563            let client = client.clone();
4564            let last_modified_end = last_modified_end.clone();
4565            let last_modified_start = last_modified_start.clone();
4566            let license_number = license_number.clone();
4567            let page_number = page_number.clone();
4568            let page_size = page_size.clone();
4569            let body = body.clone();
4570            async move { client.plant_batches_get_inactive_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
4571        }).await
4572    }
4573
4574    /// GET GetTypes V1
4575    /// Permissions Required:
4576    ///   - None
4577    ///
4578    pub async fn plant_batches_get_types_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4579        let client = self.client.clone();
4580        let body = body.cloned();
4581        self.rate_limiter.execute(None, true, move || {
4582            let client = client.clone();
4583            let no = no.clone();
4584            let body = body.clone();
4585            async move { client.plant_batches_get_types_v1(no, body.as_ref()).await }
4586        }).await
4587    }
4588
4589    /// GET GetTypes V2
4590    /// Retrieves a list of plant batch types.
4591    /// 
4592    ///   Permissions Required:
4593    ///   - None
4594    ///
4595    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>> {
4596        let client = self.client.clone();
4597        let body = body.cloned();
4598        self.rate_limiter.execute(None, true, move || {
4599            let client = client.clone();
4600            let page_number = page_number.clone();
4601            let page_size = page_size.clone();
4602            let body = body.clone();
4603            async move { client.plant_batches_get_types_v2(page_number, page_size, body.as_ref()).await }
4604        }).await
4605    }
4606
4607    /// GET GetWaste V2
4608    /// Retrieves waste details associated with plant batches at a specified Facility.
4609    /// 
4610    ///   Permissions Required:
4611    ///   - View Plants Waste
4612    ///
4613    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>> {
4614        let client = self.client.clone();
4615        let body = body.cloned();
4616        self.rate_limiter.execute(None, true, move || {
4617            let client = client.clone();
4618            let license_number = license_number.clone();
4619            let page_number = page_number.clone();
4620            let page_size = page_size.clone();
4621            let body = body.clone();
4622            async move { client.plant_batches_get_waste_v2(license_number, page_number, page_size, body.as_ref()).await }
4623        }).await
4624    }
4625
4626    /// GET GetWasteReasons V1
4627    /// Permissions Required:
4628    ///   - None
4629    ///
4630    pub async fn plant_batches_get_waste_reasons_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4631        let client = self.client.clone();
4632        let body = body.cloned();
4633        self.rate_limiter.execute(None, true, move || {
4634            let client = client.clone();
4635            let license_number = license_number.clone();
4636            let body = body.clone();
4637            async move { client.plant_batches_get_waste_reasons_v1(license_number, body.as_ref()).await }
4638        }).await
4639    }
4640
4641    /// GET GetWasteReasons V2
4642    /// Retrieves a list of valid waste reasons associated with immature plant batches for the specified Facility.
4643    /// 
4644    ///   Permissions Required:
4645    ///   - None
4646    ///
4647    pub async fn plant_batches_get_waste_reasons_v2(&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.plant_batches_get_waste_reasons_v2(license_number, body.as_ref()).await }
4655        }).await
4656    }
4657
4658    /// PUT UpdateLocation V2
4659    /// Moves one or more plant batches to new locations with in a specified Facility.
4660    /// 
4661    ///   Permissions Required:
4662    ///   - View Immature Plants
4663    ///   - Manage Immature Plants
4664    ///
4665    pub async fn plant_batches_update_location_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesUpdateLocationV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4666        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4667        let client = self.client.clone();
4668        let body_val = body_val.clone();
4669        self.rate_limiter.execute(None, false, move || {
4670            let client = client.clone();
4671            let license_number = license_number.clone();
4672            let body_val = body_val.clone();
4673            async move { client.plant_batches_update_location_v2(license_number, body_val.as_ref()).await }
4674        }).await
4675    }
4676
4677    /// PUT UpdateMoveplantbatches V1
4678    /// Permissions Required:
4679    ///   - View Immature Plants
4680    ///
4681    pub async fn plant_batches_update_moveplantbatches_v1(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesUpdateMoveplantbatchesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4682        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4683        let client = self.client.clone();
4684        let body_val = body_val.clone();
4685        self.rate_limiter.execute(None, false, move || {
4686            let client = client.clone();
4687            let license_number = license_number.clone();
4688            let body_val = body_val.clone();
4689            async move { client.plant_batches_update_moveplantbatches_v1(license_number, body_val.as_ref()).await }
4690        }).await
4691    }
4692
4693    /// PUT UpdateName V2
4694    /// Renames plant batches at a specified Facility.
4695    /// 
4696    ///   Permissions Required:
4697    ///   - View Veg/Flower Plants
4698    ///   - Manage Veg/Flower Plants Inventory
4699    ///
4700    pub async fn plant_batches_update_name_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesUpdateNameV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4701        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4702        let client = self.client.clone();
4703        let body_val = body_val.clone();
4704        self.rate_limiter.execute(None, false, move || {
4705            let client = client.clone();
4706            let license_number = license_number.clone();
4707            let body_val = body_val.clone();
4708            async move { client.plant_batches_update_name_v2(license_number, body_val.as_ref()).await }
4709        }).await
4710    }
4711
4712    /// PUT UpdateStrain V2
4713    /// Changes the strain of plant batches at a specified Facility.
4714    /// 
4715    ///   Permissions Required:
4716    ///   - View Veg/Flower Plants
4717    ///   - Manage Veg/Flower Plants Inventory
4718    ///
4719    pub async fn plant_batches_update_strain_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesUpdateStrainV2RequestItem>>) -> 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.plant_batches_update_strain_v2(license_number, body_val.as_ref()).await }
4728        }).await
4729    }
4730
4731    /// PUT UpdateTag V2
4732    /// Replaces tags for plant batches at a specified Facility.
4733    /// 
4734    ///   Permissions Required:
4735    ///   - View Veg/Flower Plants
4736    ///   - Manage Veg/Flower Plants Inventory
4737    ///
4738    pub async fn plant_batches_update_tag_v2(&self, license_number: Option<String>, body: Option<&Vec<PlantBatchesUpdateTagV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4739        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4740        let client = self.client.clone();
4741        let body_val = body_val.clone();
4742        self.rate_limiter.execute(None, false, move || {
4743            let client = client.clone();
4744            let license_number = license_number.clone();
4745            let body_val = body_val.clone();
4746            async move { client.plant_batches_update_tag_v2(license_number, body_val.as_ref()).await }
4747        }).await
4748    }
4749
4750    /// GET GetPackageAvailable V2
4751    /// Returns a list of available package tags. NOTE: This is a premium endpoint.
4752    /// 
4753    ///   Permissions Required:
4754    ///   - Manage Tags
4755    ///
4756    pub async fn tags_get_package_available_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4757        let client = self.client.clone();
4758        let body = body.cloned();
4759        self.rate_limiter.execute(None, true, move || {
4760            let client = client.clone();
4761            let license_number = license_number.clone();
4762            let body = body.clone();
4763            async move { client.tags_get_package_available_v2(license_number, body.as_ref()).await }
4764        }).await
4765    }
4766
4767    /// GET GetPlantAvailable V2
4768    /// Returns a list of available plant tags. NOTE: This is a premium endpoint.
4769    /// 
4770    ///   Permissions Required:
4771    ///   - Manage Tags
4772    ///
4773    pub async fn tags_get_plant_available_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4774        let client = self.client.clone();
4775        let body = body.cloned();
4776        self.rate_limiter.execute(None, true, move || {
4777            let client = client.clone();
4778            let license_number = license_number.clone();
4779            let body = body.clone();
4780            async move { client.tags_get_plant_available_v2(license_number, body.as_ref()).await }
4781        }).await
4782    }
4783
4784    /// GET GetStaged V2
4785    /// Returns a list of staged tags. NOTE: This is a premium endpoint.
4786    /// 
4787    ///   Permissions Required:
4788    ///   - Manage Tags
4789    ///   - RetailId.AllowPackageStaging Key Value enabled
4790    ///
4791    pub async fn tags_get_staged_v2(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4792        let client = self.client.clone();
4793        let body = body.cloned();
4794        self.rate_limiter.execute(None, true, move || {
4795            let client = client.clone();
4796            let license_number = license_number.clone();
4797            let body = body.clone();
4798            async move { client.tags_get_staged_v2(license_number, body.as_ref()).await }
4799        }).await
4800    }
4801
4802    /// POST CreateExternalIncoming V1
4803    /// Permissions Required:
4804    ///   - Transfers
4805    ///
4806    pub async fn transfers_create_external_incoming_v1(&self, license_number: Option<String>, body: Option<&Vec<TransfersCreateExternalIncomingV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4807        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4808        let client = self.client.clone();
4809        let body_val = body_val.clone();
4810        self.rate_limiter.execute(None, false, move || {
4811            let client = client.clone();
4812            let license_number = license_number.clone();
4813            let body_val = body_val.clone();
4814            async move { client.transfers_create_external_incoming_v1(license_number, body_val.as_ref()).await }
4815        }).await
4816    }
4817
4818    /// POST CreateExternalIncoming V2
4819    /// Creates external incoming shipment plans for a Facility.
4820    /// 
4821    ///   Permissions Required:
4822    ///   - Manage Transfers
4823    ///
4824    pub async fn transfers_create_external_incoming_v2(&self, license_number: Option<String>, body: Option<&Vec<TransfersCreateExternalIncomingV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4825        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4826        let client = self.client.clone();
4827        let body_val = body_val.clone();
4828        self.rate_limiter.execute(None, false, move || {
4829            let client = client.clone();
4830            let license_number = license_number.clone();
4831            let body_val = body_val.clone();
4832            async move { client.transfers_create_external_incoming_v2(license_number, body_val.as_ref()).await }
4833        }).await
4834    }
4835
4836    /// POST CreateTemplates V1
4837    /// Permissions Required:
4838    ///   - Transfer Templates
4839    ///
4840    pub async fn transfers_create_templates_v1(&self, license_number: Option<String>, body: Option<&Vec<TransfersCreateTemplatesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4841        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4842        let client = self.client.clone();
4843        let body_val = body_val.clone();
4844        self.rate_limiter.execute(None, false, move || {
4845            let client = client.clone();
4846            let license_number = license_number.clone();
4847            let body_val = body_val.clone();
4848            async move { client.transfers_create_templates_v1(license_number, body_val.as_ref()).await }
4849        }).await
4850    }
4851
4852    /// POST CreateTemplatesOutgoing V2
4853    /// Creates new transfer templates for a Facility.
4854    /// 
4855    ///   Permissions Required:
4856    ///   - Manage Transfer Templates
4857    ///
4858    pub async fn transfers_create_templates_outgoing_v2(&self, license_number: Option<String>, body: Option<&Vec<TransfersCreateTemplatesOutgoingV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
4859        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
4860        let client = self.client.clone();
4861        let body_val = body_val.clone();
4862        self.rate_limiter.execute(None, false, move || {
4863            let client = client.clone();
4864            let license_number = license_number.clone();
4865            let body_val = body_val.clone();
4866            async move { client.transfers_create_templates_outgoing_v2(license_number, body_val.as_ref()).await }
4867        }).await
4868    }
4869
4870    /// DELETE DeleteExternalIncoming V1
4871    /// Permissions Required:
4872    ///   - Transfers
4873    ///
4874    pub async fn transfers_delete_external_incoming_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4875        let id = id.to_string();
4876        let client = self.client.clone();
4877        let body = body.cloned();
4878        self.rate_limiter.execute(None, false, move || {
4879            let client = client.clone();
4880            let id = id.clone();
4881            let license_number = license_number.clone();
4882            let body = body.clone();
4883            async move { client.transfers_delete_external_incoming_v1(&id, license_number, body.as_ref()).await }
4884        }).await
4885    }
4886
4887    /// DELETE DeleteExternalIncoming V2
4888    /// Voids an external incoming shipment plan for a Facility.
4889    /// 
4890    ///   Permissions Required:
4891    ///   - Manage Transfers
4892    ///
4893    pub async fn transfers_delete_external_incoming_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4894        let id = id.to_string();
4895        let client = self.client.clone();
4896        let body = body.cloned();
4897        self.rate_limiter.execute(None, false, move || {
4898            let client = client.clone();
4899            let id = id.clone();
4900            let license_number = license_number.clone();
4901            let body = body.clone();
4902            async move { client.transfers_delete_external_incoming_v2(&id, license_number, body.as_ref()).await }
4903        }).await
4904    }
4905
4906    /// DELETE DeleteTemplates V1
4907    /// Permissions Required:
4908    ///   - Transfer Templates
4909    ///
4910    pub async fn transfers_delete_templates_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4911        let id = id.to_string();
4912        let client = self.client.clone();
4913        let body = body.cloned();
4914        self.rate_limiter.execute(None, false, move || {
4915            let client = client.clone();
4916            let id = id.clone();
4917            let license_number = license_number.clone();
4918            let body = body.clone();
4919            async move { client.transfers_delete_templates_v1(&id, license_number, body.as_ref()).await }
4920        }).await
4921    }
4922
4923    /// DELETE DeleteTemplatesOutgoing V2
4924    /// Archives a transfer template for a Facility.
4925    /// 
4926    ///   Permissions Required:
4927    ///   - Manage Transfer Templates
4928    ///
4929    pub async fn transfers_delete_templates_outgoing_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4930        let id = id.to_string();
4931        let client = self.client.clone();
4932        let body = body.cloned();
4933        self.rate_limiter.execute(None, false, move || {
4934            let client = client.clone();
4935            let id = id.clone();
4936            let license_number = license_number.clone();
4937            let body = body.clone();
4938            async move { client.transfers_delete_templates_outgoing_v2(&id, license_number, body.as_ref()).await }
4939        }).await
4940    }
4941
4942    /// GET GetDeliveriesPackagesStates V1
4943    /// Permissions Required:
4944    ///   - None
4945    ///
4946    pub async fn transfers_get_deliveries_packages_states_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
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 no = no.clone();
4952            let body = body.clone();
4953            async move { client.transfers_get_deliveries_packages_states_v1(no, body.as_ref()).await }
4954        }).await
4955    }
4956
4957    /// GET GetDeliveriesPackagesStates V2
4958    /// Returns a list of available shipment Package states.
4959    /// 
4960    ///   Permissions Required:
4961    ///   - None
4962    ///
4963    pub async fn transfers_get_deliveries_packages_states_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4964        let client = self.client.clone();
4965        let body = body.cloned();
4966        self.rate_limiter.execute(None, true, move || {
4967            let client = client.clone();
4968            let no = no.clone();
4969            let body = body.clone();
4970            async move { client.transfers_get_deliveries_packages_states_v2(no, body.as_ref()).await }
4971        }).await
4972    }
4973
4974    /// GET GetDelivery V1
4975    /// Please note: that the {id} parameter above represents a Shipment Plan ID.
4976    /// 
4977    ///   Permissions Required:
4978    ///   - Transfers
4979    ///
4980    pub async fn transfers_get_delivery_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
4981        let id = id.to_string();
4982        let client = self.client.clone();
4983        let body = body.cloned();
4984        self.rate_limiter.execute(None, true, move || {
4985            let client = client.clone();
4986            let id = id.clone();
4987            let no = no.clone();
4988            let body = body.clone();
4989            async move { client.transfers_get_delivery_v1(&id, no, body.as_ref()).await }
4990        }).await
4991    }
4992
4993    /// GET GetDelivery V2
4994    /// Retrieves a list of shipment deliveries for a given Transfer Id. Please note: The {id} parameter above represents a Transfer Id.
4995    /// 
4996    ///   Permissions Required:
4997    ///   - Manage Transfers
4998    ///   - View Transfers
4999    ///
5000    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>> {
5001        let id = id.to_string();
5002        let client = self.client.clone();
5003        let body = body.cloned();
5004        self.rate_limiter.execute(None, true, move || {
5005            let client = client.clone();
5006            let id = id.clone();
5007            let page_number = page_number.clone();
5008            let page_size = page_size.clone();
5009            let body = body.clone();
5010            async move { client.transfers_get_delivery_v2(&id, page_number, page_size, body.as_ref()).await }
5011        }).await
5012    }
5013
5014    /// GET GetDeliveryPackage V1
5015    /// Please note: The {id} parameter above represents a Transfer Delivery ID, not a Manifest Number.
5016    /// 
5017    ///   Permissions Required:
5018    ///   - Transfers
5019    ///
5020    pub async fn transfers_get_delivery_package_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5021        let id = id.to_string();
5022        let client = self.client.clone();
5023        let body = body.cloned();
5024        self.rate_limiter.execute(None, true, move || {
5025            let client = client.clone();
5026            let id = id.clone();
5027            let no = no.clone();
5028            let body = body.clone();
5029            async move { client.transfers_get_delivery_package_v1(&id, no, body.as_ref()).await }
5030        }).await
5031    }
5032
5033    /// GET GetDeliveryPackage V2
5034    /// 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.
5035    /// 
5036    ///   Permissions Required:
5037    ///   - Manage Transfers
5038    ///   - View Transfers
5039    ///
5040    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>> {
5041        let id = id.to_string();
5042        let client = self.client.clone();
5043        let body = body.cloned();
5044        self.rate_limiter.execute(None, true, move || {
5045            let client = client.clone();
5046            let id = id.clone();
5047            let page_number = page_number.clone();
5048            let page_size = page_size.clone();
5049            let body = body.clone();
5050            async move { client.transfers_get_delivery_package_v2(&id, page_number, page_size, body.as_ref()).await }
5051        }).await
5052    }
5053
5054    /// GET GetDeliveryPackageRequiredlabtestbatches V1
5055    /// Please note: The {id} parameter above represents a Transfer Delivery Package ID, not a Manifest Number.
5056    /// 
5057    ///   Permissions Required:
5058    ///   - Transfers
5059    ///
5060    pub async fn transfers_get_delivery_package_requiredlabtestbatches_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5061        let id = id.to_string();
5062        let client = self.client.clone();
5063        let body = body.cloned();
5064        self.rate_limiter.execute(None, true, move || {
5065            let client = client.clone();
5066            let id = id.clone();
5067            let no = no.clone();
5068            let body = body.clone();
5069            async move { client.transfers_get_delivery_package_requiredlabtestbatches_v1(&id, no, body.as_ref()).await }
5070        }).await
5071    }
5072
5073    /// GET GetDeliveryPackageRequiredlabtestbatches V2
5074    /// 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.
5075    /// 
5076    ///   Permissions Required:
5077    ///   - Manage Transfers
5078    ///   - View Transfers
5079    ///
5080    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>> {
5081        let id = id.to_string();
5082        let client = self.client.clone();
5083        let body = body.cloned();
5084        self.rate_limiter.execute(None, true, move || {
5085            let client = client.clone();
5086            let id = id.clone();
5087            let page_number = page_number.clone();
5088            let page_size = page_size.clone();
5089            let body = body.clone();
5090            async move { client.transfers_get_delivery_package_requiredlabtestbatches_v2(&id, page_number, page_size, body.as_ref()).await }
5091        }).await
5092    }
5093
5094    /// GET GetDeliveryPackageWholesale V1
5095    /// Please note: The {id} parameter above represents a Transfer Delivery ID, not a Manifest Number.
5096    /// 
5097    ///   Permissions Required:
5098    ///   - Transfers
5099    ///
5100    pub async fn transfers_get_delivery_package_wholesale_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5101        let id = id.to_string();
5102        let client = self.client.clone();
5103        let body = body.cloned();
5104        self.rate_limiter.execute(None, true, move || {
5105            let client = client.clone();
5106            let id = id.clone();
5107            let no = no.clone();
5108            let body = body.clone();
5109            async move { client.transfers_get_delivery_package_wholesale_v1(&id, no, body.as_ref()).await }
5110        }).await
5111    }
5112
5113    /// GET GetDeliveryPackageWholesale V2
5114    /// 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.
5115    /// 
5116    ///   Permissions Required:
5117    ///   - Manage Transfers
5118    ///   - View Transfers
5119    ///
5120    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>> {
5121        let id = id.to_string();
5122        let client = self.client.clone();
5123        let body = body.cloned();
5124        self.rate_limiter.execute(None, true, move || {
5125            let client = client.clone();
5126            let id = id.clone();
5127            let page_number = page_number.clone();
5128            let page_size = page_size.clone();
5129            let body = body.clone();
5130            async move { client.transfers_get_delivery_package_wholesale_v2(&id, page_number, page_size, body.as_ref()).await }
5131        }).await
5132    }
5133
5134    /// GET GetDeliveryTransporters V1
5135    /// Please note: that the {id} parameter above represents a Shipment Delivery ID.
5136    /// 
5137    ///   Permissions Required:
5138    ///   - Transfers
5139    ///
5140    pub async fn transfers_get_delivery_transporters_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5141        let id = id.to_string();
5142        let client = self.client.clone();
5143        let body = body.cloned();
5144        self.rate_limiter.execute(None, true, move || {
5145            let client = client.clone();
5146            let id = id.clone();
5147            let no = no.clone();
5148            let body = body.clone();
5149            async move { client.transfers_get_delivery_transporters_v1(&id, no, body.as_ref()).await }
5150        }).await
5151    }
5152
5153    /// GET GetDeliveryTransporters V2
5154    /// 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.
5155    /// 
5156    ///   Permissions Required:
5157    ///   - Manage Transfers
5158    ///   - View Transfers
5159    ///
5160    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>> {
5161        let id = id.to_string();
5162        let client = self.client.clone();
5163        let body = body.cloned();
5164        self.rate_limiter.execute(None, true, move || {
5165            let client = client.clone();
5166            let id = id.clone();
5167            let page_number = page_number.clone();
5168            let page_size = page_size.clone();
5169            let body = body.clone();
5170            async move { client.transfers_get_delivery_transporters_v2(&id, page_number, page_size, body.as_ref()).await }
5171        }).await
5172    }
5173
5174    /// GET GetDeliveryTransportersDetails V1
5175    /// Please note: The {id} parameter above represents a Shipment Delivery ID.
5176    /// 
5177    ///   Permissions Required:
5178    ///   - Transfers
5179    ///
5180    pub async fn transfers_get_delivery_transporters_details_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5181        let id = id.to_string();
5182        let client = self.client.clone();
5183        let body = body.cloned();
5184        self.rate_limiter.execute(None, true, move || {
5185            let client = client.clone();
5186            let id = id.clone();
5187            let no = no.clone();
5188            let body = body.clone();
5189            async move { client.transfers_get_delivery_transporters_details_v1(&id, no, body.as_ref()).await }
5190        }).await
5191    }
5192
5193    /// GET GetDeliveryTransportersDetails V2
5194    /// 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.
5195    /// 
5196    ///   Permissions Required:
5197    ///   - Manage Transfers
5198    ///   - View Transfers
5199    ///
5200    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>> {
5201        let id = id.to_string();
5202        let client = self.client.clone();
5203        let body = body.cloned();
5204        self.rate_limiter.execute(None, true, move || {
5205            let client = client.clone();
5206            let id = id.clone();
5207            let page_number = page_number.clone();
5208            let page_size = page_size.clone();
5209            let body = body.clone();
5210            async move { client.transfers_get_delivery_transporters_details_v2(&id, page_number, page_size, body.as_ref()).await }
5211        }).await
5212    }
5213
5214    /// GET GetHub V2
5215    /// Retrieves a list of transfer hub shipments for a Facility, filtered by either last modified or estimated arrival date range.
5216    /// 
5217    ///   Permissions Required:
5218    ///   - Manage Transfers
5219    ///   - View Transfers
5220    ///
5221    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>> {
5222        let client = self.client.clone();
5223        let body = body.cloned();
5224        self.rate_limiter.execute(None, true, move || {
5225            let client = client.clone();
5226            let estimated_arrival_end = estimated_arrival_end.clone();
5227            let estimated_arrival_start = estimated_arrival_start.clone();
5228            let last_modified_end = last_modified_end.clone();
5229            let last_modified_start = last_modified_start.clone();
5230            let license_number = license_number.clone();
5231            let page_number = page_number.clone();
5232            let page_size = page_size.clone();
5233            let body = body.clone();
5234            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 }
5235        }).await
5236    }
5237
5238    /// GET GetIncoming V1
5239    /// Permissions Required:
5240    ///   - Transfers
5241    ///
5242    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>> {
5243        let client = self.client.clone();
5244        let body = body.cloned();
5245        self.rate_limiter.execute(None, true, move || {
5246            let client = client.clone();
5247            let last_modified_end = last_modified_end.clone();
5248            let last_modified_start = last_modified_start.clone();
5249            let license_number = license_number.clone();
5250            let body = body.clone();
5251            async move { client.transfers_get_incoming_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
5252        }).await
5253    }
5254
5255    /// GET GetIncoming V2
5256    /// Retrieves a list of incoming shipments for a Facility, optionally filtered by last modified date range.
5257    /// 
5258    ///   Permissions Required:
5259    ///   - Manage Transfers
5260    ///   - View Transfers
5261    ///
5262    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>> {
5263        let client = self.client.clone();
5264        let body = body.cloned();
5265        self.rate_limiter.execute(None, true, move || {
5266            let client = client.clone();
5267            let last_modified_end = last_modified_end.clone();
5268            let last_modified_start = last_modified_start.clone();
5269            let license_number = license_number.clone();
5270            let page_number = page_number.clone();
5271            let page_size = page_size.clone();
5272            let body = body.clone();
5273            async move { client.transfers_get_incoming_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
5274        }).await
5275    }
5276
5277    /// GET GetOutgoing V1
5278    /// Permissions Required:
5279    ///   - Transfers
5280    ///
5281    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>> {
5282        let client = self.client.clone();
5283        let body = body.cloned();
5284        self.rate_limiter.execute(None, true, move || {
5285            let client = client.clone();
5286            let last_modified_end = last_modified_end.clone();
5287            let last_modified_start = last_modified_start.clone();
5288            let license_number = license_number.clone();
5289            let body = body.clone();
5290            async move { client.transfers_get_outgoing_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
5291        }).await
5292    }
5293
5294    /// GET GetOutgoing V2
5295    /// Retrieves a list of outgoing shipments for a Facility, optionally filtered by last modified date range.
5296    /// 
5297    ///   Permissions Required:
5298    ///   - Manage Transfers
5299    ///   - View Transfers
5300    ///
5301    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>> {
5302        let client = self.client.clone();
5303        let body = body.cloned();
5304        self.rate_limiter.execute(None, true, move || {
5305            let client = client.clone();
5306            let last_modified_end = last_modified_end.clone();
5307            let last_modified_start = last_modified_start.clone();
5308            let license_number = license_number.clone();
5309            let page_number = page_number.clone();
5310            let page_size = page_size.clone();
5311            let body = body.clone();
5312            async move { client.transfers_get_outgoing_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
5313        }).await
5314    }
5315
5316    /// GET GetRejected V1
5317    /// Permissions Required:
5318    ///   - Transfers
5319    ///
5320    pub async fn transfers_get_rejected_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5321        let client = self.client.clone();
5322        let body = body.cloned();
5323        self.rate_limiter.execute(None, true, move || {
5324            let client = client.clone();
5325            let license_number = license_number.clone();
5326            let body = body.clone();
5327            async move { client.transfers_get_rejected_v1(license_number, body.as_ref()).await }
5328        }).await
5329    }
5330
5331    /// GET GetRejected V2
5332    /// Retrieves a list of shipments with rejected packages for a Facility.
5333    /// 
5334    ///   Permissions Required:
5335    ///   - Manage Transfers
5336    ///   - View Transfers
5337    ///
5338    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>> {
5339        let client = self.client.clone();
5340        let body = body.cloned();
5341        self.rate_limiter.execute(None, true, move || {
5342            let client = client.clone();
5343            let license_number = license_number.clone();
5344            let page_number = page_number.clone();
5345            let page_size = page_size.clone();
5346            let body = body.clone();
5347            async move { client.transfers_get_rejected_v2(license_number, page_number, page_size, body.as_ref()).await }
5348        }).await
5349    }
5350
5351    /// GET GetTemplates V1
5352    /// Permissions Required:
5353    ///   - Transfer Templates
5354    ///
5355    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>> {
5356        let client = self.client.clone();
5357        let body = body.cloned();
5358        self.rate_limiter.execute(None, true, move || {
5359            let client = client.clone();
5360            let last_modified_end = last_modified_end.clone();
5361            let last_modified_start = last_modified_start.clone();
5362            let license_number = license_number.clone();
5363            let body = body.clone();
5364            async move { client.transfers_get_templates_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
5365        }).await
5366    }
5367
5368    /// GET GetTemplatesDelivery V1
5369    /// Permissions Required:
5370    ///   - Transfer Templates
5371    ///
5372    pub async fn transfers_get_templates_delivery_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5373        let id = id.to_string();
5374        let client = self.client.clone();
5375        let body = body.cloned();
5376        self.rate_limiter.execute(None, true, move || {
5377            let client = client.clone();
5378            let id = id.clone();
5379            let no = no.clone();
5380            let body = body.clone();
5381            async move { client.transfers_get_templates_delivery_v1(&id, no, body.as_ref()).await }
5382        }).await
5383    }
5384
5385    /// GET GetTemplatesDeliveryPackage V1
5386    /// Please note: The {id} parameter above represents a Transfer Template Delivery ID, not a Manifest Number.
5387    /// 
5388    ///   Permissions Required:
5389    ///   - Transfers
5390    ///
5391    pub async fn transfers_get_templates_delivery_package_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5392        let id = id.to_string();
5393        let client = self.client.clone();
5394        let body = body.cloned();
5395        self.rate_limiter.execute(None, true, move || {
5396            let client = client.clone();
5397            let id = id.clone();
5398            let no = no.clone();
5399            let body = body.clone();
5400            async move { client.transfers_get_templates_delivery_package_v1(&id, no, body.as_ref()).await }
5401        }).await
5402    }
5403
5404    /// GET GetTemplatesDeliveryTransporters V1
5405    /// Please note: The {id} parameter above represents a Transfer Template Delivery ID, not a Manifest Number.
5406    /// 
5407    ///   Permissions Required:
5408    ///   - Transfer Templates
5409    ///
5410    pub async fn transfers_get_templates_delivery_transporters_v1(&self, id: &str, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5411        let id = id.to_string();
5412        let client = self.client.clone();
5413        let body = body.cloned();
5414        self.rate_limiter.execute(None, true, move || {
5415            let client = client.clone();
5416            let id = id.clone();
5417            let no = no.clone();
5418            let body = body.clone();
5419            async move { client.transfers_get_templates_delivery_transporters_v1(&id, no, body.as_ref()).await }
5420        }).await
5421    }
5422
5423    /// GET GetTemplatesDeliveryTransportersDetails V1
5424    /// Please note: The {id} parameter above represents a Transfer Template Delivery ID, not a Manifest Number.
5425    /// 
5426    ///   Permissions Required:
5427    ///   - Transfer Templates
5428    ///
5429    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>> {
5430        let id = id.to_string();
5431        let client = self.client.clone();
5432        let body = body.cloned();
5433        self.rate_limiter.execute(None, true, move || {
5434            let client = client.clone();
5435            let id = id.clone();
5436            let no = no.clone();
5437            let body = body.clone();
5438            async move { client.transfers_get_templates_delivery_transporters_details_v1(&id, no, body.as_ref()).await }
5439        }).await
5440    }
5441
5442    /// GET GetTemplatesOutgoing V2
5443    /// Retrieves a list of transfer templates for a Facility, optionally filtered by last modified date range.
5444    /// 
5445    ///   Permissions Required:
5446    ///   - Manage Transfer Templates
5447    ///   - View Transfer Templates
5448    ///
5449    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>> {
5450        let client = self.client.clone();
5451        let body = body.cloned();
5452        self.rate_limiter.execute(None, true, move || {
5453            let client = client.clone();
5454            let last_modified_end = last_modified_end.clone();
5455            let last_modified_start = last_modified_start.clone();
5456            let license_number = license_number.clone();
5457            let page_number = page_number.clone();
5458            let page_size = page_size.clone();
5459            let body = body.clone();
5460            async move { client.transfers_get_templates_outgoing_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
5461        }).await
5462    }
5463
5464    /// GET GetTemplatesOutgoingDelivery V2
5465    /// Retrieves a list of deliveries associated with a specific transfer template.
5466    /// 
5467    ///   Permissions Required:
5468    ///   - Manage Transfer Templates
5469    ///   - View Transfer Templates
5470    ///
5471    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>> {
5472        let id = id.to_string();
5473        let client = self.client.clone();
5474        let body = body.cloned();
5475        self.rate_limiter.execute(None, true, move || {
5476            let client = client.clone();
5477            let id = id.clone();
5478            let page_number = page_number.clone();
5479            let page_size = page_size.clone();
5480            let body = body.clone();
5481            async move { client.transfers_get_templates_outgoing_delivery_v2(&id, page_number, page_size, body.as_ref()).await }
5482        }).await
5483    }
5484
5485    /// GET GetTemplatesOutgoingDeliveryPackage V2
5486    /// 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.
5487    /// 
5488    ///   Permissions Required:
5489    ///   - Manage Transfer Templates
5490    ///   - View Transfer Templates
5491    ///
5492    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>> {
5493        let id = id.to_string();
5494        let client = self.client.clone();
5495        let body = body.cloned();
5496        self.rate_limiter.execute(None, true, move || {
5497            let client = client.clone();
5498            let id = id.clone();
5499            let page_number = page_number.clone();
5500            let page_size = page_size.clone();
5501            let body = body.clone();
5502            async move { client.transfers_get_templates_outgoing_delivery_package_v2(&id, page_number, page_size, body.as_ref()).await }
5503        }).await
5504    }
5505
5506    /// GET GetTemplatesOutgoingDeliveryTransporters V2
5507    /// 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.
5508    /// 
5509    ///   Permissions Required:
5510    ///   - Manage Transfer Templates
5511    ///   - View Transfer Templates
5512    ///
5513    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>> {
5514        let id = id.to_string();
5515        let client = self.client.clone();
5516        let body = body.cloned();
5517        self.rate_limiter.execute(None, true, move || {
5518            let client = client.clone();
5519            let id = id.clone();
5520            let page_number = page_number.clone();
5521            let page_size = page_size.clone();
5522            let body = body.clone();
5523            async move { client.transfers_get_templates_outgoing_delivery_transporters_v2(&id, page_number, page_size, body.as_ref()).await }
5524        }).await
5525    }
5526
5527    /// GET GetTemplatesOutgoingDeliveryTransportersDetails V2
5528    /// 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.
5529    /// 
5530    ///   Permissions Required:
5531    ///   - Manage Transfer Templates
5532    ///   - View Transfer Templates
5533    ///
5534    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>> {
5535        let id = id.to_string();
5536        let client = self.client.clone();
5537        let body = body.cloned();
5538        self.rate_limiter.execute(None, true, move || {
5539            let client = client.clone();
5540            let id = id.clone();
5541            let no = no.clone();
5542            let body = body.clone();
5543            async move { client.transfers_get_templates_outgoing_delivery_transporters_details_v2(&id, no, body.as_ref()).await }
5544        }).await
5545    }
5546
5547    /// GET GetTypes V1
5548    /// Permissions Required:
5549    ///   - None
5550    ///
5551    pub async fn transfers_get_types_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5552        let client = self.client.clone();
5553        let body = body.cloned();
5554        self.rate_limiter.execute(None, true, move || {
5555            let client = client.clone();
5556            let license_number = license_number.clone();
5557            let body = body.clone();
5558            async move { client.transfers_get_types_v1(license_number, body.as_ref()).await }
5559        }).await
5560    }
5561
5562    /// GET GetTypes V2
5563    /// Retrieves a list of available transfer types for a Facility based on its license number.
5564    /// 
5565    ///   Permissions Required:
5566    ///   - None
5567    ///
5568    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>> {
5569        let client = self.client.clone();
5570        let body = body.cloned();
5571        self.rate_limiter.execute(None, true, move || {
5572            let client = client.clone();
5573            let license_number = license_number.clone();
5574            let page_number = page_number.clone();
5575            let page_size = page_size.clone();
5576            let body = body.clone();
5577            async move { client.transfers_get_types_v2(license_number, page_number, page_size, body.as_ref()).await }
5578        }).await
5579    }
5580
5581    /// PUT UpdateExternalIncoming V1
5582    /// Permissions Required:
5583    ///   - Transfers
5584    ///
5585    pub async fn transfers_update_external_incoming_v1(&self, license_number: Option<String>, body: Option<&Vec<TransfersUpdateExternalIncomingV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5586        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5587        let client = self.client.clone();
5588        let body_val = body_val.clone();
5589        self.rate_limiter.execute(None, false, move || {
5590            let client = client.clone();
5591            let license_number = license_number.clone();
5592            let body_val = body_val.clone();
5593            async move { client.transfers_update_external_incoming_v1(license_number, body_val.as_ref()).await }
5594        }).await
5595    }
5596
5597    /// PUT UpdateExternalIncoming V2
5598    /// Updates external incoming shipment plans for a Facility.
5599    /// 
5600    ///   Permissions Required:
5601    ///   - Manage Transfers
5602    ///
5603    pub async fn transfers_update_external_incoming_v2(&self, license_number: Option<String>, body: Option<&Vec<TransfersUpdateExternalIncomingV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5604        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5605        let client = self.client.clone();
5606        let body_val = body_val.clone();
5607        self.rate_limiter.execute(None, false, move || {
5608            let client = client.clone();
5609            let license_number = license_number.clone();
5610            let body_val = body_val.clone();
5611            async move { client.transfers_update_external_incoming_v2(license_number, body_val.as_ref()).await }
5612        }).await
5613    }
5614
5615    /// PUT UpdateTemplates V1
5616    /// Permissions Required:
5617    ///   - Transfer Templates
5618    ///
5619    pub async fn transfers_update_templates_v1(&self, license_number: Option<String>, body: Option<&Vec<TransfersUpdateTemplatesV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5620        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5621        let client = self.client.clone();
5622        let body_val = body_val.clone();
5623        self.rate_limiter.execute(None, false, move || {
5624            let client = client.clone();
5625            let license_number = license_number.clone();
5626            let body_val = body_val.clone();
5627            async move { client.transfers_update_templates_v1(license_number, body_val.as_ref()).await }
5628        }).await
5629    }
5630
5631    /// PUT UpdateTemplatesOutgoing V2
5632    /// Updates existing transfer templates for a Facility.
5633    /// 
5634    ///   Permissions Required:
5635    ///   - Manage Transfer Templates
5636    ///
5637    pub async fn transfers_update_templates_outgoing_v2(&self, license_number: Option<String>, body: Option<&Vec<TransfersUpdateTemplatesOutgoingV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5638        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5639        let client = self.client.clone();
5640        let body_val = body_val.clone();
5641        self.rate_limiter.execute(None, false, move || {
5642            let client = client.clone();
5643            let license_number = license_number.clone();
5644            let body_val = body_val.clone();
5645            async move { client.transfers_update_templates_outgoing_v2(license_number, body_val.as_ref()).await }
5646        }).await
5647    }
5648
5649    /// GET GetActive V1
5650    /// Permissions Required:
5651    ///   - None
5652    ///
5653    pub async fn units_of_measure_get_active_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5654        let client = self.client.clone();
5655        let body = body.cloned();
5656        self.rate_limiter.execute(None, true, move || {
5657            let client = client.clone();
5658            let no = no.clone();
5659            let body = body.clone();
5660            async move { client.units_of_measure_get_active_v1(no, body.as_ref()).await }
5661        }).await
5662    }
5663
5664    /// GET GetActive V2
5665    /// Retrieves all active units of measure.
5666    /// 
5667    ///   Permissions Required:
5668    ///   - None
5669    ///
5670    pub async fn units_of_measure_get_active_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5671        let client = self.client.clone();
5672        let body = body.cloned();
5673        self.rate_limiter.execute(None, true, move || {
5674            let client = client.clone();
5675            let no = no.clone();
5676            let body = body.clone();
5677            async move { client.units_of_measure_get_active_v2(no, body.as_ref()).await }
5678        }).await
5679    }
5680
5681    /// GET GetInactive V2
5682    /// Retrieves all inactive units of measure.
5683    /// 
5684    ///   Permissions Required:
5685    ///   - None
5686    ///
5687    pub async fn units_of_measure_get_inactive_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5688        let client = self.client.clone();
5689        let body = body.cloned();
5690        self.rate_limiter.execute(None, true, move || {
5691            let client = client.clone();
5692            let no = no.clone();
5693            let body = body.clone();
5694            async move { client.units_of_measure_get_inactive_v2(no, body.as_ref()).await }
5695        }).await
5696    }
5697
5698    /// GET GetAll V2
5699    /// Retrieves all available waste methods.
5700    /// 
5701    ///   Permissions Required:
5702    ///   - None
5703    ///
5704    pub async fn waste_methods_get_all_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5705        let client = self.client.clone();
5706        let body = body.cloned();
5707        self.rate_limiter.execute(None, true, move || {
5708            let client = client.clone();
5709            let no = no.clone();
5710            let body = body.clone();
5711            async move { client.waste_methods_get_all_v2(no, body.as_ref()).await }
5712        }).await
5713    }
5714
5715    /// GET GetByCaregiverLicenseNumber V1
5716    /// Data returned by this endpoint is cached for up to one minute.
5717    /// 
5718    ///   Permissions Required:
5719    ///   - Lookup Caregivers
5720    ///
5721    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>> {
5722        let caregiver_license_number = caregiver_license_number.to_string();
5723        let client = self.client.clone();
5724        let body = body.cloned();
5725        self.rate_limiter.execute(None, true, move || {
5726            let client = client.clone();
5727            let caregiver_license_number = caregiver_license_number.clone();
5728            let license_number = license_number.clone();
5729            let body = body.clone();
5730            async move { client.caregivers_status_get_by_caregiver_license_number_v1(&caregiver_license_number, license_number, body.as_ref()).await }
5731        }).await
5732    }
5733
5734    /// GET GetByCaregiverLicenseNumber V2
5735    /// 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.
5736    /// 
5737    ///   Permissions Required:
5738    ///   - Lookup Caregivers
5739    ///
5740    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>> {
5741        let caregiver_license_number = caregiver_license_number.to_string();
5742        let client = self.client.clone();
5743        let body = body.cloned();
5744        self.rate_limiter.execute(None, true, move || {
5745            let client = client.clone();
5746            let caregiver_license_number = caregiver_license_number.clone();
5747            let license_number = license_number.clone();
5748            let body = body.clone();
5749            async move { client.caregivers_status_get_by_caregiver_license_number_v2(&caregiver_license_number, license_number, body.as_ref()).await }
5750        }).await
5751    }
5752
5753    /// GET GetAll V1
5754    /// Permissions Required:
5755    ///   - Manage Employees
5756    ///
5757    pub async fn employees_get_all_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5758        let client = self.client.clone();
5759        let body = body.cloned();
5760        self.rate_limiter.execute(None, true, move || {
5761            let client = client.clone();
5762            let license_number = license_number.clone();
5763            let body = body.clone();
5764            async move { client.employees_get_all_v1(license_number, body.as_ref()).await }
5765        }).await
5766    }
5767
5768    /// GET GetAll V2
5769    /// Retrieves a list of employees for a specified Facility.
5770    /// 
5771    ///   Permissions Required:
5772    ///   - Manage Employees
5773    ///   - View Employees
5774    ///
5775    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>> {
5776        let client = self.client.clone();
5777        let body = body.cloned();
5778        self.rate_limiter.execute(None, true, move || {
5779            let client = client.clone();
5780            let license_number = license_number.clone();
5781            let page_number = page_number.clone();
5782            let page_size = page_size.clone();
5783            let body = body.clone();
5784            async move { client.employees_get_all_v2(license_number, page_number, page_size, body.as_ref()).await }
5785        }).await
5786    }
5787
5788    /// GET GetPermissions V2
5789    /// Retrieves the permissions of a specified Employee, identified by their Employee License Number, for a given Facility.
5790    /// 
5791    ///   Permissions Required:
5792    ///   - Manage Employees
5793    ///
5794    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>> {
5795        let client = self.client.clone();
5796        let body = body.cloned();
5797        self.rate_limiter.execute(None, true, move || {
5798            let client = client.clone();
5799            let employee_license_number = employee_license_number.clone();
5800            let license_number = license_number.clone();
5801            let body = body.clone();
5802            async move { client.employees_get_permissions_v2(employee_license_number, license_number, body.as_ref()).await }
5803        }).await
5804    }
5805
5806    /// POST Create V1
5807    /// 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.
5808    /// 
5809    ///   Permissions Required:
5810    ///   - Manage Items
5811    ///
5812    pub async fn items_create_v1(&self, license_number: Option<String>, body: Option<&Vec<ItemsCreateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5813        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5814        let client = self.client.clone();
5815        let body_val = body_val.clone();
5816        self.rate_limiter.execute(None, false, move || {
5817            let client = client.clone();
5818            let license_number = license_number.clone();
5819            let body_val = body_val.clone();
5820            async move { client.items_create_v1(license_number, body_val.as_ref()).await }
5821        }).await
5822    }
5823
5824    /// POST Create V2
5825    /// 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.
5826    /// 
5827    ///   Permissions Required:
5828    ///   - Manage Items
5829    ///
5830    pub async fn items_create_v2(&self, license_number: Option<String>, body: Option<&Vec<ItemsCreateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5831        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5832        let client = self.client.clone();
5833        let body_val = body_val.clone();
5834        self.rate_limiter.execute(None, false, move || {
5835            let client = client.clone();
5836            let license_number = license_number.clone();
5837            let body_val = body_val.clone();
5838            async move { client.items_create_v2(license_number, body_val.as_ref()).await }
5839        }).await
5840    }
5841
5842    /// POST CreateBrand V2
5843    /// Creates one or more new item brands for the specified Facility identified by the License Number.
5844    /// 
5845    ///   Permissions Required:
5846    ///   - Manage Items
5847    ///
5848    pub async fn items_create_brand_v2(&self, license_number: Option<String>, body: Option<&Vec<ItemsCreateBrandV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5849        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5850        let client = self.client.clone();
5851        let body_val = body_val.clone();
5852        self.rate_limiter.execute(None, false, move || {
5853            let client = client.clone();
5854            let license_number = license_number.clone();
5855            let body_val = body_val.clone();
5856            async move { client.items_create_brand_v2(license_number, body_val.as_ref()).await }
5857        }).await
5858    }
5859
5860    /// POST CreateFile V2
5861    /// Uploads one or more image or PDF files for products, labels, packaging, or documents at the specified Facility.
5862    /// 
5863    ///   Permissions Required:
5864    ///   - Manage Items
5865    ///
5866    pub async fn items_create_file_v2(&self, license_number: Option<String>, body: Option<&Vec<ItemsCreateFileV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5867        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5868        let client = self.client.clone();
5869        let body_val = body_val.clone();
5870        self.rate_limiter.execute(None, false, move || {
5871            let client = client.clone();
5872            let license_number = license_number.clone();
5873            let body_val = body_val.clone();
5874            async move { client.items_create_file_v2(license_number, body_val.as_ref()).await }
5875        }).await
5876    }
5877
5878    /// POST CreatePhoto V1
5879    /// This endpoint allows only BMP, GIF, JPG, and PNG files and uploaded files can be no more than 5 MB in size.
5880    /// 
5881    ///   Permissions Required:
5882    ///   - Manage Items
5883    ///
5884    pub async fn items_create_photo_v1(&self, license_number: Option<String>, body: Option<&Vec<ItemsCreatePhotoV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5885        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5886        let client = self.client.clone();
5887        let body_val = body_val.clone();
5888        self.rate_limiter.execute(None, false, move || {
5889            let client = client.clone();
5890            let license_number = license_number.clone();
5891            let body_val = body_val.clone();
5892            async move { client.items_create_photo_v1(license_number, body_val.as_ref()).await }
5893        }).await
5894    }
5895
5896    /// POST CreatePhoto V2
5897    /// This endpoint allows only BMP, GIF, JPG, and PNG files and uploaded files can be no more than 5 MB in size.
5898    /// 
5899    ///   Permissions Required:
5900    ///   - Manage Items
5901    ///
5902    pub async fn items_create_photo_v2(&self, license_number: Option<String>, body: Option<&Vec<ItemsCreatePhotoV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5903        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5904        let client = self.client.clone();
5905        let body_val = body_val.clone();
5906        self.rate_limiter.execute(None, false, move || {
5907            let client = client.clone();
5908            let license_number = license_number.clone();
5909            let body_val = body_val.clone();
5910            async move { client.items_create_photo_v2(license_number, body_val.as_ref()).await }
5911        }).await
5912    }
5913
5914    /// POST CreateUpdate V1
5915    /// Permissions Required:
5916    ///   - Manage Items
5917    ///
5918    pub async fn items_create_update_v1(&self, license_number: Option<String>, body: Option<&Vec<ItemsCreateUpdateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
5919        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
5920        let client = self.client.clone();
5921        let body_val = body_val.clone();
5922        self.rate_limiter.execute(None, false, move || {
5923            let client = client.clone();
5924            let license_number = license_number.clone();
5925            let body_val = body_val.clone();
5926            async move { client.items_create_update_v1(license_number, body_val.as_ref()).await }
5927        }).await
5928    }
5929
5930    /// DELETE Delete V1
5931    /// Permissions Required:
5932    ///   - Manage Items
5933    ///
5934    pub async fn items_delete_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5935        let id = id.to_string();
5936        let client = self.client.clone();
5937        let body = body.cloned();
5938        self.rate_limiter.execute(None, false, move || {
5939            let client = client.clone();
5940            let id = id.clone();
5941            let license_number = license_number.clone();
5942            let body = body.clone();
5943            async move { client.items_delete_v1(&id, license_number, body.as_ref()).await }
5944        }).await
5945    }
5946
5947    /// DELETE Delete V2
5948    /// Archives the specified Product by Id for the given Facility License Number.
5949    /// 
5950    ///   Permissions Required:
5951    ///   - Manage Items
5952    ///
5953    pub async fn items_delete_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5954        let id = id.to_string();
5955        let client = self.client.clone();
5956        let body = body.cloned();
5957        self.rate_limiter.execute(None, false, move || {
5958            let client = client.clone();
5959            let id = id.clone();
5960            let license_number = license_number.clone();
5961            let body = body.clone();
5962            async move { client.items_delete_v2(&id, license_number, body.as_ref()).await }
5963        }).await
5964    }
5965
5966    /// DELETE DeleteBrand V2
5967    /// Archives the specified Item Brand by Id for the given Facility License Number.
5968    /// 
5969    ///   Permissions Required:
5970    ///   - Manage Items
5971    ///
5972    pub async fn items_delete_brand_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5973        let id = id.to_string();
5974        let client = self.client.clone();
5975        let body = body.cloned();
5976        self.rate_limiter.execute(None, false, move || {
5977            let client = client.clone();
5978            let id = id.clone();
5979            let license_number = license_number.clone();
5980            let body = body.clone();
5981            async move { client.items_delete_brand_v2(&id, license_number, body.as_ref()).await }
5982        }).await
5983    }
5984
5985    /// GET Get V1
5986    /// Permissions Required:
5987    ///   - Manage Items
5988    ///
5989    pub async fn items_get_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
5990        let id = id.to_string();
5991        let client = self.client.clone();
5992        let body = body.cloned();
5993        self.rate_limiter.execute(None, true, move || {
5994            let client = client.clone();
5995            let id = id.clone();
5996            let license_number = license_number.clone();
5997            let body = body.clone();
5998            async move { client.items_get_v1(&id, license_number, body.as_ref()).await }
5999        }).await
6000    }
6001
6002    /// GET Get V2
6003    /// Retrieves detailed information about a specific Item by Id.
6004    /// 
6005    ///   Permissions Required:
6006    ///   - Manage Items
6007    ///
6008    pub async fn items_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6009        let id = id.to_string();
6010        let client = self.client.clone();
6011        let body = body.cloned();
6012        self.rate_limiter.execute(None, true, move || {
6013            let client = client.clone();
6014            let id = id.clone();
6015            let license_number = license_number.clone();
6016            let body = body.clone();
6017            async move { client.items_get_v2(&id, license_number, body.as_ref()).await }
6018        }).await
6019    }
6020
6021    /// GET GetActive V1
6022    /// Permissions Required:
6023    ///   - Manage Items
6024    ///
6025    pub async fn items_get_active_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6026        let client = self.client.clone();
6027        let body = body.cloned();
6028        self.rate_limiter.execute(None, true, move || {
6029            let client = client.clone();
6030            let license_number = license_number.clone();
6031            let body = body.clone();
6032            async move { client.items_get_active_v1(license_number, body.as_ref()).await }
6033        }).await
6034    }
6035
6036    /// GET GetActive V2
6037    /// Returns a list of active items for the specified Facility.
6038    /// 
6039    ///   Permissions Required:
6040    ///   - Manage Items
6041    ///
6042    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>> {
6043        let client = self.client.clone();
6044        let body = body.cloned();
6045        self.rate_limiter.execute(None, true, move || {
6046            let client = client.clone();
6047            let last_modified_end = last_modified_end.clone();
6048            let last_modified_start = last_modified_start.clone();
6049            let license_number = license_number.clone();
6050            let page_number = page_number.clone();
6051            let page_size = page_size.clone();
6052            let body = body.clone();
6053            async move { client.items_get_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
6054        }).await
6055    }
6056
6057    /// GET GetBrands V1
6058    /// Permissions Required:
6059    ///   - Manage Items
6060    ///
6061    pub async fn items_get_brands_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6062        let client = self.client.clone();
6063        let body = body.cloned();
6064        self.rate_limiter.execute(None, true, move || {
6065            let client = client.clone();
6066            let license_number = license_number.clone();
6067            let body = body.clone();
6068            async move { client.items_get_brands_v1(license_number, body.as_ref()).await }
6069        }).await
6070    }
6071
6072    /// GET GetBrands V2
6073    /// Retrieves a list of active item brands for the specified Facility.
6074    /// 
6075    ///   Permissions Required:
6076    ///   - Manage Items
6077    ///
6078    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>> {
6079        let client = self.client.clone();
6080        let body = body.cloned();
6081        self.rate_limiter.execute(None, true, move || {
6082            let client = client.clone();
6083            let license_number = license_number.clone();
6084            let page_number = page_number.clone();
6085            let page_size = page_size.clone();
6086            let body = body.clone();
6087            async move { client.items_get_brands_v2(license_number, page_number, page_size, body.as_ref()).await }
6088        }).await
6089    }
6090
6091    /// GET GetCategories V1
6092    /// Permissions Required:
6093    ///   - None
6094    ///
6095    pub async fn items_get_categories_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6096        let client = self.client.clone();
6097        let body = body.cloned();
6098        self.rate_limiter.execute(None, true, move || {
6099            let client = client.clone();
6100            let license_number = license_number.clone();
6101            let body = body.clone();
6102            async move { client.items_get_categories_v1(license_number, body.as_ref()).await }
6103        }).await
6104    }
6105
6106    /// GET GetCategories V2
6107    /// Retrieves a list of item categories.
6108    /// 
6109    ///   Permissions Required:
6110    ///   - None
6111    ///
6112    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>> {
6113        let client = self.client.clone();
6114        let body = body.cloned();
6115        self.rate_limiter.execute(None, true, move || {
6116            let client = client.clone();
6117            let license_number = license_number.clone();
6118            let page_number = page_number.clone();
6119            let page_size = page_size.clone();
6120            let body = body.clone();
6121            async move { client.items_get_categories_v2(license_number, page_number, page_size, body.as_ref()).await }
6122        }).await
6123    }
6124
6125    /// GET GetFile V2
6126    /// Retrieves a file by its Id for the specified Facility.
6127    /// 
6128    ///   Permissions Required:
6129    ///   - Manage Items
6130    ///
6131    pub async fn items_get_file_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6132        let id = id.to_string();
6133        let client = self.client.clone();
6134        let body = body.cloned();
6135        self.rate_limiter.execute(None, true, move || {
6136            let client = client.clone();
6137            let id = id.clone();
6138            let license_number = license_number.clone();
6139            let body = body.clone();
6140            async move { client.items_get_file_v2(&id, license_number, body.as_ref()).await }
6141        }).await
6142    }
6143
6144    /// GET GetInactive V1
6145    /// Permissions Required:
6146    ///   - Manage Items
6147    ///
6148    pub async fn items_get_inactive_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6149        let client = self.client.clone();
6150        let body = body.cloned();
6151        self.rate_limiter.execute(None, true, move || {
6152            let client = client.clone();
6153            let license_number = license_number.clone();
6154            let body = body.clone();
6155            async move { client.items_get_inactive_v1(license_number, body.as_ref()).await }
6156        }).await
6157    }
6158
6159    /// GET GetInactive V2
6160    /// Retrieves a list of inactive items for the specified Facility.
6161    /// 
6162    ///   Permissions Required:
6163    ///   - Manage Items
6164    ///
6165    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>> {
6166        let client = self.client.clone();
6167        let body = body.cloned();
6168        self.rate_limiter.execute(None, true, move || {
6169            let client = client.clone();
6170            let license_number = license_number.clone();
6171            let page_number = page_number.clone();
6172            let page_size = page_size.clone();
6173            let body = body.clone();
6174            async move { client.items_get_inactive_v2(license_number, page_number, page_size, body.as_ref()).await }
6175        }).await
6176    }
6177
6178    /// GET GetPhoto V1
6179    /// Permissions Required:
6180    ///   - Manage Items
6181    ///
6182    pub async fn items_get_photo_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6183        let id = id.to_string();
6184        let client = self.client.clone();
6185        let body = body.cloned();
6186        self.rate_limiter.execute(None, true, move || {
6187            let client = client.clone();
6188            let id = id.clone();
6189            let license_number = license_number.clone();
6190            let body = body.clone();
6191            async move { client.items_get_photo_v1(&id, license_number, body.as_ref()).await }
6192        }).await
6193    }
6194
6195    /// GET GetPhoto V2
6196    /// Retrieves an image by its Id for the specified Facility.
6197    /// 
6198    ///   Permissions Required:
6199    ///   - Manage Items
6200    ///
6201    pub async fn items_get_photo_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6202        let id = id.to_string();
6203        let client = self.client.clone();
6204        let body = body.cloned();
6205        self.rate_limiter.execute(None, true, move || {
6206            let client = client.clone();
6207            let id = id.clone();
6208            let license_number = license_number.clone();
6209            let body = body.clone();
6210            async move { client.items_get_photo_v2(&id, license_number, body.as_ref()).await }
6211        }).await
6212    }
6213
6214    /// PUT Update V2
6215    /// Updates one or more existing products for the specified Facility.
6216    /// 
6217    ///   Permissions Required:
6218    ///   - Manage Items
6219    ///
6220    pub async fn items_update_v2(&self, license_number: Option<String>, body: Option<&Vec<ItemsUpdateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6221        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6222        let client = self.client.clone();
6223        let body_val = body_val.clone();
6224        self.rate_limiter.execute(None, false, move || {
6225            let client = client.clone();
6226            let license_number = license_number.clone();
6227            let body_val = body_val.clone();
6228            async move { client.items_update_v2(license_number, body_val.as_ref()).await }
6229        }).await
6230    }
6231
6232    /// PUT UpdateBrand V2
6233    /// Updates one or more existing item brands for the specified Facility.
6234    /// 
6235    ///   Permissions Required:
6236    ///   - Manage Items
6237    ///
6238    pub async fn items_update_brand_v2(&self, license_number: Option<String>, body: Option<&Vec<ItemsUpdateBrandV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6239        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6240        let client = self.client.clone();
6241        let body_val = body_val.clone();
6242        self.rate_limiter.execute(None, false, move || {
6243            let client = client.clone();
6244            let license_number = license_number.clone();
6245            let body_val = body_val.clone();
6246            async move { client.items_update_brand_v2(license_number, body_val.as_ref()).await }
6247        }).await
6248    }
6249
6250    /// POST Create V1
6251    /// Permissions Required:
6252    ///   - Manage Locations
6253    ///
6254    pub async fn locations_create_v1(&self, license_number: Option<String>, body: Option<&Vec<LocationsCreateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6255        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6256        let client = self.client.clone();
6257        let body_val = body_val.clone();
6258        self.rate_limiter.execute(None, false, move || {
6259            let client = client.clone();
6260            let license_number = license_number.clone();
6261            let body_val = body_val.clone();
6262            async move { client.locations_create_v1(license_number, body_val.as_ref()).await }
6263        }).await
6264    }
6265
6266    /// POST Create V2
6267    /// Creates new locations for a specified Facility.
6268    /// 
6269    ///   Permissions Required:
6270    ///   - Manage Locations
6271    ///
6272    pub async fn locations_create_v2(&self, license_number: Option<String>, body: Option<&Vec<LocationsCreateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6273        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6274        let client = self.client.clone();
6275        let body_val = body_val.clone();
6276        self.rate_limiter.execute(None, false, move || {
6277            let client = client.clone();
6278            let license_number = license_number.clone();
6279            let body_val = body_val.clone();
6280            async move { client.locations_create_v2(license_number, body_val.as_ref()).await }
6281        }).await
6282    }
6283
6284    /// POST CreateUpdate V1
6285    /// Permissions Required:
6286    ///   - Manage Locations
6287    ///
6288    pub async fn locations_create_update_v1(&self, license_number: Option<String>, body: Option<&Vec<LocationsCreateUpdateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6289        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6290        let client = self.client.clone();
6291        let body_val = body_val.clone();
6292        self.rate_limiter.execute(None, false, move || {
6293            let client = client.clone();
6294            let license_number = license_number.clone();
6295            let body_val = body_val.clone();
6296            async move { client.locations_create_update_v1(license_number, body_val.as_ref()).await }
6297        }).await
6298    }
6299
6300    /// DELETE Delete V1
6301    /// Permissions Required:
6302    ///   - Manage Locations
6303    ///
6304    pub async fn locations_delete_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6305        let id = id.to_string();
6306        let client = self.client.clone();
6307        let body = body.cloned();
6308        self.rate_limiter.execute(None, false, move || {
6309            let client = client.clone();
6310            let id = id.clone();
6311            let license_number = license_number.clone();
6312            let body = body.clone();
6313            async move { client.locations_delete_v1(&id, license_number, body.as_ref()).await }
6314        }).await
6315    }
6316
6317    /// DELETE Delete V2
6318    /// Archives a specified Location, identified by its Id, for a Facility.
6319    /// 
6320    ///   Permissions Required:
6321    ///   - Manage Locations
6322    ///
6323    pub async fn locations_delete_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6324        let id = id.to_string();
6325        let client = self.client.clone();
6326        let body = body.cloned();
6327        self.rate_limiter.execute(None, false, move || {
6328            let client = client.clone();
6329            let id = id.clone();
6330            let license_number = license_number.clone();
6331            let body = body.clone();
6332            async move { client.locations_delete_v2(&id, license_number, body.as_ref()).await }
6333        }).await
6334    }
6335
6336    /// GET Get V1
6337    /// Permissions Required:
6338    ///   - Manage Locations
6339    ///
6340    pub async fn locations_get_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6341        let id = id.to_string();
6342        let client = self.client.clone();
6343        let body = body.cloned();
6344        self.rate_limiter.execute(None, true, move || {
6345            let client = client.clone();
6346            let id = id.clone();
6347            let license_number = license_number.clone();
6348            let body = body.clone();
6349            async move { client.locations_get_v1(&id, license_number, body.as_ref()).await }
6350        }).await
6351    }
6352
6353    /// GET Get V2
6354    /// Retrieves a Location by its Id.
6355    /// 
6356    ///   Permissions Required:
6357    ///   - Manage Locations
6358    ///
6359    pub async fn locations_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6360        let id = id.to_string();
6361        let client = self.client.clone();
6362        let body = body.cloned();
6363        self.rate_limiter.execute(None, true, move || {
6364            let client = client.clone();
6365            let id = id.clone();
6366            let license_number = license_number.clone();
6367            let body = body.clone();
6368            async move { client.locations_get_v2(&id, license_number, body.as_ref()).await }
6369        }).await
6370    }
6371
6372    /// GET GetActive V1
6373    /// Permissions Required:
6374    ///   - Manage Locations
6375    ///
6376    pub async fn locations_get_active_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6377        let client = self.client.clone();
6378        let body = body.cloned();
6379        self.rate_limiter.execute(None, true, move || {
6380            let client = client.clone();
6381            let license_number = license_number.clone();
6382            let body = body.clone();
6383            async move { client.locations_get_active_v1(license_number, body.as_ref()).await }
6384        }).await
6385    }
6386
6387    /// GET GetActive V2
6388    /// Retrieves a list of active locations for a specified Facility.
6389    /// 
6390    ///   Permissions Required:
6391    ///   - Manage Locations
6392    ///
6393    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>> {
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 last_modified_end = last_modified_end.clone();
6399            let last_modified_start = last_modified_start.clone();
6400            let license_number = license_number.clone();
6401            let page_number = page_number.clone();
6402            let page_size = page_size.clone();
6403            let body = body.clone();
6404            async move { client.locations_get_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
6405        }).await
6406    }
6407
6408    /// GET GetInactive V2
6409    /// Retrieves a list of inactive locations for a specified Facility.
6410    /// 
6411    ///   Permissions Required:
6412    ///   - Manage Locations
6413    ///
6414    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>> {
6415        let client = self.client.clone();
6416        let body = body.cloned();
6417        self.rate_limiter.execute(None, true, move || {
6418            let client = client.clone();
6419            let license_number = license_number.clone();
6420            let page_number = page_number.clone();
6421            let page_size = page_size.clone();
6422            let body = body.clone();
6423            async move { client.locations_get_inactive_v2(license_number, page_number, page_size, body.as_ref()).await }
6424        }).await
6425    }
6426
6427    /// GET GetTypes V1
6428    /// Permissions Required:
6429    ///   - Manage Locations
6430    ///
6431    pub async fn locations_get_types_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6432        let client = self.client.clone();
6433        let body = body.cloned();
6434        self.rate_limiter.execute(None, true, move || {
6435            let client = client.clone();
6436            let license_number = license_number.clone();
6437            let body = body.clone();
6438            async move { client.locations_get_types_v1(license_number, body.as_ref()).await }
6439        }).await
6440    }
6441
6442    /// GET GetTypes V2
6443    /// Retrieves a list of active location types for a specified Facility.
6444    /// 
6445    ///   Permissions Required:
6446    ///   - Manage Locations
6447    ///
6448    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>> {
6449        let client = self.client.clone();
6450        let body = body.cloned();
6451        self.rate_limiter.execute(None, true, move || {
6452            let client = client.clone();
6453            let license_number = license_number.clone();
6454            let page_number = page_number.clone();
6455            let page_size = page_size.clone();
6456            let body = body.clone();
6457            async move { client.locations_get_types_v2(license_number, page_number, page_size, body.as_ref()).await }
6458        }).await
6459    }
6460
6461    /// PUT Update V2
6462    /// Updates existing locations for a specified Facility.
6463    /// 
6464    ///   Permissions Required:
6465    ///   - Manage Locations
6466    ///
6467    pub async fn locations_update_v2(&self, license_number: Option<String>, body: Option<&Vec<LocationsUpdateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6468        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6469        let client = self.client.clone();
6470        let body_val = body_val.clone();
6471        self.rate_limiter.execute(None, false, move || {
6472            let client = client.clone();
6473            let license_number = license_number.clone();
6474            let body_val = body_val.clone();
6475            async move { client.locations_update_v2(license_number, body_val.as_ref()).await }
6476        }).await
6477    }
6478
6479    /// POST Create V1
6480    /// Permissions Required:
6481    ///   - View Packages
6482    ///   - Create/Submit/Discontinue Packages
6483    ///
6484    pub async fn packages_create_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6485        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6486        let client = self.client.clone();
6487        let body_val = body_val.clone();
6488        self.rate_limiter.execute(None, false, move || {
6489            let client = client.clone();
6490            let license_number = license_number.clone();
6491            let body_val = body_val.clone();
6492            async move { client.packages_create_v1(license_number, body_val.as_ref()).await }
6493        }).await
6494    }
6495
6496    /// POST Create V2
6497    /// Creates new packages for a specified Facility.
6498    /// 
6499    ///   Permissions Required:
6500    ///   - View Packages
6501    ///   - Create/Submit/Discontinue Packages
6502    ///
6503    pub async fn packages_create_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6504        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6505        let client = self.client.clone();
6506        let body_val = body_val.clone();
6507        self.rate_limiter.execute(None, false, move || {
6508            let client = client.clone();
6509            let license_number = license_number.clone();
6510            let body_val = body_val.clone();
6511            async move { client.packages_create_v2(license_number, body_val.as_ref()).await }
6512        }).await
6513    }
6514
6515    /// POST CreateAdjust V1
6516    /// Permissions Required:
6517    ///   - View Packages
6518    ///   - Manage Packages Inventory
6519    ///
6520    pub async fn packages_create_adjust_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateAdjustV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6521        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6522        let client = self.client.clone();
6523        let body_val = body_val.clone();
6524        self.rate_limiter.execute(None, false, move || {
6525            let client = client.clone();
6526            let license_number = license_number.clone();
6527            let body_val = body_val.clone();
6528            async move { client.packages_create_adjust_v1(license_number, body_val.as_ref()).await }
6529        }).await
6530    }
6531
6532    /// POST CreateAdjust V2
6533    /// Records a list of adjustments for packages at a specific Facility.
6534    /// 
6535    ///   Permissions Required:
6536    ///   - View Packages
6537    ///   - Manage Packages Inventory
6538    ///
6539    pub async fn packages_create_adjust_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateAdjustV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6540        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6541        let client = self.client.clone();
6542        let body_val = body_val.clone();
6543        self.rate_limiter.execute(None, false, move || {
6544            let client = client.clone();
6545            let license_number = license_number.clone();
6546            let body_val = body_val.clone();
6547            async move { client.packages_create_adjust_v2(license_number, body_val.as_ref()).await }
6548        }).await
6549    }
6550
6551    /// POST CreateChangeItem V1
6552    /// Permissions Required:
6553    ///   - View Packages
6554    ///   - Create/Submit/Discontinue Packages
6555    ///
6556    pub async fn packages_create_change_item_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateChangeItemV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6557        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6558        let client = self.client.clone();
6559        let body_val = body_val.clone();
6560        self.rate_limiter.execute(None, false, move || {
6561            let client = client.clone();
6562            let license_number = license_number.clone();
6563            let body_val = body_val.clone();
6564            async move { client.packages_create_change_item_v1(license_number, body_val.as_ref()).await }
6565        }).await
6566    }
6567
6568    /// POST CreateChangeLocation V1
6569    /// Permissions Required:
6570    ///   - View Packages
6571    ///   - Create/Submit/Discontinue Packages
6572    ///
6573    pub async fn packages_create_change_location_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateChangeLocationV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6574        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6575        let client = self.client.clone();
6576        let body_val = body_val.clone();
6577        self.rate_limiter.execute(None, false, move || {
6578            let client = client.clone();
6579            let license_number = license_number.clone();
6580            let body_val = body_val.clone();
6581            async move { client.packages_create_change_location_v1(license_number, body_val.as_ref()).await }
6582        }).await
6583    }
6584
6585    /// POST CreateFinish V1
6586    /// Permissions Required:
6587    ///   - View Packages
6588    ///   - Manage Packages Inventory
6589    ///
6590    pub async fn packages_create_finish_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateFinishV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6591        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6592        let client = self.client.clone();
6593        let body_val = body_val.clone();
6594        self.rate_limiter.execute(None, false, move || {
6595            let client = client.clone();
6596            let license_number = license_number.clone();
6597            let body_val = body_val.clone();
6598            async move { client.packages_create_finish_v1(license_number, body_val.as_ref()).await }
6599        }).await
6600    }
6601
6602    /// POST CreatePlantings V1
6603    /// Permissions Required:
6604    ///   - View Immature Plants
6605    ///   - Manage Immature Plants
6606    ///   - View Packages
6607    ///   - Manage Packages Inventory
6608    ///
6609    pub async fn packages_create_plantings_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreatePlantingsV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6610        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6611        let client = self.client.clone();
6612        let body_val = body_val.clone();
6613        self.rate_limiter.execute(None, false, move || {
6614            let client = client.clone();
6615            let license_number = license_number.clone();
6616            let body_val = body_val.clone();
6617            async move { client.packages_create_plantings_v1(license_number, body_val.as_ref()).await }
6618        }).await
6619    }
6620
6621    /// POST CreatePlantings V2
6622    /// Creates new plantings from packages for a specified Facility.
6623    /// 
6624    ///   Permissions Required:
6625    ///   - View Immature Plants
6626    ///   - Manage Immature Plants
6627    ///   - View Packages
6628    ///   - Manage Packages Inventory
6629    ///
6630    pub async fn packages_create_plantings_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreatePlantingsV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6631        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6632        let client = self.client.clone();
6633        let body_val = body_val.clone();
6634        self.rate_limiter.execute(None, false, move || {
6635            let client = client.clone();
6636            let license_number = license_number.clone();
6637            let body_val = body_val.clone();
6638            async move { client.packages_create_plantings_v2(license_number, body_val.as_ref()).await }
6639        }).await
6640    }
6641
6642    /// POST CreateRemediate V1
6643    /// Permissions Required:
6644    ///   - View Packages
6645    ///   - Manage Packages Inventory
6646    ///
6647    pub async fn packages_create_remediate_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateRemediateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6648        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6649        let client = self.client.clone();
6650        let body_val = body_val.clone();
6651        self.rate_limiter.execute(None, false, move || {
6652            let client = client.clone();
6653            let license_number = license_number.clone();
6654            let body_val = body_val.clone();
6655            async move { client.packages_create_remediate_v1(license_number, body_val.as_ref()).await }
6656        }).await
6657    }
6658
6659    /// POST CreateTesting V1
6660    /// Permissions Required:
6661    ///   - View Packages
6662    ///   - Create/Submit/Discontinue Packages
6663    ///
6664    pub async fn packages_create_testing_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateTestingV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6665        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6666        let client = self.client.clone();
6667        let body_val = body_val.clone();
6668        self.rate_limiter.execute(None, false, move || {
6669            let client = client.clone();
6670            let license_number = license_number.clone();
6671            let body_val = body_val.clone();
6672            async move { client.packages_create_testing_v1(license_number, body_val.as_ref()).await }
6673        }).await
6674    }
6675
6676    /// POST CreateTesting V2
6677    /// Creates new packages for testing for a specified Facility.
6678    /// 
6679    ///   Permissions Required:
6680    ///   - View Packages
6681    ///   - Create/Submit/Discontinue Packages
6682    ///
6683    pub async fn packages_create_testing_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateTestingV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6684        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6685        let client = self.client.clone();
6686        let body_val = body_val.clone();
6687        self.rate_limiter.execute(None, false, move || {
6688            let client = client.clone();
6689            let license_number = license_number.clone();
6690            let body_val = body_val.clone();
6691            async move { client.packages_create_testing_v2(license_number, body_val.as_ref()).await }
6692        }).await
6693    }
6694
6695    /// POST CreateUnfinish V1
6696    /// Permissions Required:
6697    ///   - View Packages
6698    ///   - Manage Packages Inventory
6699    ///
6700    pub async fn packages_create_unfinish_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesCreateUnfinishV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
6701        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
6702        let client = self.client.clone();
6703        let body_val = body_val.clone();
6704        self.rate_limiter.execute(None, false, move || {
6705            let client = client.clone();
6706            let license_number = license_number.clone();
6707            let body_val = body_val.clone();
6708            async move { client.packages_create_unfinish_v1(license_number, body_val.as_ref()).await }
6709        }).await
6710    }
6711
6712    /// DELETE Delete V2
6713    /// Discontinues a Package at a specific Facility.
6714    /// 
6715    ///   Permissions Required:
6716    ///   - View Packages
6717    ///   - Create/Submit/Discontinue Packages
6718    ///
6719    pub async fn packages_delete_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6720        let id = id.to_string();
6721        let client = self.client.clone();
6722        let body = body.cloned();
6723        self.rate_limiter.execute(None, false, move || {
6724            let client = client.clone();
6725            let id = id.clone();
6726            let license_number = license_number.clone();
6727            let body = body.clone();
6728            async move { client.packages_delete_v2(&id, license_number, body.as_ref()).await }
6729        }).await
6730    }
6731
6732    /// GET Get V1
6733    /// Permissions Required:
6734    ///   - View Packages
6735    ///
6736    pub async fn packages_get_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6737        let id = id.to_string();
6738        let client = self.client.clone();
6739        let body = body.cloned();
6740        self.rate_limiter.execute(None, true, move || {
6741            let client = client.clone();
6742            let id = id.clone();
6743            let license_number = license_number.clone();
6744            let body = body.clone();
6745            async move { client.packages_get_v1(&id, license_number, body.as_ref()).await }
6746        }).await
6747    }
6748
6749    /// GET Get V2
6750    /// Retrieves a Package by its Id.
6751    /// 
6752    ///   Permissions Required:
6753    ///   - View Packages
6754    ///
6755    pub async fn packages_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6756        let id = id.to_string();
6757        let client = self.client.clone();
6758        let body = body.cloned();
6759        self.rate_limiter.execute(None, true, move || {
6760            let client = client.clone();
6761            let id = id.clone();
6762            let license_number = license_number.clone();
6763            let body = body.clone();
6764            async move { client.packages_get_v2(&id, license_number, body.as_ref()).await }
6765        }).await
6766    }
6767
6768    /// GET GetActive V1
6769    /// Permissions Required:
6770    ///   - View Packages
6771    ///
6772    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>> {
6773        let client = self.client.clone();
6774        let body = body.cloned();
6775        self.rate_limiter.execute(None, true, move || {
6776            let client = client.clone();
6777            let last_modified_end = last_modified_end.clone();
6778            let last_modified_start = last_modified_start.clone();
6779            let license_number = license_number.clone();
6780            let body = body.clone();
6781            async move { client.packages_get_active_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
6782        }).await
6783    }
6784
6785    /// GET GetActive V2
6786    /// Retrieves a list of active packages for a specified Facility.
6787    /// 
6788    ///   Permissions Required:
6789    ///   - View Packages
6790    ///
6791    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>> {
6792        let client = self.client.clone();
6793        let body = body.cloned();
6794        self.rate_limiter.execute(None, true, move || {
6795            let client = client.clone();
6796            let last_modified_end = last_modified_end.clone();
6797            let last_modified_start = last_modified_start.clone();
6798            let license_number = license_number.clone();
6799            let page_number = page_number.clone();
6800            let page_size = page_size.clone();
6801            let body = body.clone();
6802            async move { client.packages_get_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
6803        }).await
6804    }
6805
6806    /// GET GetAdjustReasons V1
6807    /// Permissions Required:
6808    ///   - None
6809    ///
6810    pub async fn packages_get_adjust_reasons_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6811        let client = self.client.clone();
6812        let body = body.cloned();
6813        self.rate_limiter.execute(None, true, move || {
6814            let client = client.clone();
6815            let license_number = license_number.clone();
6816            let body = body.clone();
6817            async move { client.packages_get_adjust_reasons_v1(license_number, body.as_ref()).await }
6818        }).await
6819    }
6820
6821    /// GET GetAdjustReasons V2
6822    /// Retrieves a list of adjustment reasons for packages at a specified Facility.
6823    /// 
6824    ///   Permissions Required:
6825    ///   - None
6826    ///
6827    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>> {
6828        let client = self.client.clone();
6829        let body = body.cloned();
6830        self.rate_limiter.execute(None, true, move || {
6831            let client = client.clone();
6832            let license_number = license_number.clone();
6833            let page_number = page_number.clone();
6834            let page_size = page_size.clone();
6835            let body = body.clone();
6836            async move { client.packages_get_adjust_reasons_v2(license_number, page_number, page_size, body.as_ref()).await }
6837        }).await
6838    }
6839
6840    /// GET GetByLabel V1
6841    /// Permissions Required:
6842    ///   - View Packages
6843    ///
6844    pub async fn packages_get_by_label_v1(&self, label: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6845        let label = label.to_string();
6846        let client = self.client.clone();
6847        let body = body.cloned();
6848        self.rate_limiter.execute(None, true, move || {
6849            let client = client.clone();
6850            let label = label.clone();
6851            let license_number = license_number.clone();
6852            let body = body.clone();
6853            async move { client.packages_get_by_label_v1(&label, license_number, body.as_ref()).await }
6854        }).await
6855    }
6856
6857    /// GET GetByLabel V2
6858    /// Retrieves a Package by its label.
6859    /// 
6860    ///   Permissions Required:
6861    ///   - View Packages
6862    ///
6863    pub async fn packages_get_by_label_v2(&self, label: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
6864        let label = label.to_string();
6865        let client = self.client.clone();
6866        let body = body.cloned();
6867        self.rate_limiter.execute(None, true, move || {
6868            let client = client.clone();
6869            let label = label.clone();
6870            let license_number = license_number.clone();
6871            let body = body.clone();
6872            async move { client.packages_get_by_label_v2(&label, license_number, body.as_ref()).await }
6873        }).await
6874    }
6875
6876    /// GET GetInactive V1
6877    /// Permissions Required:
6878    ///   - View Packages
6879    ///
6880    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>> {
6881        let client = self.client.clone();
6882        let body = body.cloned();
6883        self.rate_limiter.execute(None, true, move || {
6884            let client = client.clone();
6885            let last_modified_end = last_modified_end.clone();
6886            let last_modified_start = last_modified_start.clone();
6887            let license_number = license_number.clone();
6888            let body = body.clone();
6889            async move { client.packages_get_inactive_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
6890        }).await
6891    }
6892
6893    /// GET GetInactive V2
6894    /// Retrieves a list of inactive packages for a specified Facility.
6895    /// 
6896    ///   Permissions Required:
6897    ///   - View Packages
6898    ///
6899    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>> {
6900        let client = self.client.clone();
6901        let body = body.cloned();
6902        self.rate_limiter.execute(None, true, move || {
6903            let client = client.clone();
6904            let last_modified_end = last_modified_end.clone();
6905            let last_modified_start = last_modified_start.clone();
6906            let license_number = license_number.clone();
6907            let page_number = page_number.clone();
6908            let page_size = page_size.clone();
6909            let body = body.clone();
6910            async move { client.packages_get_inactive_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
6911        }).await
6912    }
6913
6914    /// GET GetIntransit V2
6915    /// Retrieves a list of packages in transit for a specified Facility.
6916    /// 
6917    ///   Permissions Required:
6918    ///   - View Packages
6919    ///
6920    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>> {
6921        let client = self.client.clone();
6922        let body = body.cloned();
6923        self.rate_limiter.execute(None, true, move || {
6924            let client = client.clone();
6925            let last_modified_end = last_modified_end.clone();
6926            let last_modified_start = last_modified_start.clone();
6927            let license_number = license_number.clone();
6928            let page_number = page_number.clone();
6929            let page_size = page_size.clone();
6930            let body = body.clone();
6931            async move { client.packages_get_intransit_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
6932        }).await
6933    }
6934
6935    /// GET GetLabsamples V2
6936    /// Retrieves a list of lab sample packages created or sent for testing for a specified Facility.
6937    /// 
6938    ///   Permissions Required:
6939    ///   - View Packages
6940    ///
6941    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>> {
6942        let client = self.client.clone();
6943        let body = body.cloned();
6944        self.rate_limiter.execute(None, true, move || {
6945            let client = client.clone();
6946            let last_modified_end = last_modified_end.clone();
6947            let last_modified_start = last_modified_start.clone();
6948            let license_number = license_number.clone();
6949            let page_number = page_number.clone();
6950            let page_size = page_size.clone();
6951            let body = body.clone();
6952            async move { client.packages_get_labsamples_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
6953        }).await
6954    }
6955
6956    /// GET GetOnhold V1
6957    /// Permissions Required:
6958    ///   - View Packages
6959    ///
6960    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>> {
6961        let client = self.client.clone();
6962        let body = body.cloned();
6963        self.rate_limiter.execute(None, true, move || {
6964            let client = client.clone();
6965            let last_modified_end = last_modified_end.clone();
6966            let last_modified_start = last_modified_start.clone();
6967            let license_number = license_number.clone();
6968            let body = body.clone();
6969            async move { client.packages_get_onhold_v1(last_modified_end, last_modified_start, license_number, body.as_ref()).await }
6970        }).await
6971    }
6972
6973    /// GET GetOnhold V2
6974    /// Retrieves a list of packages on hold for a specified Facility.
6975    /// 
6976    ///   Permissions Required:
6977    ///   - View Packages
6978    ///
6979    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>> {
6980        let client = self.client.clone();
6981        let body = body.cloned();
6982        self.rate_limiter.execute(None, true, move || {
6983            let client = client.clone();
6984            let last_modified_end = last_modified_end.clone();
6985            let last_modified_start = last_modified_start.clone();
6986            let license_number = license_number.clone();
6987            let page_number = page_number.clone();
6988            let page_size = page_size.clone();
6989            let body = body.clone();
6990            async move { client.packages_get_onhold_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
6991        }).await
6992    }
6993
6994    /// GET GetSourceHarvest V2
6995    /// Retrieves the source harvests for a Package by its Id.
6996    /// 
6997    ///   Permissions Required:
6998    ///   - View Package Source Harvests
6999    ///
7000    pub async fn packages_get_source_harvest_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7001        let id = id.to_string();
7002        let client = self.client.clone();
7003        let body = body.cloned();
7004        self.rate_limiter.execute(None, true, move || {
7005            let client = client.clone();
7006            let id = id.clone();
7007            let license_number = license_number.clone();
7008            let body = body.clone();
7009            async move { client.packages_get_source_harvest_v2(&id, license_number, body.as_ref()).await }
7010        }).await
7011    }
7012
7013    /// GET GetTransferred V2
7014    /// Retrieves a list of transferred packages for a specific Facility.
7015    /// 
7016    ///   Permissions Required:
7017    ///   - View Packages
7018    ///
7019    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>> {
7020        let client = self.client.clone();
7021        let body = body.cloned();
7022        self.rate_limiter.execute(None, true, move || {
7023            let client = client.clone();
7024            let last_modified_end = last_modified_end.clone();
7025            let last_modified_start = last_modified_start.clone();
7026            let license_number = license_number.clone();
7027            let page_number = page_number.clone();
7028            let page_size = page_size.clone();
7029            let body = body.clone();
7030            async move { client.packages_get_transferred_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
7031        }).await
7032    }
7033
7034    /// GET GetTypes V1
7035    /// Permissions Required:
7036    ///   - None
7037    ///
7038    pub async fn packages_get_types_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7039        let client = self.client.clone();
7040        let body = body.cloned();
7041        self.rate_limiter.execute(None, true, move || {
7042            let client = client.clone();
7043            let no = no.clone();
7044            let body = body.clone();
7045            async move { client.packages_get_types_v1(no, body.as_ref()).await }
7046        }).await
7047    }
7048
7049    /// GET GetTypes V2
7050    /// Retrieves a list of available Package types.
7051    /// 
7052    ///   Permissions Required:
7053    ///   - None
7054    ///
7055    pub async fn packages_get_types_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7056        let client = self.client.clone();
7057        let body = body.cloned();
7058        self.rate_limiter.execute(None, true, move || {
7059            let client = client.clone();
7060            let no = no.clone();
7061            let body = body.clone();
7062            async move { client.packages_get_types_v2(no, body.as_ref()).await }
7063        }).await
7064    }
7065
7066    /// PUT UpdateAdjust V2
7067    /// Set the final quantity for a Package.
7068    /// 
7069    ///   Permissions Required:
7070    ///   - View Packages
7071    ///   - Manage Packages Inventory
7072    ///
7073    pub async fn packages_update_adjust_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateAdjustV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7074        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7075        let client = self.client.clone();
7076        let body_val = body_val.clone();
7077        self.rate_limiter.execute(None, false, move || {
7078            let client = client.clone();
7079            let license_number = license_number.clone();
7080            let body_val = body_val.clone();
7081            async move { client.packages_update_adjust_v2(license_number, body_val.as_ref()).await }
7082        }).await
7083    }
7084
7085    /// PUT UpdateChangeNote V1
7086    /// Permissions Required:
7087    ///   - View Packages
7088    ///   - Manage Packages Inventory
7089    ///   - Manage Package Notes
7090    ///
7091    pub async fn packages_update_change_note_v1(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateChangeNoteV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7092        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7093        let client = self.client.clone();
7094        let body_val = body_val.clone();
7095        self.rate_limiter.execute(None, false, move || {
7096            let client = client.clone();
7097            let license_number = license_number.clone();
7098            let body_val = body_val.clone();
7099            async move { client.packages_update_change_note_v1(license_number, body_val.as_ref()).await }
7100        }).await
7101    }
7102
7103    /// PUT UpdateDecontaminate V2
7104    /// Updates the Product decontaminate information for a list of packages at a specific Facility.
7105    /// 
7106    ///   Permissions Required:
7107    ///   - View Packages
7108    ///   - Manage Packages Inventory
7109    ///
7110    pub async fn packages_update_decontaminate_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateDecontaminateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7111        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7112        let client = self.client.clone();
7113        let body_val = body_val.clone();
7114        self.rate_limiter.execute(None, false, move || {
7115            let client = client.clone();
7116            let license_number = license_number.clone();
7117            let body_val = body_val.clone();
7118            async move { client.packages_update_decontaminate_v2(license_number, body_val.as_ref()).await }
7119        }).await
7120    }
7121
7122    /// PUT UpdateDonationFlag V2
7123    /// Flags one or more packages for donation at the specified Facility.
7124    /// 
7125    ///   Permissions Required:
7126    ///   - View Packages
7127    ///   - Manage Packages Inventory
7128    ///
7129    pub async fn packages_update_donation_flag_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateDonationFlagV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7130        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7131        let client = self.client.clone();
7132        let body_val = body_val.clone();
7133        self.rate_limiter.execute(None, false, move || {
7134            let client = client.clone();
7135            let license_number = license_number.clone();
7136            let body_val = body_val.clone();
7137            async move { client.packages_update_donation_flag_v2(license_number, body_val.as_ref()).await }
7138        }).await
7139    }
7140
7141    /// PUT UpdateDonationUnflag V2
7142    /// Removes the donation flag from one or more packages at the specified Facility.
7143    /// 
7144    ///   Permissions Required:
7145    ///   - View Packages
7146    ///   - Manage Packages Inventory
7147    ///
7148    pub async fn packages_update_donation_unflag_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateDonationUnflagV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7149        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7150        let client = self.client.clone();
7151        let body_val = body_val.clone();
7152        self.rate_limiter.execute(None, false, move || {
7153            let client = client.clone();
7154            let license_number = license_number.clone();
7155            let body_val = body_val.clone();
7156            async move { client.packages_update_donation_unflag_v2(license_number, body_val.as_ref()).await }
7157        }).await
7158    }
7159
7160    /// PUT UpdateExternalid V2
7161    /// Updates the external identifiers for one or more packages at the specified Facility.
7162    /// 
7163    ///   Permissions Required:
7164    ///   - View Packages
7165    ///   - Manage Package Inventory
7166    ///   - External Id Enabled
7167    ///
7168    pub async fn packages_update_externalid_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateExternalidV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7169        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7170        let client = self.client.clone();
7171        let body_val = body_val.clone();
7172        self.rate_limiter.execute(None, false, move || {
7173            let client = client.clone();
7174            let license_number = license_number.clone();
7175            let body_val = body_val.clone();
7176            async move { client.packages_update_externalid_v2(license_number, body_val.as_ref()).await }
7177        }).await
7178    }
7179
7180    /// PUT UpdateFinish V2
7181    /// Updates a list of packages as finished for a specific Facility.
7182    /// 
7183    ///   Permissions Required:
7184    ///   - View Packages
7185    ///   - Manage Packages Inventory
7186    ///
7187    pub async fn packages_update_finish_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateFinishV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7188        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7189        let client = self.client.clone();
7190        let body_val = body_val.clone();
7191        self.rate_limiter.execute(None, false, move || {
7192            let client = client.clone();
7193            let license_number = license_number.clone();
7194            let body_val = body_val.clone();
7195            async move { client.packages_update_finish_v2(license_number, body_val.as_ref()).await }
7196        }).await
7197    }
7198
7199    /// PUT UpdateItem V2
7200    /// Updates the associated Item for one or more packages at the specified Facility.
7201    /// 
7202    ///   Permissions Required:
7203    ///   - View Packages
7204    ///   - Create/Submit/Discontinue Packages
7205    ///
7206    pub async fn packages_update_item_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateItemV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7207        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7208        let client = self.client.clone();
7209        let body_val = body_val.clone();
7210        self.rate_limiter.execute(None, false, move || {
7211            let client = client.clone();
7212            let license_number = license_number.clone();
7213            let body_val = body_val.clone();
7214            async move { client.packages_update_item_v2(license_number, body_val.as_ref()).await }
7215        }).await
7216    }
7217
7218    /// PUT UpdateLabTestRequired V2
7219    /// Updates the list of required lab test batches for one or more packages at the specified Facility.
7220    /// 
7221    ///   Permissions Required:
7222    ///   - View Packages
7223    ///   - Create/Submit/Discontinue Packages
7224    ///
7225    pub async fn packages_update_lab_test_required_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateLabTestRequiredV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7226        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7227        let client = self.client.clone();
7228        let body_val = body_val.clone();
7229        self.rate_limiter.execute(None, false, move || {
7230            let client = client.clone();
7231            let license_number = license_number.clone();
7232            let body_val = body_val.clone();
7233            async move { client.packages_update_lab_test_required_v2(license_number, body_val.as_ref()).await }
7234        }).await
7235    }
7236
7237    /// PUT UpdateLocation V2
7238    /// Updates the Location and Sublocation for one or more packages at the specified Facility.
7239    /// 
7240    ///   Permissions Required:
7241    ///   - View Packages
7242    ///   - Create/Submit/Discontinue Packages
7243    ///
7244    pub async fn packages_update_location_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateLocationV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7245        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7246        let client = self.client.clone();
7247        let body_val = body_val.clone();
7248        self.rate_limiter.execute(None, false, move || {
7249            let client = client.clone();
7250            let license_number = license_number.clone();
7251            let body_val = body_val.clone();
7252            async move { client.packages_update_location_v2(license_number, body_val.as_ref()).await }
7253        }).await
7254    }
7255
7256    /// PUT UpdateNote V2
7257    /// Updates notes associated with one or more packages for the specified Facility.
7258    /// 
7259    ///   Permissions Required:
7260    ///   - View Packages
7261    ///   - Manage Packages Inventory
7262    ///   - Manage Package Notes
7263    ///
7264    pub async fn packages_update_note_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateNoteV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7265        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7266        let client = self.client.clone();
7267        let body_val = body_val.clone();
7268        self.rate_limiter.execute(None, false, move || {
7269            let client = client.clone();
7270            let license_number = license_number.clone();
7271            let body_val = body_val.clone();
7272            async move { client.packages_update_note_v2(license_number, body_val.as_ref()).await }
7273        }).await
7274    }
7275
7276    /// PUT UpdateRemediate V2
7277    /// Updates a list of Product remediations for packages at a specific Facility.
7278    /// 
7279    ///   Permissions Required:
7280    ///   - View Packages
7281    ///   - Manage Packages Inventory
7282    ///
7283    pub async fn packages_update_remediate_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateRemediateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7284        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7285        let client = self.client.clone();
7286        let body_val = body_val.clone();
7287        self.rate_limiter.execute(None, false, move || {
7288            let client = client.clone();
7289            let license_number = license_number.clone();
7290            let body_val = body_val.clone();
7291            async move { client.packages_update_remediate_v2(license_number, body_val.as_ref()).await }
7292        }).await
7293    }
7294
7295    /// PUT UpdateTradesampleFlag V2
7296    /// Flags or unflags one or more packages at the specified Facility as trade samples.
7297    /// 
7298    ///   Permissions Required:
7299    ///   - View Packages
7300    ///   - Manage Packages Inventory
7301    ///
7302    pub async fn packages_update_tradesample_flag_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateTradesampleFlagV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7303        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7304        let client = self.client.clone();
7305        let body_val = body_val.clone();
7306        self.rate_limiter.execute(None, false, move || {
7307            let client = client.clone();
7308            let license_number = license_number.clone();
7309            let body_val = body_val.clone();
7310            async move { client.packages_update_tradesample_flag_v2(license_number, body_val.as_ref()).await }
7311        }).await
7312    }
7313
7314    /// PUT UpdateTradesampleUnflag V2
7315    /// Removes the trade sample flag from one or more packages at the specified Facility.
7316    /// 
7317    ///   Permissions Required:
7318    ///   - View Packages
7319    ///   - Manage Packages Inventory
7320    ///
7321    pub async fn packages_update_tradesample_unflag_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateTradesampleUnflagV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7322        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7323        let client = self.client.clone();
7324        let body_val = body_val.clone();
7325        self.rate_limiter.execute(None, false, move || {
7326            let client = client.clone();
7327            let license_number = license_number.clone();
7328            let body_val = body_val.clone();
7329            async move { client.packages_update_tradesample_unflag_v2(license_number, body_val.as_ref()).await }
7330        }).await
7331    }
7332
7333    /// PUT UpdateUnfinish V2
7334    /// Updates a list of packages as unfinished for a specific Facility.
7335    /// 
7336    ///   Permissions Required:
7337    ///   - View Packages
7338    ///   - Manage Packages Inventory
7339    ///
7340    pub async fn packages_update_unfinish_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateUnfinishV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7341        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7342        let client = self.client.clone();
7343        let body_val = body_val.clone();
7344        self.rate_limiter.execute(None, false, move || {
7345            let client = client.clone();
7346            let license_number = license_number.clone();
7347            let body_val = body_val.clone();
7348            async move { client.packages_update_unfinish_v2(license_number, body_val.as_ref()).await }
7349        }).await
7350    }
7351
7352    /// PUT UpdateUsebydate V2
7353    /// Updates the use-by date for one or more packages at the specified Facility.
7354    /// 
7355    ///   Permissions Required:
7356    ///   - View Packages
7357    ///   - Create/Submit/Discontinue Packages
7358    ///
7359    pub async fn packages_update_usebydate_v2(&self, license_number: Option<String>, body: Option<&Vec<PackagesUpdateUsebydateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7360        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7361        let client = self.client.clone();
7362        let body_val = body_val.clone();
7363        self.rate_limiter.execute(None, false, move || {
7364            let client = client.clone();
7365            let license_number = license_number.clone();
7366            let body_val = body_val.clone();
7367            async move { client.packages_update_usebydate_v2(license_number, body_val.as_ref()).await }
7368        }).await
7369    }
7370
7371    /// POST Create V1
7372    /// Permissions Required:
7373    ///   - ManagePatientsCheckIns
7374    ///
7375    pub async fn patient_check_ins_create_v1(&self, license_number: Option<String>, body: Option<&Vec<PatientCheckInsCreateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7376        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7377        let client = self.client.clone();
7378        let body_val = body_val.clone();
7379        self.rate_limiter.execute(None, false, move || {
7380            let client = client.clone();
7381            let license_number = license_number.clone();
7382            let body_val = body_val.clone();
7383            async move { client.patient_check_ins_create_v1(license_number, body_val.as_ref()).await }
7384        }).await
7385    }
7386
7387    /// POST Create V2
7388    /// Records patient check-ins for a specified Facility.
7389    /// 
7390    ///   Permissions Required:
7391    ///   - ManagePatientsCheckIns
7392    ///
7393    pub async fn patient_check_ins_create_v2(&self, license_number: Option<String>, body: Option<&Vec<PatientCheckInsCreateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7394        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7395        let client = self.client.clone();
7396        let body_val = body_val.clone();
7397        self.rate_limiter.execute(None, false, move || {
7398            let client = client.clone();
7399            let license_number = license_number.clone();
7400            let body_val = body_val.clone();
7401            async move { client.patient_check_ins_create_v2(license_number, body_val.as_ref()).await }
7402        }).await
7403    }
7404
7405    /// DELETE Delete V1
7406    /// Permissions Required:
7407    ///   - ManagePatientsCheckIns
7408    ///
7409    pub async fn patient_check_ins_delete_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7410        let id = id.to_string();
7411        let client = self.client.clone();
7412        let body = body.cloned();
7413        self.rate_limiter.execute(None, false, move || {
7414            let client = client.clone();
7415            let id = id.clone();
7416            let license_number = license_number.clone();
7417            let body = body.clone();
7418            async move { client.patient_check_ins_delete_v1(&id, license_number, body.as_ref()).await }
7419        }).await
7420    }
7421
7422    /// DELETE Delete V2
7423    /// Archives a Patient Check-In, identified by its Id, for a specified Facility.
7424    /// 
7425    ///   Permissions Required:
7426    ///   - ManagePatientsCheckIns
7427    ///
7428    pub async fn patient_check_ins_delete_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7429        let id = id.to_string();
7430        let client = self.client.clone();
7431        let body = body.cloned();
7432        self.rate_limiter.execute(None, false, move || {
7433            let client = client.clone();
7434            let id = id.clone();
7435            let license_number = license_number.clone();
7436            let body = body.clone();
7437            async move { client.patient_check_ins_delete_v2(&id, license_number, body.as_ref()).await }
7438        }).await
7439    }
7440
7441    /// GET GetAll V1
7442    /// Permissions Required:
7443    ///   - ManagePatientsCheckIns
7444    ///
7445    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>> {
7446        let client = self.client.clone();
7447        let body = body.cloned();
7448        self.rate_limiter.execute(None, true, move || {
7449            let client = client.clone();
7450            let checkin_date_end = checkin_date_end.clone();
7451            let checkin_date_start = checkin_date_start.clone();
7452            let license_number = license_number.clone();
7453            let body = body.clone();
7454            async move { client.patient_check_ins_get_all_v1(checkin_date_end, checkin_date_start, license_number, body.as_ref()).await }
7455        }).await
7456    }
7457
7458    /// GET GetAll V2
7459    /// Retrieves a list of patient check-ins for a specified Facility.
7460    /// 
7461    ///   Permissions Required:
7462    ///   - ManagePatientsCheckIns
7463    ///
7464    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>> {
7465        let client = self.client.clone();
7466        let body = body.cloned();
7467        self.rate_limiter.execute(None, true, move || {
7468            let client = client.clone();
7469            let checkin_date_end = checkin_date_end.clone();
7470            let checkin_date_start = checkin_date_start.clone();
7471            let license_number = license_number.clone();
7472            let body = body.clone();
7473            async move { client.patient_check_ins_get_all_v2(checkin_date_end, checkin_date_start, license_number, body.as_ref()).await }
7474        }).await
7475    }
7476
7477    /// GET GetLocations V1
7478    /// Permissions Required:
7479    ///   - None
7480    ///
7481    pub async fn patient_check_ins_get_locations_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7482        let client = self.client.clone();
7483        let body = body.cloned();
7484        self.rate_limiter.execute(None, true, move || {
7485            let client = client.clone();
7486            let no = no.clone();
7487            let body = body.clone();
7488            async move { client.patient_check_ins_get_locations_v1(no, body.as_ref()).await }
7489        }).await
7490    }
7491
7492    /// GET GetLocations V2
7493    /// Retrieves a list of Patient Check-In locations.
7494    /// 
7495    ///   Permissions Required:
7496    ///   - None
7497    ///
7498    pub async fn patient_check_ins_get_locations_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7499        let client = self.client.clone();
7500        let body = body.cloned();
7501        self.rate_limiter.execute(None, true, move || {
7502            let client = client.clone();
7503            let no = no.clone();
7504            let body = body.clone();
7505            async move { client.patient_check_ins_get_locations_v2(no, body.as_ref()).await }
7506        }).await
7507    }
7508
7509    /// PUT Update V1
7510    /// Permissions Required:
7511    ///   - ManagePatientsCheckIns
7512    ///
7513    pub async fn patient_check_ins_update_v1(&self, license_number: Option<String>, body: Option<&Vec<PatientCheckInsUpdateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7514        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7515        let client = self.client.clone();
7516        let body_val = body_val.clone();
7517        self.rate_limiter.execute(None, false, move || {
7518            let client = client.clone();
7519            let license_number = license_number.clone();
7520            let body_val = body_val.clone();
7521            async move { client.patient_check_ins_update_v1(license_number, body_val.as_ref()).await }
7522        }).await
7523    }
7524
7525    /// PUT Update V2
7526    /// Updates patient check-ins for a specified Facility.
7527    /// 
7528    ///   Permissions Required:
7529    ///   - ManagePatientsCheckIns
7530    ///
7531    pub async fn patient_check_ins_update_v2(&self, license_number: Option<String>, body: Option<&Vec<PatientCheckInsUpdateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7532        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7533        let client = self.client.clone();
7534        let body_val = body_val.clone();
7535        self.rate_limiter.execute(None, false, move || {
7536            let client = client.clone();
7537            let license_number = license_number.clone();
7538            let body_val = body_val.clone();
7539            async move { client.patient_check_ins_update_v2(license_number, body_val.as_ref()).await }
7540        }).await
7541    }
7542
7543    /// POST Create V2
7544    /// Adds new patients to a specified Facility.
7545    /// 
7546    ///   Permissions Required:
7547    ///   - Manage Patients
7548    ///
7549    pub async fn patients_create_v2(&self, license_number: Option<String>, body: Option<&Vec<PatientsCreateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7550        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7551        let client = self.client.clone();
7552        let body_val = body_val.clone();
7553        self.rate_limiter.execute(None, false, move || {
7554            let client = client.clone();
7555            let license_number = license_number.clone();
7556            let body_val = body_val.clone();
7557            async move { client.patients_create_v2(license_number, body_val.as_ref()).await }
7558        }).await
7559    }
7560
7561    /// POST CreateAdd V1
7562    /// Permissions Required:
7563    ///   - Manage Patients
7564    ///
7565    pub async fn patients_create_add_v1(&self, license_number: Option<String>, body: Option<&Vec<PatientsCreateAddV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7566        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7567        let client = self.client.clone();
7568        let body_val = body_val.clone();
7569        self.rate_limiter.execute(None, false, move || {
7570            let client = client.clone();
7571            let license_number = license_number.clone();
7572            let body_val = body_val.clone();
7573            async move { client.patients_create_add_v1(license_number, body_val.as_ref()).await }
7574        }).await
7575    }
7576
7577    /// POST CreateUpdate V1
7578    /// Permissions Required:
7579    ///   - Manage Patients
7580    ///
7581    pub async fn patients_create_update_v1(&self, license_number: Option<String>, body: Option<&Vec<PatientsCreateUpdateV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7582        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7583        let client = self.client.clone();
7584        let body_val = body_val.clone();
7585        self.rate_limiter.execute(None, false, move || {
7586            let client = client.clone();
7587            let license_number = license_number.clone();
7588            let body_val = body_val.clone();
7589            async move { client.patients_create_update_v1(license_number, body_val.as_ref()).await }
7590        }).await
7591    }
7592
7593    /// DELETE Delete V1
7594    /// Permissions Required:
7595    ///   - Manage Patients
7596    ///
7597    pub async fn patients_delete_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7598        let id = id.to_string();
7599        let client = self.client.clone();
7600        let body = body.cloned();
7601        self.rate_limiter.execute(None, false, move || {
7602            let client = client.clone();
7603            let id = id.clone();
7604            let license_number = license_number.clone();
7605            let body = body.clone();
7606            async move { client.patients_delete_v1(&id, license_number, body.as_ref()).await }
7607        }).await
7608    }
7609
7610    /// DELETE Delete V2
7611    /// Removes a Patient, identified by an Id, from a specified Facility.
7612    /// 
7613    ///   Permissions Required:
7614    ///   - Manage Patients
7615    ///
7616    pub async fn patients_delete_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7617        let id = id.to_string();
7618        let client = self.client.clone();
7619        let body = body.cloned();
7620        self.rate_limiter.execute(None, false, move || {
7621            let client = client.clone();
7622            let id = id.clone();
7623            let license_number = license_number.clone();
7624            let body = body.clone();
7625            async move { client.patients_delete_v2(&id, license_number, body.as_ref()).await }
7626        }).await
7627    }
7628
7629    /// GET Get V1
7630    /// Permissions Required:
7631    ///   - Manage Patients
7632    ///
7633    pub async fn patients_get_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7634        let id = id.to_string();
7635        let client = self.client.clone();
7636        let body = body.cloned();
7637        self.rate_limiter.execute(None, true, move || {
7638            let client = client.clone();
7639            let id = id.clone();
7640            let license_number = license_number.clone();
7641            let body = body.clone();
7642            async move { client.patients_get_v1(&id, license_number, body.as_ref()).await }
7643        }).await
7644    }
7645
7646    /// GET Get V2
7647    /// Retrieves a Patient by Id.
7648    /// 
7649    ///   Permissions Required:
7650    ///   - Manage Patients
7651    ///
7652    pub async fn patients_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7653        let id = id.to_string();
7654        let client = self.client.clone();
7655        let body = body.cloned();
7656        self.rate_limiter.execute(None, true, move || {
7657            let client = client.clone();
7658            let id = id.clone();
7659            let license_number = license_number.clone();
7660            let body = body.clone();
7661            async move { client.patients_get_v2(&id, license_number, body.as_ref()).await }
7662        }).await
7663    }
7664
7665    /// GET GetActive V1
7666    /// Permissions Required:
7667    ///   - Manage Patients
7668    ///
7669    pub async fn patients_get_active_v1(&self, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7670        let client = self.client.clone();
7671        let body = body.cloned();
7672        self.rate_limiter.execute(None, true, move || {
7673            let client = client.clone();
7674            let license_number = license_number.clone();
7675            let body = body.clone();
7676            async move { client.patients_get_active_v1(license_number, body.as_ref()).await }
7677        }).await
7678    }
7679
7680    /// GET GetActive V2
7681    /// Retrieves a list of active patients for a specified Facility.
7682    /// 
7683    ///   Permissions Required:
7684    ///   - Manage Patients
7685    ///
7686    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>> {
7687        let client = self.client.clone();
7688        let body = body.cloned();
7689        self.rate_limiter.execute(None, true, move || {
7690            let client = client.clone();
7691            let license_number = license_number.clone();
7692            let page_number = page_number.clone();
7693            let page_size = page_size.clone();
7694            let body = body.clone();
7695            async move { client.patients_get_active_v2(license_number, page_number, page_size, body.as_ref()).await }
7696        }).await
7697    }
7698
7699    /// PUT Update V2
7700    /// Updates Patient information for a specified Facility.
7701    /// 
7702    ///   Permissions Required:
7703    ///   - Manage Patients
7704    ///
7705    pub async fn patients_update_v2(&self, license_number: Option<String>, body: Option<&Vec<PatientsUpdateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7706        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7707        let client = self.client.clone();
7708        let body_val = body_val.clone();
7709        self.rate_limiter.execute(None, false, move || {
7710            let client = client.clone();
7711            let license_number = license_number.clone();
7712            let body_val = body_val.clone();
7713            async move { client.patients_update_v2(license_number, body_val.as_ref()).await }
7714        }).await
7715    }
7716
7717    /// GET GetStatusesByPatientLicenseNumber V1
7718    /// Data returned by this endpoint is cached for up to one minute.
7719    /// 
7720    ///   Permissions Required:
7721    ///   - Lookup Patients
7722    ///
7723    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>> {
7724        let patient_license_number = patient_license_number.to_string();
7725        let client = self.client.clone();
7726        let body = body.cloned();
7727        self.rate_limiter.execute(None, true, move || {
7728            let client = client.clone();
7729            let patient_license_number = patient_license_number.clone();
7730            let license_number = license_number.clone();
7731            let body = body.clone();
7732            async move { client.patients_status_get_statuses_by_patient_license_number_v1(&patient_license_number, license_number, body.as_ref()).await }
7733        }).await
7734    }
7735
7736    /// GET GetStatusesByPatientLicenseNumber V2
7737    /// 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.
7738    /// 
7739    ///   Permissions Required:
7740    ///   - Lookup Patients
7741    ///
7742    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>> {
7743        let patient_license_number = patient_license_number.to_string();
7744        let client = self.client.clone();
7745        let body = body.cloned();
7746        self.rate_limiter.execute(None, true, move || {
7747            let client = client.clone();
7748            let patient_license_number = patient_license_number.clone();
7749            let license_number = license_number.clone();
7750            let body = body.clone();
7751            async move { client.patients_status_get_statuses_by_patient_license_number_v2(&patient_license_number, license_number, body.as_ref()).await }
7752        }).await
7753    }
7754
7755    /// POST Create V2
7756    /// Creates new additive templates for a specified Facility.
7757    /// 
7758    ///   Permissions Required:
7759    ///   - Manage Additives
7760    ///
7761    pub async fn additives_templates_create_v2(&self, license_number: Option<String>, body: Option<&Vec<AdditivesTemplatesCreateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7762        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7763        let client = self.client.clone();
7764        let body_val = body_val.clone();
7765        self.rate_limiter.execute(None, false, move || {
7766            let client = client.clone();
7767            let license_number = license_number.clone();
7768            let body_val = body_val.clone();
7769            async move { client.additives_templates_create_v2(license_number, body_val.as_ref()).await }
7770        }).await
7771    }
7772
7773    /// GET Get V2
7774    /// Retrieves an Additive Template by its Id.
7775    /// 
7776    ///   Permissions Required:
7777    ///   - Manage Additives
7778    ///
7779    pub async fn additives_templates_get_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7780        let id = id.to_string();
7781        let client = self.client.clone();
7782        let body = body.cloned();
7783        self.rate_limiter.execute(None, true, move || {
7784            let client = client.clone();
7785            let id = id.clone();
7786            let license_number = license_number.clone();
7787            let body = body.clone();
7788            async move { client.additives_templates_get_v2(&id, license_number, body.as_ref()).await }
7789        }).await
7790    }
7791
7792    /// GET GetActive V2
7793    /// Retrieves a list of active additive templates for a specified Facility.
7794    /// 
7795    ///   Permissions Required:
7796    ///   - Manage Additives
7797    ///
7798    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>> {
7799        let client = self.client.clone();
7800        let body = body.cloned();
7801        self.rate_limiter.execute(None, true, move || {
7802            let client = client.clone();
7803            let last_modified_end = last_modified_end.clone();
7804            let last_modified_start = last_modified_start.clone();
7805            let license_number = license_number.clone();
7806            let page_number = page_number.clone();
7807            let page_size = page_size.clone();
7808            let body = body.clone();
7809            async move { client.additives_templates_get_active_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
7810        }).await
7811    }
7812
7813    /// GET GetInactive V2
7814    /// Retrieves a list of inactive additive templates for a specified Facility.
7815    /// 
7816    ///   Permissions Required:
7817    ///   - Manage Additives
7818    ///
7819    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>> {
7820        let client = self.client.clone();
7821        let body = body.cloned();
7822        self.rate_limiter.execute(None, true, move || {
7823            let client = client.clone();
7824            let last_modified_end = last_modified_end.clone();
7825            let last_modified_start = last_modified_start.clone();
7826            let license_number = license_number.clone();
7827            let page_number = page_number.clone();
7828            let page_size = page_size.clone();
7829            let body = body.clone();
7830            async move { client.additives_templates_get_inactive_v2(last_modified_end, last_modified_start, license_number, page_number, page_size, body.as_ref()).await }
7831        }).await
7832    }
7833
7834    /// PUT Update V2
7835    /// Updates existing additive templates for a specified Facility.
7836    /// 
7837    ///   Permissions Required:
7838    ///   - Manage Additives
7839    ///
7840    pub async fn additives_templates_update_v2(&self, license_number: Option<String>, body: Option<&Vec<AdditivesTemplatesUpdateV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7841        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7842        let client = self.client.clone();
7843        let body_val = body_val.clone();
7844        self.rate_limiter.execute(None, false, move || {
7845            let client = client.clone();
7846            let license_number = license_number.clone();
7847            let body_val = body_val.clone();
7848            async move { client.additives_templates_update_v2(license_number, body_val.as_ref()).await }
7849        }).await
7850    }
7851
7852    /// POST CreateRecord V1
7853    /// Permissions Required:
7854    ///   - View Packages
7855    ///   - Manage Packages Inventory
7856    ///
7857    pub async fn lab_tests_create_record_v1(&self, license_number: Option<String>, body: Option<&Vec<LabTestsCreateRecordV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7858        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7859        let client = self.client.clone();
7860        let body_val = body_val.clone();
7861        self.rate_limiter.execute(None, false, move || {
7862            let client = client.clone();
7863            let license_number = license_number.clone();
7864            let body_val = body_val.clone();
7865            async move { client.lab_tests_create_record_v1(license_number, body_val.as_ref()).await }
7866        }).await
7867    }
7868
7869    /// POST CreateRecord V2
7870    /// 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.
7871    /// 
7872    ///   Permissions Required:
7873    ///   - View Packages
7874    ///   - Manage Packages Inventory
7875    ///
7876    pub async fn lab_tests_create_record_v2(&self, license_number: Option<String>, body: Option<&Vec<LabTestsCreateRecordV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
7877        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
7878        let client = self.client.clone();
7879        let body_val = body_val.clone();
7880        self.rate_limiter.execute(None, false, move || {
7881            let client = client.clone();
7882            let license_number = license_number.clone();
7883            let body_val = body_val.clone();
7884            async move { client.lab_tests_create_record_v2(license_number, body_val.as_ref()).await }
7885        }).await
7886    }
7887
7888    /// GET GetBatches V2
7889    /// Retrieves a list of Lab Test batches.
7890    /// 
7891    ///   Permissions Required:
7892    ///   - None
7893    ///
7894    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>> {
7895        let client = self.client.clone();
7896        let body = body.cloned();
7897        self.rate_limiter.execute(None, true, move || {
7898            let client = client.clone();
7899            let page_number = page_number.clone();
7900            let page_size = page_size.clone();
7901            let body = body.clone();
7902            async move { client.lab_tests_get_batches_v2(page_number, page_size, body.as_ref()).await }
7903        }).await
7904    }
7905
7906    /// GET GetLabtestdocument V1
7907    /// Permissions Required:
7908    ///   - View Packages
7909    ///   - Manage Packages Inventory
7910    ///
7911    pub async fn lab_tests_get_labtestdocument_v1(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7912        let id = id.to_string();
7913        let client = self.client.clone();
7914        let body = body.cloned();
7915        self.rate_limiter.execute(None, true, move || {
7916            let client = client.clone();
7917            let id = id.clone();
7918            let license_number = license_number.clone();
7919            let body = body.clone();
7920            async move { client.lab_tests_get_labtestdocument_v1(&id, license_number, body.as_ref()).await }
7921        }).await
7922    }
7923
7924    /// GET GetLabtestdocument V2
7925    /// Retrieves a specific Lab Test result document by its Id for a given Facility.
7926    /// 
7927    ///   Permissions Required:
7928    ///   - View Packages
7929    ///   - Manage Packages Inventory
7930    ///
7931    pub async fn lab_tests_get_labtestdocument_v2(&self, id: &str, license_number: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7932        let id = id.to_string();
7933        let client = self.client.clone();
7934        let body = body.cloned();
7935        self.rate_limiter.execute(None, true, move || {
7936            let client = client.clone();
7937            let id = id.clone();
7938            let license_number = license_number.clone();
7939            let body = body.clone();
7940            async move { client.lab_tests_get_labtestdocument_v2(&id, license_number, body.as_ref()).await }
7941        }).await
7942    }
7943
7944    /// GET GetResults V1
7945    /// Permissions Required:
7946    ///   - View Packages
7947    ///
7948    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>> {
7949        let client = self.client.clone();
7950        let body = body.cloned();
7951        self.rate_limiter.execute(None, true, move || {
7952            let client = client.clone();
7953            let license_number = license_number.clone();
7954            let package_id = package_id.clone();
7955            let body = body.clone();
7956            async move { client.lab_tests_get_results_v1(license_number, package_id, body.as_ref()).await }
7957        }).await
7958    }
7959
7960    /// GET GetResults V2
7961    /// Retrieves Lab Test results for a specified Package.
7962    /// 
7963    ///   Permissions Required:
7964    ///   - View Packages
7965    ///   - Manage Packages Inventory
7966    ///
7967    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>> {
7968        let client = self.client.clone();
7969        let body = body.cloned();
7970        self.rate_limiter.execute(None, true, move || {
7971            let client = client.clone();
7972            let license_number = license_number.clone();
7973            let package_id = package_id.clone();
7974            let page_number = page_number.clone();
7975            let page_size = page_size.clone();
7976            let body = body.clone();
7977            async move { client.lab_tests_get_results_v2(license_number, package_id, page_number, page_size, body.as_ref()).await }
7978        }).await
7979    }
7980
7981    /// GET GetStates V1
7982    /// Permissions Required:
7983    ///   - None
7984    ///
7985    pub async fn lab_tests_get_states_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
7986        let client = self.client.clone();
7987        let body = body.cloned();
7988        self.rate_limiter.execute(None, true, move || {
7989            let client = client.clone();
7990            let no = no.clone();
7991            let body = body.clone();
7992            async move { client.lab_tests_get_states_v1(no, body.as_ref()).await }
7993        }).await
7994    }
7995
7996    /// GET GetStates V2
7997    /// Returns a list of all lab testing states.
7998    /// 
7999    ///   Permissions Required:
8000    ///   - None
8001    ///
8002    pub async fn lab_tests_get_states_v2(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
8003        let client = self.client.clone();
8004        let body = body.cloned();
8005        self.rate_limiter.execute(None, true, move || {
8006            let client = client.clone();
8007            let no = no.clone();
8008            let body = body.clone();
8009            async move { client.lab_tests_get_states_v2(no, body.as_ref()).await }
8010        }).await
8011    }
8012
8013    /// GET GetTypes V1
8014    /// Permissions Required:
8015    ///   - None
8016    ///
8017    pub async fn lab_tests_get_types_v1(&self, no: Option<String>, body: Option<&Value>) -> Result<Option<Value>, Box<dyn Error>> {
8018        let client = self.client.clone();
8019        let body = body.cloned();
8020        self.rate_limiter.execute(None, true, move || {
8021            let client = client.clone();
8022            let no = no.clone();
8023            let body = body.clone();
8024            async move { client.lab_tests_get_types_v1(no, body.as_ref()).await }
8025        }).await
8026    }
8027
8028    /// GET GetTypes V2
8029    /// Returns a list of Lab Test types.
8030    /// 
8031    ///   Permissions Required:
8032    ///   - None
8033    ///
8034    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>> {
8035        let client = self.client.clone();
8036        let body = body.cloned();
8037        self.rate_limiter.execute(None, true, move || {
8038            let client = client.clone();
8039            let page_number = page_number.clone();
8040            let page_size = page_size.clone();
8041            let body = body.clone();
8042            async move { client.lab_tests_get_types_v2(page_number, page_size, body.as_ref()).await }
8043        }).await
8044    }
8045
8046    /// PUT UpdateLabtestdocument V1
8047    /// Permissions Required:
8048    ///   - View Packages
8049    ///   - Manage Packages Inventory
8050    ///
8051    pub async fn lab_tests_update_labtestdocument_v1(&self, license_number: Option<String>, body: Option<&Vec<LabTestsUpdateLabtestdocumentV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
8052        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
8053        let client = self.client.clone();
8054        let body_val = body_val.clone();
8055        self.rate_limiter.execute(None, false, move || {
8056            let client = client.clone();
8057            let license_number = license_number.clone();
8058            let body_val = body_val.clone();
8059            async move { client.lab_tests_update_labtestdocument_v1(license_number, body_val.as_ref()).await }
8060        }).await
8061    }
8062
8063    /// PUT UpdateLabtestdocument V2
8064    /// Updates one or more documents for previously submitted lab tests.
8065    /// 
8066    ///   Permissions Required:
8067    ///   - View Packages
8068    ///   - Manage Packages Inventory
8069    ///
8070    pub async fn lab_tests_update_labtestdocument_v2(&self, license_number: Option<String>, body: Option<&Vec<LabTestsUpdateLabtestdocumentV2RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
8071        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
8072        let client = self.client.clone();
8073        let body_val = body_val.clone();
8074        self.rate_limiter.execute(None, false, move || {
8075            let client = client.clone();
8076            let license_number = license_number.clone();
8077            let body_val = body_val.clone();
8078            async move { client.lab_tests_update_labtestdocument_v2(license_number, body_val.as_ref()).await }
8079        }).await
8080    }
8081
8082    /// PUT UpdateResultRelease V1
8083    /// Permissions Required:
8084    ///   - View Packages
8085    ///   - Manage Packages Inventory
8086    ///
8087    pub async fn lab_tests_update_result_release_v1(&self, license_number: Option<String>, body: Option<&Vec<LabTestsUpdateResultReleaseV1RequestItem>>) -> Result<Option<Value>, Box<dyn Error>> {
8088        let body_val = if let Some(b) = body { Some(serde_json::to_value(b)?) } else { None };
8089        let client = self.client.clone();
8090        let body_val = body_val.clone();
8091        self.rate_limiter.execute(None, false, move || {
8092            let client = client.clone();
8093            let license_number = license_number.clone();
8094            let body_val = body_val.clone();
8095            async move { client.lab_tests_update_result_release_v1(license_number, body_val.as_ref()).await }
8096        }).await
8097    }
8098
8099    /// PUT UpdateResultRelease V2
8100    /// Releases Lab Test results for one or more packages.
8101    /// 
8102    ///   Permissions Required:
8103    ///   - View Packages
8104    ///   - Manage Packages Inventory
8105    ///
8106    pub async fn lab_tests_update_result_release_v2(&self, license_number: Option<String>, body: Option<&Vec<LabTestsUpdateResultReleaseV2RequestItem>>) -> 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.lab_tests_update_result_release_v2(license_number, body_val.as_ref()).await }
8115        }).await
8116    }
8117
8118}
8119
8120#[derive(Serialize, Deserialize, Debug, Clone)]
8121pub struct ProcessingJobsCreateAdjustV1RequestItem {
8122    #[serde(rename = "AdjustmentDate")]
8123    pub adjustment_date: Option<String>,
8124    #[serde(rename = "AdjustmentNote")]
8125    pub adjustment_note: Option<String>,
8126    #[serde(rename = "AdjustmentReason")]
8127    pub adjustment_reason: Option<String>,
8128    #[serde(rename = "CountUnitOfMeasureName")]
8129    pub count_unit_of_measure_name: Option<String>,
8130    #[serde(rename = "Id")]
8131    pub id: Option<i64>,
8132    #[serde(rename = "Packages")]
8133    pub packages: Option<Vec<ProcessingJobsCreateAdjustV1RequestItemPackages>>,
8134    #[serde(rename = "VolumeUnitOfMeasureName")]
8135    pub volume_unit_of_measure_name: Option<String>,
8136    #[serde(rename = "WeightUnitOfMeasureName")]
8137    pub weight_unit_of_measure_name: Option<String>,
8138}
8139
8140#[derive(Serialize, Deserialize, Debug, Clone)]
8141pub struct ProcessingJobsCreateAdjustV1RequestItemPackages {
8142    #[serde(rename = "Label")]
8143    pub label: Option<String>,
8144    #[serde(rename = "Quantity")]
8145    pub quantity: Option<i64>,
8146    #[serde(rename = "UnitOfMeasure")]
8147    pub unit_of_measure: Option<String>,
8148}
8149
8150#[derive(Serialize, Deserialize, Debug, Clone)]
8151pub struct ProcessingJobsCreateAdjustV2RequestItem {
8152    #[serde(rename = "AdjustmentDate")]
8153    pub adjustment_date: Option<String>,
8154    #[serde(rename = "AdjustmentNote")]
8155    pub adjustment_note: Option<String>,
8156    #[serde(rename = "AdjustmentReason")]
8157    pub adjustment_reason: Option<String>,
8158    #[serde(rename = "CountUnitOfMeasureName")]
8159    pub count_unit_of_measure_name: Option<String>,
8160    #[serde(rename = "Id")]
8161    pub id: Option<i64>,
8162    #[serde(rename = "Packages")]
8163    pub packages: Option<Vec<ProcessingJobsCreateAdjustV2RequestItemPackages>>,
8164    #[serde(rename = "VolumeUnitOfMeasureName")]
8165    pub volume_unit_of_measure_name: Option<String>,
8166    #[serde(rename = "WeightUnitOfMeasureName")]
8167    pub weight_unit_of_measure_name: Option<String>,
8168}
8169
8170#[derive(Serialize, Deserialize, Debug, Clone)]
8171pub struct ProcessingJobsCreateAdjustV2RequestItemPackages {
8172    #[serde(rename = "Label")]
8173    pub label: Option<String>,
8174    #[serde(rename = "Quantity")]
8175    pub quantity: Option<i64>,
8176    #[serde(rename = "UnitOfMeasure")]
8177    pub unit_of_measure: Option<String>,
8178}
8179
8180#[derive(Serialize, Deserialize, Debug, Clone)]
8181pub struct ProcessingJobsCreateJobtypesV1RequestItem {
8182    #[serde(rename = "Attributes")]
8183    pub attributes: Option<Vec<String>>,
8184    #[serde(rename = "Category")]
8185    pub category: Option<String>,
8186    #[serde(rename = "Description")]
8187    pub description: Option<String>,
8188    #[serde(rename = "Name")]
8189    pub name: Option<String>,
8190    #[serde(rename = "ProcessingSteps")]
8191    pub processing_steps: Option<String>,
8192}
8193
8194#[derive(Serialize, Deserialize, Debug, Clone)]
8195pub struct ProcessingJobsCreateJobtypesV2RequestItem {
8196    #[serde(rename = "Attributes")]
8197    pub attributes: Option<Vec<String>>,
8198    #[serde(rename = "Category")]
8199    pub category: Option<String>,
8200    #[serde(rename = "Description")]
8201    pub description: Option<String>,
8202    #[serde(rename = "Name")]
8203    pub name: Option<String>,
8204    #[serde(rename = "ProcessingSteps")]
8205    pub processing_steps: Option<String>,
8206}
8207
8208#[derive(Serialize, Deserialize, Debug, Clone)]
8209pub struct ProcessingJobsCreateStartV1RequestItem {
8210    #[serde(rename = "CountUnitOfMeasure")]
8211    pub count_unit_of_measure: Option<String>,
8212    #[serde(rename = "JobName")]
8213    pub job_name: Option<String>,
8214    #[serde(rename = "JobType")]
8215    pub job_type: Option<String>,
8216    #[serde(rename = "Packages")]
8217    pub packages: Option<Vec<ProcessingJobsCreateStartV1RequestItemPackages>>,
8218    #[serde(rename = "StartDate")]
8219    pub start_date: Option<String>,
8220    #[serde(rename = "VolumeUnitOfMeasure")]
8221    pub volume_unit_of_measure: Option<String>,
8222    #[serde(rename = "WeightUnitOfMeasure")]
8223    pub weight_unit_of_measure: Option<String>,
8224}
8225
8226#[derive(Serialize, Deserialize, Debug, Clone)]
8227pub struct ProcessingJobsCreateStartV1RequestItemPackages {
8228    #[serde(rename = "Label")]
8229    pub label: Option<String>,
8230    #[serde(rename = "Quantity")]
8231    pub quantity: Option<i64>,
8232    #[serde(rename = "UnitOfMeasure")]
8233    pub unit_of_measure: Option<String>,
8234}
8235
8236#[derive(Serialize, Deserialize, Debug, Clone)]
8237pub struct ProcessingJobsCreateStartV2RequestItem {
8238    #[serde(rename = "CountUnitOfMeasure")]
8239    pub count_unit_of_measure: Option<String>,
8240    #[serde(rename = "JobName")]
8241    pub job_name: Option<String>,
8242    #[serde(rename = "JobType")]
8243    pub job_type: Option<String>,
8244    #[serde(rename = "Packages")]
8245    pub packages: Option<Vec<ProcessingJobsCreateStartV2RequestItemPackages>>,
8246    #[serde(rename = "StartDate")]
8247    pub start_date: Option<String>,
8248    #[serde(rename = "VolumeUnitOfMeasure")]
8249    pub volume_unit_of_measure: Option<String>,
8250    #[serde(rename = "WeightUnitOfMeasure")]
8251    pub weight_unit_of_measure: Option<String>,
8252}
8253
8254#[derive(Serialize, Deserialize, Debug, Clone)]
8255pub struct ProcessingJobsCreateStartV2RequestItemPackages {
8256    #[serde(rename = "Label")]
8257    pub label: Option<String>,
8258    #[serde(rename = "Quantity")]
8259    pub quantity: Option<i64>,
8260    #[serde(rename = "UnitOfMeasure")]
8261    pub unit_of_measure: Option<String>,
8262}
8263
8264#[derive(Serialize, Deserialize, Debug, Clone)]
8265pub struct ProcessingJobsCreatepackagesV1RequestItem {
8266    #[serde(rename = "ExpirationDate")]
8267    pub expiration_date: Option<String>,
8268    #[serde(rename = "FinishDate")]
8269    pub finish_date: Option<String>,
8270    #[serde(rename = "FinishNote")]
8271    pub finish_note: Option<String>,
8272    #[serde(rename = "FinishProcessingJob")]
8273    pub finish_processing_job: Option<bool>,
8274    #[serde(rename = "Item")]
8275    pub item: Option<String>,
8276    #[serde(rename = "JobName")]
8277    pub job_name: Option<String>,
8278    #[serde(rename = "Location")]
8279    pub location: Option<String>,
8280    #[serde(rename = "Note")]
8281    pub note: Option<String>,
8282    #[serde(rename = "PackageDate")]
8283    pub package_date: Option<String>,
8284    #[serde(rename = "PatientLicenseNumber")]
8285    pub patient_license_number: Option<String>,
8286    #[serde(rename = "ProductionBatchNumber")]
8287    pub production_batch_number: Option<String>,
8288    #[serde(rename = "Quantity")]
8289    pub quantity: Option<i64>,
8290    #[serde(rename = "SellByDate")]
8291    pub sell_by_date: Option<String>,
8292    #[serde(rename = "Sublocation")]
8293    pub sublocation: Option<String>,
8294    #[serde(rename = "Tag")]
8295    pub tag: Option<String>,
8296    #[serde(rename = "UnitOfMeasure")]
8297    pub unit_of_measure: Option<String>,
8298    #[serde(rename = "UseByDate")]
8299    pub use_by_date: Option<String>,
8300    #[serde(rename = "WasteCountQuantity")]
8301    pub waste_count_quantity: Option<String>,
8302    #[serde(rename = "WasteCountUnitOfMeasureName")]
8303    pub waste_count_unit_of_measure_name: Option<String>,
8304    #[serde(rename = "WasteVolumeQuantity")]
8305    pub waste_volume_quantity: Option<String>,
8306    #[serde(rename = "WasteVolumeUnitOfMeasureName")]
8307    pub waste_volume_unit_of_measure_name: Option<String>,
8308    #[serde(rename = "WasteWeightQuantity")]
8309    pub waste_weight_quantity: Option<String>,
8310    #[serde(rename = "WasteWeightUnitOfMeasureName")]
8311    pub waste_weight_unit_of_measure_name: Option<String>,
8312}
8313
8314#[derive(Serialize, Deserialize, Debug, Clone)]
8315pub struct ProcessingJobsCreatepackagesV2RequestItem {
8316    #[serde(rename = "ExpirationDate")]
8317    pub expiration_date: Option<String>,
8318    #[serde(rename = "FinishDate")]
8319    pub finish_date: Option<String>,
8320    #[serde(rename = "FinishNote")]
8321    pub finish_note: Option<String>,
8322    #[serde(rename = "FinishProcessingJob")]
8323    pub finish_processing_job: Option<bool>,
8324    #[serde(rename = "Item")]
8325    pub item: Option<String>,
8326    #[serde(rename = "JobName")]
8327    pub job_name: Option<String>,
8328    #[serde(rename = "Location")]
8329    pub location: Option<String>,
8330    #[serde(rename = "Note")]
8331    pub note: Option<String>,
8332    #[serde(rename = "PackageDate")]
8333    pub package_date: Option<String>,
8334    #[serde(rename = "PatientLicenseNumber")]
8335    pub patient_license_number: Option<String>,
8336    #[serde(rename = "ProductionBatchNumber")]
8337    pub production_batch_number: Option<String>,
8338    #[serde(rename = "Quantity")]
8339    pub quantity: Option<i64>,
8340    #[serde(rename = "SellByDate")]
8341    pub sell_by_date: Option<String>,
8342    #[serde(rename = "Sublocation")]
8343    pub sublocation: Option<String>,
8344    #[serde(rename = "Tag")]
8345    pub tag: Option<String>,
8346    #[serde(rename = "UnitOfMeasure")]
8347    pub unit_of_measure: Option<String>,
8348    #[serde(rename = "UseByDate")]
8349    pub use_by_date: Option<String>,
8350    #[serde(rename = "WasteCountQuantity")]
8351    pub waste_count_quantity: Option<String>,
8352    #[serde(rename = "WasteCountUnitOfMeasureName")]
8353    pub waste_count_unit_of_measure_name: Option<String>,
8354    #[serde(rename = "WasteVolumeQuantity")]
8355    pub waste_volume_quantity: Option<String>,
8356    #[serde(rename = "WasteVolumeUnitOfMeasureName")]
8357    pub waste_volume_unit_of_measure_name: Option<String>,
8358    #[serde(rename = "WasteWeightQuantity")]
8359    pub waste_weight_quantity: Option<String>,
8360    #[serde(rename = "WasteWeightUnitOfMeasureName")]
8361    pub waste_weight_unit_of_measure_name: Option<String>,
8362}
8363
8364#[derive(Serialize, Deserialize, Debug, Clone)]
8365pub struct ProcessingJobsUpdateFinishV1RequestItem {
8366    #[serde(rename = "FinishDate")]
8367    pub finish_date: Option<String>,
8368    #[serde(rename = "FinishNote")]
8369    pub finish_note: Option<String>,
8370    #[serde(rename = "Id")]
8371    pub id: Option<i64>,
8372    #[serde(rename = "TotalCountWaste")]
8373    pub total_count_waste: Option<String>,
8374    #[serde(rename = "TotalVolumeWaste")]
8375    pub total_volume_waste: Option<String>,
8376    #[serde(rename = "TotalWeightWaste")]
8377    pub total_weight_waste: Option<i64>,
8378    #[serde(rename = "WasteCountUnitOfMeasureName")]
8379    pub waste_count_unit_of_measure_name: Option<String>,
8380    #[serde(rename = "WasteVolumeUnitOfMeasureName")]
8381    pub waste_volume_unit_of_measure_name: Option<String>,
8382    #[serde(rename = "WasteWeightUnitOfMeasureName")]
8383    pub waste_weight_unit_of_measure_name: Option<String>,
8384}
8385
8386#[derive(Serialize, Deserialize, Debug, Clone)]
8387pub struct ProcessingJobsUpdateFinishV2RequestItem {
8388    #[serde(rename = "FinishDate")]
8389    pub finish_date: Option<String>,
8390    #[serde(rename = "FinishNote")]
8391    pub finish_note: Option<String>,
8392    #[serde(rename = "Id")]
8393    pub id: Option<i64>,
8394    #[serde(rename = "TotalCountWaste")]
8395    pub total_count_waste: Option<String>,
8396    #[serde(rename = "TotalVolumeWaste")]
8397    pub total_volume_waste: Option<String>,
8398    #[serde(rename = "TotalWeightWaste")]
8399    pub total_weight_waste: Option<i64>,
8400    #[serde(rename = "WasteCountUnitOfMeasureName")]
8401    pub waste_count_unit_of_measure_name: Option<String>,
8402    #[serde(rename = "WasteVolumeUnitOfMeasureName")]
8403    pub waste_volume_unit_of_measure_name: Option<String>,
8404    #[serde(rename = "WasteWeightUnitOfMeasureName")]
8405    pub waste_weight_unit_of_measure_name: Option<String>,
8406}
8407
8408#[derive(Serialize, Deserialize, Debug, Clone)]
8409pub struct ProcessingJobsUpdateJobtypesV1RequestItem {
8410    #[serde(rename = "Attributes")]
8411    pub attributes: Option<Vec<String>>,
8412    #[serde(rename = "CategoryName")]
8413    pub category_name: Option<String>,
8414    #[serde(rename = "Description")]
8415    pub description: Option<String>,
8416    #[serde(rename = "Id")]
8417    pub id: Option<i64>,
8418    #[serde(rename = "Name")]
8419    pub name: Option<String>,
8420    #[serde(rename = "ProcessingSteps")]
8421    pub processing_steps: Option<String>,
8422}
8423
8424#[derive(Serialize, Deserialize, Debug, Clone)]
8425pub struct ProcessingJobsUpdateJobtypesV2RequestItem {
8426    #[serde(rename = "Attributes")]
8427    pub attributes: Option<Vec<String>>,
8428    #[serde(rename = "CategoryName")]
8429    pub category_name: Option<String>,
8430    #[serde(rename = "Description")]
8431    pub description: Option<String>,
8432    #[serde(rename = "Id")]
8433    pub id: Option<i64>,
8434    #[serde(rename = "Name")]
8435    pub name: Option<String>,
8436    #[serde(rename = "ProcessingSteps")]
8437    pub processing_steps: Option<String>,
8438}
8439
8440#[derive(Serialize, Deserialize, Debug, Clone)]
8441pub struct ProcessingJobsUpdateUnfinishV1RequestItem {
8442    #[serde(rename = "Id")]
8443    pub id: Option<i64>,
8444}
8445
8446#[derive(Serialize, Deserialize, Debug, Clone)]
8447pub struct ProcessingJobsUpdateUnfinishV2RequestItem {
8448    #[serde(rename = "Id")]
8449    pub id: Option<i64>,
8450}
8451
8452#[derive(Serialize, Deserialize, Debug, Clone)]
8453pub struct SalesCreateDeliveryV1RequestItem {
8454    #[serde(rename = "ConsumerId")]
8455    pub consumer_id: Option<i64>,
8456    #[serde(rename = "DriverEmployeeId")]
8457    pub driver_employee_id: Option<String>,
8458    #[serde(rename = "DriverName")]
8459    pub driver_name: Option<String>,
8460    #[serde(rename = "DriversLicenseNumber")]
8461    pub drivers_license_number: Option<String>,
8462    #[serde(rename = "EstimatedArrivalDateTime")]
8463    pub estimated_arrival_date_time: Option<String>,
8464    #[serde(rename = "EstimatedDepartureDateTime")]
8465    pub estimated_departure_date_time: Option<String>,
8466    #[serde(rename = "PatientLicenseNumber")]
8467    pub patient_license_number: Option<String>,
8468    #[serde(rename = "PhoneNumberForQuestions")]
8469    pub phone_number_for_questions: Option<String>,
8470    #[serde(rename = "PlannedRoute")]
8471    pub planned_route: Option<String>,
8472    #[serde(rename = "RecipientAddressCity")]
8473    pub recipient_address_city: Option<String>,
8474    #[serde(rename = "RecipientAddressCounty")]
8475    pub recipient_address_county: Option<String>,
8476    #[serde(rename = "RecipientAddressPostalCode")]
8477    pub recipient_address_postal_code: Option<String>,
8478    #[serde(rename = "RecipientAddressState")]
8479    pub recipient_address_state: Option<String>,
8480    #[serde(rename = "RecipientAddressStreet1")]
8481    pub recipient_address_street1: Option<String>,
8482    #[serde(rename = "RecipientAddressStreet2")]
8483    pub recipient_address_street2: Option<String>,
8484    #[serde(rename = "RecipientName")]
8485    pub recipient_name: Option<String>,
8486    #[serde(rename = "RecipientZoneId")]
8487    pub recipient_zone_id: Option<i64>,
8488    #[serde(rename = "SalesCustomerType")]
8489    pub sales_customer_type: Option<String>,
8490    #[serde(rename = "SalesDateTime")]
8491    pub sales_date_time: Option<String>,
8492    #[serde(rename = "Transactions")]
8493    pub transactions: Option<Vec<SalesCreateDeliveryV1RequestItemTransactions>>,
8494    #[serde(rename = "TransporterFacilityLicenseNumber")]
8495    pub transporter_facility_license_number: Option<String>,
8496    #[serde(rename = "VehicleLicensePlateNumber")]
8497    pub vehicle_license_plate_number: Option<String>,
8498    #[serde(rename = "VehicleMake")]
8499    pub vehicle_make: Option<String>,
8500    #[serde(rename = "VehicleModel")]
8501    pub vehicle_model: Option<String>,
8502}
8503
8504#[derive(Serialize, Deserialize, Debug, Clone)]
8505pub struct SalesCreateDeliveryV1RequestItemTransactions {
8506    #[serde(rename = "CityTax")]
8507    pub city_tax: Option<String>,
8508    #[serde(rename = "CountyTax")]
8509    pub county_tax: Option<String>,
8510    #[serde(rename = "DiscountAmount")]
8511    pub discount_amount: Option<String>,
8512    #[serde(rename = "ExciseTax")]
8513    pub excise_tax: Option<String>,
8514    #[serde(rename = "InvoiceNumber")]
8515    pub invoice_number: Option<String>,
8516    #[serde(rename = "MunicipalTax")]
8517    pub municipal_tax: Option<String>,
8518    #[serde(rename = "PackageLabel")]
8519    pub package_label: Option<String>,
8520    #[serde(rename = "Price")]
8521    pub price: Option<String>,
8522    #[serde(rename = "QrCodes")]
8523    pub qr_codes: Option<String>,
8524    #[serde(rename = "Quantity")]
8525    pub quantity: Option<i64>,
8526    #[serde(rename = "SalesTax")]
8527    pub sales_tax: Option<String>,
8528    #[serde(rename = "SubTotal")]
8529    pub sub_total: Option<String>,
8530    #[serde(rename = "TotalAmount")]
8531    pub total_amount: Option<f64>,
8532    #[serde(rename = "UnitOfMeasure")]
8533    pub unit_of_measure: Option<String>,
8534    #[serde(rename = "UnitThcContent")]
8535    pub unit_thc_content: Option<f64>,
8536    #[serde(rename = "UnitThcContentUnitOfMeasure")]
8537    pub unit_thc_content_unit_of_measure: Option<String>,
8538    #[serde(rename = "UnitThcPercent")]
8539    pub unit_thc_percent: Option<f64>,
8540    #[serde(rename = "UnitWeight")]
8541    pub unit_weight: Option<f64>,
8542    #[serde(rename = "UnitWeightUnitOfMeasure")]
8543    pub unit_weight_unit_of_measure: Option<String>,
8544}
8545
8546#[derive(Serialize, Deserialize, Debug, Clone)]
8547pub struct SalesCreateDeliveryV2RequestItem {
8548    #[serde(rename = "ConsumerId")]
8549    pub consumer_id: Option<i64>,
8550    #[serde(rename = "DriverEmployeeId")]
8551    pub driver_employee_id: Option<String>,
8552    #[serde(rename = "DriverName")]
8553    pub driver_name: Option<String>,
8554    #[serde(rename = "DriversLicenseNumber")]
8555    pub drivers_license_number: Option<String>,
8556    #[serde(rename = "EstimatedArrivalDateTime")]
8557    pub estimated_arrival_date_time: Option<String>,
8558    #[serde(rename = "EstimatedDepartureDateTime")]
8559    pub estimated_departure_date_time: Option<String>,
8560    #[serde(rename = "PatientLicenseNumber")]
8561    pub patient_license_number: Option<String>,
8562    #[serde(rename = "PhoneNumberForQuestions")]
8563    pub phone_number_for_questions: Option<String>,
8564    #[serde(rename = "PlannedRoute")]
8565    pub planned_route: Option<String>,
8566    #[serde(rename = "RecipientAddressCity")]
8567    pub recipient_address_city: Option<String>,
8568    #[serde(rename = "RecipientAddressCounty")]
8569    pub recipient_address_county: Option<String>,
8570    #[serde(rename = "RecipientAddressPostalCode")]
8571    pub recipient_address_postal_code: Option<String>,
8572    #[serde(rename = "RecipientAddressState")]
8573    pub recipient_address_state: Option<String>,
8574    #[serde(rename = "RecipientAddressStreet1")]
8575    pub recipient_address_street1: Option<String>,
8576    #[serde(rename = "RecipientAddressStreet2")]
8577    pub recipient_address_street2: Option<String>,
8578    #[serde(rename = "RecipientName")]
8579    pub recipient_name: Option<String>,
8580    #[serde(rename = "RecipientZoneId")]
8581    pub recipient_zone_id: Option<i64>,
8582    #[serde(rename = "SalesCustomerType")]
8583    pub sales_customer_type: Option<String>,
8584    #[serde(rename = "SalesDateTime")]
8585    pub sales_date_time: Option<String>,
8586    #[serde(rename = "Transactions")]
8587    pub transactions: Option<Vec<SalesCreateDeliveryV2RequestItemTransactions>>,
8588    #[serde(rename = "TransporterFacilityLicenseNumber")]
8589    pub transporter_facility_license_number: Option<String>,
8590    #[serde(rename = "VehicleLicensePlateNumber")]
8591    pub vehicle_license_plate_number: Option<String>,
8592    #[serde(rename = "VehicleMake")]
8593    pub vehicle_make: Option<String>,
8594    #[serde(rename = "VehicleModel")]
8595    pub vehicle_model: Option<String>,
8596}
8597
8598#[derive(Serialize, Deserialize, Debug, Clone)]
8599pub struct SalesCreateDeliveryV2RequestItemTransactions {
8600    #[serde(rename = "CityTax")]
8601    pub city_tax: Option<String>,
8602    #[serde(rename = "CountyTax")]
8603    pub county_tax: Option<String>,
8604    #[serde(rename = "DiscountAmount")]
8605    pub discount_amount: Option<String>,
8606    #[serde(rename = "ExciseTax")]
8607    pub excise_tax: Option<String>,
8608    #[serde(rename = "InvoiceNumber")]
8609    pub invoice_number: Option<String>,
8610    #[serde(rename = "MunicipalTax")]
8611    pub municipal_tax: Option<String>,
8612    #[serde(rename = "PackageLabel")]
8613    pub package_label: Option<String>,
8614    #[serde(rename = "Price")]
8615    pub price: Option<String>,
8616    #[serde(rename = "QrCodes")]
8617    pub qr_codes: Option<String>,
8618    #[serde(rename = "Quantity")]
8619    pub quantity: Option<i64>,
8620    #[serde(rename = "SalesTax")]
8621    pub sales_tax: Option<String>,
8622    #[serde(rename = "SubTotal")]
8623    pub sub_total: Option<String>,
8624    #[serde(rename = "TotalAmount")]
8625    pub total_amount: Option<f64>,
8626    #[serde(rename = "UnitOfMeasure")]
8627    pub unit_of_measure: Option<String>,
8628    #[serde(rename = "UnitThcContent")]
8629    pub unit_thc_content: Option<f64>,
8630    #[serde(rename = "UnitThcContentUnitOfMeasure")]
8631    pub unit_thc_content_unit_of_measure: Option<String>,
8632    #[serde(rename = "UnitThcPercent")]
8633    pub unit_thc_percent: Option<f64>,
8634    #[serde(rename = "UnitWeight")]
8635    pub unit_weight: Option<f64>,
8636    #[serde(rename = "UnitWeightUnitOfMeasure")]
8637    pub unit_weight_unit_of_measure: Option<String>,
8638}
8639
8640#[derive(Serialize, Deserialize, Debug, Clone)]
8641pub struct SalesCreateDeliveryRetailerV1RequestItem {
8642    #[serde(rename = "DateTime")]
8643    pub date_time: Option<String>,
8644    #[serde(rename = "Destinations")]
8645    pub destinations: Option<Vec<SalesCreateDeliveryRetailerV1RequestItemDestinations>>,
8646    #[serde(rename = "DriverEmployeeId")]
8647    pub driver_employee_id: Option<String>,
8648    #[serde(rename = "DriverName")]
8649    pub driver_name: Option<String>,
8650    #[serde(rename = "DriversLicenseNumber")]
8651    pub drivers_license_number: Option<String>,
8652    #[serde(rename = "EstimatedDepartureDateTime")]
8653    pub estimated_departure_date_time: Option<String>,
8654    #[serde(rename = "Packages")]
8655    pub packages: Option<Vec<SalesCreateDeliveryRetailerV1RequestItemPackages>>,
8656    #[serde(rename = "PhoneNumberForQuestions")]
8657    pub phone_number_for_questions: Option<String>,
8658    #[serde(rename = "VehicleLicensePlateNumber")]
8659    pub vehicle_license_plate_number: Option<String>,
8660    #[serde(rename = "VehicleMake")]
8661    pub vehicle_make: Option<String>,
8662    #[serde(rename = "VehicleModel")]
8663    pub vehicle_model: Option<String>,
8664}
8665
8666#[derive(Serialize, Deserialize, Debug, Clone)]
8667pub struct SalesCreateDeliveryRetailerV1RequestItemDestinations {
8668    #[serde(rename = "ConsumerId")]
8669    pub consumer_id: Option<String>,
8670    #[serde(rename = "EstimatedArrivalDateTime")]
8671    pub estimated_arrival_date_time: Option<String>,
8672    #[serde(rename = "PatientLicenseNumber")]
8673    pub patient_license_number: Option<String>,
8674    #[serde(rename = "RecipientAddressCity")]
8675    pub recipient_address_city: Option<String>,
8676    #[serde(rename = "RecipientAddressCounty")]
8677    pub recipient_address_county: Option<String>,
8678    #[serde(rename = "RecipientAddressPostalCode")]
8679    pub recipient_address_postal_code: Option<String>,
8680    #[serde(rename = "RecipientAddressState")]
8681    pub recipient_address_state: Option<String>,
8682    #[serde(rename = "RecipientAddressStreet1")]
8683    pub recipient_address_street1: Option<String>,
8684    #[serde(rename = "RecipientAddressStreet2")]
8685    pub recipient_address_street2: Option<String>,
8686    #[serde(rename = "RecipientName")]
8687    pub recipient_name: Option<String>,
8688    #[serde(rename = "RecipientZoneId")]
8689    pub recipient_zone_id: Option<String>,
8690    #[serde(rename = "SalesCustomerType")]
8691    pub sales_customer_type: Option<String>,
8692    #[serde(rename = "Transactions")]
8693    pub transactions: Option<Vec<SalesCreateDeliveryRetailerV1RequestItemDestinationsTransactions>>,
8694}
8695
8696#[derive(Serialize, Deserialize, Debug, Clone)]
8697pub struct SalesCreateDeliveryRetailerV1RequestItemDestinationsTransactions {
8698    #[serde(rename = "CityTax")]
8699    pub city_tax: Option<String>,
8700    #[serde(rename = "CountyTax")]
8701    pub county_tax: Option<String>,
8702    #[serde(rename = "DiscountAmount")]
8703    pub discount_amount: Option<String>,
8704    #[serde(rename = "ExciseTax")]
8705    pub excise_tax: Option<String>,
8706    #[serde(rename = "InvoiceNumber")]
8707    pub invoice_number: Option<String>,
8708    #[serde(rename = "MunicipalTax")]
8709    pub municipal_tax: Option<String>,
8710    #[serde(rename = "PackageLabel")]
8711    pub package_label: Option<String>,
8712    #[serde(rename = "Price")]
8713    pub price: Option<String>,
8714    #[serde(rename = "QrCodes")]
8715    pub qr_codes: Option<String>,
8716    #[serde(rename = "Quantity")]
8717    pub quantity: Option<i64>,
8718    #[serde(rename = "SalesTax")]
8719    pub sales_tax: Option<String>,
8720    #[serde(rename = "SubTotal")]
8721    pub sub_total: Option<String>,
8722    #[serde(rename = "TotalAmount")]
8723    pub total_amount: Option<f64>,
8724    #[serde(rename = "UnitOfMeasure")]
8725    pub unit_of_measure: Option<String>,
8726    #[serde(rename = "UnitThcContent")]
8727    pub unit_thc_content: Option<f64>,
8728    #[serde(rename = "UnitThcContentUnitOfMeasure")]
8729    pub unit_thc_content_unit_of_measure: Option<String>,
8730    #[serde(rename = "UnitThcPercent")]
8731    pub unit_thc_percent: Option<f64>,
8732    #[serde(rename = "UnitWeight")]
8733    pub unit_weight: Option<f64>,
8734    #[serde(rename = "UnitWeightUnitOfMeasure")]
8735    pub unit_weight_unit_of_measure: Option<String>,
8736}
8737
8738#[derive(Serialize, Deserialize, Debug, Clone)]
8739pub struct SalesCreateDeliveryRetailerV1RequestItemPackages {
8740    #[serde(rename = "DateTime")]
8741    pub date_time: Option<String>,
8742    #[serde(rename = "PackageLabel")]
8743    pub package_label: Option<String>,
8744    #[serde(rename = "Quantity")]
8745    pub quantity: Option<i64>,
8746    #[serde(rename = "TotalPrice")]
8747    pub total_price: Option<f64>,
8748    #[serde(rename = "UnitOfMeasure")]
8749    pub unit_of_measure: Option<String>,
8750}
8751
8752#[derive(Serialize, Deserialize, Debug, Clone)]
8753pub struct SalesCreateDeliveryRetailerV2RequestItem {
8754    #[serde(rename = "DateTime")]
8755    pub date_time: Option<String>,
8756    #[serde(rename = "Destinations")]
8757    pub destinations: Option<Vec<SalesCreateDeliveryRetailerV2RequestItemDestinations>>,
8758    #[serde(rename = "DriverEmployeeId")]
8759    pub driver_employee_id: Option<String>,
8760    #[serde(rename = "DriverName")]
8761    pub driver_name: Option<String>,
8762    #[serde(rename = "DriversLicenseNumber")]
8763    pub drivers_license_number: Option<String>,
8764    #[serde(rename = "EstimatedDepartureDateTime")]
8765    pub estimated_departure_date_time: Option<String>,
8766    #[serde(rename = "Packages")]
8767    pub packages: Option<Vec<SalesCreateDeliveryRetailerV2RequestItemPackages>>,
8768    #[serde(rename = "PhoneNumberForQuestions")]
8769    pub phone_number_for_questions: Option<String>,
8770    #[serde(rename = "VehicleLicensePlateNumber")]
8771    pub vehicle_license_plate_number: Option<String>,
8772    #[serde(rename = "VehicleMake")]
8773    pub vehicle_make: Option<String>,
8774    #[serde(rename = "VehicleModel")]
8775    pub vehicle_model: Option<String>,
8776}
8777
8778#[derive(Serialize, Deserialize, Debug, Clone)]
8779pub struct SalesCreateDeliveryRetailerV2RequestItemDestinations {
8780    #[serde(rename = "ConsumerId")]
8781    pub consumer_id: Option<String>,
8782    #[serde(rename = "EstimatedArrivalDateTime")]
8783    pub estimated_arrival_date_time: Option<String>,
8784    #[serde(rename = "PatientLicenseNumber")]
8785    pub patient_license_number: Option<String>,
8786    #[serde(rename = "RecipientAddressCity")]
8787    pub recipient_address_city: Option<String>,
8788    #[serde(rename = "RecipientAddressCounty")]
8789    pub recipient_address_county: Option<String>,
8790    #[serde(rename = "RecipientAddressPostalCode")]
8791    pub recipient_address_postal_code: Option<String>,
8792    #[serde(rename = "RecipientAddressState")]
8793    pub recipient_address_state: Option<String>,
8794    #[serde(rename = "RecipientAddressStreet1")]
8795    pub recipient_address_street1: Option<String>,
8796    #[serde(rename = "RecipientAddressStreet2")]
8797    pub recipient_address_street2: Option<String>,
8798    #[serde(rename = "RecipientName")]
8799    pub recipient_name: Option<String>,
8800    #[serde(rename = "RecipientZoneId")]
8801    pub recipient_zone_id: Option<String>,
8802    #[serde(rename = "SalesCustomerType")]
8803    pub sales_customer_type: Option<String>,
8804    #[serde(rename = "Transactions")]
8805    pub transactions: Option<Vec<SalesCreateDeliveryRetailerV2RequestItemDestinationsTransactions>>,
8806}
8807
8808#[derive(Serialize, Deserialize, Debug, Clone)]
8809pub struct SalesCreateDeliveryRetailerV2RequestItemDestinationsTransactions {
8810    #[serde(rename = "CityTax")]
8811    pub city_tax: Option<String>,
8812    #[serde(rename = "CountyTax")]
8813    pub county_tax: Option<String>,
8814    #[serde(rename = "DiscountAmount")]
8815    pub discount_amount: Option<String>,
8816    #[serde(rename = "ExciseTax")]
8817    pub excise_tax: Option<String>,
8818    #[serde(rename = "InvoiceNumber")]
8819    pub invoice_number: Option<String>,
8820    #[serde(rename = "MunicipalTax")]
8821    pub municipal_tax: Option<String>,
8822    #[serde(rename = "PackageLabel")]
8823    pub package_label: Option<String>,
8824    #[serde(rename = "Price")]
8825    pub price: Option<String>,
8826    #[serde(rename = "QrCodes")]
8827    pub qr_codes: Option<String>,
8828    #[serde(rename = "Quantity")]
8829    pub quantity: Option<i64>,
8830    #[serde(rename = "SalesTax")]
8831    pub sales_tax: Option<String>,
8832    #[serde(rename = "SubTotal")]
8833    pub sub_total: Option<String>,
8834    #[serde(rename = "TotalAmount")]
8835    pub total_amount: Option<f64>,
8836    #[serde(rename = "UnitOfMeasure")]
8837    pub unit_of_measure: Option<String>,
8838    #[serde(rename = "UnitThcContent")]
8839    pub unit_thc_content: Option<f64>,
8840    #[serde(rename = "UnitThcContentUnitOfMeasure")]
8841    pub unit_thc_content_unit_of_measure: Option<String>,
8842    #[serde(rename = "UnitThcPercent")]
8843    pub unit_thc_percent: Option<f64>,
8844    #[serde(rename = "UnitWeight")]
8845    pub unit_weight: Option<f64>,
8846    #[serde(rename = "UnitWeightUnitOfMeasure")]
8847    pub unit_weight_unit_of_measure: Option<String>,
8848}
8849
8850#[derive(Serialize, Deserialize, Debug, Clone)]
8851pub struct SalesCreateDeliveryRetailerV2RequestItemPackages {
8852    #[serde(rename = "DateTime")]
8853    pub date_time: Option<String>,
8854    #[serde(rename = "PackageLabel")]
8855    pub package_label: Option<String>,
8856    #[serde(rename = "Quantity")]
8857    pub quantity: Option<i64>,
8858    #[serde(rename = "TotalPrice")]
8859    pub total_price: Option<f64>,
8860    #[serde(rename = "UnitOfMeasure")]
8861    pub unit_of_measure: Option<String>,
8862}
8863
8864#[derive(Serialize, Deserialize, Debug, Clone)]
8865pub struct SalesCreateDeliveryRetailerDepartV1RequestItem {
8866    #[serde(rename = "RetailerDeliveryId")]
8867    pub retailer_delivery_id: Option<i64>,
8868}
8869
8870#[derive(Serialize, Deserialize, Debug, Clone)]
8871pub struct SalesCreateDeliveryRetailerDepartV2RequestItem {
8872    #[serde(rename = "RetailerDeliveryId")]
8873    pub retailer_delivery_id: Option<i64>,
8874}
8875
8876#[derive(Serialize, Deserialize, Debug, Clone)]
8877pub struct SalesCreateDeliveryRetailerEndV1RequestItem {
8878    #[serde(rename = "ActualArrivalDateTime")]
8879    pub actual_arrival_date_time: Option<String>,
8880    #[serde(rename = "Packages")]
8881    pub packages: Option<Vec<SalesCreateDeliveryRetailerEndV1RequestItemPackages>>,
8882    #[serde(rename = "RetailerDeliveryId")]
8883    pub retailer_delivery_id: Option<i64>,
8884}
8885
8886#[derive(Serialize, Deserialize, Debug, Clone)]
8887pub struct SalesCreateDeliveryRetailerEndV1RequestItemPackages {
8888    #[serde(rename = "EndQuantity")]
8889    pub end_quantity: Option<i64>,
8890    #[serde(rename = "EndUnitOfMeasure")]
8891    pub end_unit_of_measure: Option<String>,
8892    #[serde(rename = "Label")]
8893    pub label: Option<String>,
8894}
8895
8896#[derive(Serialize, Deserialize, Debug, Clone)]
8897pub struct SalesCreateDeliveryRetailerEndV2RequestItem {
8898    #[serde(rename = "ActualArrivalDateTime")]
8899    pub actual_arrival_date_time: Option<String>,
8900    #[serde(rename = "Packages")]
8901    pub packages: Option<Vec<SalesCreateDeliveryRetailerEndV2RequestItemPackages>>,
8902    #[serde(rename = "RetailerDeliveryId")]
8903    pub retailer_delivery_id: Option<i64>,
8904}
8905
8906#[derive(Serialize, Deserialize, Debug, Clone)]
8907pub struct SalesCreateDeliveryRetailerEndV2RequestItemPackages {
8908    #[serde(rename = "EndQuantity")]
8909    pub end_quantity: Option<i64>,
8910    #[serde(rename = "EndUnitOfMeasure")]
8911    pub end_unit_of_measure: Option<String>,
8912    #[serde(rename = "Label")]
8913    pub label: Option<String>,
8914}
8915
8916#[derive(Serialize, Deserialize, Debug, Clone)]
8917pub struct SalesCreateDeliveryRetailerRestockV1RequestItem {
8918    #[serde(rename = "DateTime")]
8919    pub date_time: Option<String>,
8920    #[serde(rename = "Destinations")]
8921    pub destinations: Option<String>,
8922    #[serde(rename = "EstimatedDepartureDateTime")]
8923    pub estimated_departure_date_time: Option<String>,
8924    #[serde(rename = "Packages")]
8925    pub packages: Option<Vec<SalesCreateDeliveryRetailerRestockV1RequestItemPackages>>,
8926    #[serde(rename = "RetailerDeliveryId")]
8927    pub retailer_delivery_id: Option<i64>,
8928}
8929
8930#[derive(Serialize, Deserialize, Debug, Clone)]
8931pub struct SalesCreateDeliveryRetailerRestockV1RequestItemPackages {
8932    #[serde(rename = "PackageLabel")]
8933    pub package_label: Option<String>,
8934    #[serde(rename = "Quantity")]
8935    pub quantity: Option<i64>,
8936    #[serde(rename = "RemoveCurrentPackage")]
8937    pub remove_current_package: Option<bool>,
8938    #[serde(rename = "TotalPrice")]
8939    pub total_price: Option<f64>,
8940    #[serde(rename = "UnitOfMeasure")]
8941    pub unit_of_measure: Option<String>,
8942}
8943
8944#[derive(Serialize, Deserialize, Debug, Clone)]
8945pub struct SalesCreateDeliveryRetailerRestockV2RequestItem {
8946    #[serde(rename = "DateTime")]
8947    pub date_time: Option<String>,
8948    #[serde(rename = "Destinations")]
8949    pub destinations: Option<String>,
8950    #[serde(rename = "EstimatedDepartureDateTime")]
8951    pub estimated_departure_date_time: Option<String>,
8952    #[serde(rename = "Packages")]
8953    pub packages: Option<Vec<SalesCreateDeliveryRetailerRestockV2RequestItemPackages>>,
8954    #[serde(rename = "RetailerDeliveryId")]
8955    pub retailer_delivery_id: Option<i64>,
8956}
8957
8958#[derive(Serialize, Deserialize, Debug, Clone)]
8959pub struct SalesCreateDeliveryRetailerRestockV2RequestItemPackages {
8960    #[serde(rename = "PackageLabel")]
8961    pub package_label: Option<String>,
8962    #[serde(rename = "Quantity")]
8963    pub quantity: Option<i64>,
8964    #[serde(rename = "RemoveCurrentPackage")]
8965    pub remove_current_package: Option<bool>,
8966    #[serde(rename = "TotalPrice")]
8967    pub total_price: Option<f64>,
8968    #[serde(rename = "UnitOfMeasure")]
8969    pub unit_of_measure: Option<String>,
8970}
8971
8972#[derive(Serialize, Deserialize, Debug, Clone)]
8973pub struct SalesCreateDeliveryRetailerSaleV1RequestItem {
8974    #[serde(rename = "ConsumerId")]
8975    pub consumer_id: Option<i64>,
8976    #[serde(rename = "EstimatedArrivalDateTime")]
8977    pub estimated_arrival_date_time: Option<String>,
8978    #[serde(rename = "EstimatedDepartureDateTime")]
8979    pub estimated_departure_date_time: Option<String>,
8980    #[serde(rename = "PatientLicenseNumber")]
8981    pub patient_license_number: Option<String>,
8982    #[serde(rename = "PhoneNumberForQuestions")]
8983    pub phone_number_for_questions: Option<String>,
8984    #[serde(rename = "PlannedRoute")]
8985    pub planned_route: Option<String>,
8986    #[serde(rename = "RecipientAddressCity")]
8987    pub recipient_address_city: Option<String>,
8988    #[serde(rename = "RecipientAddressCounty")]
8989    pub recipient_address_county: Option<String>,
8990    #[serde(rename = "RecipientAddressPostalCode")]
8991    pub recipient_address_postal_code: Option<String>,
8992    #[serde(rename = "RecipientAddressState")]
8993    pub recipient_address_state: Option<String>,
8994    #[serde(rename = "RecipientAddressStreet1")]
8995    pub recipient_address_street1: Option<String>,
8996    #[serde(rename = "RecipientAddressStreet2")]
8997    pub recipient_address_street2: Option<String>,
8998    #[serde(rename = "RecipientName")]
8999    pub recipient_name: Option<String>,
9000    #[serde(rename = "RecipientZoneId")]
9001    pub recipient_zone_id: Option<i64>,
9002    #[serde(rename = "RetailerDeliveryId")]
9003    pub retailer_delivery_id: Option<i64>,
9004    #[serde(rename = "SalesCustomerType")]
9005    pub sales_customer_type: Option<String>,
9006    #[serde(rename = "SalesDateTime")]
9007    pub sales_date_time: Option<String>,
9008    #[serde(rename = "Transactions")]
9009    pub transactions: Option<Vec<SalesCreateDeliveryRetailerSaleV1RequestItemTransactions>>,
9010}
9011
9012#[derive(Serialize, Deserialize, Debug, Clone)]
9013pub struct SalesCreateDeliveryRetailerSaleV1RequestItemTransactions {
9014    #[serde(rename = "CityTax")]
9015    pub city_tax: Option<String>,
9016    #[serde(rename = "CountyTax")]
9017    pub county_tax: Option<String>,
9018    #[serde(rename = "DiscountAmount")]
9019    pub discount_amount: Option<String>,
9020    #[serde(rename = "ExciseTax")]
9021    pub excise_tax: Option<String>,
9022    #[serde(rename = "InvoiceNumber")]
9023    pub invoice_number: Option<String>,
9024    #[serde(rename = "MunicipalTax")]
9025    pub municipal_tax: Option<String>,
9026    #[serde(rename = "PackageLabel")]
9027    pub package_label: Option<String>,
9028    #[serde(rename = "Price")]
9029    pub price: Option<String>,
9030    #[serde(rename = "QrCodes")]
9031    pub qr_codes: Option<String>,
9032    #[serde(rename = "Quantity")]
9033    pub quantity: Option<i64>,
9034    #[serde(rename = "SalesTax")]
9035    pub sales_tax: Option<String>,
9036    #[serde(rename = "SubTotal")]
9037    pub sub_total: Option<String>,
9038    #[serde(rename = "TotalAmount")]
9039    pub total_amount: Option<f64>,
9040    #[serde(rename = "UnitOfMeasure")]
9041    pub unit_of_measure: Option<String>,
9042    #[serde(rename = "UnitThcContent")]
9043    pub unit_thc_content: Option<f64>,
9044    #[serde(rename = "UnitThcContentUnitOfMeasure")]
9045    pub unit_thc_content_unit_of_measure: Option<String>,
9046    #[serde(rename = "UnitThcPercent")]
9047    pub unit_thc_percent: Option<f64>,
9048    #[serde(rename = "UnitWeight")]
9049    pub unit_weight: Option<f64>,
9050    #[serde(rename = "UnitWeightUnitOfMeasure")]
9051    pub unit_weight_unit_of_measure: Option<String>,
9052}
9053
9054#[derive(Serialize, Deserialize, Debug, Clone)]
9055pub struct SalesCreateDeliveryRetailerSaleV2RequestItem {
9056    #[serde(rename = "ConsumerId")]
9057    pub consumer_id: Option<i64>,
9058    #[serde(rename = "EstimatedArrivalDateTime")]
9059    pub estimated_arrival_date_time: Option<String>,
9060    #[serde(rename = "EstimatedDepartureDateTime")]
9061    pub estimated_departure_date_time: Option<String>,
9062    #[serde(rename = "PatientLicenseNumber")]
9063    pub patient_license_number: Option<String>,
9064    #[serde(rename = "PhoneNumberForQuestions")]
9065    pub phone_number_for_questions: Option<String>,
9066    #[serde(rename = "PlannedRoute")]
9067    pub planned_route: Option<String>,
9068    #[serde(rename = "RecipientAddressCity")]
9069    pub recipient_address_city: Option<String>,
9070    #[serde(rename = "RecipientAddressCounty")]
9071    pub recipient_address_county: Option<String>,
9072    #[serde(rename = "RecipientAddressPostalCode")]
9073    pub recipient_address_postal_code: Option<String>,
9074    #[serde(rename = "RecipientAddressState")]
9075    pub recipient_address_state: Option<String>,
9076    #[serde(rename = "RecipientAddressStreet1")]
9077    pub recipient_address_street1: Option<String>,
9078    #[serde(rename = "RecipientAddressStreet2")]
9079    pub recipient_address_street2: Option<String>,
9080    #[serde(rename = "RecipientName")]
9081    pub recipient_name: Option<String>,
9082    #[serde(rename = "RecipientZoneId")]
9083    pub recipient_zone_id: Option<i64>,
9084    #[serde(rename = "RetailerDeliveryId")]
9085    pub retailer_delivery_id: Option<i64>,
9086    #[serde(rename = "SalesCustomerType")]
9087    pub sales_customer_type: Option<String>,
9088    #[serde(rename = "SalesDateTime")]
9089    pub sales_date_time: Option<String>,
9090    #[serde(rename = "Transactions")]
9091    pub transactions: Option<Vec<SalesCreateDeliveryRetailerSaleV2RequestItemTransactions>>,
9092}
9093
9094#[derive(Serialize, Deserialize, Debug, Clone)]
9095pub struct SalesCreateDeliveryRetailerSaleV2RequestItemTransactions {
9096    #[serde(rename = "CityTax")]
9097    pub city_tax: Option<String>,
9098    #[serde(rename = "CountyTax")]
9099    pub county_tax: Option<String>,
9100    #[serde(rename = "DiscountAmount")]
9101    pub discount_amount: Option<String>,
9102    #[serde(rename = "ExciseTax")]
9103    pub excise_tax: Option<String>,
9104    #[serde(rename = "InvoiceNumber")]
9105    pub invoice_number: Option<String>,
9106    #[serde(rename = "MunicipalTax")]
9107    pub municipal_tax: Option<String>,
9108    #[serde(rename = "PackageLabel")]
9109    pub package_label: Option<String>,
9110    #[serde(rename = "Price")]
9111    pub price: Option<String>,
9112    #[serde(rename = "QrCodes")]
9113    pub qr_codes: Option<String>,
9114    #[serde(rename = "Quantity")]
9115    pub quantity: Option<i64>,
9116    #[serde(rename = "SalesTax")]
9117    pub sales_tax: Option<String>,
9118    #[serde(rename = "SubTotal")]
9119    pub sub_total: Option<String>,
9120    #[serde(rename = "TotalAmount")]
9121    pub total_amount: Option<f64>,
9122    #[serde(rename = "UnitOfMeasure")]
9123    pub unit_of_measure: Option<String>,
9124    #[serde(rename = "UnitThcContent")]
9125    pub unit_thc_content: Option<f64>,
9126    #[serde(rename = "UnitThcContentUnitOfMeasure")]
9127    pub unit_thc_content_unit_of_measure: Option<String>,
9128    #[serde(rename = "UnitThcPercent")]
9129    pub unit_thc_percent: Option<f64>,
9130    #[serde(rename = "UnitWeight")]
9131    pub unit_weight: Option<f64>,
9132    #[serde(rename = "UnitWeightUnitOfMeasure")]
9133    pub unit_weight_unit_of_measure: Option<String>,
9134}
9135
9136#[derive(Serialize, Deserialize, Debug, Clone)]
9137pub struct SalesCreateReceiptV1RequestItem {
9138    #[serde(rename = "CaregiverLicenseNumber")]
9139    pub caregiver_license_number: Option<String>,
9140    #[serde(rename = "ExternalReceiptNumber")]
9141    pub external_receipt_number: Option<String>,
9142    #[serde(rename = "IdentificationMethod")]
9143    pub identification_method: Option<String>,
9144    #[serde(rename = "PatientLicenseNumber")]
9145    pub patient_license_number: Option<String>,
9146    #[serde(rename = "PatientRegistrationLocationId")]
9147    pub patient_registration_location_id: Option<i64>,
9148    #[serde(rename = "SalesCustomerType")]
9149    pub sales_customer_type: Option<String>,
9150    #[serde(rename = "SalesDateTime")]
9151    pub sales_date_time: Option<String>,
9152    #[serde(rename = "Transactions")]
9153    pub transactions: Option<Vec<SalesCreateReceiptV1RequestItemTransactions>>,
9154}
9155
9156#[derive(Serialize, Deserialize, Debug, Clone)]
9157pub struct SalesCreateReceiptV1RequestItemTransactions {
9158    #[serde(rename = "CityTax")]
9159    pub city_tax: Option<String>,
9160    #[serde(rename = "CountyTax")]
9161    pub county_tax: Option<String>,
9162    #[serde(rename = "DiscountAmount")]
9163    pub discount_amount: Option<String>,
9164    #[serde(rename = "ExciseTax")]
9165    pub excise_tax: Option<String>,
9166    #[serde(rename = "InvoiceNumber")]
9167    pub invoice_number: Option<String>,
9168    #[serde(rename = "MunicipalTax")]
9169    pub municipal_tax: Option<String>,
9170    #[serde(rename = "PackageLabel")]
9171    pub package_label: Option<String>,
9172    #[serde(rename = "Price")]
9173    pub price: Option<String>,
9174    #[serde(rename = "QrCodes")]
9175    pub qr_codes: Option<String>,
9176    #[serde(rename = "Quantity")]
9177    pub quantity: Option<i64>,
9178    #[serde(rename = "SalesTax")]
9179    pub sales_tax: Option<String>,
9180    #[serde(rename = "SubTotal")]
9181    pub sub_total: Option<String>,
9182    #[serde(rename = "TotalAmount")]
9183    pub total_amount: Option<f64>,
9184    #[serde(rename = "UnitOfMeasure")]
9185    pub unit_of_measure: Option<String>,
9186    #[serde(rename = "UnitThcContent")]
9187    pub unit_thc_content: Option<f64>,
9188    #[serde(rename = "UnitThcContentUnitOfMeasure")]
9189    pub unit_thc_content_unit_of_measure: Option<String>,
9190    #[serde(rename = "UnitThcPercent")]
9191    pub unit_thc_percent: Option<f64>,
9192    #[serde(rename = "UnitWeight")]
9193    pub unit_weight: Option<f64>,
9194    #[serde(rename = "UnitWeightUnitOfMeasure")]
9195    pub unit_weight_unit_of_measure: Option<String>,
9196}
9197
9198#[derive(Serialize, Deserialize, Debug, Clone)]
9199pub struct SalesCreateReceiptV2RequestItem {
9200    #[serde(rename = "CaregiverLicenseNumber")]
9201    pub caregiver_license_number: Option<String>,
9202    #[serde(rename = "ExternalReceiptNumber")]
9203    pub external_receipt_number: Option<String>,
9204    #[serde(rename = "IdentificationMethod")]
9205    pub identification_method: Option<String>,
9206    #[serde(rename = "PatientLicenseNumber")]
9207    pub patient_license_number: Option<String>,
9208    #[serde(rename = "PatientRegistrationLocationId")]
9209    pub patient_registration_location_id: Option<i64>,
9210    #[serde(rename = "SalesCustomerType")]
9211    pub sales_customer_type: Option<String>,
9212    #[serde(rename = "SalesDateTime")]
9213    pub sales_date_time: Option<String>,
9214    #[serde(rename = "Transactions")]
9215    pub transactions: Option<Vec<SalesCreateReceiptV2RequestItemTransactions>>,
9216}
9217
9218#[derive(Serialize, Deserialize, Debug, Clone)]
9219pub struct SalesCreateReceiptV2RequestItemTransactions {
9220    #[serde(rename = "CityTax")]
9221    pub city_tax: Option<String>,
9222    #[serde(rename = "CountyTax")]
9223    pub county_tax: Option<String>,
9224    #[serde(rename = "DiscountAmount")]
9225    pub discount_amount: Option<String>,
9226    #[serde(rename = "ExciseTax")]
9227    pub excise_tax: Option<String>,
9228    #[serde(rename = "InvoiceNumber")]
9229    pub invoice_number: Option<String>,
9230    #[serde(rename = "MunicipalTax")]
9231    pub municipal_tax: Option<String>,
9232    #[serde(rename = "PackageLabel")]
9233    pub package_label: Option<String>,
9234    #[serde(rename = "Price")]
9235    pub price: Option<String>,
9236    #[serde(rename = "QrCodes")]
9237    pub qr_codes: Option<String>,
9238    #[serde(rename = "Quantity")]
9239    pub quantity: Option<i64>,
9240    #[serde(rename = "SalesTax")]
9241    pub sales_tax: Option<String>,
9242    #[serde(rename = "SubTotal")]
9243    pub sub_total: Option<String>,
9244    #[serde(rename = "TotalAmount")]
9245    pub total_amount: Option<f64>,
9246    #[serde(rename = "UnitOfMeasure")]
9247    pub unit_of_measure: Option<String>,
9248    #[serde(rename = "UnitThcContent")]
9249    pub unit_thc_content: Option<f64>,
9250    #[serde(rename = "UnitThcContentUnitOfMeasure")]
9251    pub unit_thc_content_unit_of_measure: Option<String>,
9252    #[serde(rename = "UnitThcPercent")]
9253    pub unit_thc_percent: Option<f64>,
9254    #[serde(rename = "UnitWeight")]
9255    pub unit_weight: Option<f64>,
9256    #[serde(rename = "UnitWeightUnitOfMeasure")]
9257    pub unit_weight_unit_of_measure: Option<String>,
9258}
9259
9260#[derive(Serialize, Deserialize, Debug, Clone)]
9261pub struct SalesCreateTransactionByDateV1RequestItem {
9262    #[serde(rename = "CityTax")]
9263    pub city_tax: Option<String>,
9264    #[serde(rename = "CountyTax")]
9265    pub county_tax: Option<String>,
9266    #[serde(rename = "DiscountAmount")]
9267    pub discount_amount: Option<String>,
9268    #[serde(rename = "ExciseTax")]
9269    pub excise_tax: Option<String>,
9270    #[serde(rename = "InvoiceNumber")]
9271    pub invoice_number: Option<String>,
9272    #[serde(rename = "MunicipalTax")]
9273    pub municipal_tax: Option<String>,
9274    #[serde(rename = "PackageLabel")]
9275    pub package_label: Option<String>,
9276    #[serde(rename = "Price")]
9277    pub price: Option<String>,
9278    #[serde(rename = "QrCodes")]
9279    pub qr_codes: Option<String>,
9280    #[serde(rename = "Quantity")]
9281    pub quantity: Option<i64>,
9282    #[serde(rename = "SalesTax")]
9283    pub sales_tax: Option<String>,
9284    #[serde(rename = "SubTotal")]
9285    pub sub_total: Option<String>,
9286    #[serde(rename = "TotalAmount")]
9287    pub total_amount: Option<f64>,
9288    #[serde(rename = "UnitOfMeasure")]
9289    pub unit_of_measure: Option<String>,
9290    #[serde(rename = "UnitThcContent")]
9291    pub unit_thc_content: Option<f64>,
9292    #[serde(rename = "UnitThcContentUnitOfMeasure")]
9293    pub unit_thc_content_unit_of_measure: Option<String>,
9294    #[serde(rename = "UnitThcPercent")]
9295    pub unit_thc_percent: Option<f64>,
9296    #[serde(rename = "UnitWeight")]
9297    pub unit_weight: Option<f64>,
9298    #[serde(rename = "UnitWeightUnitOfMeasure")]
9299    pub unit_weight_unit_of_measure: Option<String>,
9300}
9301
9302#[derive(Serialize, Deserialize, Debug, Clone)]
9303pub struct SalesUpdateDeliveryV1RequestItem {
9304    #[serde(rename = "ConsumerId")]
9305    pub consumer_id: Option<i64>,
9306    #[serde(rename = "DriverEmployeeId")]
9307    pub driver_employee_id: Option<String>,
9308    #[serde(rename = "DriverName")]
9309    pub driver_name: Option<String>,
9310    #[serde(rename = "DriversLicenseNumber")]
9311    pub drivers_license_number: Option<String>,
9312    #[serde(rename = "EstimatedArrivalDateTime")]
9313    pub estimated_arrival_date_time: Option<String>,
9314    #[serde(rename = "EstimatedDepartureDateTime")]
9315    pub estimated_departure_date_time: Option<String>,
9316    #[serde(rename = "Id")]
9317    pub id: Option<i64>,
9318    #[serde(rename = "PatientLicenseNumber")]
9319    pub patient_license_number: Option<String>,
9320    #[serde(rename = "PhoneNumberForQuestions")]
9321    pub phone_number_for_questions: Option<String>,
9322    #[serde(rename = "PlannedRoute")]
9323    pub planned_route: Option<String>,
9324    #[serde(rename = "RecipientAddressCity")]
9325    pub recipient_address_city: Option<String>,
9326    #[serde(rename = "RecipientAddressCounty")]
9327    pub recipient_address_county: Option<String>,
9328    #[serde(rename = "RecipientAddressPostalCode")]
9329    pub recipient_address_postal_code: Option<String>,
9330    #[serde(rename = "RecipientAddressState")]
9331    pub recipient_address_state: Option<String>,
9332    #[serde(rename = "RecipientAddressStreet1")]
9333    pub recipient_address_street1: Option<String>,
9334    #[serde(rename = "RecipientAddressStreet2")]
9335    pub recipient_address_street2: Option<String>,
9336    #[serde(rename = "RecipientName")]
9337    pub recipient_name: Option<String>,
9338    #[serde(rename = "RecipientZoneId")]
9339    pub recipient_zone_id: Option<String>,
9340    #[serde(rename = "SalesCustomerType")]
9341    pub sales_customer_type: Option<String>,
9342    #[serde(rename = "SalesDateTime")]
9343    pub sales_date_time: Option<String>,
9344    #[serde(rename = "Transactions")]
9345    pub transactions: Option<Vec<SalesUpdateDeliveryV1RequestItemTransactions>>,
9346    #[serde(rename = "TransporterFacilityLicenseNumber")]
9347    pub transporter_facility_license_number: Option<String>,
9348    #[serde(rename = "VehicleLicensePlateNumber")]
9349    pub vehicle_license_plate_number: Option<String>,
9350    #[serde(rename = "VehicleMake")]
9351    pub vehicle_make: Option<String>,
9352    #[serde(rename = "VehicleModel")]
9353    pub vehicle_model: Option<String>,
9354}
9355
9356#[derive(Serialize, Deserialize, Debug, Clone)]
9357pub struct SalesUpdateDeliveryV1RequestItemTransactions {
9358    #[serde(rename = "CityTax")]
9359    pub city_tax: Option<String>,
9360    #[serde(rename = "CountyTax")]
9361    pub county_tax: Option<String>,
9362    #[serde(rename = "DiscountAmount")]
9363    pub discount_amount: Option<String>,
9364    #[serde(rename = "ExciseTax")]
9365    pub excise_tax: Option<String>,
9366    #[serde(rename = "InvoiceNumber")]
9367    pub invoice_number: Option<String>,
9368    #[serde(rename = "MunicipalTax")]
9369    pub municipal_tax: Option<String>,
9370    #[serde(rename = "PackageLabel")]
9371    pub package_label: Option<String>,
9372    #[serde(rename = "Price")]
9373    pub price: Option<String>,
9374    #[serde(rename = "QrCodes")]
9375    pub qr_codes: Option<String>,
9376    #[serde(rename = "Quantity")]
9377    pub quantity: Option<i64>,
9378    #[serde(rename = "SalesTax")]
9379    pub sales_tax: Option<String>,
9380    #[serde(rename = "SubTotal")]
9381    pub sub_total: Option<String>,
9382    #[serde(rename = "TotalAmount")]
9383    pub total_amount: Option<f64>,
9384    #[serde(rename = "UnitOfMeasure")]
9385    pub unit_of_measure: Option<String>,
9386    #[serde(rename = "UnitThcContent")]
9387    pub unit_thc_content: Option<f64>,
9388    #[serde(rename = "UnitThcContentUnitOfMeasure")]
9389    pub unit_thc_content_unit_of_measure: Option<String>,
9390    #[serde(rename = "UnitThcPercent")]
9391    pub unit_thc_percent: Option<f64>,
9392    #[serde(rename = "UnitWeight")]
9393    pub unit_weight: Option<f64>,
9394    #[serde(rename = "UnitWeightUnitOfMeasure")]
9395    pub unit_weight_unit_of_measure: Option<String>,
9396}
9397
9398#[derive(Serialize, Deserialize, Debug, Clone)]
9399pub struct SalesUpdateDeliveryV2RequestItem {
9400    #[serde(rename = "ConsumerId")]
9401    pub consumer_id: Option<i64>,
9402    #[serde(rename = "DriverEmployeeId")]
9403    pub driver_employee_id: Option<String>,
9404    #[serde(rename = "DriverName")]
9405    pub driver_name: Option<String>,
9406    #[serde(rename = "DriversLicenseNumber")]
9407    pub drivers_license_number: Option<String>,
9408    #[serde(rename = "EstimatedArrivalDateTime")]
9409    pub estimated_arrival_date_time: Option<String>,
9410    #[serde(rename = "EstimatedDepartureDateTime")]
9411    pub estimated_departure_date_time: Option<String>,
9412    #[serde(rename = "Id")]
9413    pub id: Option<i64>,
9414    #[serde(rename = "PatientLicenseNumber")]
9415    pub patient_license_number: Option<String>,
9416    #[serde(rename = "PhoneNumberForQuestions")]
9417    pub phone_number_for_questions: Option<String>,
9418    #[serde(rename = "PlannedRoute")]
9419    pub planned_route: Option<String>,
9420    #[serde(rename = "RecipientAddressCity")]
9421    pub recipient_address_city: Option<String>,
9422    #[serde(rename = "RecipientAddressCounty")]
9423    pub recipient_address_county: Option<String>,
9424    #[serde(rename = "RecipientAddressPostalCode")]
9425    pub recipient_address_postal_code: Option<String>,
9426    #[serde(rename = "RecipientAddressState")]
9427    pub recipient_address_state: Option<String>,
9428    #[serde(rename = "RecipientAddressStreet1")]
9429    pub recipient_address_street1: Option<String>,
9430    #[serde(rename = "RecipientAddressStreet2")]
9431    pub recipient_address_street2: Option<String>,
9432    #[serde(rename = "RecipientName")]
9433    pub recipient_name: Option<String>,
9434    #[serde(rename = "RecipientZoneId")]
9435    pub recipient_zone_id: Option<String>,
9436    #[serde(rename = "SalesCustomerType")]
9437    pub sales_customer_type: Option<String>,
9438    #[serde(rename = "SalesDateTime")]
9439    pub sales_date_time: Option<String>,
9440    #[serde(rename = "Transactions")]
9441    pub transactions: Option<Vec<SalesUpdateDeliveryV2RequestItemTransactions>>,
9442    #[serde(rename = "TransporterFacilityLicenseNumber")]
9443    pub transporter_facility_license_number: Option<String>,
9444    #[serde(rename = "VehicleLicensePlateNumber")]
9445    pub vehicle_license_plate_number: Option<String>,
9446    #[serde(rename = "VehicleMake")]
9447    pub vehicle_make: Option<String>,
9448    #[serde(rename = "VehicleModel")]
9449    pub vehicle_model: Option<String>,
9450}
9451
9452#[derive(Serialize, Deserialize, Debug, Clone)]
9453pub struct SalesUpdateDeliveryV2RequestItemTransactions {
9454    #[serde(rename = "CityTax")]
9455    pub city_tax: Option<String>,
9456    #[serde(rename = "CountyTax")]
9457    pub county_tax: Option<String>,
9458    #[serde(rename = "DiscountAmount")]
9459    pub discount_amount: Option<String>,
9460    #[serde(rename = "ExciseTax")]
9461    pub excise_tax: Option<String>,
9462    #[serde(rename = "InvoiceNumber")]
9463    pub invoice_number: Option<String>,
9464    #[serde(rename = "MunicipalTax")]
9465    pub municipal_tax: Option<String>,
9466    #[serde(rename = "PackageLabel")]
9467    pub package_label: Option<String>,
9468    #[serde(rename = "Price")]
9469    pub price: Option<String>,
9470    #[serde(rename = "QrCodes")]
9471    pub qr_codes: Option<String>,
9472    #[serde(rename = "Quantity")]
9473    pub quantity: Option<i64>,
9474    #[serde(rename = "SalesTax")]
9475    pub sales_tax: Option<String>,
9476    #[serde(rename = "SubTotal")]
9477    pub sub_total: Option<String>,
9478    #[serde(rename = "TotalAmount")]
9479    pub total_amount: Option<f64>,
9480    #[serde(rename = "UnitOfMeasure")]
9481    pub unit_of_measure: Option<String>,
9482    #[serde(rename = "UnitThcContent")]
9483    pub unit_thc_content: Option<f64>,
9484    #[serde(rename = "UnitThcContentUnitOfMeasure")]
9485    pub unit_thc_content_unit_of_measure: Option<String>,
9486    #[serde(rename = "UnitThcPercent")]
9487    pub unit_thc_percent: Option<f64>,
9488    #[serde(rename = "UnitWeight")]
9489    pub unit_weight: Option<f64>,
9490    #[serde(rename = "UnitWeightUnitOfMeasure")]
9491    pub unit_weight_unit_of_measure: Option<String>,
9492}
9493
9494#[derive(Serialize, Deserialize, Debug, Clone)]
9495pub struct SalesUpdateDeliveryCompleteV1RequestItem {
9496    #[serde(rename = "AcceptedPackages")]
9497    pub accepted_packages: Option<Vec<String>>,
9498    #[serde(rename = "ActualArrivalDateTime")]
9499    pub actual_arrival_date_time: Option<String>,
9500    #[serde(rename = "Id")]
9501    pub id: Option<i64>,
9502    #[serde(rename = "PaymentType")]
9503    pub payment_type: Option<String>,
9504    #[serde(rename = "ReturnedPackages")]
9505    pub returned_packages: Option<Vec<SalesUpdateDeliveryCompleteV1RequestItemReturnedPackages>>,
9506}
9507
9508#[derive(Serialize, Deserialize, Debug, Clone)]
9509pub struct SalesUpdateDeliveryCompleteV1RequestItemReturnedPackages {
9510    #[serde(rename = "Label")]
9511    pub label: Option<String>,
9512    #[serde(rename = "ReturnQuantityVerified")]
9513    pub return_quantity_verified: Option<i64>,
9514    #[serde(rename = "ReturnReason")]
9515    pub return_reason: Option<String>,
9516    #[serde(rename = "ReturnReasonNote")]
9517    pub return_reason_note: Option<String>,
9518    #[serde(rename = "ReturnUnitOfMeasure")]
9519    pub return_unit_of_measure: Option<String>,
9520}
9521
9522#[derive(Serialize, Deserialize, Debug, Clone)]
9523pub struct SalesUpdateDeliveryCompleteV2RequestItem {
9524    #[serde(rename = "AcceptedPackages")]
9525    pub accepted_packages: Option<Vec<String>>,
9526    #[serde(rename = "ActualArrivalDateTime")]
9527    pub actual_arrival_date_time: Option<String>,
9528    #[serde(rename = "Id")]
9529    pub id: Option<i64>,
9530    #[serde(rename = "PaymentType")]
9531    pub payment_type: Option<String>,
9532    #[serde(rename = "ReturnedPackages")]
9533    pub returned_packages: Option<Vec<SalesUpdateDeliveryCompleteV2RequestItemReturnedPackages>>,
9534}
9535
9536#[derive(Serialize, Deserialize, Debug, Clone)]
9537pub struct SalesUpdateDeliveryCompleteV2RequestItemReturnedPackages {
9538    #[serde(rename = "Label")]
9539    pub label: Option<String>,
9540    #[serde(rename = "ReturnQuantityVerified")]
9541    pub return_quantity_verified: Option<i64>,
9542    #[serde(rename = "ReturnReason")]
9543    pub return_reason: Option<String>,
9544    #[serde(rename = "ReturnReasonNote")]
9545    pub return_reason_note: Option<String>,
9546    #[serde(rename = "ReturnUnitOfMeasure")]
9547    pub return_unit_of_measure: Option<String>,
9548}
9549
9550#[derive(Serialize, Deserialize, Debug, Clone)]
9551pub struct SalesUpdateDeliveryHubV1RequestItem {
9552    #[serde(rename = "DriverEmployeeId")]
9553    pub driver_employee_id: Option<String>,
9554    #[serde(rename = "DriverName")]
9555    pub driver_name: Option<String>,
9556    #[serde(rename = "DriversLicenseNumber")]
9557    pub drivers_license_number: Option<String>,
9558    #[serde(rename = "EstimatedArrivalDateTime")]
9559    pub estimated_arrival_date_time: Option<String>,
9560    #[serde(rename = "EstimatedDepartureDateTime")]
9561    pub estimated_departure_date_time: Option<String>,
9562    #[serde(rename = "Id")]
9563    pub id: Option<i64>,
9564    #[serde(rename = "PhoneNumberForQuestions")]
9565    pub phone_number_for_questions: Option<String>,
9566    #[serde(rename = "PlannedRoute")]
9567    pub planned_route: Option<String>,
9568    #[serde(rename = "TransporterFacilityId")]
9569    pub transporter_facility_id: Option<String>,
9570    #[serde(rename = "VehicleLicensePlateNumber")]
9571    pub vehicle_license_plate_number: Option<String>,
9572    #[serde(rename = "VehicleMake")]
9573    pub vehicle_make: Option<String>,
9574    #[serde(rename = "VehicleModel")]
9575    pub vehicle_model: Option<String>,
9576}
9577
9578#[derive(Serialize, Deserialize, Debug, Clone)]
9579pub struct SalesUpdateDeliveryHubV2RequestItem {
9580    #[serde(rename = "DriverEmployeeId")]
9581    pub driver_employee_id: Option<String>,
9582    #[serde(rename = "DriverName")]
9583    pub driver_name: Option<String>,
9584    #[serde(rename = "DriversLicenseNumber")]
9585    pub drivers_license_number: Option<String>,
9586    #[serde(rename = "EstimatedArrivalDateTime")]
9587    pub estimated_arrival_date_time: Option<String>,
9588    #[serde(rename = "EstimatedDepartureDateTime")]
9589    pub estimated_departure_date_time: Option<String>,
9590    #[serde(rename = "Id")]
9591    pub id: Option<i64>,
9592    #[serde(rename = "PhoneNumberForQuestions")]
9593    pub phone_number_for_questions: Option<String>,
9594    #[serde(rename = "PlannedRoute")]
9595    pub planned_route: Option<String>,
9596    #[serde(rename = "TransporterFacilityId")]
9597    pub transporter_facility_id: Option<String>,
9598    #[serde(rename = "VehicleLicensePlateNumber")]
9599    pub vehicle_license_plate_number: Option<String>,
9600    #[serde(rename = "VehicleMake")]
9601    pub vehicle_make: Option<String>,
9602    #[serde(rename = "VehicleModel")]
9603    pub vehicle_model: Option<String>,
9604}
9605
9606#[derive(Serialize, Deserialize, Debug, Clone)]
9607pub struct SalesUpdateDeliveryHubAcceptV1RequestItem {
9608    #[serde(rename = "Id")]
9609    pub id: Option<i64>,
9610}
9611
9612#[derive(Serialize, Deserialize, Debug, Clone)]
9613pub struct SalesUpdateDeliveryHubAcceptV2RequestItem {
9614    #[serde(rename = "Id")]
9615    pub id: Option<i64>,
9616}
9617
9618#[derive(Serialize, Deserialize, Debug, Clone)]
9619pub struct SalesUpdateDeliveryHubDepartV1RequestItem {
9620    #[serde(rename = "Id")]
9621    pub id: Option<i64>,
9622}
9623
9624#[derive(Serialize, Deserialize, Debug, Clone)]
9625pub struct SalesUpdateDeliveryHubDepartV2RequestItem {
9626    #[serde(rename = "Id")]
9627    pub id: Option<i64>,
9628}
9629
9630#[derive(Serialize, Deserialize, Debug, Clone)]
9631pub struct SalesUpdateDeliveryHubVerifyIdV1RequestItem {
9632    #[serde(rename = "Id")]
9633    pub id: Option<i64>,
9634    #[serde(rename = "PaymentType")]
9635    pub payment_type: Option<String>,
9636}
9637
9638#[derive(Serialize, Deserialize, Debug, Clone)]
9639pub struct SalesUpdateDeliveryHubVerifyIdV2RequestItem {
9640    #[serde(rename = "Id")]
9641    pub id: Option<i64>,
9642    #[serde(rename = "PaymentType")]
9643    pub payment_type: Option<String>,
9644}
9645
9646#[derive(Serialize, Deserialize, Debug, Clone)]
9647pub struct SalesUpdateDeliveryRetailerV1RequestItem {
9648    #[serde(rename = "DateTime")]
9649    pub date_time: Option<String>,
9650    #[serde(rename = "Destinations")]
9651    pub destinations: Option<Vec<SalesUpdateDeliveryRetailerV1RequestItemDestinations>>,
9652    #[serde(rename = "DriverEmployeeId")]
9653    pub driver_employee_id: Option<String>,
9654    #[serde(rename = "DriverName")]
9655    pub driver_name: Option<String>,
9656    #[serde(rename = "DriversLicenseNumber")]
9657    pub drivers_license_number: Option<String>,
9658    #[serde(rename = "EstimatedDepartureDateTime")]
9659    pub estimated_departure_date_time: Option<String>,
9660    #[serde(rename = "Id")]
9661    pub id: Option<i64>,
9662    #[serde(rename = "Packages")]
9663    pub packages: Option<Vec<SalesUpdateDeliveryRetailerV1RequestItemPackages>>,
9664    #[serde(rename = "PhoneNumberForQuestions")]
9665    pub phone_number_for_questions: Option<String>,
9666    #[serde(rename = "VehicleLicensePlateNumber")]
9667    pub vehicle_license_plate_number: Option<String>,
9668    #[serde(rename = "VehicleMake")]
9669    pub vehicle_make: Option<String>,
9670    #[serde(rename = "VehicleModel")]
9671    pub vehicle_model: Option<String>,
9672}
9673
9674#[derive(Serialize, Deserialize, Debug, Clone)]
9675pub struct SalesUpdateDeliveryRetailerV1RequestItemDestinations {
9676    #[serde(rename = "ConsumerId")]
9677    pub consumer_id: Option<String>,
9678    #[serde(rename = "DriverEmployeeId")]
9679    pub driver_employee_id: Option<i64>,
9680    #[serde(rename = "DriverName")]
9681    pub driver_name: Option<String>,
9682    #[serde(rename = "DriversLicenseNumber")]
9683    pub drivers_license_number: Option<String>,
9684    #[serde(rename = "EstimatedArrivalDateTime")]
9685    pub estimated_arrival_date_time: Option<String>,
9686    #[serde(rename = "EstimatedDepartureDateTime")]
9687    pub estimated_departure_date_time: Option<String>,
9688    #[serde(rename = "Id")]
9689    pub id: Option<i64>,
9690    #[serde(rename = "PatientLicenseNumber")]
9691    pub patient_license_number: Option<String>,
9692    #[serde(rename = "PhoneNumberForQuestions")]
9693    pub phone_number_for_questions: Option<String>,
9694    #[serde(rename = "PlannedRoute")]
9695    pub planned_route: Option<String>,
9696    #[serde(rename = "RecipientAddressCity")]
9697    pub recipient_address_city: Option<String>,
9698    #[serde(rename = "RecipientAddressCounty")]
9699    pub recipient_address_county: Option<String>,
9700    #[serde(rename = "RecipientAddressPostalCode")]
9701    pub recipient_address_postal_code: Option<String>,
9702    #[serde(rename = "RecipientAddressState")]
9703    pub recipient_address_state: Option<String>,
9704    #[serde(rename = "RecipientAddressStreet1")]
9705    pub recipient_address_street1: Option<String>,
9706    #[serde(rename = "RecipientAddressStreet2")]
9707    pub recipient_address_street2: Option<String>,
9708    #[serde(rename = "RecipientName")]
9709    pub recipient_name: Option<String>,
9710    #[serde(rename = "RecipientZoneId")]
9711    pub recipient_zone_id: Option<String>,
9712    #[serde(rename = "SalesCustomerType")]
9713    pub sales_customer_type: Option<String>,
9714    #[serde(rename = "SalesDateTime")]
9715    pub sales_date_time: Option<String>,
9716    #[serde(rename = "Transactions")]
9717    pub transactions: Option<Vec<SalesUpdateDeliveryRetailerV1RequestItemDestinationsTransactions>>,
9718    #[serde(rename = "VehicleLicensePlateNumber")]
9719    pub vehicle_license_plate_number: Option<String>,
9720    #[serde(rename = "VehicleMake")]
9721    pub vehicle_make: Option<String>,
9722    #[serde(rename = "VehicleModel")]
9723    pub vehicle_model: Option<String>,
9724}
9725
9726#[derive(Serialize, Deserialize, Debug, Clone)]
9727pub struct SalesUpdateDeliveryRetailerV1RequestItemDestinationsTransactions {
9728    #[serde(rename = "CityTax")]
9729    pub city_tax: Option<String>,
9730    #[serde(rename = "CountyTax")]
9731    pub county_tax: Option<String>,
9732    #[serde(rename = "DiscountAmount")]
9733    pub discount_amount: Option<String>,
9734    #[serde(rename = "ExciseTax")]
9735    pub excise_tax: Option<String>,
9736    #[serde(rename = "InvoiceNumber")]
9737    pub invoice_number: Option<String>,
9738    #[serde(rename = "MunicipalTax")]
9739    pub municipal_tax: Option<String>,
9740    #[serde(rename = "PackageLabel")]
9741    pub package_label: Option<String>,
9742    #[serde(rename = "Price")]
9743    pub price: Option<String>,
9744    #[serde(rename = "QrCodes")]
9745    pub qr_codes: Option<String>,
9746    #[serde(rename = "Quantity")]
9747    pub quantity: Option<i64>,
9748    #[serde(rename = "SalesTax")]
9749    pub sales_tax: Option<String>,
9750    #[serde(rename = "SubTotal")]
9751    pub sub_total: Option<String>,
9752    #[serde(rename = "TotalAmount")]
9753    pub total_amount: Option<f64>,
9754    #[serde(rename = "UnitOfMeasure")]
9755    pub unit_of_measure: Option<String>,
9756    #[serde(rename = "UnitThcContent")]
9757    pub unit_thc_content: Option<f64>,
9758    #[serde(rename = "UnitThcContentUnitOfMeasure")]
9759    pub unit_thc_content_unit_of_measure: Option<String>,
9760    #[serde(rename = "UnitThcPercent")]
9761    pub unit_thc_percent: Option<f64>,
9762    #[serde(rename = "UnitWeight")]
9763    pub unit_weight: Option<f64>,
9764    #[serde(rename = "UnitWeightUnitOfMeasure")]
9765    pub unit_weight_unit_of_measure: Option<String>,
9766}
9767
9768#[derive(Serialize, Deserialize, Debug, Clone)]
9769pub struct SalesUpdateDeliveryRetailerV1RequestItemPackages {
9770    #[serde(rename = "DateTime")]
9771    pub date_time: Option<String>,
9772    #[serde(rename = "PackageLabel")]
9773    pub package_label: Option<String>,
9774    #[serde(rename = "Quantity")]
9775    pub quantity: Option<i64>,
9776    #[serde(rename = "TotalPrice")]
9777    pub total_price: Option<f64>,
9778    #[serde(rename = "UnitOfMeasure")]
9779    pub unit_of_measure: Option<String>,
9780}
9781
9782#[derive(Serialize, Deserialize, Debug, Clone)]
9783pub struct SalesUpdateDeliveryRetailerV2RequestItem {
9784    #[serde(rename = "DateTime")]
9785    pub date_time: Option<String>,
9786    #[serde(rename = "Destinations")]
9787    pub destinations: Option<Vec<SalesUpdateDeliveryRetailerV2RequestItemDestinations>>,
9788    #[serde(rename = "DriverEmployeeId")]
9789    pub driver_employee_id: Option<String>,
9790    #[serde(rename = "DriverName")]
9791    pub driver_name: Option<String>,
9792    #[serde(rename = "DriversLicenseNumber")]
9793    pub drivers_license_number: Option<String>,
9794    #[serde(rename = "EstimatedDepartureDateTime")]
9795    pub estimated_departure_date_time: Option<String>,
9796    #[serde(rename = "Id")]
9797    pub id: Option<i64>,
9798    #[serde(rename = "Packages")]
9799    pub packages: Option<Vec<SalesUpdateDeliveryRetailerV2RequestItemPackages>>,
9800    #[serde(rename = "PhoneNumberForQuestions")]
9801    pub phone_number_for_questions: Option<String>,
9802    #[serde(rename = "VehicleLicensePlateNumber")]
9803    pub vehicle_license_plate_number: Option<String>,
9804    #[serde(rename = "VehicleMake")]
9805    pub vehicle_make: Option<String>,
9806    #[serde(rename = "VehicleModel")]
9807    pub vehicle_model: Option<String>,
9808}
9809
9810#[derive(Serialize, Deserialize, Debug, Clone)]
9811pub struct SalesUpdateDeliveryRetailerV2RequestItemDestinations {
9812    #[serde(rename = "ConsumerId")]
9813    pub consumer_id: Option<String>,
9814    #[serde(rename = "DriverEmployeeId")]
9815    pub driver_employee_id: Option<i64>,
9816    #[serde(rename = "DriverName")]
9817    pub driver_name: Option<String>,
9818    #[serde(rename = "DriversLicenseNumber")]
9819    pub drivers_license_number: Option<String>,
9820    #[serde(rename = "EstimatedArrivalDateTime")]
9821    pub estimated_arrival_date_time: Option<String>,
9822    #[serde(rename = "EstimatedDepartureDateTime")]
9823    pub estimated_departure_date_time: Option<String>,
9824    #[serde(rename = "Id")]
9825    pub id: Option<i64>,
9826    #[serde(rename = "PatientLicenseNumber")]
9827    pub patient_license_number: Option<String>,
9828    #[serde(rename = "PhoneNumberForQuestions")]
9829    pub phone_number_for_questions: Option<String>,
9830    #[serde(rename = "PlannedRoute")]
9831    pub planned_route: Option<String>,
9832    #[serde(rename = "RecipientAddressCity")]
9833    pub recipient_address_city: Option<String>,
9834    #[serde(rename = "RecipientAddressCounty")]
9835    pub recipient_address_county: Option<String>,
9836    #[serde(rename = "RecipientAddressPostalCode")]
9837    pub recipient_address_postal_code: Option<String>,
9838    #[serde(rename = "RecipientAddressState")]
9839    pub recipient_address_state: Option<String>,
9840    #[serde(rename = "RecipientAddressStreet1")]
9841    pub recipient_address_street1: Option<String>,
9842    #[serde(rename = "RecipientAddressStreet2")]
9843    pub recipient_address_street2: Option<String>,
9844    #[serde(rename = "RecipientName")]
9845    pub recipient_name: Option<String>,
9846    #[serde(rename = "RecipientZoneId")]
9847    pub recipient_zone_id: Option<String>,
9848    #[serde(rename = "SalesCustomerType")]
9849    pub sales_customer_type: Option<String>,
9850    #[serde(rename = "SalesDateTime")]
9851    pub sales_date_time: Option<String>,
9852    #[serde(rename = "Transactions")]
9853    pub transactions: Option<Vec<SalesUpdateDeliveryRetailerV2RequestItemDestinationsTransactions>>,
9854    #[serde(rename = "VehicleLicensePlateNumber")]
9855    pub vehicle_license_plate_number: Option<String>,
9856    #[serde(rename = "VehicleMake")]
9857    pub vehicle_make: Option<String>,
9858    #[serde(rename = "VehicleModel")]
9859    pub vehicle_model: Option<String>,
9860}
9861
9862#[derive(Serialize, Deserialize, Debug, Clone)]
9863pub struct SalesUpdateDeliveryRetailerV2RequestItemDestinationsTransactions {
9864    #[serde(rename = "CityTax")]
9865    pub city_tax: Option<String>,
9866    #[serde(rename = "CountyTax")]
9867    pub county_tax: Option<String>,
9868    #[serde(rename = "DiscountAmount")]
9869    pub discount_amount: Option<String>,
9870    #[serde(rename = "ExciseTax")]
9871    pub excise_tax: Option<String>,
9872    #[serde(rename = "InvoiceNumber")]
9873    pub invoice_number: Option<String>,
9874    #[serde(rename = "MunicipalTax")]
9875    pub municipal_tax: Option<String>,
9876    #[serde(rename = "PackageLabel")]
9877    pub package_label: Option<String>,
9878    #[serde(rename = "Price")]
9879    pub price: Option<String>,
9880    #[serde(rename = "QrCodes")]
9881    pub qr_codes: Option<String>,
9882    #[serde(rename = "Quantity")]
9883    pub quantity: Option<i64>,
9884    #[serde(rename = "SalesTax")]
9885    pub sales_tax: Option<String>,
9886    #[serde(rename = "SubTotal")]
9887    pub sub_total: Option<String>,
9888    #[serde(rename = "TotalAmount")]
9889    pub total_amount: Option<f64>,
9890    #[serde(rename = "UnitOfMeasure")]
9891    pub unit_of_measure: Option<String>,
9892    #[serde(rename = "UnitThcContent")]
9893    pub unit_thc_content: Option<f64>,
9894    #[serde(rename = "UnitThcContentUnitOfMeasure")]
9895    pub unit_thc_content_unit_of_measure: Option<String>,
9896    #[serde(rename = "UnitThcPercent")]
9897    pub unit_thc_percent: Option<f64>,
9898    #[serde(rename = "UnitWeight")]
9899    pub unit_weight: Option<f64>,
9900    #[serde(rename = "UnitWeightUnitOfMeasure")]
9901    pub unit_weight_unit_of_measure: Option<String>,
9902}
9903
9904#[derive(Serialize, Deserialize, Debug, Clone)]
9905pub struct SalesUpdateDeliveryRetailerV2RequestItemPackages {
9906    #[serde(rename = "DateTime")]
9907    pub date_time: Option<String>,
9908    #[serde(rename = "PackageLabel")]
9909    pub package_label: Option<String>,
9910    #[serde(rename = "Quantity")]
9911    pub quantity: Option<i64>,
9912    #[serde(rename = "TotalPrice")]
9913    pub total_price: Option<f64>,
9914    #[serde(rename = "UnitOfMeasure")]
9915    pub unit_of_measure: Option<String>,
9916}
9917
9918#[derive(Serialize, Deserialize, Debug, Clone)]
9919pub struct SalesUpdateReceiptV1RequestItem {
9920    #[serde(rename = "CaregiverLicenseNumber")]
9921    pub caregiver_license_number: Option<String>,
9922    #[serde(rename = "ExternalReceiptNumber")]
9923    pub external_receipt_number: Option<String>,
9924    #[serde(rename = "Id")]
9925    pub id: Option<i64>,
9926    #[serde(rename = "IdentificationMethod")]
9927    pub identification_method: Option<String>,
9928    #[serde(rename = "PatientLicenseNumber")]
9929    pub patient_license_number: Option<String>,
9930    #[serde(rename = "PatientRegistrationLocationId")]
9931    pub patient_registration_location_id: Option<i64>,
9932    #[serde(rename = "SalesCustomerType")]
9933    pub sales_customer_type: Option<String>,
9934    #[serde(rename = "SalesDateTime")]
9935    pub sales_date_time: Option<String>,
9936    #[serde(rename = "Transactions")]
9937    pub transactions: Option<Vec<SalesUpdateReceiptV1RequestItemTransactions>>,
9938}
9939
9940#[derive(Serialize, Deserialize, Debug, Clone)]
9941pub struct SalesUpdateReceiptV1RequestItemTransactions {
9942    #[serde(rename = "CityTax")]
9943    pub city_tax: Option<String>,
9944    #[serde(rename = "CountyTax")]
9945    pub county_tax: Option<String>,
9946    #[serde(rename = "DiscountAmount")]
9947    pub discount_amount: Option<String>,
9948    #[serde(rename = "ExciseTax")]
9949    pub excise_tax: Option<String>,
9950    #[serde(rename = "InvoiceNumber")]
9951    pub invoice_number: Option<String>,
9952    #[serde(rename = "MunicipalTax")]
9953    pub municipal_tax: Option<String>,
9954    #[serde(rename = "PackageLabel")]
9955    pub package_label: Option<String>,
9956    #[serde(rename = "Price")]
9957    pub price: Option<String>,
9958    #[serde(rename = "QrCodes")]
9959    pub qr_codes: Option<String>,
9960    #[serde(rename = "Quantity")]
9961    pub quantity: Option<i64>,
9962    #[serde(rename = "SalesTax")]
9963    pub sales_tax: Option<String>,
9964    #[serde(rename = "SubTotal")]
9965    pub sub_total: Option<String>,
9966    #[serde(rename = "TotalAmount")]
9967    pub total_amount: Option<f64>,
9968    #[serde(rename = "UnitOfMeasure")]
9969    pub unit_of_measure: Option<String>,
9970    #[serde(rename = "UnitThcContent")]
9971    pub unit_thc_content: Option<f64>,
9972    #[serde(rename = "UnitThcContentUnitOfMeasure")]
9973    pub unit_thc_content_unit_of_measure: Option<String>,
9974    #[serde(rename = "UnitThcPercent")]
9975    pub unit_thc_percent: Option<f64>,
9976    #[serde(rename = "UnitWeight")]
9977    pub unit_weight: Option<f64>,
9978    #[serde(rename = "UnitWeightUnitOfMeasure")]
9979    pub unit_weight_unit_of_measure: Option<String>,
9980}
9981
9982#[derive(Serialize, Deserialize, Debug, Clone)]
9983pub struct SalesUpdateReceiptV2RequestItem {
9984    #[serde(rename = "CaregiverLicenseNumber")]
9985    pub caregiver_license_number: Option<String>,
9986    #[serde(rename = "ExternalReceiptNumber")]
9987    pub external_receipt_number: Option<String>,
9988    #[serde(rename = "Id")]
9989    pub id: Option<i64>,
9990    #[serde(rename = "IdentificationMethod")]
9991    pub identification_method: Option<String>,
9992    #[serde(rename = "PatientLicenseNumber")]
9993    pub patient_license_number: Option<String>,
9994    #[serde(rename = "PatientRegistrationLocationId")]
9995    pub patient_registration_location_id: Option<i64>,
9996    #[serde(rename = "SalesCustomerType")]
9997    pub sales_customer_type: Option<String>,
9998    #[serde(rename = "SalesDateTime")]
9999    pub sales_date_time: Option<String>,
10000    #[serde(rename = "Transactions")]
10001    pub transactions: Option<Vec<SalesUpdateReceiptV2RequestItemTransactions>>,
10002}
10003
10004#[derive(Serialize, Deserialize, Debug, Clone)]
10005pub struct SalesUpdateReceiptV2RequestItemTransactions {
10006    #[serde(rename = "CityTax")]
10007    pub city_tax: Option<String>,
10008    #[serde(rename = "CountyTax")]
10009    pub county_tax: Option<String>,
10010    #[serde(rename = "DiscountAmount")]
10011    pub discount_amount: Option<String>,
10012    #[serde(rename = "ExciseTax")]
10013    pub excise_tax: Option<String>,
10014    #[serde(rename = "InvoiceNumber")]
10015    pub invoice_number: Option<String>,
10016    #[serde(rename = "MunicipalTax")]
10017    pub municipal_tax: Option<String>,
10018    #[serde(rename = "PackageLabel")]
10019    pub package_label: Option<String>,
10020    #[serde(rename = "Price")]
10021    pub price: Option<String>,
10022    #[serde(rename = "QrCodes")]
10023    pub qr_codes: Option<String>,
10024    #[serde(rename = "Quantity")]
10025    pub quantity: Option<i64>,
10026    #[serde(rename = "SalesTax")]
10027    pub sales_tax: Option<String>,
10028    #[serde(rename = "SubTotal")]
10029    pub sub_total: Option<String>,
10030    #[serde(rename = "TotalAmount")]
10031    pub total_amount: Option<f64>,
10032    #[serde(rename = "UnitOfMeasure")]
10033    pub unit_of_measure: Option<String>,
10034    #[serde(rename = "UnitThcContent")]
10035    pub unit_thc_content: Option<f64>,
10036    #[serde(rename = "UnitThcContentUnitOfMeasure")]
10037    pub unit_thc_content_unit_of_measure: Option<String>,
10038    #[serde(rename = "UnitThcPercent")]
10039    pub unit_thc_percent: Option<f64>,
10040    #[serde(rename = "UnitWeight")]
10041    pub unit_weight: Option<f64>,
10042    #[serde(rename = "UnitWeightUnitOfMeasure")]
10043    pub unit_weight_unit_of_measure: Option<String>,
10044}
10045
10046#[derive(Serialize, Deserialize, Debug, Clone)]
10047pub struct SalesUpdateReceiptFinalizeV2RequestItem {
10048    #[serde(rename = "Id")]
10049    pub id: Option<i64>,
10050}
10051
10052#[derive(Serialize, Deserialize, Debug, Clone)]
10053pub struct SalesUpdateReceiptUnfinalizeV2RequestItem {
10054    #[serde(rename = "Id")]
10055    pub id: Option<i64>,
10056}
10057
10058#[derive(Serialize, Deserialize, Debug, Clone)]
10059pub struct SalesUpdateTransactionByDateV1RequestItem {
10060    #[serde(rename = "CityTax")]
10061    pub city_tax: Option<String>,
10062    #[serde(rename = "CountyTax")]
10063    pub county_tax: Option<String>,
10064    #[serde(rename = "DiscountAmount")]
10065    pub discount_amount: Option<String>,
10066    #[serde(rename = "ExciseTax")]
10067    pub excise_tax: Option<String>,
10068    #[serde(rename = "InvoiceNumber")]
10069    pub invoice_number: Option<String>,
10070    #[serde(rename = "MunicipalTax")]
10071    pub municipal_tax: Option<String>,
10072    #[serde(rename = "PackageLabel")]
10073    pub package_label: Option<String>,
10074    #[serde(rename = "Price")]
10075    pub price: Option<String>,
10076    #[serde(rename = "QrCodes")]
10077    pub qr_codes: Option<String>,
10078    #[serde(rename = "Quantity")]
10079    pub quantity: Option<i64>,
10080    #[serde(rename = "SalesTax")]
10081    pub sales_tax: Option<String>,
10082    #[serde(rename = "SubTotal")]
10083    pub sub_total: Option<String>,
10084    #[serde(rename = "TotalAmount")]
10085    pub total_amount: Option<f64>,
10086    #[serde(rename = "UnitOfMeasure")]
10087    pub unit_of_measure: Option<String>,
10088    #[serde(rename = "UnitThcContent")]
10089    pub unit_thc_content: Option<f64>,
10090    #[serde(rename = "UnitThcContentUnitOfMeasure")]
10091    pub unit_thc_content_unit_of_measure: Option<String>,
10092    #[serde(rename = "UnitThcPercent")]
10093    pub unit_thc_percent: Option<f64>,
10094    #[serde(rename = "UnitWeight")]
10095    pub unit_weight: Option<f64>,
10096    #[serde(rename = "UnitWeightUnitOfMeasure")]
10097    pub unit_weight_unit_of_measure: Option<String>,
10098}
10099
10100#[derive(Serialize, Deserialize, Debug, Clone)]
10101pub struct StrainsCreateV1RequestItem {
10102    #[serde(rename = "CbdLevel")]
10103    pub cbd_level: Option<f64>,
10104    #[serde(rename = "IndicaPercentage")]
10105    pub indica_percentage: Option<f64>,
10106    #[serde(rename = "Name")]
10107    pub name: Option<String>,
10108    #[serde(rename = "SativaPercentage")]
10109    pub sativa_percentage: Option<f64>,
10110    #[serde(rename = "TestingStatus")]
10111    pub testing_status: Option<String>,
10112    #[serde(rename = "ThcLevel")]
10113    pub thc_level: Option<f64>,
10114}
10115
10116#[derive(Serialize, Deserialize, Debug, Clone)]
10117pub struct StrainsCreateV2RequestItem {
10118    #[serde(rename = "CbdLevel")]
10119    pub cbd_level: Option<f64>,
10120    #[serde(rename = "IndicaPercentage")]
10121    pub indica_percentage: Option<f64>,
10122    #[serde(rename = "Name")]
10123    pub name: Option<String>,
10124    #[serde(rename = "SativaPercentage")]
10125    pub sativa_percentage: Option<f64>,
10126    #[serde(rename = "TestingStatus")]
10127    pub testing_status: Option<String>,
10128    #[serde(rename = "ThcLevel")]
10129    pub thc_level: Option<f64>,
10130}
10131
10132#[derive(Serialize, Deserialize, Debug, Clone)]
10133pub struct StrainsCreateUpdateV1RequestItem {
10134    #[serde(rename = "CbdLevel")]
10135    pub cbd_level: Option<f64>,
10136    #[serde(rename = "Id")]
10137    pub id: Option<i64>,
10138    #[serde(rename = "IndicaPercentage")]
10139    pub indica_percentage: Option<f64>,
10140    #[serde(rename = "Name")]
10141    pub name: Option<String>,
10142    #[serde(rename = "SativaPercentage")]
10143    pub sativa_percentage: Option<f64>,
10144    #[serde(rename = "TestingStatus")]
10145    pub testing_status: Option<String>,
10146    #[serde(rename = "ThcLevel")]
10147    pub thc_level: Option<f64>,
10148}
10149
10150#[derive(Serialize, Deserialize, Debug, Clone)]
10151pub struct StrainsUpdateV2RequestItem {
10152    #[serde(rename = "CbdLevel")]
10153    pub cbd_level: Option<f64>,
10154    #[serde(rename = "Id")]
10155    pub id: Option<i64>,
10156    #[serde(rename = "IndicaPercentage")]
10157    pub indica_percentage: Option<f64>,
10158    #[serde(rename = "Name")]
10159    pub name: Option<String>,
10160    #[serde(rename = "SativaPercentage")]
10161    pub sativa_percentage: Option<f64>,
10162    #[serde(rename = "TestingStatus")]
10163    pub testing_status: Option<String>,
10164    #[serde(rename = "ThcLevel")]
10165    pub thc_level: Option<f64>,
10166}
10167
10168#[derive(Serialize, Deserialize, Debug, Clone)]
10169pub struct TransportersCreateDriverV2RequestItem {
10170    #[serde(rename = "DriversLicenseNumber")]
10171    pub drivers_license_number: Option<String>,
10172    #[serde(rename = "EmployeeId")]
10173    pub employee_id: Option<String>,
10174    #[serde(rename = "Name")]
10175    pub name: Option<String>,
10176}
10177
10178#[derive(Serialize, Deserialize, Debug, Clone)]
10179pub struct TransportersCreateVehicleV2RequestItem {
10180    #[serde(rename = "LicensePlateNumber")]
10181    pub license_plate_number: Option<String>,
10182    #[serde(rename = "Make")]
10183    pub make: Option<String>,
10184    #[serde(rename = "Model")]
10185    pub model: Option<String>,
10186}
10187
10188#[derive(Serialize, Deserialize, Debug, Clone)]
10189pub struct TransportersUpdateDriverV2RequestItem {
10190    #[serde(rename = "DriversLicenseNumber")]
10191    pub drivers_license_number: Option<String>,
10192    #[serde(rename = "EmployeeId")]
10193    pub employee_id: Option<String>,
10194    #[serde(rename = "Id")]
10195    pub id: Option<String>,
10196    #[serde(rename = "Name")]
10197    pub name: Option<String>,
10198}
10199
10200#[derive(Serialize, Deserialize, Debug, Clone)]
10201pub struct TransportersUpdateVehicleV2RequestItem {
10202    #[serde(rename = "Id")]
10203    pub id: Option<String>,
10204    #[serde(rename = "LicensePlateNumber")]
10205    pub license_plate_number: Option<String>,
10206    #[serde(rename = "Make")]
10207    pub make: Option<String>,
10208    #[serde(rename = "Model")]
10209    pub model: Option<String>,
10210}
10211
10212#[derive(Serialize, Deserialize, Debug, Clone)]
10213pub struct PlantsCreateAdditivesV1RequestItem {
10214    #[serde(rename = "ActiveIngredients")]
10215    pub active_ingredients: Option<Vec<PlantsCreateAdditivesV1RequestItemActiveIngredients>>,
10216    #[serde(rename = "ActualDate")]
10217    pub actual_date: Option<String>,
10218    #[serde(rename = "AdditiveType")]
10219    pub additive_type: Option<String>,
10220    #[serde(rename = "ApplicationDevice")]
10221    pub application_device: Option<String>,
10222    #[serde(rename = "EpaRegistrationNumber")]
10223    pub epa_registration_number: Option<String>,
10224    #[serde(rename = "PlantLabels")]
10225    pub plant_labels: Option<Vec<String>>,
10226    #[serde(rename = "ProductSupplier")]
10227    pub product_supplier: Option<String>,
10228    #[serde(rename = "ProductTradeName")]
10229    pub product_trade_name: Option<String>,
10230    #[serde(rename = "TotalAmountApplied")]
10231    pub total_amount_applied: Option<i64>,
10232    #[serde(rename = "TotalAmountUnitOfMeasure")]
10233    pub total_amount_unit_of_measure: Option<String>,
10234}
10235
10236#[derive(Serialize, Deserialize, Debug, Clone)]
10237pub struct PlantsCreateAdditivesV1RequestItemActiveIngredients {
10238    #[serde(rename = "Name")]
10239    pub name: Option<String>,
10240    #[serde(rename = "Percentage")]
10241    pub percentage: Option<f64>,
10242}
10243
10244#[derive(Serialize, Deserialize, Debug, Clone)]
10245pub struct PlantsCreateAdditivesV2RequestItem {
10246    #[serde(rename = "ActiveIngredients")]
10247    pub active_ingredients: Option<Vec<PlantsCreateAdditivesV2RequestItemActiveIngredients>>,
10248    #[serde(rename = "ActualDate")]
10249    pub actual_date: Option<String>,
10250    #[serde(rename = "AdditiveType")]
10251    pub additive_type: Option<String>,
10252    #[serde(rename = "ApplicationDevice")]
10253    pub application_device: Option<String>,
10254    #[serde(rename = "EpaRegistrationNumber")]
10255    pub epa_registration_number: Option<String>,
10256    #[serde(rename = "PlantLabels")]
10257    pub plant_labels: Option<Vec<String>>,
10258    #[serde(rename = "ProductSupplier")]
10259    pub product_supplier: Option<String>,
10260    #[serde(rename = "ProductTradeName")]
10261    pub product_trade_name: Option<String>,
10262    #[serde(rename = "TotalAmountApplied")]
10263    pub total_amount_applied: Option<i64>,
10264    #[serde(rename = "TotalAmountUnitOfMeasure")]
10265    pub total_amount_unit_of_measure: Option<String>,
10266}
10267
10268#[derive(Serialize, Deserialize, Debug, Clone)]
10269pub struct PlantsCreateAdditivesV2RequestItemActiveIngredients {
10270    #[serde(rename = "Name")]
10271    pub name: Option<String>,
10272    #[serde(rename = "Percentage")]
10273    pub percentage: Option<f64>,
10274}
10275
10276#[derive(Serialize, Deserialize, Debug, Clone)]
10277pub struct PlantsCreateAdditivesBylocationV1RequestItem {
10278    #[serde(rename = "ActiveIngredients")]
10279    pub active_ingredients: Option<Vec<PlantsCreateAdditivesBylocationV1RequestItemActiveIngredients>>,
10280    #[serde(rename = "ActualDate")]
10281    pub actual_date: Option<String>,
10282    #[serde(rename = "AdditiveType")]
10283    pub additive_type: Option<String>,
10284    #[serde(rename = "ApplicationDevice")]
10285    pub application_device: Option<String>,
10286    #[serde(rename = "EpaRegistrationNumber")]
10287    pub epa_registration_number: Option<String>,
10288    #[serde(rename = "LocationName")]
10289    pub location_name: Option<String>,
10290    #[serde(rename = "ProductSupplier")]
10291    pub product_supplier: Option<String>,
10292    #[serde(rename = "ProductTradeName")]
10293    pub product_trade_name: Option<String>,
10294    #[serde(rename = "SublocationName")]
10295    pub sublocation_name: Option<String>,
10296    #[serde(rename = "TotalAmountApplied")]
10297    pub total_amount_applied: Option<i64>,
10298    #[serde(rename = "TotalAmountUnitOfMeasure")]
10299    pub total_amount_unit_of_measure: Option<String>,
10300}
10301
10302#[derive(Serialize, Deserialize, Debug, Clone)]
10303pub struct PlantsCreateAdditivesBylocationV1RequestItemActiveIngredients {
10304    #[serde(rename = "Name")]
10305    pub name: Option<String>,
10306    #[serde(rename = "Percentage")]
10307    pub percentage: Option<f64>,
10308}
10309
10310#[derive(Serialize, Deserialize, Debug, Clone)]
10311pub struct PlantsCreateAdditivesBylocationV2RequestItem {
10312    #[serde(rename = "ActiveIngredients")]
10313    pub active_ingredients: Option<Vec<PlantsCreateAdditivesBylocationV2RequestItemActiveIngredients>>,
10314    #[serde(rename = "ActualDate")]
10315    pub actual_date: Option<String>,
10316    #[serde(rename = "AdditiveType")]
10317    pub additive_type: Option<String>,
10318    #[serde(rename = "ApplicationDevice")]
10319    pub application_device: Option<String>,
10320    #[serde(rename = "EpaRegistrationNumber")]
10321    pub epa_registration_number: Option<String>,
10322    #[serde(rename = "LocationName")]
10323    pub location_name: Option<String>,
10324    #[serde(rename = "ProductSupplier")]
10325    pub product_supplier: Option<String>,
10326    #[serde(rename = "ProductTradeName")]
10327    pub product_trade_name: Option<String>,
10328    #[serde(rename = "SublocationName")]
10329    pub sublocation_name: Option<String>,
10330    #[serde(rename = "TotalAmountApplied")]
10331    pub total_amount_applied: Option<i64>,
10332    #[serde(rename = "TotalAmountUnitOfMeasure")]
10333    pub total_amount_unit_of_measure: Option<String>,
10334}
10335
10336#[derive(Serialize, Deserialize, Debug, Clone)]
10337pub struct PlantsCreateAdditivesBylocationV2RequestItemActiveIngredients {
10338    #[serde(rename = "Name")]
10339    pub name: Option<String>,
10340    #[serde(rename = "Percentage")]
10341    pub percentage: Option<f64>,
10342}
10343
10344#[derive(Serialize, Deserialize, Debug, Clone)]
10345pub struct PlantsCreateAdditivesBylocationUsingtemplateV2RequestItem {
10346    #[serde(rename = "ActualDate")]
10347    pub actual_date: Option<String>,
10348    #[serde(rename = "AdditivesTemplateName")]
10349    pub additives_template_name: Option<String>,
10350    #[serde(rename = "LocationName")]
10351    pub location_name: Option<String>,
10352    #[serde(rename = "Rate")]
10353    pub rate: Option<String>,
10354    #[serde(rename = "SublocationName")]
10355    pub sublocation_name: Option<String>,
10356    #[serde(rename = "TotalAmountApplied")]
10357    pub total_amount_applied: Option<i64>,
10358    #[serde(rename = "TotalAmountUnitOfMeasure")]
10359    pub total_amount_unit_of_measure: Option<String>,
10360    #[serde(rename = "Volume")]
10361    pub volume: Option<String>,
10362}
10363
10364#[derive(Serialize, Deserialize, Debug, Clone)]
10365pub struct PlantsCreateAdditivesUsingtemplateV2RequestItem {
10366    #[serde(rename = "ActualDate")]
10367    pub actual_date: Option<String>,
10368    #[serde(rename = "AdditivesTemplateName")]
10369    pub additives_template_name: Option<String>,
10370    #[serde(rename = "PlantLabels")]
10371    pub plant_labels: Option<Vec<String>>,
10372    #[serde(rename = "Rate")]
10373    pub rate: Option<String>,
10374    #[serde(rename = "TotalAmountApplied")]
10375    pub total_amount_applied: Option<i64>,
10376    #[serde(rename = "TotalAmountUnitOfMeasure")]
10377    pub total_amount_unit_of_measure: Option<String>,
10378    #[serde(rename = "Volume")]
10379    pub volume: Option<String>,
10380}
10381
10382#[derive(Serialize, Deserialize, Debug, Clone)]
10383pub struct PlantsCreateChangegrowthphasesV1RequestItem {
10384    #[serde(rename = "GrowthDate")]
10385    pub growth_date: Option<String>,
10386    #[serde(rename = "GrowthPhase")]
10387    pub growth_phase: Option<String>,
10388    #[serde(rename = "Id")]
10389    pub id: Option<i64>,
10390    #[serde(rename = "Label")]
10391    pub label: Option<String>,
10392    #[serde(rename = "NewLocation")]
10393    pub new_location: Option<String>,
10394    #[serde(rename = "NewSublocation")]
10395    pub new_sublocation: Option<String>,
10396    #[serde(rename = "NewTag")]
10397    pub new_tag: Option<String>,
10398}
10399
10400#[derive(Serialize, Deserialize, Debug, Clone)]
10401pub struct PlantsCreateHarvestplantsV1RequestItem {
10402    #[serde(rename = "ActualDate")]
10403    pub actual_date: Option<String>,
10404    #[serde(rename = "DryingLocation")]
10405    pub drying_location: Option<String>,
10406    #[serde(rename = "DryingSublocation")]
10407    pub drying_sublocation: Option<String>,
10408    #[serde(rename = "HarvestName")]
10409    pub harvest_name: Option<String>,
10410    #[serde(rename = "PatientLicenseNumber")]
10411    pub patient_license_number: Option<String>,
10412    #[serde(rename = "Plant")]
10413    pub plant: Option<String>,
10414    #[serde(rename = "UnitOfWeight")]
10415    pub unit_of_weight: Option<String>,
10416    #[serde(rename = "Weight")]
10417    pub weight: Option<f64>,
10418}
10419
10420#[derive(Serialize, Deserialize, Debug, Clone)]
10421pub struct PlantsCreateManicureV2RequestItem {
10422    #[serde(rename = "ActualDate")]
10423    pub actual_date: Option<String>,
10424    #[serde(rename = "DryingLocation")]
10425    pub drying_location: Option<String>,
10426    #[serde(rename = "DryingSublocation")]
10427    pub drying_sublocation: Option<String>,
10428    #[serde(rename = "HarvestName")]
10429    pub harvest_name: Option<String>,
10430    #[serde(rename = "PatientLicenseNumber")]
10431    pub patient_license_number: Option<String>,
10432    #[serde(rename = "Plant")]
10433    pub plant: Option<String>,
10434    #[serde(rename = "PlantCount")]
10435    pub plant_count: Option<i64>,
10436    #[serde(rename = "UnitOfWeight")]
10437    pub unit_of_weight: Option<String>,
10438    #[serde(rename = "Weight")]
10439    pub weight: Option<f64>,
10440}
10441
10442#[derive(Serialize, Deserialize, Debug, Clone)]
10443pub struct PlantsCreateManicureplantsV1RequestItem {
10444    #[serde(rename = "ActualDate")]
10445    pub actual_date: Option<String>,
10446    #[serde(rename = "DryingLocation")]
10447    pub drying_location: Option<String>,
10448    #[serde(rename = "DryingSublocation")]
10449    pub drying_sublocation: Option<String>,
10450    #[serde(rename = "HarvestName")]
10451    pub harvest_name: Option<String>,
10452    #[serde(rename = "PatientLicenseNumber")]
10453    pub patient_license_number: Option<String>,
10454    #[serde(rename = "Plant")]
10455    pub plant: Option<String>,
10456    #[serde(rename = "PlantCount")]
10457    pub plant_count: Option<i64>,
10458    #[serde(rename = "UnitOfWeight")]
10459    pub unit_of_weight: Option<String>,
10460    #[serde(rename = "Weight")]
10461    pub weight: Option<f64>,
10462}
10463
10464#[derive(Serialize, Deserialize, Debug, Clone)]
10465pub struct PlantsCreateMoveplantsV1RequestItem {
10466    #[serde(rename = "ActualDate")]
10467    pub actual_date: Option<String>,
10468    #[serde(rename = "Id")]
10469    pub id: Option<i64>,
10470    #[serde(rename = "Label")]
10471    pub label: Option<String>,
10472    #[serde(rename = "Location")]
10473    pub location: Option<String>,
10474    #[serde(rename = "Sublocation")]
10475    pub sublocation: Option<String>,
10476}
10477
10478#[derive(Serialize, Deserialize, Debug, Clone)]
10479pub struct PlantsCreatePlantbatchPackageV1RequestItem {
10480    #[serde(rename = "ActualDate")]
10481    pub actual_date: Option<String>,
10482    #[serde(rename = "Count")]
10483    pub count: Option<i64>,
10484    #[serde(rename = "IsDonation")]
10485    pub is_donation: Option<bool>,
10486    #[serde(rename = "IsTradeSample")]
10487    pub is_trade_sample: Option<bool>,
10488    #[serde(rename = "Item")]
10489    pub item: Option<String>,
10490    #[serde(rename = "Location")]
10491    pub location: Option<String>,
10492    #[serde(rename = "Note")]
10493    pub note: Option<String>,
10494    #[serde(rename = "PackageTag")]
10495    pub package_tag: Option<String>,
10496    #[serde(rename = "PatientLicenseNumber")]
10497    pub patient_license_number: Option<String>,
10498    #[serde(rename = "PlantBatchType")]
10499    pub plant_batch_type: Option<String>,
10500    #[serde(rename = "PlantLabel")]
10501    pub plant_label: Option<String>,
10502    #[serde(rename = "Sublocation")]
10503    pub sublocation: Option<String>,
10504}
10505
10506#[derive(Serialize, Deserialize, Debug, Clone)]
10507pub struct PlantsCreatePlantbatchPackageV2RequestItem {
10508    #[serde(rename = "ActualDate")]
10509    pub actual_date: Option<String>,
10510    #[serde(rename = "Count")]
10511    pub count: Option<i64>,
10512    #[serde(rename = "IsDonation")]
10513    pub is_donation: Option<bool>,
10514    #[serde(rename = "IsTradeSample")]
10515    pub is_trade_sample: Option<bool>,
10516    #[serde(rename = "Item")]
10517    pub item: Option<String>,
10518    #[serde(rename = "Location")]
10519    pub location: Option<String>,
10520    #[serde(rename = "Note")]
10521    pub note: Option<String>,
10522    #[serde(rename = "PackageTag")]
10523    pub package_tag: Option<String>,
10524    #[serde(rename = "PatientLicenseNumber")]
10525    pub patient_license_number: Option<String>,
10526    #[serde(rename = "PlantBatchType")]
10527    pub plant_batch_type: Option<String>,
10528    #[serde(rename = "PlantLabel")]
10529    pub plant_label: Option<String>,
10530    #[serde(rename = "Sublocation")]
10531    pub sublocation: Option<String>,
10532}
10533
10534#[derive(Serialize, Deserialize, Debug, Clone)]
10535pub struct PlantsCreatePlantingsV1RequestItem {
10536    #[serde(rename = "ActualDate")]
10537    pub actual_date: Option<String>,
10538    #[serde(rename = "LocationName")]
10539    pub location_name: Option<String>,
10540    #[serde(rename = "PatientLicenseNumber")]
10541    pub patient_license_number: Option<String>,
10542    #[serde(rename = "PlantBatchName")]
10543    pub plant_batch_name: Option<String>,
10544    #[serde(rename = "PlantBatchType")]
10545    pub plant_batch_type: Option<String>,
10546    #[serde(rename = "PlantCount")]
10547    pub plant_count: Option<i64>,
10548    #[serde(rename = "PlantLabel")]
10549    pub plant_label: Option<String>,
10550    #[serde(rename = "StrainName")]
10551    pub strain_name: Option<String>,
10552    #[serde(rename = "SublocationName")]
10553    pub sublocation_name: Option<String>,
10554}
10555
10556#[derive(Serialize, Deserialize, Debug, Clone)]
10557pub struct PlantsCreatePlantingsV2RequestItem {
10558    #[serde(rename = "ActualDate")]
10559    pub actual_date: Option<String>,
10560    #[serde(rename = "LocationName")]
10561    pub location_name: Option<String>,
10562    #[serde(rename = "PatientLicenseNumber")]
10563    pub patient_license_number: Option<String>,
10564    #[serde(rename = "PlantBatchName")]
10565    pub plant_batch_name: Option<String>,
10566    #[serde(rename = "PlantBatchType")]
10567    pub plant_batch_type: Option<String>,
10568    #[serde(rename = "PlantCount")]
10569    pub plant_count: Option<i64>,
10570    #[serde(rename = "PlantLabel")]
10571    pub plant_label: Option<String>,
10572    #[serde(rename = "StrainName")]
10573    pub strain_name: Option<String>,
10574    #[serde(rename = "SublocationName")]
10575    pub sublocation_name: Option<String>,
10576}
10577
10578#[derive(Serialize, Deserialize, Debug, Clone)]
10579pub struct PlantsCreateWasteV1RequestItem {
10580    #[serde(rename = "LocationName")]
10581    pub location_name: Option<String>,
10582    #[serde(rename = "MixedMaterial")]
10583    pub mixed_material: Option<String>,
10584    #[serde(rename = "Note")]
10585    pub note: Option<String>,
10586    #[serde(rename = "PlantLabels")]
10587    pub plant_labels: Option<Vec<Value>>,
10588    #[serde(rename = "ReasonName")]
10589    pub reason_name: Option<String>,
10590    #[serde(rename = "SublocationName")]
10591    pub sublocation_name: Option<String>,
10592    #[serde(rename = "UnitOfMeasureName")]
10593    pub unit_of_measure_name: Option<String>,
10594    #[serde(rename = "WasteDate")]
10595    pub waste_date: Option<String>,
10596    #[serde(rename = "WasteMethodName")]
10597    pub waste_method_name: Option<String>,
10598    #[serde(rename = "WasteWeight")]
10599    pub waste_weight: Option<f64>,
10600}
10601
10602#[derive(Serialize, Deserialize, Debug, Clone)]
10603pub struct PlantsCreateWasteV2RequestItem {
10604    #[serde(rename = "LocationName")]
10605    pub location_name: Option<String>,
10606    #[serde(rename = "MixedMaterial")]
10607    pub mixed_material: Option<String>,
10608    #[serde(rename = "Note")]
10609    pub note: Option<String>,
10610    #[serde(rename = "PlantLabels")]
10611    pub plant_labels: Option<Vec<Value>>,
10612    #[serde(rename = "ReasonName")]
10613    pub reason_name: Option<String>,
10614    #[serde(rename = "SublocationName")]
10615    pub sublocation_name: Option<String>,
10616    #[serde(rename = "UnitOfMeasureName")]
10617    pub unit_of_measure_name: Option<String>,
10618    #[serde(rename = "WasteDate")]
10619    pub waste_date: Option<String>,
10620    #[serde(rename = "WasteMethodName")]
10621    pub waste_method_name: Option<String>,
10622    #[serde(rename = "WasteWeight")]
10623    pub waste_weight: Option<f64>,
10624}
10625
10626#[derive(Serialize, Deserialize, Debug, Clone)]
10627pub struct PlantsUpdateAdjustV2RequestItem {
10628    #[serde(rename = "AdjustCount")]
10629    pub adjust_count: Option<i64>,
10630    #[serde(rename = "AdjustReason")]
10631    pub adjust_reason: Option<String>,
10632    #[serde(rename = "AdjustmentDate")]
10633    pub adjustment_date: Option<String>,
10634    #[serde(rename = "Id")]
10635    pub id: Option<i64>,
10636    #[serde(rename = "Label")]
10637    pub label: Option<String>,
10638    #[serde(rename = "ReasonNote")]
10639    pub reason_note: Option<String>,
10640}
10641
10642#[derive(Serialize, Deserialize, Debug, Clone)]
10643pub struct PlantsUpdateGrowthphaseV2RequestItem {
10644    #[serde(rename = "GrowthDate")]
10645    pub growth_date: Option<String>,
10646    #[serde(rename = "GrowthPhase")]
10647    pub growth_phase: Option<String>,
10648    #[serde(rename = "Id")]
10649    pub id: Option<i64>,
10650    #[serde(rename = "Label")]
10651    pub label: Option<String>,
10652    #[serde(rename = "NewLocation")]
10653    pub new_location: Option<String>,
10654    #[serde(rename = "NewSublocation")]
10655    pub new_sublocation: Option<String>,
10656    #[serde(rename = "NewTag")]
10657    pub new_tag: Option<String>,
10658}
10659
10660#[derive(Serialize, Deserialize, Debug, Clone)]
10661pub struct PlantsUpdateHarvestV2RequestItem {
10662    #[serde(rename = "ActualDate")]
10663    pub actual_date: Option<String>,
10664    #[serde(rename = "DryingLocation")]
10665    pub drying_location: Option<String>,
10666    #[serde(rename = "DryingSublocation")]
10667    pub drying_sublocation: Option<String>,
10668    #[serde(rename = "HarvestName")]
10669    pub harvest_name: Option<String>,
10670    #[serde(rename = "PatientLicenseNumber")]
10671    pub patient_license_number: Option<String>,
10672    #[serde(rename = "Plant")]
10673    pub plant: Option<String>,
10674    #[serde(rename = "UnitOfWeight")]
10675    pub unit_of_weight: Option<String>,
10676    #[serde(rename = "Weight")]
10677    pub weight: Option<f64>,
10678}
10679
10680#[derive(Serialize, Deserialize, Debug, Clone)]
10681pub struct PlantsUpdateLocationV2RequestItem {
10682    #[serde(rename = "ActualDate")]
10683    pub actual_date: Option<String>,
10684    #[serde(rename = "Id")]
10685    pub id: Option<i64>,
10686    #[serde(rename = "Label")]
10687    pub label: Option<String>,
10688    #[serde(rename = "Location")]
10689    pub location: Option<String>,
10690    #[serde(rename = "Sublocation")]
10691    pub sublocation: Option<String>,
10692}
10693
10694#[derive(Serialize, Deserialize, Debug, Clone)]
10695pub struct PlantsUpdateMergeV2RequestItem {
10696    #[serde(rename = "MergeDate")]
10697    pub merge_date: Option<String>,
10698    #[serde(rename = "SourcePlantGroupLabel")]
10699    pub source_plant_group_label: Option<String>,
10700    #[serde(rename = "TargetPlantGroupLabel")]
10701    pub target_plant_group_label: Option<String>,
10702}
10703
10704#[derive(Serialize, Deserialize, Debug, Clone)]
10705pub struct PlantsUpdateSplitV2RequestItem {
10706    #[serde(rename = "PlantCount")]
10707    pub plant_count: Option<i64>,
10708    #[serde(rename = "SourcePlantLabel")]
10709    pub source_plant_label: Option<String>,
10710    #[serde(rename = "SplitDate")]
10711    pub split_date: Option<String>,
10712    #[serde(rename = "StrainLabel")]
10713    pub strain_label: Option<String>,
10714    #[serde(rename = "TagLabel")]
10715    pub tag_label: Option<String>,
10716}
10717
10718#[derive(Serialize, Deserialize, Debug, Clone)]
10719pub struct PlantsUpdateStrainV2RequestItem {
10720    #[serde(rename = "Id")]
10721    pub id: Option<i64>,
10722    #[serde(rename = "Label")]
10723    pub label: Option<String>,
10724    #[serde(rename = "StrainId")]
10725    pub strain_id: Option<i64>,
10726    #[serde(rename = "StrainName")]
10727    pub strain_name: Option<String>,
10728}
10729
10730#[derive(Serialize, Deserialize, Debug, Clone)]
10731pub struct PlantsUpdateTagV2RequestItem {
10732    #[serde(rename = "Id")]
10733    pub id: Option<i64>,
10734    #[serde(rename = "Label")]
10735    pub label: Option<String>,
10736    #[serde(rename = "NewTag")]
10737    pub new_tag: Option<String>,
10738    #[serde(rename = "ReplaceDate")]
10739    pub replace_date: Option<String>,
10740    #[serde(rename = "TagId")]
10741    pub tag_id: Option<i64>,
10742}
10743
10744#[derive(Serialize, Deserialize, Debug, Clone)]
10745pub struct RetailIdCreateAssociateV2RequestItem {
10746    #[serde(rename = "PackageLabel")]
10747    pub package_label: Option<String>,
10748    #[serde(rename = "QrUrls")]
10749    pub qr_urls: Option<Vec<String>>,
10750}
10751
10752#[derive(Serialize, Deserialize, Debug, Clone)]
10753pub struct RetailIdCreateGenerateV2Request {
10754    #[serde(rename = "PackageLabel")]
10755    pub package_label: Option<String>,
10756    #[serde(rename = "Quantity")]
10757    pub quantity: Option<i64>,
10758}
10759
10760#[derive(Serialize, Deserialize, Debug, Clone)]
10761pub struct RetailIdCreateMergeV2Request {
10762    #[serde(rename = "packageLabels")]
10763    pub package_labels: Option<Vec<String>>,
10764}
10765
10766#[derive(Serialize, Deserialize, Debug, Clone)]
10767pub struct RetailIdCreatePackageInfoV2Request {
10768    #[serde(rename = "packageLabels")]
10769    pub package_labels: Option<Vec<String>>,
10770}
10771
10772#[derive(Serialize, Deserialize, Debug, Clone)]
10773pub struct SublocationsCreateV2RequestItem {
10774    #[serde(rename = "Name")]
10775    pub name: Option<String>,
10776}
10777
10778#[derive(Serialize, Deserialize, Debug, Clone)]
10779pub struct SublocationsUpdateV2RequestItem {
10780    #[serde(rename = "Id")]
10781    pub id: Option<i64>,
10782    #[serde(rename = "Name")]
10783    pub name: Option<String>,
10784}
10785
10786#[derive(Serialize, Deserialize, Debug, Clone)]
10787pub struct HarvestsCreateFinishV1RequestItem {
10788    #[serde(rename = "ActualDate")]
10789    pub actual_date: Option<String>,
10790    #[serde(rename = "Id")]
10791    pub id: Option<i64>,
10792}
10793
10794#[derive(Serialize, Deserialize, Debug, Clone)]
10795pub struct HarvestsCreatePackageV1RequestItem {
10796    #[serde(rename = "ActualDate")]
10797    pub actual_date: Option<String>,
10798    #[serde(rename = "DecontaminateProduct")]
10799    pub decontaminate_product: Option<bool>,
10800    #[serde(rename = "DecontaminationDate")]
10801    pub decontamination_date: Option<String>,
10802    #[serde(rename = "DecontaminationSteps")]
10803    pub decontamination_steps: Option<String>,
10804    #[serde(rename = "ExpirationDate")]
10805    pub expiration_date: Option<String>,
10806    #[serde(rename = "Ingredients")]
10807    pub ingredients: Option<Vec<HarvestsCreatePackageV1RequestItemIngredients>>,
10808    #[serde(rename = "IsDonation")]
10809    pub is_donation: Option<bool>,
10810    #[serde(rename = "IsProductionBatch")]
10811    pub is_production_batch: Option<bool>,
10812    #[serde(rename = "IsTradeSample")]
10813    pub is_trade_sample: Option<bool>,
10814    #[serde(rename = "Item")]
10815    pub item: Option<String>,
10816    #[serde(rename = "LabTestStageId")]
10817    pub lab_test_stage_id: Option<i64>,
10818    #[serde(rename = "Location")]
10819    pub location: Option<String>,
10820    #[serde(rename = "Note")]
10821    pub note: Option<String>,
10822    #[serde(rename = "PatientLicenseNumber")]
10823    pub patient_license_number: Option<String>,
10824    #[serde(rename = "ProcessingJobTypeId")]
10825    pub processing_job_type_id: Option<i64>,
10826    #[serde(rename = "ProductRequiresDecontamination")]
10827    pub product_requires_decontamination: Option<bool>,
10828    #[serde(rename = "ProductRequiresRemediation")]
10829    pub product_requires_remediation: Option<bool>,
10830    #[serde(rename = "ProductionBatchNumber")]
10831    pub production_batch_number: Option<String>,
10832    #[serde(rename = "RemediateProduct")]
10833    pub remediate_product: Option<bool>,
10834    #[serde(rename = "RemediationDate")]
10835    pub remediation_date: Option<String>,
10836    #[serde(rename = "RemediationMethodId")]
10837    pub remediation_method_id: Option<i64>,
10838    #[serde(rename = "RemediationSteps")]
10839    pub remediation_steps: Option<String>,
10840    #[serde(rename = "RequiredLabTestBatches")]
10841    pub required_lab_test_batches: Option<Vec<Value>>,
10842    #[serde(rename = "SellByDate")]
10843    pub sell_by_date: Option<String>,
10844    #[serde(rename = "Sublocation")]
10845    pub sublocation: Option<String>,
10846    #[serde(rename = "Tag")]
10847    pub tag: Option<String>,
10848    #[serde(rename = "UnitOfWeight")]
10849    pub unit_of_weight: Option<String>,
10850    #[serde(rename = "UseByDate")]
10851    pub use_by_date: Option<String>,
10852}
10853
10854#[derive(Serialize, Deserialize, Debug, Clone)]
10855pub struct HarvestsCreatePackageV1RequestItemIngredients {
10856    #[serde(rename = "HarvestId")]
10857    pub harvest_id: Option<i64>,
10858    #[serde(rename = "HarvestName")]
10859    pub harvest_name: Option<String>,
10860    #[serde(rename = "UnitOfWeight")]
10861    pub unit_of_weight: Option<String>,
10862    #[serde(rename = "Weight")]
10863    pub weight: Option<f64>,
10864}
10865
10866#[derive(Serialize, Deserialize, Debug, Clone)]
10867pub struct HarvestsCreatePackageV2RequestItem {
10868    #[serde(rename = "ActualDate")]
10869    pub actual_date: Option<String>,
10870    #[serde(rename = "DecontaminateProduct")]
10871    pub decontaminate_product: Option<bool>,
10872    #[serde(rename = "DecontaminationDate")]
10873    pub decontamination_date: Option<String>,
10874    #[serde(rename = "DecontaminationSteps")]
10875    pub decontamination_steps: Option<String>,
10876    #[serde(rename = "ExpirationDate")]
10877    pub expiration_date: Option<String>,
10878    #[serde(rename = "Ingredients")]
10879    pub ingredients: Option<Vec<HarvestsCreatePackageV2RequestItemIngredients>>,
10880    #[serde(rename = "IsDonation")]
10881    pub is_donation: Option<bool>,
10882    #[serde(rename = "IsProductionBatch")]
10883    pub is_production_batch: Option<bool>,
10884    #[serde(rename = "IsTradeSample")]
10885    pub is_trade_sample: Option<bool>,
10886    #[serde(rename = "Item")]
10887    pub item: Option<String>,
10888    #[serde(rename = "LabTestStageId")]
10889    pub lab_test_stage_id: Option<i64>,
10890    #[serde(rename = "Location")]
10891    pub location: Option<String>,
10892    #[serde(rename = "Note")]
10893    pub note: Option<String>,
10894    #[serde(rename = "PatientLicenseNumber")]
10895    pub patient_license_number: Option<String>,
10896    #[serde(rename = "ProcessingJobTypeId")]
10897    pub processing_job_type_id: Option<i64>,
10898    #[serde(rename = "ProductRequiresDecontamination")]
10899    pub product_requires_decontamination: Option<bool>,
10900    #[serde(rename = "ProductRequiresRemediation")]
10901    pub product_requires_remediation: Option<bool>,
10902    #[serde(rename = "ProductionBatchNumber")]
10903    pub production_batch_number: Option<String>,
10904    #[serde(rename = "RemediateProduct")]
10905    pub remediate_product: Option<bool>,
10906    #[serde(rename = "RemediationDate")]
10907    pub remediation_date: Option<String>,
10908    #[serde(rename = "RemediationMethodId")]
10909    pub remediation_method_id: Option<i64>,
10910    #[serde(rename = "RemediationSteps")]
10911    pub remediation_steps: Option<String>,
10912    #[serde(rename = "RequiredLabTestBatches")]
10913    pub required_lab_test_batches: Option<Vec<Value>>,
10914    #[serde(rename = "SellByDate")]
10915    pub sell_by_date: Option<String>,
10916    #[serde(rename = "Sublocation")]
10917    pub sublocation: Option<String>,
10918    #[serde(rename = "Tag")]
10919    pub tag: Option<String>,
10920    #[serde(rename = "UnitOfWeight")]
10921    pub unit_of_weight: Option<String>,
10922    #[serde(rename = "UseByDate")]
10923    pub use_by_date: Option<String>,
10924}
10925
10926#[derive(Serialize, Deserialize, Debug, Clone)]
10927pub struct HarvestsCreatePackageV2RequestItemIngredients {
10928    #[serde(rename = "HarvestId")]
10929    pub harvest_id: Option<i64>,
10930    #[serde(rename = "HarvestName")]
10931    pub harvest_name: Option<String>,
10932    #[serde(rename = "UnitOfWeight")]
10933    pub unit_of_weight: Option<String>,
10934    #[serde(rename = "Weight")]
10935    pub weight: Option<f64>,
10936}
10937
10938#[derive(Serialize, Deserialize, Debug, Clone)]
10939pub struct HarvestsCreatePackageTestingV1RequestItem {
10940    #[serde(rename = "ActualDate")]
10941    pub actual_date: Option<String>,
10942    #[serde(rename = "DecontaminateProduct")]
10943    pub decontaminate_product: Option<bool>,
10944    #[serde(rename = "DecontaminationDate")]
10945    pub decontamination_date: Option<String>,
10946    #[serde(rename = "DecontaminationSteps")]
10947    pub decontamination_steps: Option<String>,
10948    #[serde(rename = "ExpirationDate")]
10949    pub expiration_date: Option<String>,
10950    #[serde(rename = "Ingredients")]
10951    pub ingredients: Option<Vec<HarvestsCreatePackageTestingV1RequestItemIngredients>>,
10952    #[serde(rename = "IsDonation")]
10953    pub is_donation: Option<bool>,
10954    #[serde(rename = "IsProductionBatch")]
10955    pub is_production_batch: Option<bool>,
10956    #[serde(rename = "IsTradeSample")]
10957    pub is_trade_sample: Option<bool>,
10958    #[serde(rename = "Item")]
10959    pub item: Option<String>,
10960    #[serde(rename = "LabTestStageId")]
10961    pub lab_test_stage_id: Option<i64>,
10962    #[serde(rename = "Location")]
10963    pub location: Option<String>,
10964    #[serde(rename = "Note")]
10965    pub note: Option<String>,
10966    #[serde(rename = "PatientLicenseNumber")]
10967    pub patient_license_number: Option<String>,
10968    #[serde(rename = "ProcessingJobTypeId")]
10969    pub processing_job_type_id: Option<i64>,
10970    #[serde(rename = "ProductRequiresDecontamination")]
10971    pub product_requires_decontamination: Option<bool>,
10972    #[serde(rename = "ProductRequiresRemediation")]
10973    pub product_requires_remediation: Option<bool>,
10974    #[serde(rename = "ProductionBatchNumber")]
10975    pub production_batch_number: Option<String>,
10976    #[serde(rename = "RemediateProduct")]
10977    pub remediate_product: Option<bool>,
10978    #[serde(rename = "RemediationDate")]
10979    pub remediation_date: Option<String>,
10980    #[serde(rename = "RemediationMethodId")]
10981    pub remediation_method_id: Option<i64>,
10982    #[serde(rename = "RemediationSteps")]
10983    pub remediation_steps: Option<String>,
10984    #[serde(rename = "RequiredLabTestBatches")]
10985    pub required_lab_test_batches: Option<Vec<Value>>,
10986    #[serde(rename = "SellByDate")]
10987    pub sell_by_date: Option<String>,
10988    #[serde(rename = "Sublocation")]
10989    pub sublocation: Option<String>,
10990    #[serde(rename = "Tag")]
10991    pub tag: Option<String>,
10992    #[serde(rename = "UnitOfWeight")]
10993    pub unit_of_weight: Option<String>,
10994    #[serde(rename = "UseByDate")]
10995    pub use_by_date: Option<String>,
10996}
10997
10998#[derive(Serialize, Deserialize, Debug, Clone)]
10999pub struct HarvestsCreatePackageTestingV1RequestItemIngredients {
11000    #[serde(rename = "HarvestId")]
11001    pub harvest_id: Option<i64>,
11002    #[serde(rename = "HarvestName")]
11003    pub harvest_name: Option<String>,
11004    #[serde(rename = "UnitOfWeight")]
11005    pub unit_of_weight: Option<String>,
11006    #[serde(rename = "Weight")]
11007    pub weight: Option<f64>,
11008}
11009
11010#[derive(Serialize, Deserialize, Debug, Clone)]
11011pub struct HarvestsCreatePackageTestingV2RequestItem {
11012    #[serde(rename = "ActualDate")]
11013    pub actual_date: Option<String>,
11014    #[serde(rename = "DecontaminateProduct")]
11015    pub decontaminate_product: Option<bool>,
11016    #[serde(rename = "DecontaminationDate")]
11017    pub decontamination_date: Option<String>,
11018    #[serde(rename = "DecontaminationSteps")]
11019    pub decontamination_steps: Option<String>,
11020    #[serde(rename = "ExpirationDate")]
11021    pub expiration_date: Option<String>,
11022    #[serde(rename = "Ingredients")]
11023    pub ingredients: Option<Vec<HarvestsCreatePackageTestingV2RequestItemIngredients>>,
11024    #[serde(rename = "IsDonation")]
11025    pub is_donation: Option<bool>,
11026    #[serde(rename = "IsProductionBatch")]
11027    pub is_production_batch: Option<bool>,
11028    #[serde(rename = "IsTradeSample")]
11029    pub is_trade_sample: Option<bool>,
11030    #[serde(rename = "Item")]
11031    pub item: Option<String>,
11032    #[serde(rename = "LabTestStageId")]
11033    pub lab_test_stage_id: Option<i64>,
11034    #[serde(rename = "Location")]
11035    pub location: Option<String>,
11036    #[serde(rename = "Note")]
11037    pub note: Option<String>,
11038    #[serde(rename = "PatientLicenseNumber")]
11039    pub patient_license_number: Option<String>,
11040    #[serde(rename = "ProcessingJobTypeId")]
11041    pub processing_job_type_id: Option<i64>,
11042    #[serde(rename = "ProductRequiresDecontamination")]
11043    pub product_requires_decontamination: Option<bool>,
11044    #[serde(rename = "ProductRequiresRemediation")]
11045    pub product_requires_remediation: Option<bool>,
11046    #[serde(rename = "ProductionBatchNumber")]
11047    pub production_batch_number: Option<String>,
11048    #[serde(rename = "RemediateProduct")]
11049    pub remediate_product: Option<bool>,
11050    #[serde(rename = "RemediationDate")]
11051    pub remediation_date: Option<String>,
11052    #[serde(rename = "RemediationMethodId")]
11053    pub remediation_method_id: Option<i64>,
11054    #[serde(rename = "RemediationSteps")]
11055    pub remediation_steps: Option<String>,
11056    #[serde(rename = "RequiredLabTestBatches")]
11057    pub required_lab_test_batches: Option<Vec<Value>>,
11058    #[serde(rename = "SellByDate")]
11059    pub sell_by_date: Option<String>,
11060    #[serde(rename = "Sublocation")]
11061    pub sublocation: Option<String>,
11062    #[serde(rename = "Tag")]
11063    pub tag: Option<String>,
11064    #[serde(rename = "UnitOfWeight")]
11065    pub unit_of_weight: Option<String>,
11066    #[serde(rename = "UseByDate")]
11067    pub use_by_date: Option<String>,
11068}
11069
11070#[derive(Serialize, Deserialize, Debug, Clone)]
11071pub struct HarvestsCreatePackageTestingV2RequestItemIngredients {
11072    #[serde(rename = "HarvestId")]
11073    pub harvest_id: Option<i64>,
11074    #[serde(rename = "HarvestName")]
11075    pub harvest_name: Option<String>,
11076    #[serde(rename = "UnitOfWeight")]
11077    pub unit_of_weight: Option<String>,
11078    #[serde(rename = "Weight")]
11079    pub weight: Option<f64>,
11080}
11081
11082#[derive(Serialize, Deserialize, Debug, Clone)]
11083pub struct HarvestsCreateRemoveWasteV1RequestItem {
11084    #[serde(rename = "ActualDate")]
11085    pub actual_date: Option<String>,
11086    #[serde(rename = "Id")]
11087    pub id: Option<i64>,
11088    #[serde(rename = "UnitOfWeight")]
11089    pub unit_of_weight: Option<String>,
11090    #[serde(rename = "WasteType")]
11091    pub waste_type: Option<String>,
11092    #[serde(rename = "WasteWeight")]
11093    pub waste_weight: Option<f64>,
11094}
11095
11096#[derive(Serialize, Deserialize, Debug, Clone)]
11097pub struct HarvestsCreateUnfinishV1RequestItem {
11098    #[serde(rename = "Id")]
11099    pub id: Option<i64>,
11100}
11101
11102#[derive(Serialize, Deserialize, Debug, Clone)]
11103pub struct HarvestsCreateWasteV2RequestItem {
11104    #[serde(rename = "ActualDate")]
11105    pub actual_date: Option<String>,
11106    #[serde(rename = "Id")]
11107    pub id: Option<i64>,
11108    #[serde(rename = "UnitOfWeight")]
11109    pub unit_of_weight: Option<String>,
11110    #[serde(rename = "WasteType")]
11111    pub waste_type: Option<String>,
11112    #[serde(rename = "WasteWeight")]
11113    pub waste_weight: Option<f64>,
11114}
11115
11116#[derive(Serialize, Deserialize, Debug, Clone)]
11117pub struct HarvestsUpdateFinishV2RequestItem {
11118    #[serde(rename = "ActualDate")]
11119    pub actual_date: Option<String>,
11120    #[serde(rename = "Id")]
11121    pub id: Option<i64>,
11122}
11123
11124#[derive(Serialize, Deserialize, Debug, Clone)]
11125pub struct HarvestsUpdateLocationV2RequestItem {
11126    #[serde(rename = "ActualDate")]
11127    pub actual_date: Option<String>,
11128    #[serde(rename = "DryingLocation")]
11129    pub drying_location: Option<String>,
11130    #[serde(rename = "DryingSublocation")]
11131    pub drying_sublocation: Option<String>,
11132    #[serde(rename = "HarvestName")]
11133    pub harvest_name: Option<String>,
11134    #[serde(rename = "Id")]
11135    pub id: Option<i64>,
11136}
11137
11138#[derive(Serialize, Deserialize, Debug, Clone)]
11139pub struct HarvestsUpdateMoveV1RequestItem {
11140    #[serde(rename = "ActualDate")]
11141    pub actual_date: Option<String>,
11142    #[serde(rename = "DryingLocation")]
11143    pub drying_location: Option<String>,
11144    #[serde(rename = "DryingSublocation")]
11145    pub drying_sublocation: Option<String>,
11146    #[serde(rename = "HarvestName")]
11147    pub harvest_name: Option<String>,
11148    #[serde(rename = "Id")]
11149    pub id: Option<i64>,
11150}
11151
11152#[derive(Serialize, Deserialize, Debug, Clone)]
11153pub struct HarvestsUpdateRenameV1RequestItem {
11154    #[serde(rename = "Id")]
11155    pub id: Option<i64>,
11156    #[serde(rename = "NewName")]
11157    pub new_name: Option<String>,
11158    #[serde(rename = "OldName")]
11159    pub old_name: Option<String>,
11160}
11161
11162#[derive(Serialize, Deserialize, Debug, Clone)]
11163pub struct HarvestsUpdateRenameV2RequestItem {
11164    #[serde(rename = "Id")]
11165    pub id: Option<i64>,
11166    #[serde(rename = "NewName")]
11167    pub new_name: Option<String>,
11168    #[serde(rename = "OldName")]
11169    pub old_name: Option<String>,
11170}
11171
11172#[derive(Serialize, Deserialize, Debug, Clone)]
11173pub struct HarvestsUpdateRestoreHarvestedPlantsV2RequestItem {
11174    #[serde(rename = "HarvestId")]
11175    pub harvest_id: Option<i64>,
11176    #[serde(rename = "PlantTags")]
11177    pub plant_tags: Option<Vec<String>>,
11178}
11179
11180#[derive(Serialize, Deserialize, Debug, Clone)]
11181pub struct HarvestsUpdateUnfinishV2RequestItem {
11182    #[serde(rename = "Id")]
11183    pub id: Option<i64>,
11184}
11185
11186#[derive(Serialize, Deserialize, Debug, Clone)]
11187pub struct PlantBatchesCreateAdditivesV1RequestItem {
11188    #[serde(rename = "ActiveIngredients")]
11189    pub active_ingredients: Option<Vec<PlantBatchesCreateAdditivesV1RequestItemActiveIngredients>>,
11190    #[serde(rename = "ActualDate")]
11191    pub actual_date: Option<String>,
11192    #[serde(rename = "AdditiveType")]
11193    pub additive_type: Option<String>,
11194    #[serde(rename = "ApplicationDevice")]
11195    pub application_device: Option<String>,
11196    #[serde(rename = "EpaRegistrationNumber")]
11197    pub epa_registration_number: Option<String>,
11198    #[serde(rename = "PlantBatchName")]
11199    pub plant_batch_name: Option<String>,
11200    #[serde(rename = "ProductSupplier")]
11201    pub product_supplier: Option<String>,
11202    #[serde(rename = "ProductTradeName")]
11203    pub product_trade_name: Option<String>,
11204    #[serde(rename = "TotalAmountApplied")]
11205    pub total_amount_applied: Option<i64>,
11206    #[serde(rename = "TotalAmountUnitOfMeasure")]
11207    pub total_amount_unit_of_measure: Option<String>,
11208}
11209
11210#[derive(Serialize, Deserialize, Debug, Clone)]
11211pub struct PlantBatchesCreateAdditivesV1RequestItemActiveIngredients {
11212    #[serde(rename = "Name")]
11213    pub name: Option<String>,
11214    #[serde(rename = "Percentage")]
11215    pub percentage: Option<f64>,
11216}
11217
11218#[derive(Serialize, Deserialize, Debug, Clone)]
11219pub struct PlantBatchesCreateAdditivesV2RequestItem {
11220    #[serde(rename = "ActiveIngredients")]
11221    pub active_ingredients: Option<Vec<PlantBatchesCreateAdditivesV2RequestItemActiveIngredients>>,
11222    #[serde(rename = "ActualDate")]
11223    pub actual_date: Option<String>,
11224    #[serde(rename = "AdditiveType")]
11225    pub additive_type: Option<String>,
11226    #[serde(rename = "ApplicationDevice")]
11227    pub application_device: Option<String>,
11228    #[serde(rename = "EpaRegistrationNumber")]
11229    pub epa_registration_number: Option<String>,
11230    #[serde(rename = "PlantBatchName")]
11231    pub plant_batch_name: Option<String>,
11232    #[serde(rename = "ProductSupplier")]
11233    pub product_supplier: Option<String>,
11234    #[serde(rename = "ProductTradeName")]
11235    pub product_trade_name: Option<String>,
11236    #[serde(rename = "TotalAmountApplied")]
11237    pub total_amount_applied: Option<i64>,
11238    #[serde(rename = "TotalAmountUnitOfMeasure")]
11239    pub total_amount_unit_of_measure: Option<String>,
11240}
11241
11242#[derive(Serialize, Deserialize, Debug, Clone)]
11243pub struct PlantBatchesCreateAdditivesV2RequestItemActiveIngredients {
11244    #[serde(rename = "Name")]
11245    pub name: Option<String>,
11246    #[serde(rename = "Percentage")]
11247    pub percentage: Option<f64>,
11248}
11249
11250#[derive(Serialize, Deserialize, Debug, Clone)]
11251pub struct PlantBatchesCreateAdditivesUsingtemplateV2RequestItem {
11252    #[serde(rename = "ActualDate")]
11253    pub actual_date: Option<String>,
11254    #[serde(rename = "AdditivesTemplateName")]
11255    pub additives_template_name: Option<String>,
11256    #[serde(rename = "PlantBatchName")]
11257    pub plant_batch_name: Option<String>,
11258    #[serde(rename = "Rate")]
11259    pub rate: Option<String>,
11260    #[serde(rename = "TotalAmountApplied")]
11261    pub total_amount_applied: Option<i64>,
11262    #[serde(rename = "TotalAmountUnitOfMeasure")]
11263    pub total_amount_unit_of_measure: Option<String>,
11264    #[serde(rename = "Volume")]
11265    pub volume: Option<String>,
11266}
11267
11268#[derive(Serialize, Deserialize, Debug, Clone)]
11269pub struct PlantBatchesCreateAdjustV1RequestItem {
11270    #[serde(rename = "AdjustmentDate")]
11271    pub adjustment_date: Option<String>,
11272    #[serde(rename = "AdjustmentReason")]
11273    pub adjustment_reason: Option<String>,
11274    #[serde(rename = "PlantBatchName")]
11275    pub plant_batch_name: Option<String>,
11276    #[serde(rename = "Quantity")]
11277    pub quantity: Option<i64>,
11278    #[serde(rename = "ReasonNote")]
11279    pub reason_note: Option<String>,
11280}
11281
11282#[derive(Serialize, Deserialize, Debug, Clone)]
11283pub struct PlantBatchesCreateAdjustV2RequestItem {
11284    #[serde(rename = "AdjustmentDate")]
11285    pub adjustment_date: Option<String>,
11286    #[serde(rename = "AdjustmentReason")]
11287    pub adjustment_reason: Option<String>,
11288    #[serde(rename = "PlantBatchName")]
11289    pub plant_batch_name: Option<String>,
11290    #[serde(rename = "Quantity")]
11291    pub quantity: Option<i64>,
11292    #[serde(rename = "ReasonNote")]
11293    pub reason_note: Option<String>,
11294}
11295
11296#[derive(Serialize, Deserialize, Debug, Clone)]
11297pub struct PlantBatchesCreateChangegrowthphaseV1RequestItem {
11298    #[serde(rename = "Count")]
11299    pub count: Option<i64>,
11300    #[serde(rename = "CountPerPlant")]
11301    pub count_per_plant: Option<String>,
11302    #[serde(rename = "GrowthDate")]
11303    pub growth_date: Option<String>,
11304    #[serde(rename = "GrowthPhase")]
11305    pub growth_phase: Option<String>,
11306    #[serde(rename = "Name")]
11307    pub name: Option<String>,
11308    #[serde(rename = "NewLocation")]
11309    pub new_location: Option<String>,
11310    #[serde(rename = "NewSublocation")]
11311    pub new_sublocation: Option<String>,
11312    #[serde(rename = "PatientLicenseNumber")]
11313    pub patient_license_number: Option<String>,
11314    #[serde(rename = "StartingTag")]
11315    pub starting_tag: Option<String>,
11316}
11317
11318#[derive(Serialize, Deserialize, Debug, Clone)]
11319pub struct PlantBatchesCreateGrowthphaseV2RequestItem {
11320    #[serde(rename = "Count")]
11321    pub count: Option<i64>,
11322    #[serde(rename = "CountPerPlant")]
11323    pub count_per_plant: Option<String>,
11324    #[serde(rename = "GrowthDate")]
11325    pub growth_date: Option<String>,
11326    #[serde(rename = "GrowthPhase")]
11327    pub growth_phase: Option<String>,
11328    #[serde(rename = "Name")]
11329    pub name: Option<String>,
11330    #[serde(rename = "NewLocation")]
11331    pub new_location: Option<String>,
11332    #[serde(rename = "NewSublocation")]
11333    pub new_sublocation: Option<String>,
11334    #[serde(rename = "PatientLicenseNumber")]
11335    pub patient_license_number: Option<String>,
11336    #[serde(rename = "StartingTag")]
11337    pub starting_tag: Option<String>,
11338}
11339
11340#[derive(Serialize, Deserialize, Debug, Clone)]
11341pub struct PlantBatchesCreatePackageV2RequestItem {
11342    #[serde(rename = "ActualDate")]
11343    pub actual_date: Option<String>,
11344    #[serde(rename = "Count")]
11345    pub count: Option<i64>,
11346    #[serde(rename = "ExpirationDate")]
11347    pub expiration_date: Option<String>,
11348    #[serde(rename = "Id")]
11349    pub id: Option<i64>,
11350    #[serde(rename = "IsDonation")]
11351    pub is_donation: Option<bool>,
11352    #[serde(rename = "IsTradeSample")]
11353    pub is_trade_sample: Option<bool>,
11354    #[serde(rename = "Item")]
11355    pub item: Option<String>,
11356    #[serde(rename = "Location")]
11357    pub location: Option<String>,
11358    #[serde(rename = "Note")]
11359    pub note: Option<String>,
11360    #[serde(rename = "PatientLicenseNumber")]
11361    pub patient_license_number: Option<String>,
11362    #[serde(rename = "PlantBatch")]
11363    pub plant_batch: Option<String>,
11364    #[serde(rename = "SellByDate")]
11365    pub sell_by_date: Option<String>,
11366    #[serde(rename = "Sublocation")]
11367    pub sublocation: Option<String>,
11368    #[serde(rename = "Tag")]
11369    pub tag: Option<String>,
11370    #[serde(rename = "UseByDate")]
11371    pub use_by_date: Option<String>,
11372}
11373
11374#[derive(Serialize, Deserialize, Debug, Clone)]
11375pub struct PlantBatchesCreatePackageFrommotherplantV1RequestItem {
11376    #[serde(rename = "ActualDate")]
11377    pub actual_date: Option<String>,
11378    #[serde(rename = "Count")]
11379    pub count: Option<i64>,
11380    #[serde(rename = "ExpirationDate")]
11381    pub expiration_date: Option<String>,
11382    #[serde(rename = "Id")]
11383    pub id: Option<i64>,
11384    #[serde(rename = "IsDonation")]
11385    pub is_donation: Option<bool>,
11386    #[serde(rename = "IsTradeSample")]
11387    pub is_trade_sample: Option<bool>,
11388    #[serde(rename = "Item")]
11389    pub item: Option<String>,
11390    #[serde(rename = "Location")]
11391    pub location: Option<String>,
11392    #[serde(rename = "Note")]
11393    pub note: Option<String>,
11394    #[serde(rename = "PatientLicenseNumber")]
11395    pub patient_license_number: Option<String>,
11396    #[serde(rename = "PlantBatch")]
11397    pub plant_batch: Option<String>,
11398    #[serde(rename = "SellByDate")]
11399    pub sell_by_date: Option<String>,
11400    #[serde(rename = "Sublocation")]
11401    pub sublocation: Option<String>,
11402    #[serde(rename = "Tag")]
11403    pub tag: Option<String>,
11404    #[serde(rename = "UseByDate")]
11405    pub use_by_date: Option<String>,
11406}
11407
11408#[derive(Serialize, Deserialize, Debug, Clone)]
11409pub struct PlantBatchesCreatePackageFrommotherplantV2RequestItem {
11410    #[serde(rename = "ActualDate")]
11411    pub actual_date: Option<String>,
11412    #[serde(rename = "Count")]
11413    pub count: Option<i64>,
11414    #[serde(rename = "ExpirationDate")]
11415    pub expiration_date: Option<String>,
11416    #[serde(rename = "Id")]
11417    pub id: Option<i64>,
11418    #[serde(rename = "IsDonation")]
11419    pub is_donation: Option<bool>,
11420    #[serde(rename = "IsTradeSample")]
11421    pub is_trade_sample: Option<bool>,
11422    #[serde(rename = "Item")]
11423    pub item: Option<String>,
11424    #[serde(rename = "Location")]
11425    pub location: Option<String>,
11426    #[serde(rename = "Note")]
11427    pub note: Option<String>,
11428    #[serde(rename = "PatientLicenseNumber")]
11429    pub patient_license_number: Option<String>,
11430    #[serde(rename = "PlantBatch")]
11431    pub plant_batch: Option<String>,
11432    #[serde(rename = "SellByDate")]
11433    pub sell_by_date: Option<String>,
11434    #[serde(rename = "Sublocation")]
11435    pub sublocation: Option<String>,
11436    #[serde(rename = "Tag")]
11437    pub tag: Option<String>,
11438    #[serde(rename = "UseByDate")]
11439    pub use_by_date: Option<String>,
11440}
11441
11442#[derive(Serialize, Deserialize, Debug, Clone)]
11443pub struct PlantBatchesCreatePlantingsV2RequestItem {
11444    #[serde(rename = "ActualDate")]
11445    pub actual_date: Option<String>,
11446    #[serde(rename = "Count")]
11447    pub count: Option<i64>,
11448    #[serde(rename = "Location")]
11449    pub location: Option<String>,
11450    #[serde(rename = "Name")]
11451    pub name: Option<String>,
11452    #[serde(rename = "PatientLicenseNumber")]
11453    pub patient_license_number: Option<String>,
11454    #[serde(rename = "SourcePlantBatches")]
11455    pub source_plant_batches: Option<String>,
11456    #[serde(rename = "Strain")]
11457    pub strain: Option<String>,
11458    #[serde(rename = "Sublocation")]
11459    pub sublocation: Option<String>,
11460    #[serde(rename = "Type")]
11461    pub type_: Option<String>,
11462}
11463
11464#[derive(Serialize, Deserialize, Debug, Clone)]
11465pub struct PlantBatchesCreateSplitV1RequestItem {
11466    #[serde(rename = "ActualDate")]
11467    pub actual_date: Option<String>,
11468    #[serde(rename = "Count")]
11469    pub count: Option<i64>,
11470    #[serde(rename = "GroupName")]
11471    pub group_name: Option<String>,
11472    #[serde(rename = "Location")]
11473    pub location: Option<String>,
11474    #[serde(rename = "PatientLicenseNumber")]
11475    pub patient_license_number: Option<String>,
11476    #[serde(rename = "PlantBatch")]
11477    pub plant_batch: Option<String>,
11478    #[serde(rename = "Strain")]
11479    pub strain: Option<String>,
11480    #[serde(rename = "Sublocation")]
11481    pub sublocation: Option<String>,
11482}
11483
11484#[derive(Serialize, Deserialize, Debug, Clone)]
11485pub struct PlantBatchesCreateSplitV2RequestItem {
11486    #[serde(rename = "ActualDate")]
11487    pub actual_date: Option<String>,
11488    #[serde(rename = "Count")]
11489    pub count: Option<i64>,
11490    #[serde(rename = "GroupName")]
11491    pub group_name: Option<String>,
11492    #[serde(rename = "Location")]
11493    pub location: Option<String>,
11494    #[serde(rename = "PatientLicenseNumber")]
11495    pub patient_license_number: Option<String>,
11496    #[serde(rename = "PlantBatch")]
11497    pub plant_batch: Option<String>,
11498    #[serde(rename = "Strain")]
11499    pub strain: Option<String>,
11500    #[serde(rename = "Sublocation")]
11501    pub sublocation: Option<String>,
11502}
11503
11504#[derive(Serialize, Deserialize, Debug, Clone)]
11505pub struct PlantBatchesCreateWasteV1RequestItem {
11506    #[serde(rename = "MixedMaterial")]
11507    pub mixed_material: Option<String>,
11508    #[serde(rename = "Note")]
11509    pub note: Option<String>,
11510    #[serde(rename = "PlantBatchName")]
11511    pub plant_batch_name: Option<String>,
11512    #[serde(rename = "ReasonName")]
11513    pub reason_name: Option<String>,
11514    #[serde(rename = "UnitOfMeasureName")]
11515    pub unit_of_measure_name: Option<String>,
11516    #[serde(rename = "WasteDate")]
11517    pub waste_date: Option<String>,
11518    #[serde(rename = "WasteMethodName")]
11519    pub waste_method_name: Option<String>,
11520    #[serde(rename = "WasteWeight")]
11521    pub waste_weight: Option<f64>,
11522}
11523
11524#[derive(Serialize, Deserialize, Debug, Clone)]
11525pub struct PlantBatchesCreateWasteV2RequestItem {
11526    #[serde(rename = "MixedMaterial")]
11527    pub mixed_material: Option<String>,
11528    #[serde(rename = "Note")]
11529    pub note: Option<String>,
11530    #[serde(rename = "PlantBatchName")]
11531    pub plant_batch_name: Option<String>,
11532    #[serde(rename = "ReasonName")]
11533    pub reason_name: Option<String>,
11534    #[serde(rename = "UnitOfMeasureName")]
11535    pub unit_of_measure_name: Option<String>,
11536    #[serde(rename = "WasteDate")]
11537    pub waste_date: Option<String>,
11538    #[serde(rename = "WasteMethodName")]
11539    pub waste_method_name: Option<String>,
11540    #[serde(rename = "WasteWeight")]
11541    pub waste_weight: Option<f64>,
11542}
11543
11544#[derive(Serialize, Deserialize, Debug, Clone)]
11545pub struct PlantBatchesCreatepackagesV1RequestItem {
11546    #[serde(rename = "ActualDate")]
11547    pub actual_date: Option<String>,
11548    #[serde(rename = "Count")]
11549    pub count: Option<i64>,
11550    #[serde(rename = "ExpirationDate")]
11551    pub expiration_date: Option<String>,
11552    #[serde(rename = "Id")]
11553    pub id: Option<i64>,
11554    #[serde(rename = "IsDonation")]
11555    pub is_donation: Option<bool>,
11556    #[serde(rename = "IsTradeSample")]
11557    pub is_trade_sample: Option<bool>,
11558    #[serde(rename = "Item")]
11559    pub item: Option<String>,
11560    #[serde(rename = "Location")]
11561    pub location: Option<String>,
11562    #[serde(rename = "Note")]
11563    pub note: Option<String>,
11564    #[serde(rename = "PatientLicenseNumber")]
11565    pub patient_license_number: Option<String>,
11566    #[serde(rename = "PlantBatch")]
11567    pub plant_batch: Option<String>,
11568    #[serde(rename = "SellByDate")]
11569    pub sell_by_date: Option<String>,
11570    #[serde(rename = "Sublocation")]
11571    pub sublocation: Option<String>,
11572    #[serde(rename = "Tag")]
11573    pub tag: Option<String>,
11574    #[serde(rename = "UseByDate")]
11575    pub use_by_date: Option<String>,
11576}
11577
11578#[derive(Serialize, Deserialize, Debug, Clone)]
11579pub struct PlantBatchesCreateplantingsV1RequestItem {
11580    #[serde(rename = "ActualDate")]
11581    pub actual_date: Option<String>,
11582    #[serde(rename = "Count")]
11583    pub count: Option<i64>,
11584    #[serde(rename = "Location")]
11585    pub location: Option<String>,
11586    #[serde(rename = "Name")]
11587    pub name: Option<String>,
11588    #[serde(rename = "PatientLicenseNumber")]
11589    pub patient_license_number: Option<String>,
11590    #[serde(rename = "SourcePlantBatches")]
11591    pub source_plant_batches: Option<String>,
11592    #[serde(rename = "Strain")]
11593    pub strain: Option<String>,
11594    #[serde(rename = "Sublocation")]
11595    pub sublocation: Option<String>,
11596    #[serde(rename = "Type")]
11597    pub type_: Option<String>,
11598}
11599
11600#[derive(Serialize, Deserialize, Debug, Clone)]
11601pub struct PlantBatchesUpdateLocationV2RequestItem {
11602    #[serde(rename = "Location")]
11603    pub location: Option<String>,
11604    #[serde(rename = "MoveDate")]
11605    pub move_date: Option<String>,
11606    #[serde(rename = "Name")]
11607    pub name: Option<String>,
11608    #[serde(rename = "Sublocation")]
11609    pub sublocation: Option<String>,
11610}
11611
11612#[derive(Serialize, Deserialize, Debug, Clone)]
11613pub struct PlantBatchesUpdateMoveplantbatchesV1RequestItem {
11614    #[serde(rename = "Location")]
11615    pub location: Option<String>,
11616    #[serde(rename = "MoveDate")]
11617    pub move_date: Option<String>,
11618    #[serde(rename = "Name")]
11619    pub name: Option<String>,
11620    #[serde(rename = "Sublocation")]
11621    pub sublocation: Option<String>,
11622}
11623
11624#[derive(Serialize, Deserialize, Debug, Clone)]
11625pub struct PlantBatchesUpdateNameV2RequestItem {
11626    #[serde(rename = "Group")]
11627    pub group: Option<String>,
11628    #[serde(rename = "Id")]
11629    pub id: Option<i64>,
11630    #[serde(rename = "NewGroup")]
11631    pub new_group: Option<String>,
11632}
11633
11634#[derive(Serialize, Deserialize, Debug, Clone)]
11635pub struct PlantBatchesUpdateStrainV2RequestItem {
11636    #[serde(rename = "Id")]
11637    pub id: Option<i64>,
11638    #[serde(rename = "Name")]
11639    pub name: Option<String>,
11640    #[serde(rename = "StrainId")]
11641    pub strain_id: Option<i64>,
11642    #[serde(rename = "StrainName")]
11643    pub strain_name: Option<String>,
11644}
11645
11646#[derive(Serialize, Deserialize, Debug, Clone)]
11647pub struct PlantBatchesUpdateTagV2RequestItem {
11648    #[serde(rename = "Group")]
11649    pub group: Option<String>,
11650    #[serde(rename = "Id")]
11651    pub id: Option<i64>,
11652    #[serde(rename = "NewTag")]
11653    pub new_tag: Option<String>,
11654    #[serde(rename = "ReplaceDate")]
11655    pub replace_date: Option<String>,
11656    #[serde(rename = "TagId")]
11657    pub tag_id: Option<i64>,
11658}
11659
11660#[derive(Serialize, Deserialize, Debug, Clone)]
11661pub struct TransfersCreateExternalIncomingV1RequestItem {
11662    #[serde(rename = "Destinations")]
11663    pub destinations: Option<Vec<TransfersCreateExternalIncomingV1RequestItemDestinations>>,
11664    #[serde(rename = "DriverLicenseNumber")]
11665    pub driver_license_number: Option<String>,
11666    #[serde(rename = "DriverName")]
11667    pub driver_name: Option<String>,
11668    #[serde(rename = "DriverOccupationalLicenseNumber")]
11669    pub driver_occupational_license_number: Option<String>,
11670    #[serde(rename = "PhoneNumberForQuestions")]
11671    pub phone_number_for_questions: Option<String>,
11672    #[serde(rename = "ShipperAddress1")]
11673    pub shipper_address1: Option<String>,
11674    #[serde(rename = "ShipperAddress2")]
11675    pub shipper_address2: Option<String>,
11676    #[serde(rename = "ShipperAddressCity")]
11677    pub shipper_address_city: Option<String>,
11678    #[serde(rename = "ShipperAddressPostalCode")]
11679    pub shipper_address_postal_code: Option<String>,
11680    #[serde(rename = "ShipperAddressState")]
11681    pub shipper_address_state: Option<String>,
11682    #[serde(rename = "ShipperLicenseNumber")]
11683    pub shipper_license_number: Option<String>,
11684    #[serde(rename = "ShipperMainPhoneNumber")]
11685    pub shipper_main_phone_number: Option<String>,
11686    #[serde(rename = "ShipperName")]
11687    pub shipper_name: Option<String>,
11688    #[serde(rename = "TransporterFacilityLicenseNumber")]
11689    pub transporter_facility_license_number: Option<String>,
11690    #[serde(rename = "VehicleLicensePlateNumber")]
11691    pub vehicle_license_plate_number: Option<String>,
11692    #[serde(rename = "VehicleMake")]
11693    pub vehicle_make: Option<String>,
11694    #[serde(rename = "VehicleModel")]
11695    pub vehicle_model: Option<String>,
11696}
11697
11698#[derive(Serialize, Deserialize, Debug, Clone)]
11699pub struct TransfersCreateExternalIncomingV1RequestItemDestinations {
11700    #[serde(rename = "EstimatedArrivalDateTime")]
11701    pub estimated_arrival_date_time: Option<String>,
11702    #[serde(rename = "EstimatedDepartureDateTime")]
11703    pub estimated_departure_date_time: Option<String>,
11704    #[serde(rename = "GrossUnitOfWeightId")]
11705    pub gross_unit_of_weight_id: Option<i64>,
11706    #[serde(rename = "GrossWeight")]
11707    pub gross_weight: Option<f64>,
11708    #[serde(rename = "InvoiceNumber")]
11709    pub invoice_number: Option<String>,
11710    #[serde(rename = "Packages")]
11711    pub packages: Option<Vec<TransfersCreateExternalIncomingV1RequestItemDestinationsPackages>>,
11712    #[serde(rename = "PlannedRoute")]
11713    pub planned_route: Option<String>,
11714    #[serde(rename = "RecipientLicenseNumber")]
11715    pub recipient_license_number: Option<String>,
11716    #[serde(rename = "TransferTypeName")]
11717    pub transfer_type_name: Option<String>,
11718    #[serde(rename = "Transporters")]
11719    pub transporters: Option<Vec<TransfersCreateExternalIncomingV1RequestItemDestinationsTransporters>>,
11720}
11721
11722#[derive(Serialize, Deserialize, Debug, Clone)]
11723pub struct TransfersCreateExternalIncomingV1RequestItemDestinationsPackages {
11724    #[serde(rename = "ExpirationDate")]
11725    pub expiration_date: Option<String>,
11726    #[serde(rename = "ExternalId")]
11727    pub external_id: Option<String>,
11728    #[serde(rename = "GrossUnitOfWeightName")]
11729    pub gross_unit_of_weight_name: Option<String>,
11730    #[serde(rename = "GrossWeight")]
11731    pub gross_weight: Option<f64>,
11732    #[serde(rename = "ItemName")]
11733    pub item_name: Option<String>,
11734    #[serde(rename = "PackagedDate")]
11735    pub packaged_date: Option<String>,
11736    #[serde(rename = "Quantity")]
11737    pub quantity: Option<i64>,
11738    #[serde(rename = "SellByDate")]
11739    pub sell_by_date: Option<String>,
11740    #[serde(rename = "UnitOfMeasureName")]
11741    pub unit_of_measure_name: Option<String>,
11742    #[serde(rename = "UseByDate")]
11743    pub use_by_date: Option<String>,
11744    #[serde(rename = "WholesalePrice")]
11745    pub wholesale_price: Option<String>,
11746}
11747
11748#[derive(Serialize, Deserialize, Debug, Clone)]
11749pub struct TransfersCreateExternalIncomingV1RequestItemDestinationsTransporters {
11750    #[serde(rename = "DriverLayoverLeg")]
11751    pub driver_layover_leg: Option<String>,
11752    #[serde(rename = "DriverLicenseNumber")]
11753    pub driver_license_number: Option<String>,
11754    #[serde(rename = "DriverName")]
11755    pub driver_name: Option<String>,
11756    #[serde(rename = "DriverOccupationalLicenseNumber")]
11757    pub driver_occupational_license_number: Option<String>,
11758    #[serde(rename = "EstimatedArrivalDateTime")]
11759    pub estimated_arrival_date_time: Option<String>,
11760    #[serde(rename = "EstimatedDepartureDateTime")]
11761    pub estimated_departure_date_time: Option<String>,
11762    #[serde(rename = "IsLayover")]
11763    pub is_layover: Option<bool>,
11764    #[serde(rename = "PhoneNumberForQuestions")]
11765    pub phone_number_for_questions: Option<String>,
11766    #[serde(rename = "TransporterDetails")]
11767    pub transporter_details: Option<String>,
11768    #[serde(rename = "TransporterFacilityLicenseNumber")]
11769    pub transporter_facility_license_number: Option<String>,
11770    #[serde(rename = "VehicleLicensePlateNumber")]
11771    pub vehicle_license_plate_number: Option<String>,
11772    #[serde(rename = "VehicleMake")]
11773    pub vehicle_make: Option<String>,
11774    #[serde(rename = "VehicleModel")]
11775    pub vehicle_model: Option<String>,
11776}
11777
11778#[derive(Serialize, Deserialize, Debug, Clone)]
11779pub struct TransfersCreateExternalIncomingV2RequestItem {
11780    #[serde(rename = "Destinations")]
11781    pub destinations: Option<Vec<TransfersCreateExternalIncomingV2RequestItemDestinations>>,
11782    #[serde(rename = "DriverLicenseNumber")]
11783    pub driver_license_number: Option<String>,
11784    #[serde(rename = "DriverName")]
11785    pub driver_name: Option<String>,
11786    #[serde(rename = "DriverOccupationalLicenseNumber")]
11787    pub driver_occupational_license_number: Option<String>,
11788    #[serde(rename = "PhoneNumberForQuestions")]
11789    pub phone_number_for_questions: Option<String>,
11790    #[serde(rename = "ShipperAddress1")]
11791    pub shipper_address1: Option<String>,
11792    #[serde(rename = "ShipperAddress2")]
11793    pub shipper_address2: Option<String>,
11794    #[serde(rename = "ShipperAddressCity")]
11795    pub shipper_address_city: Option<String>,
11796    #[serde(rename = "ShipperAddressPostalCode")]
11797    pub shipper_address_postal_code: Option<String>,
11798    #[serde(rename = "ShipperAddressState")]
11799    pub shipper_address_state: Option<String>,
11800    #[serde(rename = "ShipperLicenseNumber")]
11801    pub shipper_license_number: Option<String>,
11802    #[serde(rename = "ShipperMainPhoneNumber")]
11803    pub shipper_main_phone_number: Option<String>,
11804    #[serde(rename = "ShipperName")]
11805    pub shipper_name: Option<String>,
11806    #[serde(rename = "TransporterFacilityLicenseNumber")]
11807    pub transporter_facility_license_number: Option<String>,
11808    #[serde(rename = "VehicleLicensePlateNumber")]
11809    pub vehicle_license_plate_number: Option<String>,
11810    #[serde(rename = "VehicleMake")]
11811    pub vehicle_make: Option<String>,
11812    #[serde(rename = "VehicleModel")]
11813    pub vehicle_model: Option<String>,
11814}
11815
11816#[derive(Serialize, Deserialize, Debug, Clone)]
11817pub struct TransfersCreateExternalIncomingV2RequestItemDestinations {
11818    #[serde(rename = "EstimatedArrivalDateTime")]
11819    pub estimated_arrival_date_time: Option<String>,
11820    #[serde(rename = "EstimatedDepartureDateTime")]
11821    pub estimated_departure_date_time: Option<String>,
11822    #[serde(rename = "GrossUnitOfWeightId")]
11823    pub gross_unit_of_weight_id: Option<i64>,
11824    #[serde(rename = "GrossWeight")]
11825    pub gross_weight: Option<f64>,
11826    #[serde(rename = "InvoiceNumber")]
11827    pub invoice_number: Option<String>,
11828    #[serde(rename = "Packages")]
11829    pub packages: Option<Vec<TransfersCreateExternalIncomingV2RequestItemDestinationsPackages>>,
11830    #[serde(rename = "PlannedRoute")]
11831    pub planned_route: Option<String>,
11832    #[serde(rename = "RecipientLicenseNumber")]
11833    pub recipient_license_number: Option<String>,
11834    #[serde(rename = "TransferTypeName")]
11835    pub transfer_type_name: Option<String>,
11836    #[serde(rename = "Transporters")]
11837    pub transporters: Option<Vec<TransfersCreateExternalIncomingV2RequestItemDestinationsTransporters>>,
11838}
11839
11840#[derive(Serialize, Deserialize, Debug, Clone)]
11841pub struct TransfersCreateExternalIncomingV2RequestItemDestinationsPackages {
11842    #[serde(rename = "ExpirationDate")]
11843    pub expiration_date: Option<String>,
11844    #[serde(rename = "ExternalId")]
11845    pub external_id: Option<String>,
11846    #[serde(rename = "GrossUnitOfWeightName")]
11847    pub gross_unit_of_weight_name: Option<String>,
11848    #[serde(rename = "GrossWeight")]
11849    pub gross_weight: Option<f64>,
11850    #[serde(rename = "ItemName")]
11851    pub item_name: Option<String>,
11852    #[serde(rename = "PackagedDate")]
11853    pub packaged_date: Option<String>,
11854    #[serde(rename = "Quantity")]
11855    pub quantity: Option<i64>,
11856    #[serde(rename = "SellByDate")]
11857    pub sell_by_date: Option<String>,
11858    #[serde(rename = "UnitOfMeasureName")]
11859    pub unit_of_measure_name: Option<String>,
11860    #[serde(rename = "UseByDate")]
11861    pub use_by_date: Option<String>,
11862    #[serde(rename = "WholesalePrice")]
11863    pub wholesale_price: Option<String>,
11864}
11865
11866#[derive(Serialize, Deserialize, Debug, Clone)]
11867pub struct TransfersCreateExternalIncomingV2RequestItemDestinationsTransporters {
11868    #[serde(rename = "DriverLayoverLeg")]
11869    pub driver_layover_leg: Option<String>,
11870    #[serde(rename = "DriverLicenseNumber")]
11871    pub driver_license_number: Option<String>,
11872    #[serde(rename = "DriverName")]
11873    pub driver_name: Option<String>,
11874    #[serde(rename = "DriverOccupationalLicenseNumber")]
11875    pub driver_occupational_license_number: Option<String>,
11876    #[serde(rename = "EstimatedArrivalDateTime")]
11877    pub estimated_arrival_date_time: Option<String>,
11878    #[serde(rename = "EstimatedDepartureDateTime")]
11879    pub estimated_departure_date_time: Option<String>,
11880    #[serde(rename = "IsLayover")]
11881    pub is_layover: Option<bool>,
11882    #[serde(rename = "PhoneNumberForQuestions")]
11883    pub phone_number_for_questions: Option<String>,
11884    #[serde(rename = "TransporterDetails")]
11885    pub transporter_details: Option<Vec<TransfersCreateExternalIncomingV2RequestItemDestinationsTransportersTransporterDetails>>,
11886    #[serde(rename = "TransporterFacilityLicenseNumber")]
11887    pub transporter_facility_license_number: Option<String>,
11888    #[serde(rename = "VehicleLicensePlateNumber")]
11889    pub vehicle_license_plate_number: Option<String>,
11890    #[serde(rename = "VehicleMake")]
11891    pub vehicle_make: Option<String>,
11892    #[serde(rename = "VehicleModel")]
11893    pub vehicle_model: Option<String>,
11894}
11895
11896#[derive(Serialize, Deserialize, Debug, Clone)]
11897pub struct TransfersCreateExternalIncomingV2RequestItemDestinationsTransportersTransporterDetails {
11898    #[serde(rename = "DriverLayoverLeg")]
11899    pub driver_layover_leg: Option<String>,
11900    #[serde(rename = "DriverLicenseNumber")]
11901    pub driver_license_number: Option<String>,
11902    #[serde(rename = "DriverName")]
11903    pub driver_name: Option<String>,
11904    #[serde(rename = "DriverOccupationalLicenseNumber")]
11905    pub driver_occupational_license_number: Option<String>,
11906    #[serde(rename = "VehicleLicensePlateNumber")]
11907    pub vehicle_license_plate_number: Option<String>,
11908    #[serde(rename = "VehicleMake")]
11909    pub vehicle_make: Option<String>,
11910    #[serde(rename = "VehicleModel")]
11911    pub vehicle_model: Option<String>,
11912}
11913
11914#[derive(Serialize, Deserialize, Debug, Clone)]
11915pub struct TransfersCreateTemplatesV1RequestItem {
11916    #[serde(rename = "Destinations")]
11917    pub destinations: Option<Vec<TransfersCreateTemplatesV1RequestItemDestinations>>,
11918    #[serde(rename = "DriverLicenseNumber")]
11919    pub driver_license_number: Option<String>,
11920    #[serde(rename = "DriverName")]
11921    pub driver_name: Option<String>,
11922    #[serde(rename = "DriverOccupationalLicenseNumber")]
11923    pub driver_occupational_license_number: Option<String>,
11924    #[serde(rename = "Name")]
11925    pub name: Option<String>,
11926    #[serde(rename = "PhoneNumberForQuestions")]
11927    pub phone_number_for_questions: Option<String>,
11928    #[serde(rename = "TransporterFacilityLicenseNumber")]
11929    pub transporter_facility_license_number: Option<String>,
11930    #[serde(rename = "VehicleLicensePlateNumber")]
11931    pub vehicle_license_plate_number: Option<String>,
11932    #[serde(rename = "VehicleMake")]
11933    pub vehicle_make: Option<String>,
11934    #[serde(rename = "VehicleModel")]
11935    pub vehicle_model: Option<String>,
11936}
11937
11938#[derive(Serialize, Deserialize, Debug, Clone)]
11939pub struct TransfersCreateTemplatesV1RequestItemDestinations {
11940    #[serde(rename = "EstimatedArrivalDateTime")]
11941    pub estimated_arrival_date_time: Option<String>,
11942    #[serde(rename = "EstimatedDepartureDateTime")]
11943    pub estimated_departure_date_time: Option<String>,
11944    #[serde(rename = "InvoiceNumber")]
11945    pub invoice_number: Option<String>,
11946    #[serde(rename = "Packages")]
11947    pub packages: Option<Vec<TransfersCreateTemplatesV1RequestItemDestinationsPackages>>,
11948    #[serde(rename = "PlannedRoute")]
11949    pub planned_route: Option<String>,
11950    #[serde(rename = "RecipientLicenseNumber")]
11951    pub recipient_license_number: Option<String>,
11952    #[serde(rename = "TransferTypeName")]
11953    pub transfer_type_name: Option<String>,
11954    #[serde(rename = "Transporters")]
11955    pub transporters: Option<Vec<TransfersCreateTemplatesV1RequestItemDestinationsTransporters>>,
11956}
11957
11958#[derive(Serialize, Deserialize, Debug, Clone)]
11959pub struct TransfersCreateTemplatesV1RequestItemDestinationsPackages {
11960    #[serde(rename = "GrossUnitOfWeightName")]
11961    pub gross_unit_of_weight_name: Option<String>,
11962    #[serde(rename = "GrossWeight")]
11963    pub gross_weight: Option<f64>,
11964    #[serde(rename = "PackageLabel")]
11965    pub package_label: Option<String>,
11966    #[serde(rename = "WholesalePrice")]
11967    pub wholesale_price: Option<String>,
11968}
11969
11970#[derive(Serialize, Deserialize, Debug, Clone)]
11971pub struct TransfersCreateTemplatesV1RequestItemDestinationsTransporters {
11972    #[serde(rename = "DriverLayoverLeg")]
11973    pub driver_layover_leg: Option<String>,
11974    #[serde(rename = "DriverLicenseNumber")]
11975    pub driver_license_number: Option<String>,
11976    #[serde(rename = "DriverName")]
11977    pub driver_name: Option<String>,
11978    #[serde(rename = "DriverOccupationalLicenseNumber")]
11979    pub driver_occupational_license_number: Option<String>,
11980    #[serde(rename = "EstimatedArrivalDateTime")]
11981    pub estimated_arrival_date_time: Option<String>,
11982    #[serde(rename = "EstimatedDepartureDateTime")]
11983    pub estimated_departure_date_time: Option<String>,
11984    #[serde(rename = "IsLayover")]
11985    pub is_layover: Option<bool>,
11986    #[serde(rename = "PhoneNumberForQuestions")]
11987    pub phone_number_for_questions: Option<String>,
11988    #[serde(rename = "TransporterDetails")]
11989    pub transporter_details: Option<String>,
11990    #[serde(rename = "TransporterFacilityLicenseNumber")]
11991    pub transporter_facility_license_number: Option<String>,
11992    #[serde(rename = "VehicleLicensePlateNumber")]
11993    pub vehicle_license_plate_number: Option<String>,
11994    #[serde(rename = "VehicleMake")]
11995    pub vehicle_make: Option<String>,
11996    #[serde(rename = "VehicleModel")]
11997    pub vehicle_model: Option<String>,
11998}
11999
12000#[derive(Serialize, Deserialize, Debug, Clone)]
12001pub struct TransfersCreateTemplatesOutgoingV2RequestItem {
12002    #[serde(rename = "Destinations")]
12003    pub destinations: Option<Vec<TransfersCreateTemplatesOutgoingV2RequestItemDestinations>>,
12004    #[serde(rename = "DriverLicenseNumber")]
12005    pub driver_license_number: Option<String>,
12006    #[serde(rename = "DriverName")]
12007    pub driver_name: Option<String>,
12008    #[serde(rename = "DriverOccupationalLicenseNumber")]
12009    pub driver_occupational_license_number: Option<String>,
12010    #[serde(rename = "Name")]
12011    pub name: Option<String>,
12012    #[serde(rename = "PhoneNumberForQuestions")]
12013    pub phone_number_for_questions: Option<String>,
12014    #[serde(rename = "TransporterFacilityLicenseNumber")]
12015    pub transporter_facility_license_number: Option<String>,
12016    #[serde(rename = "VehicleLicensePlateNumber")]
12017    pub vehicle_license_plate_number: Option<String>,
12018    #[serde(rename = "VehicleMake")]
12019    pub vehicle_make: Option<String>,
12020    #[serde(rename = "VehicleModel")]
12021    pub vehicle_model: Option<String>,
12022}
12023
12024#[derive(Serialize, Deserialize, Debug, Clone)]
12025pub struct TransfersCreateTemplatesOutgoingV2RequestItemDestinations {
12026    #[serde(rename = "EstimatedArrivalDateTime")]
12027    pub estimated_arrival_date_time: Option<String>,
12028    #[serde(rename = "EstimatedDepartureDateTime")]
12029    pub estimated_departure_date_time: Option<String>,
12030    #[serde(rename = "InvoiceNumber")]
12031    pub invoice_number: Option<String>,
12032    #[serde(rename = "Packages")]
12033    pub packages: Option<Vec<TransfersCreateTemplatesOutgoingV2RequestItemDestinationsPackages>>,
12034    #[serde(rename = "PlannedRoute")]
12035    pub planned_route: Option<String>,
12036    #[serde(rename = "RecipientLicenseNumber")]
12037    pub recipient_license_number: Option<String>,
12038    #[serde(rename = "TransferTypeName")]
12039    pub transfer_type_name: Option<String>,
12040    #[serde(rename = "Transporters")]
12041    pub transporters: Option<Vec<TransfersCreateTemplatesOutgoingV2RequestItemDestinationsTransporters>>,
12042}
12043
12044#[derive(Serialize, Deserialize, Debug, Clone)]
12045pub struct TransfersCreateTemplatesOutgoingV2RequestItemDestinationsPackages {
12046    #[serde(rename = "GrossUnitOfWeightName")]
12047    pub gross_unit_of_weight_name: Option<String>,
12048    #[serde(rename = "GrossWeight")]
12049    pub gross_weight: Option<f64>,
12050    #[serde(rename = "PackageLabel")]
12051    pub package_label: Option<String>,
12052    #[serde(rename = "WholesalePrice")]
12053    pub wholesale_price: Option<String>,
12054}
12055
12056#[derive(Serialize, Deserialize, Debug, Clone)]
12057pub struct TransfersCreateTemplatesOutgoingV2RequestItemDestinationsTransporters {
12058    #[serde(rename = "DriverLayoverLeg")]
12059    pub driver_layover_leg: Option<String>,
12060    #[serde(rename = "DriverLicenseNumber")]
12061    pub driver_license_number: Option<String>,
12062    #[serde(rename = "DriverName")]
12063    pub driver_name: Option<String>,
12064    #[serde(rename = "DriverOccupationalLicenseNumber")]
12065    pub driver_occupational_license_number: Option<String>,
12066    #[serde(rename = "EstimatedArrivalDateTime")]
12067    pub estimated_arrival_date_time: Option<String>,
12068    #[serde(rename = "EstimatedDepartureDateTime")]
12069    pub estimated_departure_date_time: Option<String>,
12070    #[serde(rename = "IsLayover")]
12071    pub is_layover: Option<bool>,
12072    #[serde(rename = "PhoneNumberForQuestions")]
12073    pub phone_number_for_questions: Option<String>,
12074    #[serde(rename = "TransporterDetails")]
12075    pub transporter_details: Option<Vec<TransfersCreateTemplatesOutgoingV2RequestItemDestinationsTransportersTransporterDetails>>,
12076    #[serde(rename = "TransporterFacilityLicenseNumber")]
12077    pub transporter_facility_license_number: Option<String>,
12078    #[serde(rename = "VehicleLicensePlateNumber")]
12079    pub vehicle_license_plate_number: Option<String>,
12080    #[serde(rename = "VehicleMake")]
12081    pub vehicle_make: Option<String>,
12082    #[serde(rename = "VehicleModel")]
12083    pub vehicle_model: Option<String>,
12084}
12085
12086#[derive(Serialize, Deserialize, Debug, Clone)]
12087pub struct TransfersCreateTemplatesOutgoingV2RequestItemDestinationsTransportersTransporterDetails {
12088    #[serde(rename = "DriverLayoverLeg")]
12089    pub driver_layover_leg: Option<String>,
12090    #[serde(rename = "DriverLicenseNumber")]
12091    pub driver_license_number: Option<String>,
12092    #[serde(rename = "DriverName")]
12093    pub driver_name: Option<String>,
12094    #[serde(rename = "DriverOccupationalLicenseNumber")]
12095    pub driver_occupational_license_number: Option<String>,
12096    #[serde(rename = "VehicleLicensePlateNumber")]
12097    pub vehicle_license_plate_number: Option<String>,
12098    #[serde(rename = "VehicleMake")]
12099    pub vehicle_make: Option<String>,
12100    #[serde(rename = "VehicleModel")]
12101    pub vehicle_model: Option<String>,
12102}
12103
12104#[derive(Serialize, Deserialize, Debug, Clone)]
12105pub struct TransfersUpdateExternalIncomingV1RequestItem {
12106    #[serde(rename = "Destinations")]
12107    pub destinations: Option<Vec<TransfersUpdateExternalIncomingV1RequestItemDestinations>>,
12108    #[serde(rename = "DriverLicenseNumber")]
12109    pub driver_license_number: Option<String>,
12110    #[serde(rename = "DriverName")]
12111    pub driver_name: Option<String>,
12112    #[serde(rename = "DriverOccupationalLicenseNumber")]
12113    pub driver_occupational_license_number: Option<String>,
12114    #[serde(rename = "PhoneNumberForQuestions")]
12115    pub phone_number_for_questions: Option<String>,
12116    #[serde(rename = "ShipperAddress1")]
12117    pub shipper_address1: Option<String>,
12118    #[serde(rename = "ShipperAddress2")]
12119    pub shipper_address2: Option<String>,
12120    #[serde(rename = "ShipperAddressCity")]
12121    pub shipper_address_city: Option<String>,
12122    #[serde(rename = "ShipperAddressPostalCode")]
12123    pub shipper_address_postal_code: Option<String>,
12124    #[serde(rename = "ShipperAddressState")]
12125    pub shipper_address_state: Option<String>,
12126    #[serde(rename = "ShipperLicenseNumber")]
12127    pub shipper_license_number: Option<String>,
12128    #[serde(rename = "ShipperMainPhoneNumber")]
12129    pub shipper_main_phone_number: Option<String>,
12130    #[serde(rename = "ShipperName")]
12131    pub shipper_name: Option<String>,
12132    #[serde(rename = "TransferId")]
12133    pub transfer_id: Option<i64>,
12134    #[serde(rename = "TransporterFacilityLicenseNumber")]
12135    pub transporter_facility_license_number: Option<String>,
12136    #[serde(rename = "VehicleLicensePlateNumber")]
12137    pub vehicle_license_plate_number: Option<String>,
12138    #[serde(rename = "VehicleMake")]
12139    pub vehicle_make: Option<String>,
12140    #[serde(rename = "VehicleModel")]
12141    pub vehicle_model: Option<String>,
12142}
12143
12144#[derive(Serialize, Deserialize, Debug, Clone)]
12145pub struct TransfersUpdateExternalIncomingV1RequestItemDestinations {
12146    #[serde(rename = "EstimatedArrivalDateTime")]
12147    pub estimated_arrival_date_time: Option<String>,
12148    #[serde(rename = "EstimatedDepartureDateTime")]
12149    pub estimated_departure_date_time: Option<String>,
12150    #[serde(rename = "GrossUnitOfWeightId")]
12151    pub gross_unit_of_weight_id: Option<i64>,
12152    #[serde(rename = "GrossWeight")]
12153    pub gross_weight: Option<f64>,
12154    #[serde(rename = "InvoiceNumber")]
12155    pub invoice_number: Option<String>,
12156    #[serde(rename = "Packages")]
12157    pub packages: Option<Vec<TransfersUpdateExternalIncomingV1RequestItemDestinationsPackages>>,
12158    #[serde(rename = "PlannedRoute")]
12159    pub planned_route: Option<String>,
12160    #[serde(rename = "RecipientLicenseNumber")]
12161    pub recipient_license_number: Option<String>,
12162    #[serde(rename = "TransferDestinationId")]
12163    pub transfer_destination_id: Option<i64>,
12164    #[serde(rename = "TransferTypeName")]
12165    pub transfer_type_name: Option<String>,
12166    #[serde(rename = "Transporters")]
12167    pub transporters: Option<Vec<TransfersUpdateExternalIncomingV1RequestItemDestinationsTransporters>>,
12168}
12169
12170#[derive(Serialize, Deserialize, Debug, Clone)]
12171pub struct TransfersUpdateExternalIncomingV1RequestItemDestinationsPackages {
12172    #[serde(rename = "ExpirationDate")]
12173    pub expiration_date: Option<String>,
12174    #[serde(rename = "ExternalId")]
12175    pub external_id: Option<String>,
12176    #[serde(rename = "GrossUnitOfWeightName")]
12177    pub gross_unit_of_weight_name: Option<String>,
12178    #[serde(rename = "GrossWeight")]
12179    pub gross_weight: Option<f64>,
12180    #[serde(rename = "ItemName")]
12181    pub item_name: Option<String>,
12182    #[serde(rename = "PackagedDate")]
12183    pub packaged_date: Option<String>,
12184    #[serde(rename = "Quantity")]
12185    pub quantity: Option<i64>,
12186    #[serde(rename = "SellByDate")]
12187    pub sell_by_date: Option<String>,
12188    #[serde(rename = "UnitOfMeasureName")]
12189    pub unit_of_measure_name: Option<String>,
12190    #[serde(rename = "UseByDate")]
12191    pub use_by_date: Option<String>,
12192    #[serde(rename = "WholesalePrice")]
12193    pub wholesale_price: Option<String>,
12194}
12195
12196#[derive(Serialize, Deserialize, Debug, Clone)]
12197pub struct TransfersUpdateExternalIncomingV1RequestItemDestinationsTransporters {
12198    #[serde(rename = "DriverLayoverLeg")]
12199    pub driver_layover_leg: Option<String>,
12200    #[serde(rename = "DriverLicenseNumber")]
12201    pub driver_license_number: Option<String>,
12202    #[serde(rename = "DriverName")]
12203    pub driver_name: Option<String>,
12204    #[serde(rename = "DriverOccupationalLicenseNumber")]
12205    pub driver_occupational_license_number: Option<String>,
12206    #[serde(rename = "EstimatedArrivalDateTime")]
12207    pub estimated_arrival_date_time: Option<String>,
12208    #[serde(rename = "EstimatedDepartureDateTime")]
12209    pub estimated_departure_date_time: Option<String>,
12210    #[serde(rename = "IsLayover")]
12211    pub is_layover: Option<bool>,
12212    #[serde(rename = "PhoneNumberForQuestions")]
12213    pub phone_number_for_questions: Option<String>,
12214    #[serde(rename = "TransporterDetails")]
12215    pub transporter_details: Option<String>,
12216    #[serde(rename = "TransporterFacilityLicenseNumber")]
12217    pub transporter_facility_license_number: Option<String>,
12218    #[serde(rename = "VehicleLicensePlateNumber")]
12219    pub vehicle_license_plate_number: Option<String>,
12220    #[serde(rename = "VehicleMake")]
12221    pub vehicle_make: Option<String>,
12222    #[serde(rename = "VehicleModel")]
12223    pub vehicle_model: Option<String>,
12224}
12225
12226#[derive(Serialize, Deserialize, Debug, Clone)]
12227pub struct TransfersUpdateExternalIncomingV2RequestItem {
12228    #[serde(rename = "Destinations")]
12229    pub destinations: Option<Vec<TransfersUpdateExternalIncomingV2RequestItemDestinations>>,
12230    #[serde(rename = "DriverLicenseNumber")]
12231    pub driver_license_number: Option<String>,
12232    #[serde(rename = "DriverName")]
12233    pub driver_name: Option<String>,
12234    #[serde(rename = "DriverOccupationalLicenseNumber")]
12235    pub driver_occupational_license_number: Option<String>,
12236    #[serde(rename = "PhoneNumberForQuestions")]
12237    pub phone_number_for_questions: Option<String>,
12238    #[serde(rename = "ShipperAddress1")]
12239    pub shipper_address1: Option<String>,
12240    #[serde(rename = "ShipperAddress2")]
12241    pub shipper_address2: Option<String>,
12242    #[serde(rename = "ShipperAddressCity")]
12243    pub shipper_address_city: Option<String>,
12244    #[serde(rename = "ShipperAddressPostalCode")]
12245    pub shipper_address_postal_code: Option<String>,
12246    #[serde(rename = "ShipperAddressState")]
12247    pub shipper_address_state: Option<String>,
12248    #[serde(rename = "ShipperLicenseNumber")]
12249    pub shipper_license_number: Option<String>,
12250    #[serde(rename = "ShipperMainPhoneNumber")]
12251    pub shipper_main_phone_number: Option<String>,
12252    #[serde(rename = "ShipperName")]
12253    pub shipper_name: Option<String>,
12254    #[serde(rename = "TransferId")]
12255    pub transfer_id: Option<i64>,
12256    #[serde(rename = "TransporterFacilityLicenseNumber")]
12257    pub transporter_facility_license_number: Option<String>,
12258    #[serde(rename = "VehicleLicensePlateNumber")]
12259    pub vehicle_license_plate_number: Option<String>,
12260    #[serde(rename = "VehicleMake")]
12261    pub vehicle_make: Option<String>,
12262    #[serde(rename = "VehicleModel")]
12263    pub vehicle_model: Option<String>,
12264}
12265
12266#[derive(Serialize, Deserialize, Debug, Clone)]
12267pub struct TransfersUpdateExternalIncomingV2RequestItemDestinations {
12268    #[serde(rename = "EstimatedArrivalDateTime")]
12269    pub estimated_arrival_date_time: Option<String>,
12270    #[serde(rename = "EstimatedDepartureDateTime")]
12271    pub estimated_departure_date_time: Option<String>,
12272    #[serde(rename = "GrossUnitOfWeightId")]
12273    pub gross_unit_of_weight_id: Option<i64>,
12274    #[serde(rename = "GrossWeight")]
12275    pub gross_weight: Option<f64>,
12276    #[serde(rename = "InvoiceNumber")]
12277    pub invoice_number: Option<String>,
12278    #[serde(rename = "Packages")]
12279    pub packages: Option<Vec<TransfersUpdateExternalIncomingV2RequestItemDestinationsPackages>>,
12280    #[serde(rename = "PlannedRoute")]
12281    pub planned_route: Option<String>,
12282    #[serde(rename = "RecipientLicenseNumber")]
12283    pub recipient_license_number: Option<String>,
12284    #[serde(rename = "TransferDestinationId")]
12285    pub transfer_destination_id: Option<i64>,
12286    #[serde(rename = "TransferTypeName")]
12287    pub transfer_type_name: Option<String>,
12288    #[serde(rename = "Transporters")]
12289    pub transporters: Option<Vec<TransfersUpdateExternalIncomingV2RequestItemDestinationsTransporters>>,
12290}
12291
12292#[derive(Serialize, Deserialize, Debug, Clone)]
12293pub struct TransfersUpdateExternalIncomingV2RequestItemDestinationsPackages {
12294    #[serde(rename = "ExpirationDate")]
12295    pub expiration_date: Option<String>,
12296    #[serde(rename = "ExternalId")]
12297    pub external_id: Option<String>,
12298    #[serde(rename = "GrossUnitOfWeightName")]
12299    pub gross_unit_of_weight_name: Option<String>,
12300    #[serde(rename = "GrossWeight")]
12301    pub gross_weight: Option<f64>,
12302    #[serde(rename = "ItemName")]
12303    pub item_name: Option<String>,
12304    #[serde(rename = "PackagedDate")]
12305    pub packaged_date: Option<String>,
12306    #[serde(rename = "Quantity")]
12307    pub quantity: Option<i64>,
12308    #[serde(rename = "SellByDate")]
12309    pub sell_by_date: Option<String>,
12310    #[serde(rename = "UnitOfMeasureName")]
12311    pub unit_of_measure_name: Option<String>,
12312    #[serde(rename = "UseByDate")]
12313    pub use_by_date: Option<String>,
12314    #[serde(rename = "WholesalePrice")]
12315    pub wholesale_price: Option<String>,
12316}
12317
12318#[derive(Serialize, Deserialize, Debug, Clone)]
12319pub struct TransfersUpdateExternalIncomingV2RequestItemDestinationsTransporters {
12320    #[serde(rename = "DriverLayoverLeg")]
12321    pub driver_layover_leg: Option<String>,
12322    #[serde(rename = "DriverLicenseNumber")]
12323    pub driver_license_number: Option<String>,
12324    #[serde(rename = "DriverName")]
12325    pub driver_name: Option<String>,
12326    #[serde(rename = "DriverOccupationalLicenseNumber")]
12327    pub driver_occupational_license_number: Option<String>,
12328    #[serde(rename = "EstimatedArrivalDateTime")]
12329    pub estimated_arrival_date_time: Option<String>,
12330    #[serde(rename = "EstimatedDepartureDateTime")]
12331    pub estimated_departure_date_time: Option<String>,
12332    #[serde(rename = "IsLayover")]
12333    pub is_layover: Option<bool>,
12334    #[serde(rename = "PhoneNumberForQuestions")]
12335    pub phone_number_for_questions: Option<String>,
12336    #[serde(rename = "TransporterDetails")]
12337    pub transporter_details: Option<Vec<TransfersUpdateExternalIncomingV2RequestItemDestinationsTransportersTransporterDetails>>,
12338    #[serde(rename = "TransporterFacilityLicenseNumber")]
12339    pub transporter_facility_license_number: Option<String>,
12340    #[serde(rename = "VehicleLicensePlateNumber")]
12341    pub vehicle_license_plate_number: Option<String>,
12342    #[serde(rename = "VehicleMake")]
12343    pub vehicle_make: Option<String>,
12344    #[serde(rename = "VehicleModel")]
12345    pub vehicle_model: Option<String>,
12346}
12347
12348#[derive(Serialize, Deserialize, Debug, Clone)]
12349pub struct TransfersUpdateExternalIncomingV2RequestItemDestinationsTransportersTransporterDetails {
12350    #[serde(rename = "DriverLayoverLeg")]
12351    pub driver_layover_leg: Option<String>,
12352    #[serde(rename = "DriverLicenseNumber")]
12353    pub driver_license_number: Option<String>,
12354    #[serde(rename = "DriverName")]
12355    pub driver_name: Option<String>,
12356    #[serde(rename = "DriverOccupationalLicenseNumber")]
12357    pub driver_occupational_license_number: Option<String>,
12358    #[serde(rename = "VehicleLicensePlateNumber")]
12359    pub vehicle_license_plate_number: Option<String>,
12360    #[serde(rename = "VehicleMake")]
12361    pub vehicle_make: Option<String>,
12362    #[serde(rename = "VehicleModel")]
12363    pub vehicle_model: Option<String>,
12364}
12365
12366#[derive(Serialize, Deserialize, Debug, Clone)]
12367pub struct TransfersUpdateTemplatesV1RequestItem {
12368    #[serde(rename = "Destinations")]
12369    pub destinations: Option<Vec<TransfersUpdateTemplatesV1RequestItemDestinations>>,
12370    #[serde(rename = "DriverLicenseNumber")]
12371    pub driver_license_number: Option<String>,
12372    #[serde(rename = "DriverName")]
12373    pub driver_name: Option<String>,
12374    #[serde(rename = "DriverOccupationalLicenseNumber")]
12375    pub driver_occupational_license_number: Option<String>,
12376    #[serde(rename = "Name")]
12377    pub name: Option<String>,
12378    #[serde(rename = "PhoneNumberForQuestions")]
12379    pub phone_number_for_questions: Option<String>,
12380    #[serde(rename = "TransferTemplateId")]
12381    pub transfer_template_id: Option<i64>,
12382    #[serde(rename = "TransporterFacilityLicenseNumber")]
12383    pub transporter_facility_license_number: Option<String>,
12384    #[serde(rename = "VehicleLicensePlateNumber")]
12385    pub vehicle_license_plate_number: Option<String>,
12386    #[serde(rename = "VehicleMake")]
12387    pub vehicle_make: Option<String>,
12388    #[serde(rename = "VehicleModel")]
12389    pub vehicle_model: Option<String>,
12390}
12391
12392#[derive(Serialize, Deserialize, Debug, Clone)]
12393pub struct TransfersUpdateTemplatesV1RequestItemDestinations {
12394    #[serde(rename = "EstimatedArrivalDateTime")]
12395    pub estimated_arrival_date_time: Option<String>,
12396    #[serde(rename = "EstimatedDepartureDateTime")]
12397    pub estimated_departure_date_time: Option<String>,
12398    #[serde(rename = "InvoiceNumber")]
12399    pub invoice_number: Option<String>,
12400    #[serde(rename = "Packages")]
12401    pub packages: Option<Vec<TransfersUpdateTemplatesV1RequestItemDestinationsPackages>>,
12402    #[serde(rename = "PlannedRoute")]
12403    pub planned_route: Option<String>,
12404    #[serde(rename = "RecipientLicenseNumber")]
12405    pub recipient_license_number: Option<String>,
12406    #[serde(rename = "TransferDestinationId")]
12407    pub transfer_destination_id: Option<i64>,
12408    #[serde(rename = "TransferTypeName")]
12409    pub transfer_type_name: Option<String>,
12410    #[serde(rename = "Transporters")]
12411    pub transporters: Option<Vec<TransfersUpdateTemplatesV1RequestItemDestinationsTransporters>>,
12412}
12413
12414#[derive(Serialize, Deserialize, Debug, Clone)]
12415pub struct TransfersUpdateTemplatesV1RequestItemDestinationsPackages {
12416    #[serde(rename = "GrossUnitOfWeightName")]
12417    pub gross_unit_of_weight_name: Option<String>,
12418    #[serde(rename = "GrossWeight")]
12419    pub gross_weight: Option<f64>,
12420    #[serde(rename = "PackageLabel")]
12421    pub package_label: Option<String>,
12422    #[serde(rename = "WholesalePrice")]
12423    pub wholesale_price: Option<String>,
12424}
12425
12426#[derive(Serialize, Deserialize, Debug, Clone)]
12427pub struct TransfersUpdateTemplatesV1RequestItemDestinationsTransporters {
12428    #[serde(rename = "DriverLayoverLeg")]
12429    pub driver_layover_leg: Option<String>,
12430    #[serde(rename = "DriverLicenseNumber")]
12431    pub driver_license_number: Option<String>,
12432    #[serde(rename = "DriverName")]
12433    pub driver_name: Option<String>,
12434    #[serde(rename = "DriverOccupationalLicenseNumber")]
12435    pub driver_occupational_license_number: Option<String>,
12436    #[serde(rename = "EstimatedArrivalDateTime")]
12437    pub estimated_arrival_date_time: Option<String>,
12438    #[serde(rename = "EstimatedDepartureDateTime")]
12439    pub estimated_departure_date_time: Option<String>,
12440    #[serde(rename = "IsLayover")]
12441    pub is_layover: Option<bool>,
12442    #[serde(rename = "PhoneNumberForQuestions")]
12443    pub phone_number_for_questions: Option<String>,
12444    #[serde(rename = "TransporterDetails")]
12445    pub transporter_details: Option<String>,
12446    #[serde(rename = "TransporterFacilityLicenseNumber")]
12447    pub transporter_facility_license_number: Option<String>,
12448    #[serde(rename = "VehicleLicensePlateNumber")]
12449    pub vehicle_license_plate_number: Option<String>,
12450    #[serde(rename = "VehicleMake")]
12451    pub vehicle_make: Option<String>,
12452    #[serde(rename = "VehicleModel")]
12453    pub vehicle_model: Option<String>,
12454}
12455
12456#[derive(Serialize, Deserialize, Debug, Clone)]
12457pub struct TransfersUpdateTemplatesOutgoingV2RequestItem {
12458    #[serde(rename = "Destinations")]
12459    pub destinations: Option<Vec<TransfersUpdateTemplatesOutgoingV2RequestItemDestinations>>,
12460    #[serde(rename = "DriverLicenseNumber")]
12461    pub driver_license_number: Option<String>,
12462    #[serde(rename = "DriverName")]
12463    pub driver_name: Option<String>,
12464    #[serde(rename = "DriverOccupationalLicenseNumber")]
12465    pub driver_occupational_license_number: Option<String>,
12466    #[serde(rename = "Name")]
12467    pub name: Option<String>,
12468    #[serde(rename = "PhoneNumberForQuestions")]
12469    pub phone_number_for_questions: Option<String>,
12470    #[serde(rename = "TransferTemplateId")]
12471    pub transfer_template_id: Option<i64>,
12472    #[serde(rename = "TransporterFacilityLicenseNumber")]
12473    pub transporter_facility_license_number: Option<String>,
12474    #[serde(rename = "VehicleLicensePlateNumber")]
12475    pub vehicle_license_plate_number: Option<String>,
12476    #[serde(rename = "VehicleMake")]
12477    pub vehicle_make: Option<String>,
12478    #[serde(rename = "VehicleModel")]
12479    pub vehicle_model: Option<String>,
12480}
12481
12482#[derive(Serialize, Deserialize, Debug, Clone)]
12483pub struct TransfersUpdateTemplatesOutgoingV2RequestItemDestinations {
12484    #[serde(rename = "EstimatedArrivalDateTime")]
12485    pub estimated_arrival_date_time: Option<String>,
12486    #[serde(rename = "EstimatedDepartureDateTime")]
12487    pub estimated_departure_date_time: Option<String>,
12488    #[serde(rename = "InvoiceNumber")]
12489    pub invoice_number: Option<String>,
12490    #[serde(rename = "Packages")]
12491    pub packages: Option<Vec<TransfersUpdateTemplatesOutgoingV2RequestItemDestinationsPackages>>,
12492    #[serde(rename = "PlannedRoute")]
12493    pub planned_route: Option<String>,
12494    #[serde(rename = "RecipientLicenseNumber")]
12495    pub recipient_license_number: Option<String>,
12496    #[serde(rename = "TransferDestinationId")]
12497    pub transfer_destination_id: Option<i64>,
12498    #[serde(rename = "TransferTypeName")]
12499    pub transfer_type_name: Option<String>,
12500    #[serde(rename = "Transporters")]
12501    pub transporters: Option<Vec<TransfersUpdateTemplatesOutgoingV2RequestItemDestinationsTransporters>>,
12502}
12503
12504#[derive(Serialize, Deserialize, Debug, Clone)]
12505pub struct TransfersUpdateTemplatesOutgoingV2RequestItemDestinationsPackages {
12506    #[serde(rename = "GrossUnitOfWeightName")]
12507    pub gross_unit_of_weight_name: Option<String>,
12508    #[serde(rename = "GrossWeight")]
12509    pub gross_weight: Option<f64>,
12510    #[serde(rename = "PackageLabel")]
12511    pub package_label: Option<String>,
12512    #[serde(rename = "WholesalePrice")]
12513    pub wholesale_price: Option<String>,
12514}
12515
12516#[derive(Serialize, Deserialize, Debug, Clone)]
12517pub struct TransfersUpdateTemplatesOutgoingV2RequestItemDestinationsTransporters {
12518    #[serde(rename = "DriverLayoverLeg")]
12519    pub driver_layover_leg: Option<String>,
12520    #[serde(rename = "DriverLicenseNumber")]
12521    pub driver_license_number: Option<String>,
12522    #[serde(rename = "DriverName")]
12523    pub driver_name: Option<String>,
12524    #[serde(rename = "DriverOccupationalLicenseNumber")]
12525    pub driver_occupational_license_number: Option<String>,
12526    #[serde(rename = "EstimatedArrivalDateTime")]
12527    pub estimated_arrival_date_time: Option<String>,
12528    #[serde(rename = "EstimatedDepartureDateTime")]
12529    pub estimated_departure_date_time: Option<String>,
12530    #[serde(rename = "IsLayover")]
12531    pub is_layover: Option<bool>,
12532    #[serde(rename = "PhoneNumberForQuestions")]
12533    pub phone_number_for_questions: Option<String>,
12534    #[serde(rename = "TransporterDetails")]
12535    pub transporter_details: Option<Vec<TransfersUpdateTemplatesOutgoingV2RequestItemDestinationsTransportersTransporterDetails>>,
12536    #[serde(rename = "TransporterFacilityLicenseNumber")]
12537    pub transporter_facility_license_number: Option<String>,
12538    #[serde(rename = "VehicleLicensePlateNumber")]
12539    pub vehicle_license_plate_number: Option<String>,
12540    #[serde(rename = "VehicleMake")]
12541    pub vehicle_make: Option<String>,
12542    #[serde(rename = "VehicleModel")]
12543    pub vehicle_model: Option<String>,
12544}
12545
12546#[derive(Serialize, Deserialize, Debug, Clone)]
12547pub struct TransfersUpdateTemplatesOutgoingV2RequestItemDestinationsTransportersTransporterDetails {
12548    #[serde(rename = "DriverLayoverLeg")]
12549    pub driver_layover_leg: Option<String>,
12550    #[serde(rename = "DriverLicenseNumber")]
12551    pub driver_license_number: Option<String>,
12552    #[serde(rename = "DriverName")]
12553    pub driver_name: Option<String>,
12554    #[serde(rename = "DriverOccupationalLicenseNumber")]
12555    pub driver_occupational_license_number: Option<String>,
12556    #[serde(rename = "VehicleLicensePlateNumber")]
12557    pub vehicle_license_plate_number: Option<String>,
12558    #[serde(rename = "VehicleMake")]
12559    pub vehicle_make: Option<String>,
12560    #[serde(rename = "VehicleModel")]
12561    pub vehicle_model: Option<String>,
12562}
12563
12564#[derive(Serialize, Deserialize, Debug, Clone)]
12565pub struct ItemsCreateV1RequestItem {
12566    #[serde(rename = "AdministrationMethod")]
12567    pub administration_method: Option<String>,
12568    #[serde(rename = "Allergens")]
12569    pub allergens: Option<String>,
12570    #[serde(rename = "Description")]
12571    pub description: Option<String>,
12572    #[serde(rename = "GlobalProductName")]
12573    pub global_product_name: Option<String>,
12574    #[serde(rename = "ItemBrand")]
12575    pub item_brand: Option<String>,
12576    #[serde(rename = "ItemCategory")]
12577    pub item_category: Option<String>,
12578    #[serde(rename = "ItemIngredients")]
12579    pub item_ingredients: Option<String>,
12580    #[serde(rename = "LabelImageFileSystemIds")]
12581    pub label_image_file_system_ids: Option<String>,
12582    #[serde(rename = "LabelPhotoDescription")]
12583    pub label_photo_description: Option<String>,
12584    #[serde(rename = "Name")]
12585    pub name: Option<String>,
12586    #[serde(rename = "NumberOfDoses")]
12587    pub number_of_doses: Option<String>,
12588    #[serde(rename = "PackagingImageFileSystemIds")]
12589    pub packaging_image_file_system_ids: Option<String>,
12590    #[serde(rename = "PackagingPhotoDescription")]
12591    pub packaging_photo_description: Option<String>,
12592    #[serde(rename = "ProcessingJobCategoryName")]
12593    pub processing_job_category_name: Option<String>,
12594    #[serde(rename = "ProcessingJobTypeName")]
12595    pub processing_job_type_name: Option<String>,
12596    #[serde(rename = "ProductImageFileSystemIds")]
12597    pub product_image_file_system_ids: Option<String>,
12598    #[serde(rename = "ProductPDFFileSystemIds")]
12599    pub product_pdf_file_system_ids: Option<String>,
12600    #[serde(rename = "ProductPhotoDescription")]
12601    pub product_photo_description: Option<String>,
12602    #[serde(rename = "PublicIngredients")]
12603    pub public_ingredients: Option<String>,
12604    #[serde(rename = "ServingSize")]
12605    pub serving_size: Option<String>,
12606    #[serde(rename = "Strain")]
12607    pub strain: Option<String>,
12608    #[serde(rename = "SupplyDurationDays")]
12609    pub supply_duration_days: Option<i64>,
12610    #[serde(rename = "UnitCbdAContent")]
12611    pub unit_cbd_a_content: Option<f64>,
12612    #[serde(rename = "UnitCbdAContentDose")]
12613    pub unit_cbd_a_content_dose: Option<f64>,
12614    #[serde(rename = "UnitCbdAContentDoseUnitOfMeasure")]
12615    pub unit_cbd_a_content_dose_unit_of_measure: Option<String>,
12616    #[serde(rename = "UnitCbdAContentUnitOfMeasure")]
12617    pub unit_cbd_a_content_unit_of_measure: Option<String>,
12618    #[serde(rename = "UnitCbdAPercent")]
12619    pub unit_cbd_a_percent: Option<f64>,
12620    #[serde(rename = "UnitCbdContent")]
12621    pub unit_cbd_content: Option<f64>,
12622    #[serde(rename = "UnitCbdContentDose")]
12623    pub unit_cbd_content_dose: Option<f64>,
12624    #[serde(rename = "UnitCbdContentDoseUnitOfMeasure")]
12625    pub unit_cbd_content_dose_unit_of_measure: Option<String>,
12626    #[serde(rename = "UnitCbdContentUnitOfMeasure")]
12627    pub unit_cbd_content_unit_of_measure: Option<String>,
12628    #[serde(rename = "UnitCbdPercent")]
12629    pub unit_cbd_percent: Option<f64>,
12630    #[serde(rename = "UnitOfMeasure")]
12631    pub unit_of_measure: Option<String>,
12632    #[serde(rename = "UnitThcAContent")]
12633    pub unit_thc_a_content: Option<f64>,
12634    #[serde(rename = "UnitThcAContentDose")]
12635    pub unit_thc_a_content_dose: Option<f64>,
12636    #[serde(rename = "UnitThcAContentDoseUnitOfMeasure")]
12637    pub unit_thc_a_content_dose_unit_of_measure: Option<String>,
12638    #[serde(rename = "UnitThcAContentUnitOfMeasure")]
12639    pub unit_thc_a_content_unit_of_measure: Option<String>,
12640    #[serde(rename = "UnitThcAPercent")]
12641    pub unit_thc_a_percent: Option<f64>,
12642    #[serde(rename = "UnitThcContent")]
12643    pub unit_thc_content: Option<f64>,
12644    #[serde(rename = "UnitThcContentDose")]
12645    pub unit_thc_content_dose: Option<f64>,
12646    #[serde(rename = "UnitThcContentDoseUnitOfMeasure")]
12647    pub unit_thc_content_dose_unit_of_measure: Option<String>,
12648    #[serde(rename = "UnitThcContentUnitOfMeasure")]
12649    pub unit_thc_content_unit_of_measure: Option<String>,
12650    #[serde(rename = "UnitThcPercent")]
12651    pub unit_thc_percent: Option<f64>,
12652    #[serde(rename = "UnitVolume")]
12653    pub unit_volume: Option<f64>,
12654    #[serde(rename = "UnitVolumeUnitOfMeasure")]
12655    pub unit_volume_unit_of_measure: Option<String>,
12656    #[serde(rename = "UnitWeight")]
12657    pub unit_weight: Option<f64>,
12658    #[serde(rename = "UnitWeightUnitOfMeasure")]
12659    pub unit_weight_unit_of_measure: Option<String>,
12660}
12661
12662#[derive(Serialize, Deserialize, Debug, Clone)]
12663pub struct ItemsCreateV2RequestItem {
12664    #[serde(rename = "AdministrationMethod")]
12665    pub administration_method: Option<String>,
12666    #[serde(rename = "Allergens")]
12667    pub allergens: Option<String>,
12668    #[serde(rename = "Description")]
12669    pub description: Option<String>,
12670    #[serde(rename = "GlobalProductName")]
12671    pub global_product_name: Option<String>,
12672    #[serde(rename = "ItemBrand")]
12673    pub item_brand: Option<String>,
12674    #[serde(rename = "ItemCategory")]
12675    pub item_category: Option<String>,
12676    #[serde(rename = "ItemIngredients")]
12677    pub item_ingredients: Option<String>,
12678    #[serde(rename = "LabelImageFileSystemIds")]
12679    pub label_image_file_system_ids: Option<String>,
12680    #[serde(rename = "LabelPhotoDescription")]
12681    pub label_photo_description: Option<String>,
12682    #[serde(rename = "Name")]
12683    pub name: Option<String>,
12684    #[serde(rename = "NumberOfDoses")]
12685    pub number_of_doses: Option<String>,
12686    #[serde(rename = "PackagingImageFileSystemIds")]
12687    pub packaging_image_file_system_ids: Option<String>,
12688    #[serde(rename = "PackagingPhotoDescription")]
12689    pub packaging_photo_description: Option<String>,
12690    #[serde(rename = "ProcessingJobCategoryName")]
12691    pub processing_job_category_name: Option<String>,
12692    #[serde(rename = "ProcessingJobTypeName")]
12693    pub processing_job_type_name: Option<String>,
12694    #[serde(rename = "ProductImageFileSystemIds")]
12695    pub product_image_file_system_ids: Option<String>,
12696    #[serde(rename = "ProductPDFFileSystemIds")]
12697    pub product_pdf_file_system_ids: Option<String>,
12698    #[serde(rename = "ProductPhotoDescription")]
12699    pub product_photo_description: Option<String>,
12700    #[serde(rename = "PublicIngredients")]
12701    pub public_ingredients: Option<String>,
12702    #[serde(rename = "ServingSize")]
12703    pub serving_size: Option<String>,
12704    #[serde(rename = "Strain")]
12705    pub strain: Option<String>,
12706    #[serde(rename = "SupplyDurationDays")]
12707    pub supply_duration_days: Option<i64>,
12708    #[serde(rename = "UnitCbdAContent")]
12709    pub unit_cbd_a_content: Option<f64>,
12710    #[serde(rename = "UnitCbdAContentDose")]
12711    pub unit_cbd_a_content_dose: Option<f64>,
12712    #[serde(rename = "UnitCbdAContentDoseUnitOfMeasure")]
12713    pub unit_cbd_a_content_dose_unit_of_measure: Option<String>,
12714    #[serde(rename = "UnitCbdAContentUnitOfMeasure")]
12715    pub unit_cbd_a_content_unit_of_measure: Option<String>,
12716    #[serde(rename = "UnitCbdAPercent")]
12717    pub unit_cbd_a_percent: Option<f64>,
12718    #[serde(rename = "UnitCbdContent")]
12719    pub unit_cbd_content: Option<f64>,
12720    #[serde(rename = "UnitCbdContentDose")]
12721    pub unit_cbd_content_dose: Option<f64>,
12722    #[serde(rename = "UnitCbdContentDoseUnitOfMeasure")]
12723    pub unit_cbd_content_dose_unit_of_measure: Option<String>,
12724    #[serde(rename = "UnitCbdContentUnitOfMeasure")]
12725    pub unit_cbd_content_unit_of_measure: Option<String>,
12726    #[serde(rename = "UnitCbdPercent")]
12727    pub unit_cbd_percent: Option<f64>,
12728    #[serde(rename = "UnitOfMeasure")]
12729    pub unit_of_measure: Option<String>,
12730    #[serde(rename = "UnitThcAContent")]
12731    pub unit_thc_a_content: Option<f64>,
12732    #[serde(rename = "UnitThcAContentDose")]
12733    pub unit_thc_a_content_dose: Option<f64>,
12734    #[serde(rename = "UnitThcAContentDoseUnitOfMeasure")]
12735    pub unit_thc_a_content_dose_unit_of_measure: Option<String>,
12736    #[serde(rename = "UnitThcAContentUnitOfMeasure")]
12737    pub unit_thc_a_content_unit_of_measure: Option<String>,
12738    #[serde(rename = "UnitThcAPercent")]
12739    pub unit_thc_a_percent: Option<f64>,
12740    #[serde(rename = "UnitThcContent")]
12741    pub unit_thc_content: Option<f64>,
12742    #[serde(rename = "UnitThcContentDose")]
12743    pub unit_thc_content_dose: Option<f64>,
12744    #[serde(rename = "UnitThcContentDoseUnitOfMeasure")]
12745    pub unit_thc_content_dose_unit_of_measure: Option<String>,
12746    #[serde(rename = "UnitThcContentUnitOfMeasure")]
12747    pub unit_thc_content_unit_of_measure: Option<String>,
12748    #[serde(rename = "UnitThcPercent")]
12749    pub unit_thc_percent: Option<f64>,
12750    #[serde(rename = "UnitVolume")]
12751    pub unit_volume: Option<f64>,
12752    #[serde(rename = "UnitVolumeUnitOfMeasure")]
12753    pub unit_volume_unit_of_measure: Option<String>,
12754    #[serde(rename = "UnitWeight")]
12755    pub unit_weight: Option<f64>,
12756    #[serde(rename = "UnitWeightUnitOfMeasure")]
12757    pub unit_weight_unit_of_measure: Option<String>,
12758}
12759
12760#[derive(Serialize, Deserialize, Debug, Clone)]
12761pub struct ItemsCreateBrandV2RequestItem {
12762    #[serde(rename = "Name")]
12763    pub name: Option<String>,
12764}
12765
12766#[derive(Serialize, Deserialize, Debug, Clone)]
12767pub struct ItemsCreateFileV2RequestItem {
12768    #[serde(rename = "EncodedImageBase64")]
12769    pub encoded_image_base64: Option<String>,
12770    #[serde(rename = "FileName")]
12771    pub file_name: Option<String>,
12772}
12773
12774#[derive(Serialize, Deserialize, Debug, Clone)]
12775pub struct ItemsCreatePhotoV1RequestItem {
12776    #[serde(rename = "EncodedImageBase64")]
12777    pub encoded_image_base64: Option<String>,
12778    #[serde(rename = "FileName")]
12779    pub file_name: Option<String>,
12780}
12781
12782#[derive(Serialize, Deserialize, Debug, Clone)]
12783pub struct ItemsCreatePhotoV2RequestItem {
12784    #[serde(rename = "EncodedImageBase64")]
12785    pub encoded_image_base64: Option<String>,
12786    #[serde(rename = "FileName")]
12787    pub file_name: Option<String>,
12788}
12789
12790#[derive(Serialize, Deserialize, Debug, Clone)]
12791pub struct ItemsCreateUpdateV1RequestItem {
12792    #[serde(rename = "AdministrationMethod")]
12793    pub administration_method: Option<String>,
12794    #[serde(rename = "Allergens")]
12795    pub allergens: Option<String>,
12796    #[serde(rename = "Description")]
12797    pub description: Option<String>,
12798    #[serde(rename = "GlobalProductName")]
12799    pub global_product_name: Option<String>,
12800    #[serde(rename = "Id")]
12801    pub id: Option<i64>,
12802    #[serde(rename = "ItemBrand")]
12803    pub item_brand: Option<String>,
12804    #[serde(rename = "ItemCategory")]
12805    pub item_category: Option<String>,
12806    #[serde(rename = "ItemIngredients")]
12807    pub item_ingredients: Option<String>,
12808    #[serde(rename = "LabelImageFileSystemIds")]
12809    pub label_image_file_system_ids: Option<String>,
12810    #[serde(rename = "LabelPhotoDescription")]
12811    pub label_photo_description: Option<String>,
12812    #[serde(rename = "Name")]
12813    pub name: Option<String>,
12814    #[serde(rename = "NumberOfDoses")]
12815    pub number_of_doses: Option<String>,
12816    #[serde(rename = "PackagingImageFileSystemIds")]
12817    pub packaging_image_file_system_ids: Option<String>,
12818    #[serde(rename = "PackagingPhotoDescription")]
12819    pub packaging_photo_description: Option<String>,
12820    #[serde(rename = "ProcessingJobCategoryName")]
12821    pub processing_job_category_name: Option<String>,
12822    #[serde(rename = "ProcessingJobTypeName")]
12823    pub processing_job_type_name: Option<String>,
12824    #[serde(rename = "ProductImageFileSystemIds")]
12825    pub product_image_file_system_ids: Option<String>,
12826    #[serde(rename = "ProductPDFFileSystemIds")]
12827    pub product_pdf_file_system_ids: Option<String>,
12828    #[serde(rename = "ProductPhotoDescription")]
12829    pub product_photo_description: Option<String>,
12830    #[serde(rename = "PublicIngredients")]
12831    pub public_ingredients: Option<String>,
12832    #[serde(rename = "ServingSize")]
12833    pub serving_size: Option<String>,
12834    #[serde(rename = "Strain")]
12835    pub strain: Option<String>,
12836    #[serde(rename = "SupplyDurationDays")]
12837    pub supply_duration_days: Option<i64>,
12838    #[serde(rename = "UnitCbdAContent")]
12839    pub unit_cbd_a_content: Option<f64>,
12840    #[serde(rename = "UnitCbdAContentDose")]
12841    pub unit_cbd_a_content_dose: Option<f64>,
12842    #[serde(rename = "UnitCbdAContentDoseUnitOfMeasure")]
12843    pub unit_cbd_a_content_dose_unit_of_measure: Option<String>,
12844    #[serde(rename = "UnitCbdAContentUnitOfMeasure")]
12845    pub unit_cbd_a_content_unit_of_measure: Option<String>,
12846    #[serde(rename = "UnitCbdAPercent")]
12847    pub unit_cbd_a_percent: Option<f64>,
12848    #[serde(rename = "UnitCbdContent")]
12849    pub unit_cbd_content: Option<f64>,
12850    #[serde(rename = "UnitCbdContentDose")]
12851    pub unit_cbd_content_dose: Option<f64>,
12852    #[serde(rename = "UnitCbdContentDoseUnitOfMeasure")]
12853    pub unit_cbd_content_dose_unit_of_measure: Option<String>,
12854    #[serde(rename = "UnitCbdContentUnitOfMeasure")]
12855    pub unit_cbd_content_unit_of_measure: Option<String>,
12856    #[serde(rename = "UnitCbdPercent")]
12857    pub unit_cbd_percent: Option<f64>,
12858    #[serde(rename = "UnitOfMeasure")]
12859    pub unit_of_measure: Option<String>,
12860    #[serde(rename = "UnitThcAContent")]
12861    pub unit_thc_a_content: Option<f64>,
12862    #[serde(rename = "UnitThcAContentDose")]
12863    pub unit_thc_a_content_dose: Option<f64>,
12864    #[serde(rename = "UnitThcAContentDoseUnitOfMeasure")]
12865    pub unit_thc_a_content_dose_unit_of_measure: Option<String>,
12866    #[serde(rename = "UnitThcAContentUnitOfMeasure")]
12867    pub unit_thc_a_content_unit_of_measure: Option<String>,
12868    #[serde(rename = "UnitThcAPercent")]
12869    pub unit_thc_a_percent: Option<f64>,
12870    #[serde(rename = "UnitThcContent")]
12871    pub unit_thc_content: Option<f64>,
12872    #[serde(rename = "UnitThcContentDose")]
12873    pub unit_thc_content_dose: Option<f64>,
12874    #[serde(rename = "UnitThcContentDoseUnitOfMeasure")]
12875    pub unit_thc_content_dose_unit_of_measure: Option<String>,
12876    #[serde(rename = "UnitThcContentUnitOfMeasure")]
12877    pub unit_thc_content_unit_of_measure: Option<String>,
12878    #[serde(rename = "UnitThcPercent")]
12879    pub unit_thc_percent: Option<f64>,
12880    #[serde(rename = "UnitVolume")]
12881    pub unit_volume: Option<f64>,
12882    #[serde(rename = "UnitVolumeUnitOfMeasure")]
12883    pub unit_volume_unit_of_measure: Option<String>,
12884    #[serde(rename = "UnitWeight")]
12885    pub unit_weight: Option<f64>,
12886    #[serde(rename = "UnitWeightUnitOfMeasure")]
12887    pub unit_weight_unit_of_measure: Option<String>,
12888}
12889
12890#[derive(Serialize, Deserialize, Debug, Clone)]
12891pub struct ItemsUpdateV2RequestItem {
12892    #[serde(rename = "AdministrationMethod")]
12893    pub administration_method: Option<String>,
12894    #[serde(rename = "Allergens")]
12895    pub allergens: Option<String>,
12896    #[serde(rename = "Description")]
12897    pub description: Option<String>,
12898    #[serde(rename = "GlobalProductName")]
12899    pub global_product_name: Option<String>,
12900    #[serde(rename = "Id")]
12901    pub id: Option<i64>,
12902    #[serde(rename = "ItemBrand")]
12903    pub item_brand: Option<String>,
12904    #[serde(rename = "ItemCategory")]
12905    pub item_category: Option<String>,
12906    #[serde(rename = "ItemIngredients")]
12907    pub item_ingredients: Option<String>,
12908    #[serde(rename = "LabelImageFileSystemIds")]
12909    pub label_image_file_system_ids: Option<String>,
12910    #[serde(rename = "LabelPhotoDescription")]
12911    pub label_photo_description: Option<String>,
12912    #[serde(rename = "Name")]
12913    pub name: Option<String>,
12914    #[serde(rename = "NumberOfDoses")]
12915    pub number_of_doses: Option<String>,
12916    #[serde(rename = "PackagingImageFileSystemIds")]
12917    pub packaging_image_file_system_ids: Option<String>,
12918    #[serde(rename = "PackagingPhotoDescription")]
12919    pub packaging_photo_description: Option<String>,
12920    #[serde(rename = "ProcessingJobCategoryName")]
12921    pub processing_job_category_name: Option<String>,
12922    #[serde(rename = "ProcessingJobTypeName")]
12923    pub processing_job_type_name: Option<String>,
12924    #[serde(rename = "ProductImageFileSystemIds")]
12925    pub product_image_file_system_ids: Option<String>,
12926    #[serde(rename = "ProductPDFFileSystemIds")]
12927    pub product_pdf_file_system_ids: Option<String>,
12928    #[serde(rename = "ProductPhotoDescription")]
12929    pub product_photo_description: Option<String>,
12930    #[serde(rename = "PublicIngredients")]
12931    pub public_ingredients: Option<String>,
12932    #[serde(rename = "ServingSize")]
12933    pub serving_size: Option<String>,
12934    #[serde(rename = "Strain")]
12935    pub strain: Option<String>,
12936    #[serde(rename = "SupplyDurationDays")]
12937    pub supply_duration_days: Option<i64>,
12938    #[serde(rename = "UnitCbdAContent")]
12939    pub unit_cbd_a_content: Option<f64>,
12940    #[serde(rename = "UnitCbdAContentDose")]
12941    pub unit_cbd_a_content_dose: Option<f64>,
12942    #[serde(rename = "UnitCbdAContentDoseUnitOfMeasure")]
12943    pub unit_cbd_a_content_dose_unit_of_measure: Option<String>,
12944    #[serde(rename = "UnitCbdAContentUnitOfMeasure")]
12945    pub unit_cbd_a_content_unit_of_measure: Option<String>,
12946    #[serde(rename = "UnitCbdAPercent")]
12947    pub unit_cbd_a_percent: Option<f64>,
12948    #[serde(rename = "UnitCbdContent")]
12949    pub unit_cbd_content: Option<f64>,
12950    #[serde(rename = "UnitCbdContentDose")]
12951    pub unit_cbd_content_dose: Option<f64>,
12952    #[serde(rename = "UnitCbdContentDoseUnitOfMeasure")]
12953    pub unit_cbd_content_dose_unit_of_measure: Option<String>,
12954    #[serde(rename = "UnitCbdContentUnitOfMeasure")]
12955    pub unit_cbd_content_unit_of_measure: Option<String>,
12956    #[serde(rename = "UnitCbdPercent")]
12957    pub unit_cbd_percent: Option<f64>,
12958    #[serde(rename = "UnitOfMeasure")]
12959    pub unit_of_measure: Option<String>,
12960    #[serde(rename = "UnitThcAContent")]
12961    pub unit_thc_a_content: Option<f64>,
12962    #[serde(rename = "UnitThcAContentDose")]
12963    pub unit_thc_a_content_dose: Option<f64>,
12964    #[serde(rename = "UnitThcAContentDoseUnitOfMeasure")]
12965    pub unit_thc_a_content_dose_unit_of_measure: Option<String>,
12966    #[serde(rename = "UnitThcAContentUnitOfMeasure")]
12967    pub unit_thc_a_content_unit_of_measure: Option<String>,
12968    #[serde(rename = "UnitThcAPercent")]
12969    pub unit_thc_a_percent: Option<f64>,
12970    #[serde(rename = "UnitThcContent")]
12971    pub unit_thc_content: Option<f64>,
12972    #[serde(rename = "UnitThcContentDose")]
12973    pub unit_thc_content_dose: Option<f64>,
12974    #[serde(rename = "UnitThcContentDoseUnitOfMeasure")]
12975    pub unit_thc_content_dose_unit_of_measure: Option<String>,
12976    #[serde(rename = "UnitThcContentUnitOfMeasure")]
12977    pub unit_thc_content_unit_of_measure: Option<String>,
12978    #[serde(rename = "UnitThcPercent")]
12979    pub unit_thc_percent: Option<f64>,
12980    #[serde(rename = "UnitVolume")]
12981    pub unit_volume: Option<f64>,
12982    #[serde(rename = "UnitVolumeUnitOfMeasure")]
12983    pub unit_volume_unit_of_measure: Option<String>,
12984    #[serde(rename = "UnitWeight")]
12985    pub unit_weight: Option<f64>,
12986    #[serde(rename = "UnitWeightUnitOfMeasure")]
12987    pub unit_weight_unit_of_measure: Option<String>,
12988}
12989
12990#[derive(Serialize, Deserialize, Debug, Clone)]
12991pub struct ItemsUpdateBrandV2RequestItem {
12992    #[serde(rename = "Id")]
12993    pub id: Option<i64>,
12994    #[serde(rename = "Name")]
12995    pub name: Option<String>,
12996}
12997
12998#[derive(Serialize, Deserialize, Debug, Clone)]
12999pub struct LocationsCreateV1RequestItem {
13000    #[serde(rename = "LocationTypeName")]
13001    pub location_type_name: Option<String>,
13002    #[serde(rename = "Name")]
13003    pub name: Option<String>,
13004}
13005
13006#[derive(Serialize, Deserialize, Debug, Clone)]
13007pub struct LocationsCreateV2RequestItem {
13008    #[serde(rename = "LocationTypeName")]
13009    pub location_type_name: Option<String>,
13010    #[serde(rename = "Name")]
13011    pub name: Option<String>,
13012}
13013
13014#[derive(Serialize, Deserialize, Debug, Clone)]
13015pub struct LocationsCreateUpdateV1RequestItem {
13016    #[serde(rename = "Id")]
13017    pub id: Option<i64>,
13018    #[serde(rename = "LocationTypeName")]
13019    pub location_type_name: Option<String>,
13020    #[serde(rename = "Name")]
13021    pub name: Option<String>,
13022}
13023
13024#[derive(Serialize, Deserialize, Debug, Clone)]
13025pub struct LocationsUpdateV2RequestItem {
13026    #[serde(rename = "Id")]
13027    pub id: Option<i64>,
13028    #[serde(rename = "LocationTypeName")]
13029    pub location_type_name: Option<String>,
13030    #[serde(rename = "Name")]
13031    pub name: Option<String>,
13032}
13033
13034#[derive(Serialize, Deserialize, Debug, Clone)]
13035pub struct PackagesCreateV1RequestItem {
13036    #[serde(rename = "ActualDate")]
13037    pub actual_date: Option<String>,
13038    #[serde(rename = "ExpirationDate")]
13039    pub expiration_date: Option<String>,
13040    #[serde(rename = "Ingredients")]
13041    pub ingredients: Option<Vec<PackagesCreateV1RequestItemIngredients>>,
13042    #[serde(rename = "IsDonation")]
13043    pub is_donation: Option<bool>,
13044    #[serde(rename = "IsProductionBatch")]
13045    pub is_production_batch: Option<bool>,
13046    #[serde(rename = "IsTradeSample")]
13047    pub is_trade_sample: Option<bool>,
13048    #[serde(rename = "Item")]
13049    pub item: Option<String>,
13050    #[serde(rename = "LabTestStageId")]
13051    pub lab_test_stage_id: Option<i64>,
13052    #[serde(rename = "Location")]
13053    pub location: Option<String>,
13054    #[serde(rename = "Note")]
13055    pub note: Option<String>,
13056    #[serde(rename = "PatientLicenseNumber")]
13057    pub patient_license_number: Option<String>,
13058    #[serde(rename = "ProcessingJobTypeId")]
13059    pub processing_job_type_id: Option<i64>,
13060    #[serde(rename = "ProductRequiresRemediation")]
13061    pub product_requires_remediation: Option<bool>,
13062    #[serde(rename = "ProductionBatchNumber")]
13063    pub production_batch_number: Option<String>,
13064    #[serde(rename = "Quantity")]
13065    pub quantity: Option<i64>,
13066    #[serde(rename = "RequiredLabTestBatches")]
13067    pub required_lab_test_batches: Option<bool>,
13068    #[serde(rename = "SellByDate")]
13069    pub sell_by_date: Option<String>,
13070    #[serde(rename = "Sublocation")]
13071    pub sublocation: Option<String>,
13072    #[serde(rename = "Tag")]
13073    pub tag: Option<String>,
13074    #[serde(rename = "UnitOfMeasure")]
13075    pub unit_of_measure: Option<String>,
13076    #[serde(rename = "UseByDate")]
13077    pub use_by_date: Option<String>,
13078    #[serde(rename = "UseSameItem")]
13079    pub use_same_item: Option<bool>,
13080}
13081
13082#[derive(Serialize, Deserialize, Debug, Clone)]
13083pub struct PackagesCreateV1RequestItemIngredients {
13084    #[serde(rename = "Package")]
13085    pub package: Option<String>,
13086    #[serde(rename = "Quantity")]
13087    pub quantity: Option<i64>,
13088    #[serde(rename = "UnitOfMeasure")]
13089    pub unit_of_measure: Option<String>,
13090}
13091
13092#[derive(Serialize, Deserialize, Debug, Clone)]
13093pub struct PackagesCreateV2RequestItem {
13094    #[serde(rename = "ActualDate")]
13095    pub actual_date: Option<String>,
13096    #[serde(rename = "ExpirationDate")]
13097    pub expiration_date: Option<String>,
13098    #[serde(rename = "Ingredients")]
13099    pub ingredients: Option<Vec<PackagesCreateV2RequestItemIngredients>>,
13100    #[serde(rename = "IsDonation")]
13101    pub is_donation: Option<bool>,
13102    #[serde(rename = "IsProductionBatch")]
13103    pub is_production_batch: Option<bool>,
13104    #[serde(rename = "IsTradeSample")]
13105    pub is_trade_sample: Option<bool>,
13106    #[serde(rename = "Item")]
13107    pub item: Option<String>,
13108    #[serde(rename = "LabTestStageId")]
13109    pub lab_test_stage_id: Option<i64>,
13110    #[serde(rename = "Location")]
13111    pub location: Option<String>,
13112    #[serde(rename = "Note")]
13113    pub note: Option<String>,
13114    #[serde(rename = "PatientLicenseNumber")]
13115    pub patient_license_number: Option<String>,
13116    #[serde(rename = "ProcessingJobTypeId")]
13117    pub processing_job_type_id: Option<i64>,
13118    #[serde(rename = "ProductRequiresRemediation")]
13119    pub product_requires_remediation: Option<bool>,
13120    #[serde(rename = "ProductionBatchNumber")]
13121    pub production_batch_number: Option<String>,
13122    #[serde(rename = "Quantity")]
13123    pub quantity: Option<i64>,
13124    #[serde(rename = "RequiredLabTestBatches")]
13125    pub required_lab_test_batches: Option<bool>,
13126    #[serde(rename = "SellByDate")]
13127    pub sell_by_date: Option<String>,
13128    #[serde(rename = "Sublocation")]
13129    pub sublocation: Option<String>,
13130    #[serde(rename = "Tag")]
13131    pub tag: Option<String>,
13132    #[serde(rename = "UnitOfMeasure")]
13133    pub unit_of_measure: Option<String>,
13134    #[serde(rename = "UseByDate")]
13135    pub use_by_date: Option<String>,
13136    #[serde(rename = "UseSameItem")]
13137    pub use_same_item: Option<bool>,
13138}
13139
13140#[derive(Serialize, Deserialize, Debug, Clone)]
13141pub struct PackagesCreateV2RequestItemIngredients {
13142    #[serde(rename = "Package")]
13143    pub package: Option<String>,
13144    #[serde(rename = "Quantity")]
13145    pub quantity: Option<i64>,
13146    #[serde(rename = "UnitOfMeasure")]
13147    pub unit_of_measure: Option<String>,
13148}
13149
13150#[derive(Serialize, Deserialize, Debug, Clone)]
13151pub struct PackagesCreateAdjustV1RequestItem {
13152    #[serde(rename = "AdjustmentDate")]
13153    pub adjustment_date: Option<String>,
13154    #[serde(rename = "AdjustmentReason")]
13155    pub adjustment_reason: Option<String>,
13156    #[serde(rename = "Label")]
13157    pub label: Option<String>,
13158    #[serde(rename = "Quantity")]
13159    pub quantity: Option<i64>,
13160    #[serde(rename = "ReasonNote")]
13161    pub reason_note: Option<String>,
13162    #[serde(rename = "UnitOfMeasure")]
13163    pub unit_of_measure: Option<String>,
13164}
13165
13166#[derive(Serialize, Deserialize, Debug, Clone)]
13167pub struct PackagesCreateAdjustV2RequestItem {
13168    #[serde(rename = "AdjustmentDate")]
13169    pub adjustment_date: Option<String>,
13170    #[serde(rename = "AdjustmentReason")]
13171    pub adjustment_reason: Option<String>,
13172    #[serde(rename = "Label")]
13173    pub label: Option<String>,
13174    #[serde(rename = "Quantity")]
13175    pub quantity: Option<i64>,
13176    #[serde(rename = "ReasonNote")]
13177    pub reason_note: Option<String>,
13178    #[serde(rename = "UnitOfMeasure")]
13179    pub unit_of_measure: Option<String>,
13180}
13181
13182#[derive(Serialize, Deserialize, Debug, Clone)]
13183pub struct PackagesCreateChangeItemV1RequestItem {
13184    #[serde(rename = "Item")]
13185    pub item: Option<String>,
13186    #[serde(rename = "Label")]
13187    pub label: Option<String>,
13188}
13189
13190#[derive(Serialize, Deserialize, Debug, Clone)]
13191pub struct PackagesCreateChangeLocationV1RequestItem {
13192    #[serde(rename = "Label")]
13193    pub label: Option<String>,
13194    #[serde(rename = "Location")]
13195    pub location: Option<String>,
13196    #[serde(rename = "MoveDate")]
13197    pub move_date: Option<String>,
13198    #[serde(rename = "Sublocation")]
13199    pub sublocation: Option<String>,
13200}
13201
13202#[derive(Serialize, Deserialize, Debug, Clone)]
13203pub struct PackagesCreateFinishV1RequestItem {
13204    #[serde(rename = "ActualDate")]
13205    pub actual_date: Option<String>,
13206    #[serde(rename = "Label")]
13207    pub label: Option<String>,
13208}
13209
13210#[derive(Serialize, Deserialize, Debug, Clone)]
13211pub struct PackagesCreatePlantingsV1RequestItem {
13212    #[serde(rename = "LocationName")]
13213    pub location_name: Option<String>,
13214    #[serde(rename = "PackageAdjustmentAmount")]
13215    pub package_adjustment_amount: Option<i64>,
13216    #[serde(rename = "PackageAdjustmentUnitOfMeasureName")]
13217    pub package_adjustment_unit_of_measure_name: Option<String>,
13218    #[serde(rename = "PackageLabel")]
13219    pub package_label: Option<String>,
13220    #[serde(rename = "PatientLicenseNumber")]
13221    pub patient_license_number: Option<String>,
13222    #[serde(rename = "PlantBatchName")]
13223    pub plant_batch_name: Option<String>,
13224    #[serde(rename = "PlantBatchType")]
13225    pub plant_batch_type: Option<String>,
13226    #[serde(rename = "PlantCount")]
13227    pub plant_count: Option<i64>,
13228    #[serde(rename = "PlantedDate")]
13229    pub planted_date: Option<String>,
13230    #[serde(rename = "StrainName")]
13231    pub strain_name: Option<String>,
13232    #[serde(rename = "SublocationName")]
13233    pub sublocation_name: Option<String>,
13234    #[serde(rename = "UnpackagedDate")]
13235    pub unpackaged_date: Option<String>,
13236}
13237
13238#[derive(Serialize, Deserialize, Debug, Clone)]
13239pub struct PackagesCreatePlantingsV2RequestItem {
13240    #[serde(rename = "LocationName")]
13241    pub location_name: Option<String>,
13242    #[serde(rename = "PackageAdjustmentAmount")]
13243    pub package_adjustment_amount: Option<i64>,
13244    #[serde(rename = "PackageAdjustmentUnitOfMeasureName")]
13245    pub package_adjustment_unit_of_measure_name: Option<String>,
13246    #[serde(rename = "PackageLabel")]
13247    pub package_label: Option<String>,
13248    #[serde(rename = "PatientLicenseNumber")]
13249    pub patient_license_number: Option<String>,
13250    #[serde(rename = "PlantBatchName")]
13251    pub plant_batch_name: Option<String>,
13252    #[serde(rename = "PlantBatchType")]
13253    pub plant_batch_type: Option<String>,
13254    #[serde(rename = "PlantCount")]
13255    pub plant_count: Option<i64>,
13256    #[serde(rename = "PlantedDate")]
13257    pub planted_date: Option<String>,
13258    #[serde(rename = "StrainName")]
13259    pub strain_name: Option<String>,
13260    #[serde(rename = "SublocationName")]
13261    pub sublocation_name: Option<String>,
13262    #[serde(rename = "UnpackagedDate")]
13263    pub unpackaged_date: Option<String>,
13264}
13265
13266#[derive(Serialize, Deserialize, Debug, Clone)]
13267pub struct PackagesCreateRemediateV1RequestItem {
13268    #[serde(rename = "PackageLabel")]
13269    pub package_label: Option<String>,
13270    #[serde(rename = "RemediationDate")]
13271    pub remediation_date: Option<String>,
13272    #[serde(rename = "RemediationMethodName")]
13273    pub remediation_method_name: Option<String>,
13274    #[serde(rename = "RemediationSteps")]
13275    pub remediation_steps: Option<String>,
13276}
13277
13278#[derive(Serialize, Deserialize, Debug, Clone)]
13279pub struct PackagesCreateTestingV1RequestItem {
13280    #[serde(rename = "ActualDate")]
13281    pub actual_date: Option<String>,
13282    #[serde(rename = "ExpirationDate")]
13283    pub expiration_date: Option<String>,
13284    #[serde(rename = "Ingredients")]
13285    pub ingredients: Option<Vec<PackagesCreateTestingV1RequestItemIngredients>>,
13286    #[serde(rename = "IsDonation")]
13287    pub is_donation: Option<bool>,
13288    #[serde(rename = "IsProductionBatch")]
13289    pub is_production_batch: Option<bool>,
13290    #[serde(rename = "IsTradeSample")]
13291    pub is_trade_sample: Option<bool>,
13292    #[serde(rename = "Item")]
13293    pub item: Option<String>,
13294    #[serde(rename = "LabTestStageId")]
13295    pub lab_test_stage_id: Option<i64>,
13296    #[serde(rename = "Location")]
13297    pub location: Option<String>,
13298    #[serde(rename = "Note")]
13299    pub note: Option<String>,
13300    #[serde(rename = "PatientLicenseNumber")]
13301    pub patient_license_number: Option<String>,
13302    #[serde(rename = "ProcessingJobTypeId")]
13303    pub processing_job_type_id: Option<i64>,
13304    #[serde(rename = "ProductRequiresRemediation")]
13305    pub product_requires_remediation: Option<bool>,
13306    #[serde(rename = "ProductionBatchNumber")]
13307    pub production_batch_number: Option<String>,
13308    #[serde(rename = "Quantity")]
13309    pub quantity: Option<i64>,
13310    #[serde(rename = "RequiredLabTestBatches")]
13311    pub required_lab_test_batches: Option<bool>,
13312    #[serde(rename = "SellByDate")]
13313    pub sell_by_date: Option<String>,
13314    #[serde(rename = "Sublocation")]
13315    pub sublocation: Option<String>,
13316    #[serde(rename = "Tag")]
13317    pub tag: Option<String>,
13318    #[serde(rename = "UnitOfMeasure")]
13319    pub unit_of_measure: Option<String>,
13320    #[serde(rename = "UseByDate")]
13321    pub use_by_date: Option<String>,
13322    #[serde(rename = "UseSameItem")]
13323    pub use_same_item: Option<bool>,
13324}
13325
13326#[derive(Serialize, Deserialize, Debug, Clone)]
13327pub struct PackagesCreateTestingV1RequestItemIngredients {
13328    #[serde(rename = "Package")]
13329    pub package: Option<String>,
13330    #[serde(rename = "Quantity")]
13331    pub quantity: Option<i64>,
13332    #[serde(rename = "UnitOfMeasure")]
13333    pub unit_of_measure: Option<String>,
13334}
13335
13336#[derive(Serialize, Deserialize, Debug, Clone)]
13337pub struct PackagesCreateTestingV2RequestItem {
13338    #[serde(rename = "ActualDate")]
13339    pub actual_date: Option<String>,
13340    #[serde(rename = "ExpirationDate")]
13341    pub expiration_date: Option<String>,
13342    #[serde(rename = "Ingredients")]
13343    pub ingredients: Option<Vec<PackagesCreateTestingV2RequestItemIngredients>>,
13344    #[serde(rename = "IsDonation")]
13345    pub is_donation: Option<bool>,
13346    #[serde(rename = "IsProductionBatch")]
13347    pub is_production_batch: Option<bool>,
13348    #[serde(rename = "IsTradeSample")]
13349    pub is_trade_sample: Option<bool>,
13350    #[serde(rename = "Item")]
13351    pub item: Option<String>,
13352    #[serde(rename = "LabTestStageId")]
13353    pub lab_test_stage_id: Option<i64>,
13354    #[serde(rename = "Location")]
13355    pub location: Option<String>,
13356    #[serde(rename = "Note")]
13357    pub note: Option<String>,
13358    #[serde(rename = "PatientLicenseNumber")]
13359    pub patient_license_number: Option<String>,
13360    #[serde(rename = "ProcessingJobTypeId")]
13361    pub processing_job_type_id: Option<i64>,
13362    #[serde(rename = "ProductRequiresRemediation")]
13363    pub product_requires_remediation: Option<bool>,
13364    #[serde(rename = "ProductionBatchNumber")]
13365    pub production_batch_number: Option<String>,
13366    #[serde(rename = "Quantity")]
13367    pub quantity: Option<i64>,
13368    #[serde(rename = "RequiredLabTestBatches")]
13369    pub required_lab_test_batches: Option<Vec<String>>,
13370    #[serde(rename = "SellByDate")]
13371    pub sell_by_date: Option<String>,
13372    #[serde(rename = "Sublocation")]
13373    pub sublocation: Option<String>,
13374    #[serde(rename = "Tag")]
13375    pub tag: Option<String>,
13376    #[serde(rename = "UnitOfMeasure")]
13377    pub unit_of_measure: Option<String>,
13378    #[serde(rename = "UseByDate")]
13379    pub use_by_date: Option<String>,
13380    #[serde(rename = "UseSameItem")]
13381    pub use_same_item: Option<bool>,
13382}
13383
13384#[derive(Serialize, Deserialize, Debug, Clone)]
13385pub struct PackagesCreateTestingV2RequestItemIngredients {
13386    #[serde(rename = "Package")]
13387    pub package: Option<String>,
13388    #[serde(rename = "Quantity")]
13389    pub quantity: Option<i64>,
13390    #[serde(rename = "UnitOfMeasure")]
13391    pub unit_of_measure: Option<String>,
13392}
13393
13394#[derive(Serialize, Deserialize, Debug, Clone)]
13395pub struct PackagesCreateUnfinishV1RequestItem {
13396    #[serde(rename = "Label")]
13397    pub label: Option<String>,
13398}
13399
13400#[derive(Serialize, Deserialize, Debug, Clone)]
13401pub struct PackagesUpdateAdjustV2RequestItem {
13402    #[serde(rename = "AdjustmentDate")]
13403    pub adjustment_date: Option<String>,
13404    #[serde(rename = "AdjustmentReason")]
13405    pub adjustment_reason: Option<String>,
13406    #[serde(rename = "Label")]
13407    pub label: Option<String>,
13408    #[serde(rename = "Quantity")]
13409    pub quantity: Option<i64>,
13410    #[serde(rename = "ReasonNote")]
13411    pub reason_note: Option<String>,
13412    #[serde(rename = "UnitOfMeasure")]
13413    pub unit_of_measure: Option<String>,
13414}
13415
13416#[derive(Serialize, Deserialize, Debug, Clone)]
13417pub struct PackagesUpdateChangeNoteV1RequestItem {
13418    #[serde(rename = "Note")]
13419    pub note: Option<String>,
13420    #[serde(rename = "PackageLabel")]
13421    pub package_label: Option<String>,
13422}
13423
13424#[derive(Serialize, Deserialize, Debug, Clone)]
13425pub struct PackagesUpdateDecontaminateV2RequestItem {
13426    #[serde(rename = "DecontaminationDate")]
13427    pub decontamination_date: Option<String>,
13428    #[serde(rename = "DecontaminationMethodName")]
13429    pub decontamination_method_name: Option<String>,
13430    #[serde(rename = "DecontaminationSteps")]
13431    pub decontamination_steps: Option<String>,
13432    #[serde(rename = "PackageLabel")]
13433    pub package_label: Option<String>,
13434}
13435
13436#[derive(Serialize, Deserialize, Debug, Clone)]
13437pub struct PackagesUpdateDonationFlagV2RequestItem {
13438    #[serde(rename = "Label")]
13439    pub label: Option<String>,
13440}
13441
13442#[derive(Serialize, Deserialize, Debug, Clone)]
13443pub struct PackagesUpdateDonationUnflagV2RequestItem {
13444    #[serde(rename = "Label")]
13445    pub label: Option<String>,
13446}
13447
13448#[derive(Serialize, Deserialize, Debug, Clone)]
13449pub struct PackagesUpdateExternalidV2RequestItem {
13450    #[serde(rename = "ExternalId")]
13451    pub external_id: Option<String>,
13452    #[serde(rename = "PackageLabel")]
13453    pub package_label: Option<String>,
13454}
13455
13456#[derive(Serialize, Deserialize, Debug, Clone)]
13457pub struct PackagesUpdateFinishV2RequestItem {
13458    #[serde(rename = "ActualDate")]
13459    pub actual_date: Option<String>,
13460    #[serde(rename = "Label")]
13461    pub label: Option<String>,
13462}
13463
13464#[derive(Serialize, Deserialize, Debug, Clone)]
13465pub struct PackagesUpdateItemV2RequestItem {
13466    #[serde(rename = "Item")]
13467    pub item: Option<String>,
13468    #[serde(rename = "Label")]
13469    pub label: Option<String>,
13470}
13471
13472#[derive(Serialize, Deserialize, Debug, Clone)]
13473pub struct PackagesUpdateLabTestRequiredV2RequestItem {
13474    #[serde(rename = "Label")]
13475    pub label: Option<String>,
13476    #[serde(rename = "RequiredLabTestBatches")]
13477    pub required_lab_test_batches: Option<Vec<String>>,
13478}
13479
13480#[derive(Serialize, Deserialize, Debug, Clone)]
13481pub struct PackagesUpdateLocationV2RequestItem {
13482    #[serde(rename = "Label")]
13483    pub label: Option<String>,
13484    #[serde(rename = "Location")]
13485    pub location: Option<String>,
13486    #[serde(rename = "MoveDate")]
13487    pub move_date: Option<String>,
13488    #[serde(rename = "Sublocation")]
13489    pub sublocation: Option<String>,
13490}
13491
13492#[derive(Serialize, Deserialize, Debug, Clone)]
13493pub struct PackagesUpdateNoteV2RequestItem {
13494    #[serde(rename = "Note")]
13495    pub note: Option<String>,
13496    #[serde(rename = "PackageLabel")]
13497    pub package_label: Option<String>,
13498}
13499
13500#[derive(Serialize, Deserialize, Debug, Clone)]
13501pub struct PackagesUpdateRemediateV2RequestItem {
13502    #[serde(rename = "PackageLabel")]
13503    pub package_label: Option<String>,
13504    #[serde(rename = "RemediationDate")]
13505    pub remediation_date: Option<String>,
13506    #[serde(rename = "RemediationMethodName")]
13507    pub remediation_method_name: Option<String>,
13508    #[serde(rename = "RemediationSteps")]
13509    pub remediation_steps: Option<String>,
13510}
13511
13512#[derive(Serialize, Deserialize, Debug, Clone)]
13513pub struct PackagesUpdateTradesampleFlagV2RequestItem {
13514    #[serde(rename = "Label")]
13515    pub label: Option<String>,
13516}
13517
13518#[derive(Serialize, Deserialize, Debug, Clone)]
13519pub struct PackagesUpdateTradesampleUnflagV2RequestItem {
13520    #[serde(rename = "Label")]
13521    pub label: Option<String>,
13522}
13523
13524#[derive(Serialize, Deserialize, Debug, Clone)]
13525pub struct PackagesUpdateUnfinishV2RequestItem {
13526    #[serde(rename = "Label")]
13527    pub label: Option<String>,
13528}
13529
13530#[derive(Serialize, Deserialize, Debug, Clone)]
13531pub struct PackagesUpdateUsebydateV2RequestItem {
13532    #[serde(rename = "ExpirationDate")]
13533    pub expiration_date: Option<String>,
13534    #[serde(rename = "Label")]
13535    pub label: Option<String>,
13536    #[serde(rename = "SellByDate")]
13537    pub sell_by_date: Option<String>,
13538    #[serde(rename = "UseByDate")]
13539    pub use_by_date: Option<String>,
13540}
13541
13542#[derive(Serialize, Deserialize, Debug, Clone)]
13543pub struct PatientCheckInsCreateV1RequestItem {
13544    #[serde(rename = "CheckInDate")]
13545    pub check_in_date: Option<String>,
13546    #[serde(rename = "CheckInLocationId")]
13547    pub check_in_location_id: Option<i64>,
13548    #[serde(rename = "PatientLicenseNumber")]
13549    pub patient_license_number: Option<String>,
13550    #[serde(rename = "RegistrationExpiryDate")]
13551    pub registration_expiry_date: Option<String>,
13552    #[serde(rename = "RegistrationStartDate")]
13553    pub registration_start_date: Option<String>,
13554}
13555
13556#[derive(Serialize, Deserialize, Debug, Clone)]
13557pub struct PatientCheckInsCreateV2RequestItem {
13558    #[serde(rename = "CheckInDate")]
13559    pub check_in_date: Option<String>,
13560    #[serde(rename = "CheckInLocationId")]
13561    pub check_in_location_id: Option<i64>,
13562    #[serde(rename = "PatientLicenseNumber")]
13563    pub patient_license_number: Option<String>,
13564    #[serde(rename = "RegistrationExpiryDate")]
13565    pub registration_expiry_date: Option<String>,
13566    #[serde(rename = "RegistrationStartDate")]
13567    pub registration_start_date: Option<String>,
13568}
13569
13570#[derive(Serialize, Deserialize, Debug, Clone)]
13571pub struct PatientCheckInsUpdateV1RequestItem {
13572    #[serde(rename = "CheckInDate")]
13573    pub check_in_date: Option<String>,
13574    #[serde(rename = "CheckInLocationId")]
13575    pub check_in_location_id: Option<i64>,
13576    #[serde(rename = "Id")]
13577    pub id: Option<i64>,
13578    #[serde(rename = "PatientLicenseNumber")]
13579    pub patient_license_number: Option<String>,
13580    #[serde(rename = "RegistrationExpiryDate")]
13581    pub registration_expiry_date: Option<String>,
13582    #[serde(rename = "RegistrationStartDate")]
13583    pub registration_start_date: Option<String>,
13584}
13585
13586#[derive(Serialize, Deserialize, Debug, Clone)]
13587pub struct PatientCheckInsUpdateV2RequestItem {
13588    #[serde(rename = "CheckInDate")]
13589    pub check_in_date: Option<String>,
13590    #[serde(rename = "CheckInLocationId")]
13591    pub check_in_location_id: Option<i64>,
13592    #[serde(rename = "Id")]
13593    pub id: Option<i64>,
13594    #[serde(rename = "PatientLicenseNumber")]
13595    pub patient_license_number: Option<String>,
13596    #[serde(rename = "RegistrationExpiryDate")]
13597    pub registration_expiry_date: Option<String>,
13598    #[serde(rename = "RegistrationStartDate")]
13599    pub registration_start_date: Option<String>,
13600}
13601
13602#[derive(Serialize, Deserialize, Debug, Clone)]
13603pub struct PatientsCreateV2RequestItem {
13604    #[serde(rename = "ActualDate")]
13605    pub actual_date: Option<String>,
13606    #[serde(rename = "ConcentrateOuncesAllowed")]
13607    pub concentrate_ounces_allowed: Option<i64>,
13608    #[serde(rename = "FlowerOuncesAllowed")]
13609    pub flower_ounces_allowed: Option<i64>,
13610    #[serde(rename = "HasSalesLimitExemption")]
13611    pub has_sales_limit_exemption: Option<bool>,
13612    #[serde(rename = "InfusedOuncesAllowed")]
13613    pub infused_ounces_allowed: Option<i64>,
13614    #[serde(rename = "LicenseEffectiveEndDate")]
13615    pub license_effective_end_date: Option<String>,
13616    #[serde(rename = "LicenseEffectiveStartDate")]
13617    pub license_effective_start_date: Option<String>,
13618    #[serde(rename = "LicenseNumber")]
13619    pub license_number: Option<String>,
13620    #[serde(rename = "MaxConcentrateThcPercentAllowed")]
13621    pub max_concentrate_thc_percent_allowed: Option<i64>,
13622    #[serde(rename = "MaxFlowerThcPercentAllowed")]
13623    pub max_flower_thc_percent_allowed: Option<i64>,
13624    #[serde(rename = "RecommendedPlants")]
13625    pub recommended_plants: Option<i64>,
13626    #[serde(rename = "RecommendedSmokableQuantity")]
13627    pub recommended_smokable_quantity: Option<i64>,
13628    #[serde(rename = "ThcOuncesAllowed")]
13629    pub thc_ounces_allowed: Option<i64>,
13630}
13631
13632#[derive(Serialize, Deserialize, Debug, Clone)]
13633pub struct PatientsCreateAddV1RequestItem {
13634    #[serde(rename = "ActualDate")]
13635    pub actual_date: Option<String>,
13636    #[serde(rename = "ConcentrateOuncesAllowed")]
13637    pub concentrate_ounces_allowed: Option<i64>,
13638    #[serde(rename = "FlowerOuncesAllowed")]
13639    pub flower_ounces_allowed: Option<i64>,
13640    #[serde(rename = "HasSalesLimitExemption")]
13641    pub has_sales_limit_exemption: Option<bool>,
13642    #[serde(rename = "InfusedOuncesAllowed")]
13643    pub infused_ounces_allowed: Option<i64>,
13644    #[serde(rename = "LicenseEffectiveEndDate")]
13645    pub license_effective_end_date: Option<String>,
13646    #[serde(rename = "LicenseEffectiveStartDate")]
13647    pub license_effective_start_date: Option<String>,
13648    #[serde(rename = "LicenseNumber")]
13649    pub license_number: Option<String>,
13650    #[serde(rename = "MaxConcentrateThcPercentAllowed")]
13651    pub max_concentrate_thc_percent_allowed: Option<i64>,
13652    #[serde(rename = "MaxFlowerThcPercentAllowed")]
13653    pub max_flower_thc_percent_allowed: Option<i64>,
13654    #[serde(rename = "RecommendedPlants")]
13655    pub recommended_plants: Option<i64>,
13656    #[serde(rename = "RecommendedSmokableQuantity")]
13657    pub recommended_smokable_quantity: Option<i64>,
13658    #[serde(rename = "ThcOuncesAllowed")]
13659    pub thc_ounces_allowed: Option<i64>,
13660}
13661
13662#[derive(Serialize, Deserialize, Debug, Clone)]
13663pub struct PatientsCreateUpdateV1RequestItem {
13664    #[serde(rename = "ActualDate")]
13665    pub actual_date: Option<String>,
13666    #[serde(rename = "ConcentrateOuncesAllowed")]
13667    pub concentrate_ounces_allowed: Option<i64>,
13668    #[serde(rename = "FlowerOuncesAllowed")]
13669    pub flower_ounces_allowed: Option<i64>,
13670    #[serde(rename = "HasSalesLimitExemption")]
13671    pub has_sales_limit_exemption: Option<bool>,
13672    #[serde(rename = "InfusedOuncesAllowed")]
13673    pub infused_ounces_allowed: Option<i64>,
13674    #[serde(rename = "LicenseEffectiveEndDate")]
13675    pub license_effective_end_date: Option<String>,
13676    #[serde(rename = "LicenseEffectiveStartDate")]
13677    pub license_effective_start_date: Option<String>,
13678    #[serde(rename = "LicenseNumber")]
13679    pub license_number: Option<String>,
13680    #[serde(rename = "MaxConcentrateThcPercentAllowed")]
13681    pub max_concentrate_thc_percent_allowed: Option<i64>,
13682    #[serde(rename = "MaxFlowerThcPercentAllowed")]
13683    pub max_flower_thc_percent_allowed: Option<i64>,
13684    #[serde(rename = "NewLicenseNumber")]
13685    pub new_license_number: Option<String>,
13686    #[serde(rename = "RecommendedPlants")]
13687    pub recommended_plants: Option<i64>,
13688    #[serde(rename = "RecommendedSmokableQuantity")]
13689    pub recommended_smokable_quantity: Option<i64>,
13690    #[serde(rename = "ThcOuncesAllowed")]
13691    pub thc_ounces_allowed: Option<i64>,
13692}
13693
13694#[derive(Serialize, Deserialize, Debug, Clone)]
13695pub struct PatientsUpdateV2RequestItem {
13696    #[serde(rename = "ActualDate")]
13697    pub actual_date: Option<String>,
13698    #[serde(rename = "ConcentrateOuncesAllowed")]
13699    pub concentrate_ounces_allowed: Option<i64>,
13700    #[serde(rename = "FlowerOuncesAllowed")]
13701    pub flower_ounces_allowed: Option<i64>,
13702    #[serde(rename = "HasSalesLimitExemption")]
13703    pub has_sales_limit_exemption: Option<bool>,
13704    #[serde(rename = "InfusedOuncesAllowed")]
13705    pub infused_ounces_allowed: Option<i64>,
13706    #[serde(rename = "LicenseEffectiveEndDate")]
13707    pub license_effective_end_date: Option<String>,
13708    #[serde(rename = "LicenseEffectiveStartDate")]
13709    pub license_effective_start_date: Option<String>,
13710    #[serde(rename = "LicenseNumber")]
13711    pub license_number: Option<String>,
13712    #[serde(rename = "MaxConcentrateThcPercentAllowed")]
13713    pub max_concentrate_thc_percent_allowed: Option<i64>,
13714    #[serde(rename = "MaxFlowerThcPercentAllowed")]
13715    pub max_flower_thc_percent_allowed: Option<i64>,
13716    #[serde(rename = "NewLicenseNumber")]
13717    pub new_license_number: Option<String>,
13718    #[serde(rename = "RecommendedPlants")]
13719    pub recommended_plants: Option<i64>,
13720    #[serde(rename = "RecommendedSmokableQuantity")]
13721    pub recommended_smokable_quantity: Option<i64>,
13722    #[serde(rename = "ThcOuncesAllowed")]
13723    pub thc_ounces_allowed: Option<i64>,
13724}
13725
13726#[derive(Serialize, Deserialize, Debug, Clone)]
13727pub struct AdditivesTemplatesCreateV2RequestItem {
13728    #[serde(rename = "ActiveIngredients")]
13729    pub active_ingredients: Option<Vec<AdditivesTemplatesCreateV2RequestItemActiveIngredients>>,
13730    #[serde(rename = "AdditiveType")]
13731    pub additive_type: Option<String>,
13732    #[serde(rename = "ApplicationDevice")]
13733    pub application_device: Option<String>,
13734    #[serde(rename = "EpaRegistrationNumber")]
13735    pub epa_registration_number: Option<String>,
13736    #[serde(rename = "Name")]
13737    pub name: Option<String>,
13738    #[serde(rename = "Note")]
13739    pub note: Option<String>,
13740    #[serde(rename = "ProductSupplier")]
13741    pub product_supplier: Option<String>,
13742    #[serde(rename = "ProductTradeName")]
13743    pub product_trade_name: Option<String>,
13744    #[serde(rename = "RestrictiveEntryIntervalQuantityDescription")]
13745    pub restrictive_entry_interval_quantity_description: Option<String>,
13746    #[serde(rename = "RestrictiveEntryIntervalTimeDescription")]
13747    pub restrictive_entry_interval_time_description: Option<String>,
13748}
13749
13750#[derive(Serialize, Deserialize, Debug, Clone)]
13751pub struct AdditivesTemplatesCreateV2RequestItemActiveIngredients {
13752    #[serde(rename = "Name")]
13753    pub name: Option<String>,
13754    #[serde(rename = "Percentage")]
13755    pub percentage: Option<f64>,
13756}
13757
13758#[derive(Serialize, Deserialize, Debug, Clone)]
13759pub struct AdditivesTemplatesUpdateV2RequestItem {
13760    #[serde(rename = "ActiveIngredients")]
13761    pub active_ingredients: Option<Vec<AdditivesTemplatesUpdateV2RequestItemActiveIngredients>>,
13762    #[serde(rename = "AdditiveType")]
13763    pub additive_type: Option<String>,
13764    #[serde(rename = "ApplicationDevice")]
13765    pub application_device: Option<String>,
13766    #[serde(rename = "EpaRegistrationNumber")]
13767    pub epa_registration_number: Option<String>,
13768    #[serde(rename = "Id")]
13769    pub id: Option<i64>,
13770    #[serde(rename = "Name")]
13771    pub name: Option<String>,
13772    #[serde(rename = "Note")]
13773    pub note: Option<String>,
13774    #[serde(rename = "ProductSupplier")]
13775    pub product_supplier: Option<String>,
13776    #[serde(rename = "ProductTradeName")]
13777    pub product_trade_name: Option<String>,
13778    #[serde(rename = "RestrictiveEntryIntervalQuantityDescription")]
13779    pub restrictive_entry_interval_quantity_description: Option<String>,
13780    #[serde(rename = "RestrictiveEntryIntervalTimeDescription")]
13781    pub restrictive_entry_interval_time_description: Option<String>,
13782}
13783
13784#[derive(Serialize, Deserialize, Debug, Clone)]
13785pub struct AdditivesTemplatesUpdateV2RequestItemActiveIngredients {
13786    #[serde(rename = "Name")]
13787    pub name: Option<String>,
13788    #[serde(rename = "Percentage")]
13789    pub percentage: Option<f64>,
13790}
13791
13792#[derive(Serialize, Deserialize, Debug, Clone)]
13793pub struct LabTestsCreateRecordV1RequestItem {
13794    #[serde(rename = "DocumentFileBase64")]
13795    pub document_file_base64: Option<String>,
13796    #[serde(rename = "DocumentFileName")]
13797    pub document_file_name: Option<String>,
13798    #[serde(rename = "Label")]
13799    pub label: Option<String>,
13800    #[serde(rename = "ResultDate")]
13801    pub result_date: Option<String>,
13802    #[serde(rename = "Results")]
13803    pub results: Option<Vec<LabTestsCreateRecordV1RequestItemResults>>,
13804}
13805
13806#[derive(Serialize, Deserialize, Debug, Clone)]
13807pub struct LabTestsCreateRecordV1RequestItemResults {
13808    #[serde(rename = "LabTestTypeName")]
13809    pub lab_test_type_name: Option<String>,
13810    #[serde(rename = "Notes")]
13811    pub notes: Option<String>,
13812    #[serde(rename = "Passed")]
13813    pub passed: Option<bool>,
13814    #[serde(rename = "Quantity")]
13815    pub quantity: Option<f64>,
13816}
13817
13818#[derive(Serialize, Deserialize, Debug, Clone)]
13819pub struct LabTestsCreateRecordV2RequestItem {
13820    #[serde(rename = "DocumentFileBase64")]
13821    pub document_file_base64: Option<String>,
13822    #[serde(rename = "DocumentFileName")]
13823    pub document_file_name: Option<String>,
13824    #[serde(rename = "Label")]
13825    pub label: Option<String>,
13826    #[serde(rename = "ResultDate")]
13827    pub result_date: Option<String>,
13828    #[serde(rename = "Results")]
13829    pub results: Option<Vec<LabTestsCreateRecordV2RequestItemResults>>,
13830}
13831
13832#[derive(Serialize, Deserialize, Debug, Clone)]
13833pub struct LabTestsCreateRecordV2RequestItemResults {
13834    #[serde(rename = "LabTestTypeName")]
13835    pub lab_test_type_name: Option<String>,
13836    #[serde(rename = "Notes")]
13837    pub notes: Option<String>,
13838    #[serde(rename = "Passed")]
13839    pub passed: Option<bool>,
13840    #[serde(rename = "Quantity")]
13841    pub quantity: Option<f64>,
13842}
13843
13844#[derive(Serialize, Deserialize, Debug, Clone)]
13845pub struct LabTestsUpdateLabtestdocumentV1RequestItem {
13846    #[serde(rename = "DocumentFileBase64")]
13847    pub document_file_base64: Option<String>,
13848    #[serde(rename = "DocumentFileName")]
13849    pub document_file_name: Option<String>,
13850    #[serde(rename = "LabTestResultId")]
13851    pub lab_test_result_id: Option<i64>,
13852}
13853
13854#[derive(Serialize, Deserialize, Debug, Clone)]
13855pub struct LabTestsUpdateLabtestdocumentV2RequestItem {
13856    #[serde(rename = "DocumentFileBase64")]
13857    pub document_file_base64: Option<String>,
13858    #[serde(rename = "DocumentFileName")]
13859    pub document_file_name: Option<String>,
13860    #[serde(rename = "LabTestResultId")]
13861    pub lab_test_result_id: Option<i64>,
13862}
13863
13864#[derive(Serialize, Deserialize, Debug, Clone)]
13865pub struct LabTestsUpdateResultReleaseV1RequestItem {
13866    #[serde(rename = "PackageLabel")]
13867    pub package_label: Option<String>,
13868}
13869
13870#[derive(Serialize, Deserialize, Debug, Clone)]
13871pub struct LabTestsUpdateResultReleaseV2RequestItem {
13872    #[serde(rename = "PackageLabel")]
13873    pub package_label: Option<String>,
13874}
13875