1#![allow(
14 missing_docs,
15 clippy::doc_lazy_continuation,
16 clippy::doc_overindented_list_items
17)]
18
19use serde::{Deserialize, Serialize};
20
21#[derive(Debug, Clone, Default, Serialize, Deserialize)]
23pub struct BulkEditPriceDto {
24 #[serde(rename = "_id")]
27 pub id: String,
28 #[serde(default, skip_serializing_if = "Option::is_none")]
30 pub name: Option<String>,
31 #[serde(default, skip_serializing_if = "Option::is_none")]
33 pub amount: Option<f64>,
34 #[serde(default, skip_serializing_if = "Option::is_none")]
36 pub currency: Option<String>,
37 #[serde(
39 rename = "compareAtPrice",
40 default,
41 skip_serializing_if = "Option::is_none"
42 )]
43 pub compare_at_price: Option<f64>,
44 #[serde(
46 rename = "availableQuantity",
47 default,
48 skip_serializing_if = "Option::is_none"
49 )]
50 pub available_quantity: Option<f64>,
51 #[serde(
53 rename = "trackInventory",
54 default,
55 skip_serializing_if = "Option::is_none"
56 )]
57 pub track_inventory: Option<bool>,
58 #[serde(
60 rename = "allowOutOfStockPurchases",
61 default,
62 skip_serializing_if = "Option::is_none"
63 )]
64 pub allow_out_of_stock_purchases: Option<bool>,
65 #[serde(default, skip_serializing_if = "Option::is_none")]
67 pub sku: Option<String>,
68 #[serde(
70 rename = "trialPeriod",
71 default,
72 skip_serializing_if = "Option::is_none"
73 )]
74 pub trial_period: Option<f64>,
75 #[serde(
77 rename = "totalCycles",
78 default,
79 skip_serializing_if = "Option::is_none"
80 )]
81 pub total_cycles: Option<f64>,
82 #[serde(rename = "setupFee", default, skip_serializing_if = "Option::is_none")]
84 pub setup_fee: Option<f64>,
85 #[serde(
87 rename = "shippingOptions",
88 default,
89 skip_serializing_if = "Option::is_none"
90 )]
91 pub shipping_options: Option<ShippingOptionsDto>,
92 #[serde(default, skip_serializing_if = "Option::is_none")]
94 pub recurring: Option<RecurringDto>,
95}
96
97#[derive(Debug, Clone, Default, Serialize, Deserialize)]
99pub struct BulkEditProductDto {
100 #[serde(rename = "_id")]
103 pub id: String,
104 #[serde(default, skip_serializing_if = "Option::is_none")]
106 pub name: Option<String>,
107 #[serde(default, skip_serializing_if = "Option::is_none")]
109 pub description: Option<String>,
110 #[serde(default, skip_serializing_if = "Option::is_none")]
112 pub image: Option<String>,
113 #[serde(
115 rename = "availableInStore",
116 default,
117 skip_serializing_if = "Option::is_none"
118 )]
119 pub available_in_store: Option<bool>,
120 #[serde(default, skip_serializing_if = "Vec::is_empty")]
122 pub prices: Vec<BulkEditPriceDto>,
123 #[serde(
125 rename = "collectionIds",
126 default,
127 skip_serializing_if = "Vec::is_empty"
128 )]
129 pub collection_ids: Vec<String>,
130 #[serde(
132 rename = "isLabelEnabled",
133 default,
134 skip_serializing_if = "Option::is_none"
135 )]
136 pub is_label_enabled: Option<bool>,
137 #[serde(
139 rename = "isTaxesEnabled",
140 default,
141 skip_serializing_if = "Option::is_none"
142 )]
143 pub is_taxes_enabled: Option<bool>,
144 #[serde(default, skip_serializing_if = "Option::is_none")]
146 pub seo: Option<ProductSEODto>,
147 #[serde(default, skip_serializing_if = "Option::is_none")]
149 pub slug: Option<String>,
150 #[serde(
152 rename = "automaticTaxCategoryId",
153 default,
154 skip_serializing_if = "Option::is_none"
155 )]
156 pub automatic_tax_category_id: Option<String>,
157 #[serde(
159 rename = "taxInclusive",
160 default,
161 skip_serializing_if = "Option::is_none"
162 )]
163 pub tax_inclusive: Option<bool>,
164 #[serde(default, skip_serializing_if = "Vec::is_empty")]
166 pub taxes: Vec<serde_json::Value>,
167 #[serde(default, skip_serializing_if = "Vec::is_empty")]
169 pub medias: Vec<serde_json::Value>,
170 #[serde(default, skip_serializing_if = "Option::is_none")]
172 pub label: Option<serde_json::Value>,
173}
174
175#[derive(Debug, Clone, Default, Serialize, Deserialize)]
177pub struct BulkEditRequestDto {
178 #[serde(rename = "altId")]
181 pub alt_id: String,
182 #[serde(rename = "altType")]
185 pub alt_type: String,
186 #[serde(default, skip_serializing_if = "Vec::is_empty")]
190 pub products: Vec<BulkEditProductDto>,
191}
192
193#[derive(Debug, Clone, Default, Serialize, Deserialize)]
195pub struct BulkEditResponseDto {
196 #[serde(default, skip_serializing_if = "Option::is_none")]
200 pub message: Option<String>,
201 #[serde(default, skip_serializing_if = "Option::is_none")]
205 pub status: Option<bool>,
206 #[serde(
210 rename = "updatedCount",
211 default,
212 skip_serializing_if = "Option::is_none"
213 )]
214 pub updated_count: Option<f64>,
215}
216
217#[derive(Debug, Clone, Default, Serialize, Deserialize)]
219pub struct BulkUpdateDto {
220 #[serde(rename = "altId")]
223 pub alt_id: String,
224 #[serde(rename = "altType")]
227 pub alt_type: String,
228 #[serde(rename = "type")]
233 pub type_: String,
234 #[serde(rename = "productIds", default, skip_serializing_if = "Vec::is_empty")]
237 pub product_ids: Vec<String>,
238 #[serde(default, skip_serializing_if = "Option::is_none")]
240 pub filters: Option<BulkUpdateFilters>,
241 #[serde(default, skip_serializing_if = "Option::is_none")]
243 pub price: Option<PriceUpdateField>,
244 #[serde(
246 rename = "compareAtPrice",
247 default,
248 skip_serializing_if = "Option::is_none"
249 )]
250 pub compare_at_price: Option<PriceUpdateField>,
251 #[serde(default, skip_serializing_if = "Option::is_none")]
253 pub availability: Option<bool>,
254 #[serde(
256 rename = "collectionIds",
257 default,
258 skip_serializing_if = "Vec::is_empty"
259 )]
260 pub collection_ids: Vec<String>,
261 #[serde(default, skip_serializing_if = "Option::is_none")]
263 pub currency: Option<String>,
264}
265
266#[derive(Debug, Clone, Default, Serialize, Deserialize)]
268pub struct BulkUpdateFilters {
269 #[serde(
271 rename = "collectionIds",
272 default,
273 skip_serializing_if = "Vec::is_empty"
274 )]
275 pub collection_ids: Vec<String>,
276 #[serde(
278 rename = "productType",
279 default,
280 skip_serializing_if = "Option::is_none"
281 )]
282 pub product_type: Option<String>,
283 #[serde(
285 rename = "availableInStore",
286 default,
287 skip_serializing_if = "Option::is_none"
288 )]
289 pub available_in_store: Option<bool>,
290 #[serde(default, skip_serializing_if = "Option::is_none")]
292 pub search: Option<String>,
293}
294
295#[derive(Debug, Clone, Default, Serialize, Deserialize)]
297pub struct BulkUpdateResponseDto {
298 #[serde(default, skip_serializing_if = "Option::is_none")]
302 pub status: Option<bool>,
303 #[serde(default, skip_serializing_if = "Option::is_none")]
305 pub message: Option<String>,
306}
307
308#[derive(Debug, Clone, Default, Serialize, Deserialize)]
310pub struct CollectionSEODto {
311 #[serde(default, skip_serializing_if = "Option::is_none")]
313 pub title: Option<String>,
314 #[serde(default, skip_serializing_if = "Option::is_none")]
316 pub description: Option<String>,
317}
318
319#[derive(Debug, Clone, Default, Serialize, Deserialize)]
321pub struct CollectionSchema {
322 #[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
326 pub id: Option<String>,
327 #[serde(rename = "altId", default, skip_serializing_if = "Option::is_none")]
331 pub alt_id: Option<String>,
332 #[serde(default, skip_serializing_if = "Option::is_none")]
336 pub name: Option<String>,
337 #[serde(default, skip_serializing_if = "Option::is_none")]
342 pub slug: Option<String>,
343 #[serde(default, skip_serializing_if = "Option::is_none")]
347 pub image: Option<String>,
348 #[serde(default, skip_serializing_if = "Option::is_none")]
352 pub seo: Option<CollectionSEODto>,
353 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
357 pub created_at: Option<String>,
358}
359
360#[derive(Debug, Clone, Default, Serialize, Deserialize)]
362pub struct CountReviewsByStatusResponseDto {
363 #[serde(default, skip_serializing_if = "Vec::is_empty")]
367 pub data: Vec<Vec<serde_json::Value>>,
368}
369
370#[derive(Debug, Clone, Default, Serialize, Deserialize)]
372pub struct CreateCollectionResponseDto {
373 #[serde(default, skip_serializing_if = "Option::is_none")]
377 pub data: Option<CollectionSchema>,
378}
379
380#[derive(Debug, Clone, Default, Serialize, Deserialize)]
382pub struct CreatePriceDto {
383 pub name: String,
386 #[serde(rename = "type")]
390 pub type_: String,
391 pub currency: String,
394 pub amount: f64,
397 #[serde(default, skip_serializing_if = "Option::is_none")]
399 pub recurring: Option<RecurringDto>,
400 #[serde(default, skip_serializing_if = "Option::is_none")]
402 pub description: Option<String>,
403 #[serde(
405 rename = "membershipOffers",
406 default,
407 skip_serializing_if = "Vec::is_empty"
408 )]
409 pub membership_offers: Vec<MembershipOfferDto>,
410 #[serde(
412 rename = "trialPeriod",
413 default,
414 skip_serializing_if = "Option::is_none"
415 )]
416 pub trial_period: Option<f64>,
417 #[serde(
419 rename = "totalCycles",
420 default,
421 skip_serializing_if = "Option::is_none"
422 )]
423 pub total_cycles: Option<f64>,
424 #[serde(rename = "setupFee", default, skip_serializing_if = "Option::is_none")]
426 pub setup_fee: Option<f64>,
427 #[serde(
429 rename = "variantOptionIds",
430 default,
431 skip_serializing_if = "Vec::is_empty"
432 )]
433 pub variant_option_ids: Vec<String>,
434 #[serde(
436 rename = "compareAtPrice",
437 default,
438 skip_serializing_if = "Option::is_none"
439 )]
440 pub compare_at_price: Option<f64>,
441 #[serde(rename = "locationId")]
444 pub location_id: String,
445 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
447 pub user_id: Option<String>,
448 #[serde(default, skip_serializing_if = "Option::is_none")]
450 pub meta: Option<PriceMetaDto>,
451 #[serde(
453 rename = "trackInventory",
454 default,
455 skip_serializing_if = "Option::is_none"
456 )]
457 pub track_inventory: Option<bool>,
458 #[serde(
460 rename = "availableQuantity",
461 default,
462 skip_serializing_if = "Option::is_none"
463 )]
464 pub available_quantity: Option<f64>,
465 #[serde(
467 rename = "allowOutOfStockPurchases",
468 default,
469 skip_serializing_if = "Option::is_none"
470 )]
471 pub allow_out_of_stock_purchases: Option<bool>,
472 #[serde(default, skip_serializing_if = "Option::is_none")]
474 pub sku: Option<String>,
475 #[serde(
477 rename = "shippingOptions",
478 default,
479 skip_serializing_if = "Option::is_none"
480 )]
481 pub shipping_options: Option<ShippingOptionsDto>,
482 #[serde(
484 rename = "isDigitalProduct",
485 default,
486 skip_serializing_if = "Option::is_none"
487 )]
488 pub is_digital_product: Option<bool>,
489 #[serde(
491 rename = "digitalDelivery",
492 default,
493 skip_serializing_if = "Vec::is_empty"
494 )]
495 pub digital_delivery: Vec<String>,
496}
497
498#[derive(Debug, Clone, Default, Serialize, Deserialize)]
500pub struct CreatePriceResponseDto {
501 #[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
505 pub id: Option<String>,
506 #[serde(
508 rename = "membershipOffers",
509 default,
510 skip_serializing_if = "Vec::is_empty"
511 )]
512 pub membership_offers: Vec<MembershipOfferDto>,
513 #[serde(
515 rename = "variantOptionIds",
516 default,
517 skip_serializing_if = "Vec::is_empty"
518 )]
519 pub variant_option_ids: Vec<String>,
520 #[serde(
522 rename = "locationId",
523 default,
524 skip_serializing_if = "Option::is_none"
525 )]
526 pub location_id: Option<String>,
527 #[serde(default, skip_serializing_if = "Option::is_none")]
529 pub product: Option<String>,
530 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
532 pub user_id: Option<String>,
533 #[serde(default, skip_serializing_if = "Option::is_none")]
537 pub name: Option<String>,
538 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
543 pub type_: Option<String>,
544 #[serde(default, skip_serializing_if = "Option::is_none")]
548 pub currency: Option<String>,
549 #[serde(default, skip_serializing_if = "Option::is_none")]
553 pub amount: Option<f64>,
554 #[serde(default, skip_serializing_if = "Option::is_none")]
556 pub recurring: Option<RecurringDto>,
557 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
560 pub created_at: Option<String>,
561 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
564 pub updated_at: Option<String>,
565 #[serde(
567 rename = "compareAtPrice",
568 default,
569 skip_serializing_if = "Option::is_none"
570 )]
571 pub compare_at_price: Option<f64>,
572 #[serde(
574 rename = "trackInventory",
575 default,
576 skip_serializing_if = "Option::is_none"
577 )]
578 pub track_inventory: Option<bool>,
579 #[serde(
581 rename = "availableQuantity",
582 default,
583 skip_serializing_if = "Option::is_none"
584 )]
585 pub available_quantity: Option<f64>,
586 #[serde(
588 rename = "allowOutOfStockPurchases",
589 default,
590 skip_serializing_if = "Option::is_none"
591 )]
592 pub allow_out_of_stock_purchases: Option<bool>,
593}
594
595#[derive(Debug, Clone, Default, Serialize, Deserialize)]
597pub struct CreateProductCollectionsDto {
598 #[serde(rename = "altId")]
601 pub alt_id: String,
602 #[serde(rename = "altType")]
606 pub alt_type: String,
607 #[serde(
609 rename = "collectionId",
610 default,
611 skip_serializing_if = "Option::is_none"
612 )]
613 pub collection_id: Option<String>,
614 pub name: String,
617 pub slug: String,
620 #[serde(default, skip_serializing_if = "Option::is_none")]
622 pub image: Option<String>,
623 #[serde(default, skip_serializing_if = "Option::is_none")]
625 pub seo: Option<CollectionSEODto>,
626}
627
628#[derive(Debug, Clone, Default, Serialize, Deserialize)]
630pub struct CreateProductDto {
631 pub name: String,
634 #[serde(rename = "locationId")]
637 pub location_id: String,
638 #[serde(default, skip_serializing_if = "Option::is_none")]
640 pub description: Option<String>,
641 #[serde(rename = "productType")]
644 pub product_type: String,
645 #[serde(default, skip_serializing_if = "Option::is_none")]
647 pub image: Option<String>,
648 #[serde(
650 rename = "statementDescriptor",
651 default,
652 skip_serializing_if = "Option::is_none"
653 )]
654 pub statement_descriptor: Option<String>,
655 #[serde(
657 rename = "availableInStore",
658 default,
659 skip_serializing_if = "Option::is_none"
660 )]
661 pub available_in_store: Option<bool>,
662 #[serde(default, skip_serializing_if = "Vec::is_empty")]
664 pub medias: Vec<ProductMediaDto>,
665 #[serde(default, skip_serializing_if = "Vec::is_empty")]
667 pub variants: Vec<ProductVariantDto>,
668 #[serde(
670 rename = "collectionIds",
671 default,
672 skip_serializing_if = "Vec::is_empty"
673 )]
674 pub collection_ids: Vec<String>,
675 #[serde(
678 rename = "isTaxesEnabled",
679 default,
680 skip_serializing_if = "Option::is_none"
681 )]
682 pub is_taxes_enabled: Option<bool>,
683 #[serde(default, skip_serializing_if = "Vec::is_empty")]
686 pub taxes: Vec<String>,
687 #[serde(
689 rename = "automaticTaxCategoryId",
690 default,
691 skip_serializing_if = "Option::is_none"
692 )]
693 pub automatic_tax_category_id: Option<String>,
694 #[serde(
696 rename = "isLabelEnabled",
697 default,
698 skip_serializing_if = "Option::is_none"
699 )]
700 pub is_label_enabled: Option<bool>,
701 #[serde(default, skip_serializing_if = "Option::is_none")]
703 pub label: Option<ProductLabelDto>,
704 #[serde(default, skip_serializing_if = "Option::is_none")]
706 pub slug: Option<String>,
707 #[serde(default, skip_serializing_if = "Option::is_none")]
709 pub seo: Option<ProductSEODto>,
710 #[serde(
712 rename = "taxInclusive",
713 default,
714 skip_serializing_if = "Option::is_none"
715 )]
716 pub tax_inclusive: Option<bool>,
717}
718
719#[derive(Debug, Clone, Default, Serialize, Deserialize)]
721pub struct CreateProductResponseDto {
722 #[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
726 pub id: Option<String>,
727 #[serde(default, skip_serializing_if = "Option::is_none")]
729 pub description: Option<String>,
730 #[serde(default, skip_serializing_if = "Vec::is_empty")]
732 pub variants: Vec<ProductVariantDto>,
733 #[serde(
737 rename = "locationId",
738 default,
739 skip_serializing_if = "Option::is_none"
740 )]
741 pub location_id: Option<String>,
742 #[serde(default, skip_serializing_if = "Option::is_none")]
746 pub name: Option<String>,
747 #[serde(
751 rename = "productType",
752 default,
753 skip_serializing_if = "Option::is_none"
754 )]
755 pub product_type: Option<String>,
756 #[serde(
758 rename = "availableInStore",
759 default,
760 skip_serializing_if = "Option::is_none"
761 )]
762 pub available_in_store: Option<bool>,
763 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
768 pub created_at: Option<String>,
769 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
774 pub updated_at: Option<String>,
775 #[serde(
777 rename = "statementDescriptor",
778 default,
779 skip_serializing_if = "Option::is_none"
780 )]
781 pub statement_descriptor: Option<String>,
782 #[serde(default, skip_serializing_if = "Option::is_none")]
784 pub image: Option<String>,
785 #[serde(
787 rename = "collectionIds",
788 default,
789 skip_serializing_if = "Vec::is_empty"
790 )]
791 pub collection_ids: Vec<String>,
792 #[serde(
794 rename = "isTaxesEnabled",
795 default,
796 skip_serializing_if = "Option::is_none"
797 )]
798 pub is_taxes_enabled: Option<bool>,
799 #[serde(default, skip_serializing_if = "Vec::is_empty")]
803 pub taxes: Vec<String>,
804 #[serde(
806 rename = "automaticTaxCategoryId",
807 default,
808 skip_serializing_if = "Option::is_none"
809 )]
810 pub automatic_tax_category_id: Option<String>,
811 #[serde(default, skip_serializing_if = "Option::is_none")]
813 pub label: Option<ProductLabelDto>,
814 #[serde(default, skip_serializing_if = "Option::is_none")]
816 pub slug: Option<String>,
817}
818
819#[derive(Debug, Clone, Default, Serialize, Deserialize)]
821pub struct DefaultCollectionResponseDto {
822 #[serde(default, skip_serializing_if = "Option::is_none")]
826 pub data: Option<ProductCategories>,
827 #[serde(default, skip_serializing_if = "Option::is_none")]
831 pub status: Option<bool>,
832}
833
834#[derive(Debug, Clone, Default, Serialize, Deserialize)]
836pub struct DefaultPriceResponseDto {
837 #[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
841 pub id: Option<String>,
842 #[serde(
844 rename = "membershipOffers",
845 default,
846 skip_serializing_if = "Vec::is_empty"
847 )]
848 pub membership_offers: Vec<MembershipOfferDto>,
849 #[serde(
851 rename = "variantOptionIds",
852 default,
853 skip_serializing_if = "Vec::is_empty"
854 )]
855 pub variant_option_ids: Vec<String>,
856 #[serde(
858 rename = "locationId",
859 default,
860 skip_serializing_if = "Option::is_none"
861 )]
862 pub location_id: Option<String>,
863 #[serde(default, skip_serializing_if = "Option::is_none")]
865 pub product: Option<String>,
866 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
868 pub user_id: Option<String>,
869 #[serde(default, skip_serializing_if = "Option::is_none")]
873 pub name: Option<String>,
874 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
879 pub type_: Option<String>,
880 #[serde(default, skip_serializing_if = "Option::is_none")]
884 pub currency: Option<String>,
885 #[serde(default, skip_serializing_if = "Option::is_none")]
889 pub amount: Option<f64>,
890 #[serde(default, skip_serializing_if = "Option::is_none")]
892 pub recurring: Option<RecurringDto>,
893 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
896 pub created_at: Option<String>,
897 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
900 pub updated_at: Option<String>,
901 #[serde(
903 rename = "compareAtPrice",
904 default,
905 skip_serializing_if = "Option::is_none"
906 )]
907 pub compare_at_price: Option<f64>,
908 #[serde(
910 rename = "trackInventory",
911 default,
912 skip_serializing_if = "Option::is_none"
913 )]
914 pub track_inventory: Option<bool>,
915 #[serde(
917 rename = "availableQuantity",
918 default,
919 skip_serializing_if = "Option::is_none"
920 )]
921 pub available_quantity: Option<f64>,
922 #[serde(
924 rename = "allowOutOfStockPurchases",
925 default,
926 skip_serializing_if = "Option::is_none"
927 )]
928 pub allow_out_of_stock_purchases: Option<bool>,
929}
930
931#[derive(Debug, Clone, Default, Serialize, Deserialize)]
933pub struct DefaultProductResponseDto {
934 #[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
938 pub id: Option<String>,
939 #[serde(default, skip_serializing_if = "Option::is_none")]
941 pub description: Option<String>,
942 #[serde(default, skip_serializing_if = "Vec::is_empty")]
944 pub variants: Vec<ProductVariantDto>,
945 #[serde(
949 rename = "locationId",
950 default,
951 skip_serializing_if = "Option::is_none"
952 )]
953 pub location_id: Option<String>,
954 #[serde(default, skip_serializing_if = "Option::is_none")]
958 pub name: Option<String>,
959 #[serde(
963 rename = "productType",
964 default,
965 skip_serializing_if = "Option::is_none"
966 )]
967 pub product_type: Option<String>,
968 #[serde(
970 rename = "availableInStore",
971 default,
972 skip_serializing_if = "Option::is_none"
973 )]
974 pub available_in_store: Option<bool>,
975 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
980 pub created_at: Option<String>,
981 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
986 pub updated_at: Option<String>,
987 #[serde(
989 rename = "statementDescriptor",
990 default,
991 skip_serializing_if = "Option::is_none"
992 )]
993 pub statement_descriptor: Option<String>,
994 #[serde(default, skip_serializing_if = "Option::is_none")]
996 pub image: Option<String>,
997 #[serde(
999 rename = "collectionIds",
1000 default,
1001 skip_serializing_if = "Vec::is_empty"
1002 )]
1003 pub collection_ids: Vec<String>,
1004 #[serde(
1006 rename = "isTaxesEnabled",
1007 default,
1008 skip_serializing_if = "Option::is_none"
1009 )]
1010 pub is_taxes_enabled: Option<bool>,
1011 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1015 pub taxes: Vec<String>,
1016 #[serde(
1018 rename = "automaticTaxCategoryId",
1019 default,
1020 skip_serializing_if = "Option::is_none"
1021 )]
1022 pub automatic_tax_category_id: Option<String>,
1023 #[serde(default, skip_serializing_if = "Option::is_none")]
1025 pub label: Option<ProductLabelDto>,
1026 #[serde(default, skip_serializing_if = "Option::is_none")]
1028 pub slug: Option<String>,
1029}
1030
1031#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1033pub struct DeletePriceResponseDto {
1034 #[serde(default, skip_serializing_if = "Option::is_none")]
1038 pub status: Option<bool>,
1039}
1040
1041#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1043pub struct DeleteProductCollectionResponseDto {
1044 #[serde(default, skip_serializing_if = "Option::is_none")]
1048 pub status: Option<bool>,
1049 #[serde(default, skip_serializing_if = "Option::is_none")]
1051 pub message: Option<String>,
1052}
1053
1054#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1056pub struct DeleteProductResponseDto {
1057 #[serde(default, skip_serializing_if = "Option::is_none")]
1061 pub status: Option<bool>,
1062}
1063
1064#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1066pub struct DeleteProductReviewResponseDto {
1067 #[serde(default, skip_serializing_if = "Option::is_none")]
1071 pub status: Option<bool>,
1072 #[serde(default, skip_serializing_if = "Option::is_none")]
1074 pub message: Option<String>,
1075}
1076
1077#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1079pub struct GetInventoryResponseDto {
1080 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1084 pub inventory: Vec<InventoryItemDto>,
1085 #[serde(default, skip_serializing_if = "Option::is_none")]
1089 pub total: Option<serde_json::Value>,
1090}
1091
1092#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1094pub struct GetPriceResponseDto {
1095 #[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
1099 pub id: Option<String>,
1100 #[serde(
1102 rename = "membershipOffers",
1103 default,
1104 skip_serializing_if = "Vec::is_empty"
1105 )]
1106 pub membership_offers: Vec<MembershipOfferDto>,
1107 #[serde(
1109 rename = "variantOptionIds",
1110 default,
1111 skip_serializing_if = "Vec::is_empty"
1112 )]
1113 pub variant_option_ids: Vec<String>,
1114 #[serde(
1116 rename = "locationId",
1117 default,
1118 skip_serializing_if = "Option::is_none"
1119 )]
1120 pub location_id: Option<String>,
1121 #[serde(default, skip_serializing_if = "Option::is_none")]
1123 pub product: Option<String>,
1124 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
1126 pub user_id: Option<String>,
1127 #[serde(default, skip_serializing_if = "Option::is_none")]
1131 pub name: Option<String>,
1132 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1137 pub type_: Option<String>,
1138 #[serde(default, skip_serializing_if = "Option::is_none")]
1142 pub currency: Option<String>,
1143 #[serde(default, skip_serializing_if = "Option::is_none")]
1147 pub amount: Option<f64>,
1148 #[serde(default, skip_serializing_if = "Option::is_none")]
1150 pub recurring: Option<RecurringDto>,
1151 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
1154 pub created_at: Option<String>,
1155 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
1158 pub updated_at: Option<String>,
1159 #[serde(
1161 rename = "compareAtPrice",
1162 default,
1163 skip_serializing_if = "Option::is_none"
1164 )]
1165 pub compare_at_price: Option<f64>,
1166 #[serde(
1168 rename = "trackInventory",
1169 default,
1170 skip_serializing_if = "Option::is_none"
1171 )]
1172 pub track_inventory: Option<bool>,
1173 #[serde(
1175 rename = "availableQuantity",
1176 default,
1177 skip_serializing_if = "Option::is_none"
1178 )]
1179 pub available_quantity: Option<f64>,
1180 #[serde(
1182 rename = "allowOutOfStockPurchases",
1183 default,
1184 skip_serializing_if = "Option::is_none"
1185 )]
1186 pub allow_out_of_stock_purchases: Option<bool>,
1187}
1188
1189#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1191pub struct GetProductResponseDto {
1192 #[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
1196 pub id: Option<String>,
1197 #[serde(default, skip_serializing_if = "Option::is_none")]
1199 pub description: Option<String>,
1200 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1202 pub variants: Vec<ProductVariantDto>,
1203 #[serde(
1207 rename = "locationId",
1208 default,
1209 skip_serializing_if = "Option::is_none"
1210 )]
1211 pub location_id: Option<String>,
1212 #[serde(default, skip_serializing_if = "Option::is_none")]
1216 pub name: Option<String>,
1217 #[serde(
1221 rename = "productType",
1222 default,
1223 skip_serializing_if = "Option::is_none"
1224 )]
1225 pub product_type: Option<String>,
1226 #[serde(
1228 rename = "availableInStore",
1229 default,
1230 skip_serializing_if = "Option::is_none"
1231 )]
1232 pub available_in_store: Option<bool>,
1233 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
1238 pub created_at: Option<String>,
1239 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
1244 pub updated_at: Option<String>,
1245 #[serde(
1247 rename = "statementDescriptor",
1248 default,
1249 skip_serializing_if = "Option::is_none"
1250 )]
1251 pub statement_descriptor: Option<String>,
1252 #[serde(default, skip_serializing_if = "Option::is_none")]
1254 pub image: Option<String>,
1255 #[serde(
1257 rename = "collectionIds",
1258 default,
1259 skip_serializing_if = "Vec::is_empty"
1260 )]
1261 pub collection_ids: Vec<String>,
1262 #[serde(
1264 rename = "isTaxesEnabled",
1265 default,
1266 skip_serializing_if = "Option::is_none"
1267 )]
1268 pub is_taxes_enabled: Option<bool>,
1269 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1273 pub taxes: Vec<String>,
1274 #[serde(
1276 rename = "automaticTaxCategoryId",
1277 default,
1278 skip_serializing_if = "Option::is_none"
1279 )]
1280 pub automatic_tax_category_id: Option<String>,
1281 #[serde(default, skip_serializing_if = "Option::is_none")]
1283 pub label: Option<ProductLabelDto>,
1284 #[serde(default, skip_serializing_if = "Option::is_none")]
1286 pub slug: Option<String>,
1287}
1288
1289#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1291pub struct GetProductStatsResponseDto {
1292 #[serde(
1296 rename = "totalProducts",
1297 default,
1298 skip_serializing_if = "Option::is_none"
1299 )]
1300 pub total_products: Option<f64>,
1301 #[serde(
1305 rename = "includedInStore",
1306 default,
1307 skip_serializing_if = "Option::is_none"
1308 )]
1309 pub included_in_store: Option<f64>,
1310 #[serde(
1314 rename = "excludedFromStore",
1315 default,
1316 skip_serializing_if = "Option::is_none"
1317 )]
1318 pub excluded_from_store: Option<f64>,
1319}
1320
1321#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1323pub struct InventoryItemDto {
1324 #[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
1328 pub id: Option<String>,
1329 #[serde(default, skip_serializing_if = "Option::is_none")]
1333 pub name: Option<String>,
1334 #[serde(
1338 rename = "availableQuantity",
1339 default,
1340 skip_serializing_if = "Option::is_none"
1341 )]
1342 pub available_quantity: Option<f64>,
1343 #[serde(default, skip_serializing_if = "Option::is_none")]
1347 pub sku: Option<String>,
1348 #[serde(
1352 rename = "allowOutOfStockPurchases",
1353 default,
1354 skip_serializing_if = "Option::is_none"
1355 )]
1356 pub allow_out_of_stock_purchases: Option<bool>,
1357 #[serde(default, skip_serializing_if = "Option::is_none")]
1361 pub product: Option<String>,
1362 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
1366 pub updated_at: Option<String>,
1367 #[serde(default, skip_serializing_if = "Option::is_none")]
1369 pub image: Option<String>,
1370 #[serde(
1372 rename = "productName",
1373 default,
1374 skip_serializing_if = "Option::is_none"
1375 )]
1376 pub product_name: Option<String>,
1377}
1378
1379#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1381pub struct ListCollectionResponseDto {
1382 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1386 pub data: Vec<Vec<serde_json::Value>>,
1387 #[serde(default, skip_serializing_if = "Option::is_none")]
1391 pub total: Option<f64>,
1392}
1393
1394#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1396pub struct ListPricesResponseDto {
1397 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1401 pub prices: Vec<DefaultPriceResponseDto>,
1402 #[serde(default, skip_serializing_if = "Option::is_none")]
1405 pub total: Option<f64>,
1406}
1407
1408#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1410pub struct ListProductReviewsResponseDto {
1411 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1415 pub data: Vec<Vec<serde_json::Value>>,
1416 #[serde(default, skip_serializing_if = "Option::is_none")]
1420 pub total: Option<f64>,
1421}
1422
1423#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1425pub struct ListProductsResponseDto {
1426 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1430 pub products: Vec<DefaultProductResponseDto>,
1431 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1435 pub total: Vec<ListProductsStats>,
1436}
1437
1438#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1440pub struct ListProductsStats {
1441 #[serde(default, skip_serializing_if = "Option::is_none")]
1445 pub total: Option<f64>,
1446}
1447
1448#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1450pub struct MembershipOfferDto {
1451 #[serde(default, skip_serializing_if = "Option::is_none")]
1455 pub label: Option<String>,
1456 #[serde(default, skip_serializing_if = "Option::is_none")]
1460 pub value: Option<String>,
1461 #[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
1465 pub id: Option<String>,
1466}
1467
1468#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1470pub struct PriceDimensionsDto {
1471 pub height: f64,
1474 pub width: f64,
1477 pub length: f64,
1480 pub unit: String,
1484}
1485
1486#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1488pub struct PriceMetaDto {
1489 pub source: String,
1493 #[serde(rename = "sourceId", default, skip_serializing_if = "Option::is_none")]
1495 pub source_id: Option<String>,
1496 #[serde(rename = "stripePriceId")]
1499 pub stripe_price_id: String,
1500 #[serde(rename = "internalSource")]
1505 pub internal_source: String,
1506}
1507
1508#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1510pub struct PriceUpdateField {
1511 #[serde(rename = "type")]
1516 pub type_: String,
1517 pub value: f64,
1520 #[serde(
1522 rename = "roundToWhole",
1523 default,
1524 skip_serializing_if = "Option::is_none"
1525 )]
1526 pub round_to_whole: Option<bool>,
1527}
1528
1529#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1531pub struct ProductCategories {
1532 #[serde(flatten)]
1534 pub extra: serde_json::Map<String, serde_json::Value>,
1535}
1536
1537#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1539pub struct ProductLabelDto {
1540 #[serde(default, skip_serializing_if = "Option::is_none")]
1544 pub title: Option<String>,
1545 #[serde(rename = "startDate", default, skip_serializing_if = "Option::is_none")]
1547 pub start_date: Option<String>,
1548 #[serde(rename = "endDate", default, skip_serializing_if = "Option::is_none")]
1550 pub end_date: Option<String>,
1551}
1552
1553#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1555pub struct ProductMediaDto {
1556 pub id: String,
1559 #[serde(default, skip_serializing_if = "Option::is_none")]
1561 pub title: Option<String>,
1562 pub url: String,
1565 #[serde(rename = "type")]
1569 pub type_: String,
1570 #[serde(
1572 rename = "isFeatured",
1573 default,
1574 skip_serializing_if = "Option::is_none"
1575 )]
1576 pub is_featured: Option<bool>,
1577 #[serde(rename = "priceIds", default, skip_serializing_if = "Vec::is_empty")]
1579 pub price_ids: Vec<Vec<serde_json::Value>>,
1580}
1581
1582#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1584pub struct ProductReviewDto {
1585 pub headline: String,
1588 pub comment: String,
1591 pub user: UserDetailsDto,
1594}
1595
1596#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1598pub struct ProductSEODto {
1599 #[serde(default, skip_serializing_if = "Option::is_none")]
1601 pub title: Option<String>,
1602 #[serde(default, skip_serializing_if = "Option::is_none")]
1604 pub description: Option<String>,
1605}
1606
1607#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1609pub struct ProductVariantDto {
1610 #[serde(default, skip_serializing_if = "Option::is_none")]
1614 pub id: Option<String>,
1615 #[serde(default, skip_serializing_if = "Option::is_none")]
1619 pub name: Option<String>,
1620 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1624 pub options: Vec<ProductVariantOptionDto>,
1625}
1626
1627#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1629pub struct ProductVariantOptionDto {
1630 #[serde(default, skip_serializing_if = "Option::is_none")]
1634 pub id: Option<String>,
1635 #[serde(default, skip_serializing_if = "Option::is_none")]
1639 pub name: Option<String>,
1640}
1641
1642#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1644pub struct RecurringDto {
1645 #[serde(default, skip_serializing_if = "Option::is_none")]
1650 pub interval: Option<String>,
1651 #[serde(
1655 rename = "intervalCount",
1656 default,
1657 skip_serializing_if = "Option::is_none"
1658 )]
1659 pub interval_count: Option<f64>,
1660}
1661
1662#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1664pub struct ShippingOptionsDto {
1665 #[serde(default, skip_serializing_if = "Option::is_none")]
1667 pub weight: Option<WeightOptionsDto>,
1668 #[serde(default, skip_serializing_if = "Option::is_none")]
1670 pub dimensions: Option<PriceDimensionsDto>,
1671}
1672
1673#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1675pub struct UpdateDisplayPriorityBodyDto {
1676 #[serde(rename = "altId")]
1679 pub alt_id: String,
1680 #[serde(rename = "altType")]
1683 pub alt_type: String,
1684 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1687 pub products: Vec<Vec<serde_json::Value>>,
1688}
1689
1690#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1692pub struct UpdateInventoryDto {
1693 #[serde(rename = "altId")]
1696 pub alt_id: String,
1697 #[serde(rename = "altType")]
1700 pub alt_type: String,
1701 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1704 pub items: Vec<UpdateInventoryItemDto>,
1705}
1706
1707#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1709pub struct UpdateInventoryItemDto {
1710 #[serde(rename = "priceId")]
1713 pub price_id: String,
1714 #[serde(
1716 rename = "availableQuantity",
1717 default,
1718 skip_serializing_if = "Option::is_none"
1719 )]
1720 pub available_quantity: Option<f64>,
1721 #[serde(
1723 rename = "allowOutOfStockPurchases",
1724 default,
1725 skip_serializing_if = "Option::is_none"
1726 )]
1727 pub allow_out_of_stock_purchases: Option<bool>,
1728}
1729
1730#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1732pub struct UpdateInventoryResponseDto {
1733 #[serde(default, skip_serializing_if = "Option::is_none")]
1737 pub status: Option<bool>,
1738 #[serde(default, skip_serializing_if = "Option::is_none")]
1740 pub message: Option<String>,
1741}
1742
1743#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1745pub struct UpdatePriceDto {
1746 pub name: String,
1749 #[serde(rename = "type")]
1753 pub type_: String,
1754 pub currency: String,
1757 pub amount: f64,
1760 #[serde(default, skip_serializing_if = "Option::is_none")]
1762 pub recurring: Option<RecurringDto>,
1763 #[serde(default, skip_serializing_if = "Option::is_none")]
1765 pub description: Option<String>,
1766 #[serde(
1768 rename = "membershipOffers",
1769 default,
1770 skip_serializing_if = "Vec::is_empty"
1771 )]
1772 pub membership_offers: Vec<MembershipOfferDto>,
1773 #[serde(
1775 rename = "trialPeriod",
1776 default,
1777 skip_serializing_if = "Option::is_none"
1778 )]
1779 pub trial_period: Option<f64>,
1780 #[serde(
1782 rename = "totalCycles",
1783 default,
1784 skip_serializing_if = "Option::is_none"
1785 )]
1786 pub total_cycles: Option<f64>,
1787 #[serde(rename = "setupFee", default, skip_serializing_if = "Option::is_none")]
1789 pub setup_fee: Option<f64>,
1790 #[serde(
1792 rename = "variantOptionIds",
1793 default,
1794 skip_serializing_if = "Vec::is_empty"
1795 )]
1796 pub variant_option_ids: Vec<String>,
1797 #[serde(
1799 rename = "compareAtPrice",
1800 default,
1801 skip_serializing_if = "Option::is_none"
1802 )]
1803 pub compare_at_price: Option<f64>,
1804 #[serde(rename = "locationId")]
1807 pub location_id: String,
1808 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
1810 pub user_id: Option<String>,
1811 #[serde(default, skip_serializing_if = "Option::is_none")]
1813 pub meta: Option<PriceMetaDto>,
1814 #[serde(
1816 rename = "trackInventory",
1817 default,
1818 skip_serializing_if = "Option::is_none"
1819 )]
1820 pub track_inventory: Option<bool>,
1821 #[serde(
1823 rename = "availableQuantity",
1824 default,
1825 skip_serializing_if = "Option::is_none"
1826 )]
1827 pub available_quantity: Option<f64>,
1828 #[serde(
1830 rename = "allowOutOfStockPurchases",
1831 default,
1832 skip_serializing_if = "Option::is_none"
1833 )]
1834 pub allow_out_of_stock_purchases: Option<bool>,
1835 #[serde(default, skip_serializing_if = "Option::is_none")]
1837 pub sku: Option<String>,
1838 #[serde(
1840 rename = "shippingOptions",
1841 default,
1842 skip_serializing_if = "Option::is_none"
1843 )]
1844 pub shipping_options: Option<ShippingOptionsDto>,
1845 #[serde(
1847 rename = "isDigitalProduct",
1848 default,
1849 skip_serializing_if = "Option::is_none"
1850 )]
1851 pub is_digital_product: Option<bool>,
1852 #[serde(
1854 rename = "digitalDelivery",
1855 default,
1856 skip_serializing_if = "Vec::is_empty"
1857 )]
1858 pub digital_delivery: Vec<String>,
1859}
1860
1861#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1863pub struct UpdatePriceResponseDto {
1864 #[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
1868 pub id: Option<String>,
1869 #[serde(
1871 rename = "membershipOffers",
1872 default,
1873 skip_serializing_if = "Vec::is_empty"
1874 )]
1875 pub membership_offers: Vec<MembershipOfferDto>,
1876 #[serde(
1878 rename = "variantOptionIds",
1879 default,
1880 skip_serializing_if = "Vec::is_empty"
1881 )]
1882 pub variant_option_ids: Vec<String>,
1883 #[serde(
1885 rename = "locationId",
1886 default,
1887 skip_serializing_if = "Option::is_none"
1888 )]
1889 pub location_id: Option<String>,
1890 #[serde(default, skip_serializing_if = "Option::is_none")]
1892 pub product: Option<String>,
1893 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
1895 pub user_id: Option<String>,
1896 #[serde(default, skip_serializing_if = "Option::is_none")]
1900 pub name: Option<String>,
1901 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1906 pub type_: Option<String>,
1907 #[serde(default, skip_serializing_if = "Option::is_none")]
1911 pub currency: Option<String>,
1912 #[serde(default, skip_serializing_if = "Option::is_none")]
1916 pub amount: Option<f64>,
1917 #[serde(default, skip_serializing_if = "Option::is_none")]
1919 pub recurring: Option<RecurringDto>,
1920 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
1923 pub created_at: Option<String>,
1924 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
1927 pub updated_at: Option<String>,
1928 #[serde(
1930 rename = "compareAtPrice",
1931 default,
1932 skip_serializing_if = "Option::is_none"
1933 )]
1934 pub compare_at_price: Option<f64>,
1935 #[serde(
1937 rename = "trackInventory",
1938 default,
1939 skip_serializing_if = "Option::is_none"
1940 )]
1941 pub track_inventory: Option<bool>,
1942 #[serde(
1944 rename = "availableQuantity",
1945 default,
1946 skip_serializing_if = "Option::is_none"
1947 )]
1948 pub available_quantity: Option<f64>,
1949 #[serde(
1951 rename = "allowOutOfStockPurchases",
1952 default,
1953 skip_serializing_if = "Option::is_none"
1954 )]
1955 pub allow_out_of_stock_purchases: Option<bool>,
1956}
1957
1958#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1960pub struct UpdateProductCollectionResponseDto {
1961 #[serde(default, skip_serializing_if = "Option::is_none")]
1965 pub status: Option<bool>,
1966 #[serde(default, skip_serializing_if = "Option::is_none")]
1968 pub message: Option<String>,
1969}
1970
1971#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1973pub struct UpdateProductCollectionsDto {
1974 #[serde(rename = "altId")]
1977 pub alt_id: String,
1978 #[serde(rename = "altType")]
1982 pub alt_type: String,
1983 #[serde(default, skip_serializing_if = "Option::is_none")]
1985 pub name: Option<String>,
1986 #[serde(default, skip_serializing_if = "Option::is_none")]
1988 pub slug: Option<String>,
1989 #[serde(default, skip_serializing_if = "Option::is_none")]
1991 pub image: Option<String>,
1992 #[serde(default, skip_serializing_if = "Option::is_none")]
1994 pub seo: Option<CollectionSEODto>,
1995}
1996
1997#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1999pub struct UpdateProductDto {
2000 pub name: String,
2003 #[serde(rename = "locationId")]
2006 pub location_id: String,
2007 #[serde(default, skip_serializing_if = "Option::is_none")]
2009 pub description: Option<String>,
2010 #[serde(rename = "productType")]
2013 pub product_type: String,
2014 #[serde(default, skip_serializing_if = "Option::is_none")]
2016 pub image: Option<String>,
2017 #[serde(
2019 rename = "statementDescriptor",
2020 default,
2021 skip_serializing_if = "Option::is_none"
2022 )]
2023 pub statement_descriptor: Option<String>,
2024 #[serde(
2026 rename = "availableInStore",
2027 default,
2028 skip_serializing_if = "Option::is_none"
2029 )]
2030 pub available_in_store: Option<bool>,
2031 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2033 pub medias: Vec<ProductMediaDto>,
2034 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2036 pub variants: Vec<ProductVariantDto>,
2037 #[serde(
2039 rename = "collectionIds",
2040 default,
2041 skip_serializing_if = "Vec::is_empty"
2042 )]
2043 pub collection_ids: Vec<String>,
2044 #[serde(
2047 rename = "isTaxesEnabled",
2048 default,
2049 skip_serializing_if = "Option::is_none"
2050 )]
2051 pub is_taxes_enabled: Option<bool>,
2052 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2055 pub taxes: Vec<String>,
2056 #[serde(
2058 rename = "automaticTaxCategoryId",
2059 default,
2060 skip_serializing_if = "Option::is_none"
2061 )]
2062 pub automatic_tax_category_id: Option<String>,
2063 #[serde(
2065 rename = "isLabelEnabled",
2066 default,
2067 skip_serializing_if = "Option::is_none"
2068 )]
2069 pub is_label_enabled: Option<bool>,
2070 #[serde(default, skip_serializing_if = "Option::is_none")]
2072 pub label: Option<ProductLabelDto>,
2073 #[serde(default, skip_serializing_if = "Option::is_none")]
2075 pub slug: Option<String>,
2076 #[serde(default, skip_serializing_if = "Option::is_none")]
2078 pub seo: Option<ProductSEODto>,
2079 #[serde(
2081 rename = "taxInclusive",
2082 default,
2083 skip_serializing_if = "Option::is_none"
2084 )]
2085 pub tax_inclusive: Option<bool>,
2086 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2088 pub prices: Vec<String>,
2089}
2090
2091#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2093pub struct UpdateProductResponseDto {
2094 #[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
2098 pub id: Option<String>,
2099 #[serde(default, skip_serializing_if = "Option::is_none")]
2101 pub description: Option<String>,
2102 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2104 pub variants: Vec<ProductVariantDto>,
2105 #[serde(
2109 rename = "locationId",
2110 default,
2111 skip_serializing_if = "Option::is_none"
2112 )]
2113 pub location_id: Option<String>,
2114 #[serde(default, skip_serializing_if = "Option::is_none")]
2118 pub name: Option<String>,
2119 #[serde(
2123 rename = "productType",
2124 default,
2125 skip_serializing_if = "Option::is_none"
2126 )]
2127 pub product_type: Option<String>,
2128 #[serde(
2130 rename = "availableInStore",
2131 default,
2132 skip_serializing_if = "Option::is_none"
2133 )]
2134 pub available_in_store: Option<bool>,
2135 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
2140 pub created_at: Option<String>,
2141 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
2146 pub updated_at: Option<String>,
2147 #[serde(
2149 rename = "statementDescriptor",
2150 default,
2151 skip_serializing_if = "Option::is_none"
2152 )]
2153 pub statement_descriptor: Option<String>,
2154 #[serde(default, skip_serializing_if = "Option::is_none")]
2156 pub image: Option<String>,
2157 #[serde(
2159 rename = "collectionIds",
2160 default,
2161 skip_serializing_if = "Vec::is_empty"
2162 )]
2163 pub collection_ids: Vec<String>,
2164 #[serde(
2166 rename = "isTaxesEnabled",
2167 default,
2168 skip_serializing_if = "Option::is_none"
2169 )]
2170 pub is_taxes_enabled: Option<bool>,
2171 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2175 pub taxes: Vec<String>,
2176 #[serde(
2178 rename = "automaticTaxCategoryId",
2179 default,
2180 skip_serializing_if = "Option::is_none"
2181 )]
2182 pub automatic_tax_category_id: Option<String>,
2183 #[serde(default, skip_serializing_if = "Option::is_none")]
2185 pub label: Option<ProductLabelDto>,
2186 #[serde(default, skip_serializing_if = "Option::is_none")]
2188 pub slug: Option<String>,
2189}
2190
2191#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2193pub struct UpdateProductReviewDto {
2194 #[serde(rename = "altId")]
2197 pub alt_id: String,
2198 #[serde(rename = "altType")]
2201 pub alt_type: String,
2202 #[serde(rename = "productId")]
2205 pub product_id: String,
2206 pub status: String,
2209 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2211 pub reply: Vec<ProductReviewDto>,
2212 #[serde(default, skip_serializing_if = "Option::is_none")]
2214 pub rating: Option<f64>,
2215 #[serde(default, skip_serializing_if = "Option::is_none")]
2217 pub headline: Option<String>,
2218 #[serde(default, skip_serializing_if = "Option::is_none")]
2220 pub detail: Option<String>,
2221}
2222
2223#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2225pub struct UpdateProductReviewObjectDto {
2226 #[serde(rename = "reviewId")]
2229 pub review_id: String,
2230 #[serde(rename = "productId")]
2233 pub product_id: String,
2234 #[serde(rename = "storeId")]
2237 pub store_id: String,
2238}
2239
2240#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2242pub struct UpdateProductReviewsDto {
2243 #[serde(rename = "altId")]
2246 pub alt_id: String,
2247 #[serde(rename = "altType")]
2250 pub alt_type: String,
2251 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2254 pub reviews: Vec<UpdateProductReviewObjectDto>,
2255 pub status: serde_json::Value,
2258}
2259
2260#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2262pub struct UpdateProductReviewsResponseDto {
2263 #[serde(default, skip_serializing_if = "Option::is_none")]
2267 pub status: Option<bool>,
2268 #[serde(default, skip_serializing_if = "Option::is_none")]
2270 pub message: Option<String>,
2271}
2272
2273#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2275pub struct UpdateProductStoreDto {
2276 #[serde(rename = "altId")]
2279 pub alt_id: String,
2280 #[serde(rename = "altType")]
2283 pub alt_type: String,
2284 pub action: String,
2288 #[serde(rename = "productIds", default, skip_serializing_if = "Vec::is_empty")]
2291 pub product_ids: Vec<String>,
2292}
2293
2294#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2296pub struct UpdateProductStoreResponseDto {
2297 #[serde(default, skip_serializing_if = "Option::is_none")]
2301 pub status: Option<bool>,
2302 #[serde(default, skip_serializing_if = "Option::is_none")]
2304 pub message: Option<String>,
2305}
2306
2307#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2309pub struct UserDetailsDto {
2310 pub name: String,
2313 pub email: String,
2316 #[serde(default, skip_serializing_if = "Option::is_none")]
2318 pub phone: Option<String>,
2319 #[serde(
2321 rename = "isCustomer",
2322 default,
2323 skip_serializing_if = "Option::is_none"
2324 )]
2325 pub is_customer: Option<bool>,
2326}
2327
2328#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2330pub struct WeightOptionsDto {
2331 pub value: f64,
2334 pub unit: String,
2338}