1#![allow(
6 missing_docs,
7 clippy::doc_lazy_continuation,
8 clippy::doc_overindented_list_items
9)]
10
11use serde::{Deserialize, Serialize};
12
13#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15pub struct BulkEditPriceDto {
16 #[serde(rename = "_id")]
19 pub id: String,
20 #[serde(default, skip_serializing_if = "Option::is_none")]
22 pub name: Option<String>,
23 #[serde(default, skip_serializing_if = "Option::is_none")]
25 pub amount: Option<f64>,
26 #[serde(default, skip_serializing_if = "Option::is_none")]
28 pub currency: Option<String>,
29 #[serde(
31 rename = "compareAtPrice",
32 default,
33 skip_serializing_if = "Option::is_none"
34 )]
35 pub compare_at_price: Option<f64>,
36 #[serde(
38 rename = "availableQuantity",
39 default,
40 skip_serializing_if = "Option::is_none"
41 )]
42 pub available_quantity: Option<f64>,
43 #[serde(
45 rename = "trackInventory",
46 default,
47 skip_serializing_if = "Option::is_none"
48 )]
49 pub track_inventory: Option<bool>,
50 #[serde(
52 rename = "allowOutOfStockPurchases",
53 default,
54 skip_serializing_if = "Option::is_none"
55 )]
56 pub allow_out_of_stock_purchases: Option<bool>,
57 #[serde(default, skip_serializing_if = "Option::is_none")]
59 pub sku: Option<String>,
60 #[serde(
62 rename = "trialPeriod",
63 default,
64 skip_serializing_if = "Option::is_none"
65 )]
66 pub trial_period: Option<f64>,
67 #[serde(
69 rename = "totalCycles",
70 default,
71 skip_serializing_if = "Option::is_none"
72 )]
73 pub total_cycles: Option<f64>,
74 #[serde(rename = "setupFee", default, skip_serializing_if = "Option::is_none")]
76 pub setup_fee: Option<f64>,
77 #[serde(
79 rename = "shippingOptions",
80 default,
81 skip_serializing_if = "Option::is_none"
82 )]
83 pub shipping_options: Option<ShippingOptionsDto>,
84 #[serde(default, skip_serializing_if = "Option::is_none")]
86 pub recurring: Option<RecurringDto>,
87}
88
89#[derive(Debug, Clone, Default, Serialize, Deserialize)]
91pub struct BulkEditProductDto {
92 #[serde(rename = "_id")]
95 pub id: String,
96 #[serde(default, skip_serializing_if = "Option::is_none")]
98 pub name: Option<String>,
99 #[serde(default, skip_serializing_if = "Option::is_none")]
101 pub description: Option<String>,
102 #[serde(default, skip_serializing_if = "Option::is_none")]
104 pub image: Option<String>,
105 #[serde(
107 rename = "availableInStore",
108 default,
109 skip_serializing_if = "Option::is_none"
110 )]
111 pub available_in_store: Option<bool>,
112 #[serde(default, skip_serializing_if = "Vec::is_empty")]
114 pub prices: Vec<BulkEditPriceDto>,
115 #[serde(
117 rename = "collectionIds",
118 default,
119 skip_serializing_if = "Vec::is_empty"
120 )]
121 pub collection_ids: Vec<String>,
122 #[serde(
124 rename = "isLabelEnabled",
125 default,
126 skip_serializing_if = "Option::is_none"
127 )]
128 pub is_label_enabled: Option<bool>,
129 #[serde(
131 rename = "isTaxesEnabled",
132 default,
133 skip_serializing_if = "Option::is_none"
134 )]
135 pub is_taxes_enabled: Option<bool>,
136 #[serde(default, skip_serializing_if = "Option::is_none")]
138 pub seo: Option<ProductSEODto>,
139 #[serde(default, skip_serializing_if = "Option::is_none")]
141 pub slug: Option<String>,
142 #[serde(
144 rename = "automaticTaxCategoryId",
145 default,
146 skip_serializing_if = "Option::is_none"
147 )]
148 pub automatic_tax_category_id: Option<String>,
149 #[serde(
151 rename = "taxInclusive",
152 default,
153 skip_serializing_if = "Option::is_none"
154 )]
155 pub tax_inclusive: Option<bool>,
156 #[serde(default, skip_serializing_if = "Vec::is_empty")]
158 pub taxes: Vec<serde_json::Value>,
159 #[serde(default, skip_serializing_if = "Vec::is_empty")]
161 pub medias: Vec<serde_json::Value>,
162 #[serde(default, skip_serializing_if = "Option::is_none")]
164 pub label: Option<serde_json::Value>,
165}
166
167#[derive(Debug, Clone, Default, Serialize, Deserialize)]
169pub struct BulkEditRequestDto {
170 #[serde(rename = "altId")]
173 pub alt_id: String,
174 #[serde(rename = "altType")]
177 pub alt_type: String,
178 #[serde(default, skip_serializing_if = "Vec::is_empty")]
182 pub products: Vec<BulkEditProductDto>,
183}
184
185#[derive(Debug, Clone, Default, Serialize, Deserialize)]
187pub struct BulkEditResponseDto {
188 pub message: String,
191 pub status: bool,
194 #[serde(rename = "updatedCount")]
197 pub updated_count: f64,
198}
199
200#[derive(Debug, Clone, Default, Serialize, Deserialize)]
202pub struct BulkUpdateDto {
203 #[serde(rename = "altId")]
206 pub alt_id: String,
207 #[serde(rename = "altType")]
210 pub alt_type: String,
211 #[serde(rename = "type")]
216 pub type_: String,
217 #[serde(rename = "productIds", default, skip_serializing_if = "Vec::is_empty")]
220 pub product_ids: Vec<String>,
221 #[serde(default, skip_serializing_if = "Option::is_none")]
223 pub filters: Option<BulkUpdateFilters>,
224 #[serde(default, skip_serializing_if = "Option::is_none")]
226 pub price: Option<PriceUpdateField>,
227 #[serde(
229 rename = "compareAtPrice",
230 default,
231 skip_serializing_if = "Option::is_none"
232 )]
233 pub compare_at_price: Option<PriceUpdateField>,
234 #[serde(default, skip_serializing_if = "Option::is_none")]
236 pub availability: Option<bool>,
237 #[serde(
239 rename = "collectionIds",
240 default,
241 skip_serializing_if = "Vec::is_empty"
242 )]
243 pub collection_ids: Vec<String>,
244 #[serde(default, skip_serializing_if = "Option::is_none")]
246 pub currency: Option<String>,
247}
248
249#[derive(Debug, Clone, Default, Serialize, Deserialize)]
251pub struct BulkUpdateFilters {
252 #[serde(
254 rename = "collectionIds",
255 default,
256 skip_serializing_if = "Vec::is_empty"
257 )]
258 pub collection_ids: Vec<String>,
259 #[serde(
261 rename = "productType",
262 default,
263 skip_serializing_if = "Option::is_none"
264 )]
265 pub product_type: Option<String>,
266 #[serde(
268 rename = "availableInStore",
269 default,
270 skip_serializing_if = "Option::is_none"
271 )]
272 pub available_in_store: Option<bool>,
273 #[serde(default, skip_serializing_if = "Option::is_none")]
275 pub search: Option<String>,
276}
277
278#[derive(Debug, Clone, Default, Serialize, Deserialize)]
280pub struct BulkUpdateResponseDto {
281 pub status: bool,
284 #[serde(default, skip_serializing_if = "Option::is_none")]
286 pub message: Option<String>,
287}
288
289#[derive(Debug, Clone, Default, Serialize, Deserialize)]
291pub struct CollectionSEODto {
292 #[serde(default, skip_serializing_if = "Option::is_none")]
294 pub title: Option<String>,
295 #[serde(default, skip_serializing_if = "Option::is_none")]
297 pub description: Option<String>,
298}
299
300#[derive(Debug, Clone, Default, Serialize, Deserialize)]
302pub struct CollectionSchema {
303 #[serde(rename = "_id")]
306 pub id: String,
307 #[serde(rename = "altId")]
310 pub alt_id: String,
311 pub name: String,
314 pub slug: String,
318 pub image: String,
321 pub seo: CollectionSEODto,
324 #[serde(rename = "createdAt")]
327 pub created_at: String,
328}
329
330#[derive(Debug, Clone, Default, Serialize, Deserialize)]
332pub struct CountReviewsByStatusResponseDto {
333 #[serde(default, skip_serializing_if = "Vec::is_empty")]
336 pub data: Vec<Vec<serde_json::Value>>,
337}
338
339#[derive(Debug, Clone, Default, Serialize, Deserialize)]
341pub struct CreateCollectionResponseDto {
342 pub data: CollectionSchema,
345}
346
347#[derive(Debug, Clone, Default, Serialize, Deserialize)]
349pub struct CreatePriceDto {
350 pub name: String,
353 #[serde(rename = "type")]
357 pub type_: String,
358 pub currency: String,
361 pub amount: f64,
364 #[serde(default, skip_serializing_if = "Option::is_none")]
366 pub recurring: Option<RecurringDto>,
367 #[serde(default, skip_serializing_if = "Option::is_none")]
369 pub description: Option<String>,
370 #[serde(
372 rename = "membershipOffers",
373 default,
374 skip_serializing_if = "Vec::is_empty"
375 )]
376 pub membership_offers: Vec<MembershipOfferDto>,
377 #[serde(
379 rename = "trialPeriod",
380 default,
381 skip_serializing_if = "Option::is_none"
382 )]
383 pub trial_period: Option<f64>,
384 #[serde(
386 rename = "totalCycles",
387 default,
388 skip_serializing_if = "Option::is_none"
389 )]
390 pub total_cycles: Option<f64>,
391 #[serde(rename = "setupFee", default, skip_serializing_if = "Option::is_none")]
393 pub setup_fee: Option<f64>,
394 #[serde(
396 rename = "variantOptionIds",
397 default,
398 skip_serializing_if = "Vec::is_empty"
399 )]
400 pub variant_option_ids: Vec<String>,
401 #[serde(
403 rename = "compareAtPrice",
404 default,
405 skip_serializing_if = "Option::is_none"
406 )]
407 pub compare_at_price: Option<f64>,
408 #[serde(rename = "locationId")]
411 pub location_id: String,
412 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
414 pub user_id: Option<String>,
415 #[serde(default, skip_serializing_if = "Option::is_none")]
417 pub meta: Option<PriceMetaDto>,
418 #[serde(
420 rename = "trackInventory",
421 default,
422 skip_serializing_if = "Option::is_none"
423 )]
424 pub track_inventory: Option<bool>,
425 #[serde(
427 rename = "availableQuantity",
428 default,
429 skip_serializing_if = "Option::is_none"
430 )]
431 pub available_quantity: Option<f64>,
432 #[serde(
434 rename = "allowOutOfStockPurchases",
435 default,
436 skip_serializing_if = "Option::is_none"
437 )]
438 pub allow_out_of_stock_purchases: Option<bool>,
439 #[serde(default, skip_serializing_if = "Option::is_none")]
441 pub sku: Option<String>,
442 #[serde(
444 rename = "shippingOptions",
445 default,
446 skip_serializing_if = "Option::is_none"
447 )]
448 pub shipping_options: Option<ShippingOptionsDto>,
449 #[serde(
451 rename = "isDigitalProduct",
452 default,
453 skip_serializing_if = "Option::is_none"
454 )]
455 pub is_digital_product: Option<bool>,
456 #[serde(
458 rename = "digitalDelivery",
459 default,
460 skip_serializing_if = "Vec::is_empty"
461 )]
462 pub digital_delivery: Vec<String>,
463}
464
465#[derive(Debug, Clone, Default, Serialize, Deserialize)]
467pub struct CreatePriceResponseDto {
468 #[serde(rename = "_id")]
471 pub id: String,
472 #[serde(
474 rename = "membershipOffers",
475 default,
476 skip_serializing_if = "Vec::is_empty"
477 )]
478 pub membership_offers: Vec<MembershipOfferDto>,
479 #[serde(
481 rename = "variantOptionIds",
482 default,
483 skip_serializing_if = "Vec::is_empty"
484 )]
485 pub variant_option_ids: Vec<String>,
486 #[serde(
488 rename = "locationId",
489 default,
490 skip_serializing_if = "Option::is_none"
491 )]
492 pub location_id: Option<String>,
493 #[serde(default, skip_serializing_if = "Option::is_none")]
495 pub product: Option<String>,
496 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
498 pub user_id: Option<String>,
499 pub name: String,
502 #[serde(rename = "type")]
506 pub type_: String,
507 pub currency: String,
510 pub amount: f64,
513 #[serde(default, skip_serializing_if = "Option::is_none")]
515 pub recurring: Option<RecurringDto>,
516 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
519 pub created_at: Option<String>,
520 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
523 pub updated_at: Option<String>,
524 #[serde(
526 rename = "compareAtPrice",
527 default,
528 skip_serializing_if = "Option::is_none"
529 )]
530 pub compare_at_price: Option<f64>,
531 #[serde(
533 rename = "trackInventory",
534 default,
535 skip_serializing_if = "Option::is_none"
536 )]
537 pub track_inventory: Option<bool>,
538 #[serde(
540 rename = "availableQuantity",
541 default,
542 skip_serializing_if = "Option::is_none"
543 )]
544 pub available_quantity: Option<f64>,
545 #[serde(
547 rename = "allowOutOfStockPurchases",
548 default,
549 skip_serializing_if = "Option::is_none"
550 )]
551 pub allow_out_of_stock_purchases: Option<bool>,
552}
553
554#[derive(Debug, Clone, Default, Serialize, Deserialize)]
556pub struct CreateProductCollectionsDto {
557 #[serde(rename = "altId")]
560 pub alt_id: String,
561 #[serde(rename = "altType")]
565 pub alt_type: String,
566 #[serde(
568 rename = "collectionId",
569 default,
570 skip_serializing_if = "Option::is_none"
571 )]
572 pub collection_id: Option<String>,
573 pub name: String,
576 pub slug: String,
579 #[serde(default, skip_serializing_if = "Option::is_none")]
581 pub image: Option<String>,
582 #[serde(default, skip_serializing_if = "Option::is_none")]
584 pub seo: Option<CollectionSEODto>,
585}
586
587#[derive(Debug, Clone, Default, Serialize, Deserialize)]
589pub struct CreateProductDto {
590 pub name: String,
593 #[serde(rename = "locationId")]
596 pub location_id: String,
597 #[serde(default, skip_serializing_if = "Option::is_none")]
599 pub description: Option<String>,
600 #[serde(rename = "productType")]
603 pub product_type: String,
604 #[serde(default, skip_serializing_if = "Option::is_none")]
606 pub image: Option<String>,
607 #[serde(
609 rename = "statementDescriptor",
610 default,
611 skip_serializing_if = "Option::is_none"
612 )]
613 pub statement_descriptor: Option<String>,
614 #[serde(
616 rename = "availableInStore",
617 default,
618 skip_serializing_if = "Option::is_none"
619 )]
620 pub available_in_store: Option<bool>,
621 #[serde(default, skip_serializing_if = "Vec::is_empty")]
623 pub medias: Vec<ProductMediaDto>,
624 #[serde(default, skip_serializing_if = "Vec::is_empty")]
626 pub variants: Vec<ProductVariantDto>,
627 #[serde(
629 rename = "collectionIds",
630 default,
631 skip_serializing_if = "Vec::is_empty"
632 )]
633 pub collection_ids: Vec<String>,
634 #[serde(
637 rename = "isTaxesEnabled",
638 default,
639 skip_serializing_if = "Option::is_none"
640 )]
641 pub is_taxes_enabled: Option<bool>,
642 #[serde(default, skip_serializing_if = "Vec::is_empty")]
645 pub taxes: Vec<String>,
646 #[serde(
648 rename = "automaticTaxCategoryId",
649 default,
650 skip_serializing_if = "Option::is_none"
651 )]
652 pub automatic_tax_category_id: Option<String>,
653 #[serde(
655 rename = "isLabelEnabled",
656 default,
657 skip_serializing_if = "Option::is_none"
658 )]
659 pub is_label_enabled: Option<bool>,
660 #[serde(default, skip_serializing_if = "Option::is_none")]
662 pub label: Option<ProductLabelDto>,
663 #[serde(default, skip_serializing_if = "Option::is_none")]
665 pub slug: Option<String>,
666 #[serde(default, skip_serializing_if = "Option::is_none")]
668 pub seo: Option<ProductSEODto>,
669 #[serde(
671 rename = "taxInclusive",
672 default,
673 skip_serializing_if = "Option::is_none"
674 )]
675 pub tax_inclusive: Option<bool>,
676}
677
678#[derive(Debug, Clone, Default, Serialize, Deserialize)]
680pub struct CreateProductResponseDto {
681 #[serde(rename = "_id")]
684 pub id: String,
685 #[serde(default, skip_serializing_if = "Option::is_none")]
687 pub description: Option<String>,
688 #[serde(default, skip_serializing_if = "Vec::is_empty")]
690 pub variants: Vec<ProductVariantDto>,
691 #[serde(rename = "locationId")]
694 pub location_id: String,
695 pub name: String,
698 #[serde(rename = "productType")]
701 pub product_type: String,
702 #[serde(
704 rename = "availableInStore",
705 default,
706 skip_serializing_if = "Option::is_none"
707 )]
708 pub available_in_store: Option<bool>,
709 #[serde(rename = "createdAt")]
713 pub created_at: String,
714 #[serde(rename = "updatedAt")]
718 pub updated_at: String,
719 #[serde(
721 rename = "statementDescriptor",
722 default,
723 skip_serializing_if = "Option::is_none"
724 )]
725 pub statement_descriptor: Option<String>,
726 #[serde(default, skip_serializing_if = "Option::is_none")]
728 pub image: Option<String>,
729 #[serde(
731 rename = "collectionIds",
732 default,
733 skip_serializing_if = "Vec::is_empty"
734 )]
735 pub collection_ids: Vec<String>,
736 #[serde(
738 rename = "isTaxesEnabled",
739 default,
740 skip_serializing_if = "Option::is_none"
741 )]
742 pub is_taxes_enabled: Option<bool>,
743 #[serde(default, skip_serializing_if = "Vec::is_empty")]
747 pub taxes: Vec<String>,
748 #[serde(
750 rename = "automaticTaxCategoryId",
751 default,
752 skip_serializing_if = "Option::is_none"
753 )]
754 pub automatic_tax_category_id: Option<String>,
755 #[serde(default, skip_serializing_if = "Option::is_none")]
757 pub label: Option<ProductLabelDto>,
758 #[serde(default, skip_serializing_if = "Option::is_none")]
760 pub slug: Option<String>,
761}
762
763#[derive(Debug, Clone, Default, Serialize, Deserialize)]
765pub struct DefaultCollectionResponseDto {
766 pub data: ProductCategories,
769 pub status: bool,
772}
773
774#[derive(Debug, Clone, Default, Serialize, Deserialize)]
776pub struct DefaultPriceResponseDto {
777 #[serde(rename = "_id")]
780 pub id: String,
781 #[serde(
783 rename = "membershipOffers",
784 default,
785 skip_serializing_if = "Vec::is_empty"
786 )]
787 pub membership_offers: Vec<MembershipOfferDto>,
788 #[serde(
790 rename = "variantOptionIds",
791 default,
792 skip_serializing_if = "Vec::is_empty"
793 )]
794 pub variant_option_ids: Vec<String>,
795 #[serde(
797 rename = "locationId",
798 default,
799 skip_serializing_if = "Option::is_none"
800 )]
801 pub location_id: Option<String>,
802 #[serde(default, skip_serializing_if = "Option::is_none")]
804 pub product: Option<String>,
805 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
807 pub user_id: Option<String>,
808 pub name: String,
811 #[serde(rename = "type")]
815 pub type_: String,
816 pub currency: String,
819 pub amount: f64,
822 #[serde(default, skip_serializing_if = "Option::is_none")]
824 pub recurring: Option<RecurringDto>,
825 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
828 pub created_at: Option<String>,
829 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
832 pub updated_at: Option<String>,
833 #[serde(
835 rename = "compareAtPrice",
836 default,
837 skip_serializing_if = "Option::is_none"
838 )]
839 pub compare_at_price: Option<f64>,
840 #[serde(
842 rename = "trackInventory",
843 default,
844 skip_serializing_if = "Option::is_none"
845 )]
846 pub track_inventory: Option<bool>,
847 #[serde(
849 rename = "availableQuantity",
850 default,
851 skip_serializing_if = "Option::is_none"
852 )]
853 pub available_quantity: Option<f64>,
854 #[serde(
856 rename = "allowOutOfStockPurchases",
857 default,
858 skip_serializing_if = "Option::is_none"
859 )]
860 pub allow_out_of_stock_purchases: Option<bool>,
861}
862
863#[derive(Debug, Clone, Default, Serialize, Deserialize)]
865pub struct DefaultProductResponseDto {
866 #[serde(rename = "_id")]
869 pub id: String,
870 #[serde(default, skip_serializing_if = "Option::is_none")]
872 pub description: Option<String>,
873 #[serde(default, skip_serializing_if = "Vec::is_empty")]
875 pub variants: Vec<ProductVariantDto>,
876 #[serde(rename = "locationId")]
879 pub location_id: String,
880 pub name: String,
883 #[serde(rename = "productType")]
886 pub product_type: String,
887 #[serde(
889 rename = "availableInStore",
890 default,
891 skip_serializing_if = "Option::is_none"
892 )]
893 pub available_in_store: Option<bool>,
894 #[serde(rename = "createdAt")]
898 pub created_at: String,
899 #[serde(rename = "updatedAt")]
903 pub updated_at: String,
904 #[serde(
906 rename = "statementDescriptor",
907 default,
908 skip_serializing_if = "Option::is_none"
909 )]
910 pub statement_descriptor: Option<String>,
911 #[serde(default, skip_serializing_if = "Option::is_none")]
913 pub image: Option<String>,
914 #[serde(
916 rename = "collectionIds",
917 default,
918 skip_serializing_if = "Vec::is_empty"
919 )]
920 pub collection_ids: Vec<String>,
921 #[serde(
923 rename = "isTaxesEnabled",
924 default,
925 skip_serializing_if = "Option::is_none"
926 )]
927 pub is_taxes_enabled: Option<bool>,
928 #[serde(default, skip_serializing_if = "Vec::is_empty")]
932 pub taxes: Vec<String>,
933 #[serde(
935 rename = "automaticTaxCategoryId",
936 default,
937 skip_serializing_if = "Option::is_none"
938 )]
939 pub automatic_tax_category_id: Option<String>,
940 #[serde(default, skip_serializing_if = "Option::is_none")]
942 pub label: Option<ProductLabelDto>,
943 #[serde(default, skip_serializing_if = "Option::is_none")]
945 pub slug: Option<String>,
946}
947
948#[derive(Debug, Clone, Default, Serialize, Deserialize)]
950pub struct DeletePriceResponseDto {
951 pub status: bool,
954}
955
956#[derive(Debug, Clone, Default, Serialize, Deserialize)]
958pub struct DeleteProductCollectionResponseDto {
959 pub status: bool,
962 #[serde(default, skip_serializing_if = "Option::is_none")]
964 pub message: Option<String>,
965}
966
967#[derive(Debug, Clone, Default, Serialize, Deserialize)]
969pub struct DeleteProductResponseDto {
970 pub status: bool,
973}
974
975#[derive(Debug, Clone, Default, Serialize, Deserialize)]
977pub struct DeleteProductReviewResponseDto {
978 pub status: bool,
981 #[serde(default, skip_serializing_if = "Option::is_none")]
983 pub message: Option<String>,
984}
985
986#[derive(Debug, Clone, Default, Serialize, Deserialize)]
988pub struct GetInventoryResponseDto {
989 #[serde(default, skip_serializing_if = "Vec::is_empty")]
992 pub inventory: Vec<InventoryItemDto>,
993 pub total: serde_json::Value,
996}
997
998#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1000pub struct GetPriceResponseDto {
1001 #[serde(rename = "_id")]
1004 pub id: String,
1005 #[serde(
1007 rename = "membershipOffers",
1008 default,
1009 skip_serializing_if = "Vec::is_empty"
1010 )]
1011 pub membership_offers: Vec<MembershipOfferDto>,
1012 #[serde(
1014 rename = "variantOptionIds",
1015 default,
1016 skip_serializing_if = "Vec::is_empty"
1017 )]
1018 pub variant_option_ids: Vec<String>,
1019 #[serde(
1021 rename = "locationId",
1022 default,
1023 skip_serializing_if = "Option::is_none"
1024 )]
1025 pub location_id: Option<String>,
1026 #[serde(default, skip_serializing_if = "Option::is_none")]
1028 pub product: Option<String>,
1029 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
1031 pub user_id: Option<String>,
1032 pub name: String,
1035 #[serde(rename = "type")]
1039 pub type_: String,
1040 pub currency: String,
1043 pub amount: f64,
1046 #[serde(default, skip_serializing_if = "Option::is_none")]
1048 pub recurring: Option<RecurringDto>,
1049 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
1052 pub created_at: Option<String>,
1053 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
1056 pub updated_at: Option<String>,
1057 #[serde(
1059 rename = "compareAtPrice",
1060 default,
1061 skip_serializing_if = "Option::is_none"
1062 )]
1063 pub compare_at_price: Option<f64>,
1064 #[serde(
1066 rename = "trackInventory",
1067 default,
1068 skip_serializing_if = "Option::is_none"
1069 )]
1070 pub track_inventory: Option<bool>,
1071 #[serde(
1073 rename = "availableQuantity",
1074 default,
1075 skip_serializing_if = "Option::is_none"
1076 )]
1077 pub available_quantity: Option<f64>,
1078 #[serde(
1080 rename = "allowOutOfStockPurchases",
1081 default,
1082 skip_serializing_if = "Option::is_none"
1083 )]
1084 pub allow_out_of_stock_purchases: Option<bool>,
1085}
1086
1087#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1089pub struct GetProductResponseDto {
1090 #[serde(rename = "_id")]
1093 pub id: String,
1094 #[serde(default, skip_serializing_if = "Option::is_none")]
1096 pub description: Option<String>,
1097 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1099 pub variants: Vec<ProductVariantDto>,
1100 #[serde(rename = "locationId")]
1103 pub location_id: String,
1104 pub name: String,
1107 #[serde(rename = "productType")]
1110 pub product_type: String,
1111 #[serde(
1113 rename = "availableInStore",
1114 default,
1115 skip_serializing_if = "Option::is_none"
1116 )]
1117 pub available_in_store: Option<bool>,
1118 #[serde(rename = "createdAt")]
1122 pub created_at: String,
1123 #[serde(rename = "updatedAt")]
1127 pub updated_at: String,
1128 #[serde(
1130 rename = "statementDescriptor",
1131 default,
1132 skip_serializing_if = "Option::is_none"
1133 )]
1134 pub statement_descriptor: Option<String>,
1135 #[serde(default, skip_serializing_if = "Option::is_none")]
1137 pub image: Option<String>,
1138 #[serde(
1140 rename = "collectionIds",
1141 default,
1142 skip_serializing_if = "Vec::is_empty"
1143 )]
1144 pub collection_ids: Vec<String>,
1145 #[serde(
1147 rename = "isTaxesEnabled",
1148 default,
1149 skip_serializing_if = "Option::is_none"
1150 )]
1151 pub is_taxes_enabled: Option<bool>,
1152 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1156 pub taxes: Vec<String>,
1157 #[serde(
1159 rename = "automaticTaxCategoryId",
1160 default,
1161 skip_serializing_if = "Option::is_none"
1162 )]
1163 pub automatic_tax_category_id: Option<String>,
1164 #[serde(default, skip_serializing_if = "Option::is_none")]
1166 pub label: Option<ProductLabelDto>,
1167 #[serde(default, skip_serializing_if = "Option::is_none")]
1169 pub slug: Option<String>,
1170}
1171
1172#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1174pub struct GetProductStatsResponseDto {
1175 #[serde(rename = "totalProducts")]
1178 pub total_products: f64,
1179 #[serde(rename = "includedInStore")]
1182 pub included_in_store: f64,
1183 #[serde(rename = "excludedFromStore")]
1186 pub excluded_from_store: f64,
1187}
1188
1189#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1191pub struct InventoryItemDto {
1192 #[serde(rename = "_id")]
1195 pub id: String,
1196 pub name: String,
1199 #[serde(rename = "availableQuantity")]
1202 pub available_quantity: f64,
1203 pub sku: String,
1206 #[serde(rename = "allowOutOfStockPurchases")]
1209 pub allow_out_of_stock_purchases: bool,
1210 pub product: String,
1213 #[serde(rename = "updatedAt")]
1216 pub updated_at: String,
1217 #[serde(default, skip_serializing_if = "Option::is_none")]
1219 pub image: Option<String>,
1220 #[serde(
1222 rename = "productName",
1223 default,
1224 skip_serializing_if = "Option::is_none"
1225 )]
1226 pub product_name: Option<String>,
1227}
1228
1229#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1231pub struct ListCollectionResponseDto {
1232 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1235 pub data: Vec<Vec<serde_json::Value>>,
1236 pub total: f64,
1239}
1240
1241#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1243pub struct ListPricesResponseDto {
1244 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1247 pub prices: Vec<DefaultPriceResponseDto>,
1248 pub total: f64,
1250}
1251
1252#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1254pub struct ListProductReviewsResponseDto {
1255 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1258 pub data: Vec<Vec<serde_json::Value>>,
1259 pub total: f64,
1262}
1263
1264#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1266pub struct ListProductsResponseDto {
1267 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1270 pub products: Vec<DefaultProductResponseDto>,
1271 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1274 pub total: Vec<ListProductsStats>,
1275}
1276
1277#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1279pub struct ListProductsStats {
1280 pub total: f64,
1283}
1284
1285#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1287pub struct MembershipOfferDto {
1288 pub label: String,
1291 pub value: String,
1294 #[serde(rename = "_id")]
1297 pub id: String,
1298}
1299
1300#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1302pub struct PriceDimensionsDto {
1303 pub height: f64,
1306 pub width: f64,
1309 pub length: f64,
1312 pub unit: String,
1316}
1317
1318#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1320pub struct PriceMetaDto {
1321 pub source: String,
1325 #[serde(rename = "sourceId", default, skip_serializing_if = "Option::is_none")]
1327 pub source_id: Option<String>,
1328 #[serde(rename = "stripePriceId")]
1331 pub stripe_price_id: String,
1332 #[serde(rename = "internalSource")]
1337 pub internal_source: String,
1338}
1339
1340#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1342pub struct PriceUpdateField {
1343 #[serde(rename = "type")]
1348 pub type_: String,
1349 pub value: f64,
1352 #[serde(
1354 rename = "roundToWhole",
1355 default,
1356 skip_serializing_if = "Option::is_none"
1357 )]
1358 pub round_to_whole: Option<bool>,
1359}
1360
1361#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1363pub struct ProductCategories {
1364 #[serde(flatten)]
1366 pub extra: serde_json::Map<String, serde_json::Value>,
1367}
1368
1369#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1371pub struct ProductLabelDto {
1372 pub title: String,
1375 #[serde(rename = "startDate", default, skip_serializing_if = "Option::is_none")]
1377 pub start_date: Option<String>,
1378 #[serde(rename = "endDate", default, skip_serializing_if = "Option::is_none")]
1380 pub end_date: Option<String>,
1381}
1382
1383#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1385pub struct ProductMediaDto {
1386 pub id: String,
1389 #[serde(default, skip_serializing_if = "Option::is_none")]
1391 pub title: Option<String>,
1392 pub url: String,
1395 #[serde(rename = "type")]
1399 pub type_: String,
1400 #[serde(
1402 rename = "isFeatured",
1403 default,
1404 skip_serializing_if = "Option::is_none"
1405 )]
1406 pub is_featured: Option<bool>,
1407 #[serde(rename = "priceIds", default, skip_serializing_if = "Vec::is_empty")]
1409 pub price_ids: Vec<Vec<serde_json::Value>>,
1410}
1411
1412#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1414pub struct ProductReviewDto {
1415 pub headline: String,
1418 pub comment: String,
1421 pub user: UserDetailsDto,
1424}
1425
1426#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1428pub struct ProductSEODto {
1429 #[serde(default, skip_serializing_if = "Option::is_none")]
1431 pub title: Option<String>,
1432 #[serde(default, skip_serializing_if = "Option::is_none")]
1434 pub description: Option<String>,
1435}
1436
1437#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1439pub struct ProductVariantDto {
1440 pub id: String,
1443 pub name: String,
1446 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1449 pub options: Vec<ProductVariantOptionDto>,
1450}
1451
1452#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1454pub struct ProductVariantOptionDto {
1455 pub id: String,
1458 pub name: String,
1461}
1462
1463#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1465pub struct RecurringDto {
1466 pub interval: String,
1470 #[serde(rename = "intervalCount")]
1473 pub interval_count: f64,
1474}
1475
1476#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1478pub struct ShippingOptionsDto {
1479 #[serde(default, skip_serializing_if = "Option::is_none")]
1481 pub weight: Option<WeightOptionsDto>,
1482 #[serde(default, skip_serializing_if = "Option::is_none")]
1484 pub dimensions: Option<PriceDimensionsDto>,
1485}
1486
1487#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1489pub struct UpdateDisplayPriorityBodyDto {
1490 #[serde(rename = "altId")]
1493 pub alt_id: String,
1494 #[serde(rename = "altType")]
1497 pub alt_type: String,
1498 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1501 pub products: Vec<Vec<serde_json::Value>>,
1502}
1503
1504#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1506pub struct UpdateInventoryDto {
1507 #[serde(rename = "altId")]
1510 pub alt_id: String,
1511 #[serde(rename = "altType")]
1514 pub alt_type: String,
1515 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1518 pub items: Vec<UpdateInventoryItemDto>,
1519}
1520
1521#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1523pub struct UpdateInventoryItemDto {
1524 #[serde(rename = "priceId")]
1527 pub price_id: String,
1528 #[serde(
1530 rename = "availableQuantity",
1531 default,
1532 skip_serializing_if = "Option::is_none"
1533 )]
1534 pub available_quantity: Option<f64>,
1535 #[serde(
1537 rename = "allowOutOfStockPurchases",
1538 default,
1539 skip_serializing_if = "Option::is_none"
1540 )]
1541 pub allow_out_of_stock_purchases: Option<bool>,
1542}
1543
1544#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1546pub struct UpdateInventoryResponseDto {
1547 pub status: bool,
1550 #[serde(default, skip_serializing_if = "Option::is_none")]
1552 pub message: Option<String>,
1553}
1554
1555#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1557pub struct UpdatePriceDto {
1558 pub name: String,
1561 #[serde(rename = "type")]
1565 pub type_: String,
1566 pub currency: String,
1569 pub amount: f64,
1572 #[serde(default, skip_serializing_if = "Option::is_none")]
1574 pub recurring: Option<RecurringDto>,
1575 #[serde(default, skip_serializing_if = "Option::is_none")]
1577 pub description: Option<String>,
1578 #[serde(
1580 rename = "membershipOffers",
1581 default,
1582 skip_serializing_if = "Vec::is_empty"
1583 )]
1584 pub membership_offers: Vec<MembershipOfferDto>,
1585 #[serde(
1587 rename = "trialPeriod",
1588 default,
1589 skip_serializing_if = "Option::is_none"
1590 )]
1591 pub trial_period: Option<f64>,
1592 #[serde(
1594 rename = "totalCycles",
1595 default,
1596 skip_serializing_if = "Option::is_none"
1597 )]
1598 pub total_cycles: Option<f64>,
1599 #[serde(rename = "setupFee", default, skip_serializing_if = "Option::is_none")]
1601 pub setup_fee: Option<f64>,
1602 #[serde(
1604 rename = "variantOptionIds",
1605 default,
1606 skip_serializing_if = "Vec::is_empty"
1607 )]
1608 pub variant_option_ids: Vec<String>,
1609 #[serde(
1611 rename = "compareAtPrice",
1612 default,
1613 skip_serializing_if = "Option::is_none"
1614 )]
1615 pub compare_at_price: Option<f64>,
1616 #[serde(rename = "locationId")]
1619 pub location_id: String,
1620 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
1622 pub user_id: Option<String>,
1623 #[serde(default, skip_serializing_if = "Option::is_none")]
1625 pub meta: Option<PriceMetaDto>,
1626 #[serde(
1628 rename = "trackInventory",
1629 default,
1630 skip_serializing_if = "Option::is_none"
1631 )]
1632 pub track_inventory: Option<bool>,
1633 #[serde(
1635 rename = "availableQuantity",
1636 default,
1637 skip_serializing_if = "Option::is_none"
1638 )]
1639 pub available_quantity: Option<f64>,
1640 #[serde(
1642 rename = "allowOutOfStockPurchases",
1643 default,
1644 skip_serializing_if = "Option::is_none"
1645 )]
1646 pub allow_out_of_stock_purchases: Option<bool>,
1647 #[serde(default, skip_serializing_if = "Option::is_none")]
1649 pub sku: Option<String>,
1650 #[serde(
1652 rename = "shippingOptions",
1653 default,
1654 skip_serializing_if = "Option::is_none"
1655 )]
1656 pub shipping_options: Option<ShippingOptionsDto>,
1657 #[serde(
1659 rename = "isDigitalProduct",
1660 default,
1661 skip_serializing_if = "Option::is_none"
1662 )]
1663 pub is_digital_product: Option<bool>,
1664 #[serde(
1666 rename = "digitalDelivery",
1667 default,
1668 skip_serializing_if = "Vec::is_empty"
1669 )]
1670 pub digital_delivery: Vec<String>,
1671}
1672
1673#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1675pub struct UpdatePriceResponseDto {
1676 #[serde(rename = "_id")]
1679 pub id: String,
1680 #[serde(
1682 rename = "membershipOffers",
1683 default,
1684 skip_serializing_if = "Vec::is_empty"
1685 )]
1686 pub membership_offers: Vec<MembershipOfferDto>,
1687 #[serde(
1689 rename = "variantOptionIds",
1690 default,
1691 skip_serializing_if = "Vec::is_empty"
1692 )]
1693 pub variant_option_ids: Vec<String>,
1694 #[serde(
1696 rename = "locationId",
1697 default,
1698 skip_serializing_if = "Option::is_none"
1699 )]
1700 pub location_id: Option<String>,
1701 #[serde(default, skip_serializing_if = "Option::is_none")]
1703 pub product: Option<String>,
1704 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
1706 pub user_id: Option<String>,
1707 pub name: String,
1710 #[serde(rename = "type")]
1714 pub type_: String,
1715 pub currency: String,
1718 pub amount: f64,
1721 #[serde(default, skip_serializing_if = "Option::is_none")]
1723 pub recurring: Option<RecurringDto>,
1724 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
1727 pub created_at: Option<String>,
1728 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
1731 pub updated_at: Option<String>,
1732 #[serde(
1734 rename = "compareAtPrice",
1735 default,
1736 skip_serializing_if = "Option::is_none"
1737 )]
1738 pub compare_at_price: Option<f64>,
1739 #[serde(
1741 rename = "trackInventory",
1742 default,
1743 skip_serializing_if = "Option::is_none"
1744 )]
1745 pub track_inventory: Option<bool>,
1746 #[serde(
1748 rename = "availableQuantity",
1749 default,
1750 skip_serializing_if = "Option::is_none"
1751 )]
1752 pub available_quantity: Option<f64>,
1753 #[serde(
1755 rename = "allowOutOfStockPurchases",
1756 default,
1757 skip_serializing_if = "Option::is_none"
1758 )]
1759 pub allow_out_of_stock_purchases: Option<bool>,
1760}
1761
1762#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1764pub struct UpdateProductCollectionResponseDto {
1765 pub status: bool,
1768 #[serde(default, skip_serializing_if = "Option::is_none")]
1770 pub message: Option<String>,
1771}
1772
1773#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1775pub struct UpdateProductCollectionsDto {
1776 #[serde(rename = "altId")]
1779 pub alt_id: String,
1780 #[serde(rename = "altType")]
1784 pub alt_type: String,
1785 #[serde(default, skip_serializing_if = "Option::is_none")]
1787 pub name: Option<String>,
1788 #[serde(default, skip_serializing_if = "Option::is_none")]
1790 pub slug: Option<String>,
1791 #[serde(default, skip_serializing_if = "Option::is_none")]
1793 pub image: Option<String>,
1794 #[serde(default, skip_serializing_if = "Option::is_none")]
1796 pub seo: Option<CollectionSEODto>,
1797}
1798
1799#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1801pub struct UpdateProductDto {
1802 pub name: String,
1805 #[serde(rename = "locationId")]
1808 pub location_id: String,
1809 #[serde(default, skip_serializing_if = "Option::is_none")]
1811 pub description: Option<String>,
1812 #[serde(rename = "productType")]
1815 pub product_type: String,
1816 #[serde(default, skip_serializing_if = "Option::is_none")]
1818 pub image: Option<String>,
1819 #[serde(
1821 rename = "statementDescriptor",
1822 default,
1823 skip_serializing_if = "Option::is_none"
1824 )]
1825 pub statement_descriptor: Option<String>,
1826 #[serde(
1828 rename = "availableInStore",
1829 default,
1830 skip_serializing_if = "Option::is_none"
1831 )]
1832 pub available_in_store: Option<bool>,
1833 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1835 pub medias: Vec<ProductMediaDto>,
1836 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1838 pub variants: Vec<ProductVariantDto>,
1839 #[serde(
1841 rename = "collectionIds",
1842 default,
1843 skip_serializing_if = "Vec::is_empty"
1844 )]
1845 pub collection_ids: Vec<String>,
1846 #[serde(
1849 rename = "isTaxesEnabled",
1850 default,
1851 skip_serializing_if = "Option::is_none"
1852 )]
1853 pub is_taxes_enabled: Option<bool>,
1854 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1857 pub taxes: Vec<String>,
1858 #[serde(
1860 rename = "automaticTaxCategoryId",
1861 default,
1862 skip_serializing_if = "Option::is_none"
1863 )]
1864 pub automatic_tax_category_id: Option<String>,
1865 #[serde(
1867 rename = "isLabelEnabled",
1868 default,
1869 skip_serializing_if = "Option::is_none"
1870 )]
1871 pub is_label_enabled: Option<bool>,
1872 #[serde(default, skip_serializing_if = "Option::is_none")]
1874 pub label: Option<ProductLabelDto>,
1875 #[serde(default, skip_serializing_if = "Option::is_none")]
1877 pub slug: Option<String>,
1878 #[serde(default, skip_serializing_if = "Option::is_none")]
1880 pub seo: Option<ProductSEODto>,
1881 #[serde(
1883 rename = "taxInclusive",
1884 default,
1885 skip_serializing_if = "Option::is_none"
1886 )]
1887 pub tax_inclusive: Option<bool>,
1888 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1890 pub prices: Vec<String>,
1891}
1892
1893#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1895pub struct UpdateProductResponseDto {
1896 #[serde(rename = "_id")]
1899 pub id: String,
1900 #[serde(default, skip_serializing_if = "Option::is_none")]
1902 pub description: Option<String>,
1903 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1905 pub variants: Vec<ProductVariantDto>,
1906 #[serde(rename = "locationId")]
1909 pub location_id: String,
1910 pub name: String,
1913 #[serde(rename = "productType")]
1916 pub product_type: String,
1917 #[serde(
1919 rename = "availableInStore",
1920 default,
1921 skip_serializing_if = "Option::is_none"
1922 )]
1923 pub available_in_store: Option<bool>,
1924 #[serde(rename = "createdAt")]
1928 pub created_at: String,
1929 #[serde(rename = "updatedAt")]
1933 pub updated_at: String,
1934 #[serde(
1936 rename = "statementDescriptor",
1937 default,
1938 skip_serializing_if = "Option::is_none"
1939 )]
1940 pub statement_descriptor: Option<String>,
1941 #[serde(default, skip_serializing_if = "Option::is_none")]
1943 pub image: Option<String>,
1944 #[serde(
1946 rename = "collectionIds",
1947 default,
1948 skip_serializing_if = "Vec::is_empty"
1949 )]
1950 pub collection_ids: Vec<String>,
1951 #[serde(
1953 rename = "isTaxesEnabled",
1954 default,
1955 skip_serializing_if = "Option::is_none"
1956 )]
1957 pub is_taxes_enabled: Option<bool>,
1958 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1962 pub taxes: Vec<String>,
1963 #[serde(
1965 rename = "automaticTaxCategoryId",
1966 default,
1967 skip_serializing_if = "Option::is_none"
1968 )]
1969 pub automatic_tax_category_id: Option<String>,
1970 #[serde(default, skip_serializing_if = "Option::is_none")]
1972 pub label: Option<ProductLabelDto>,
1973 #[serde(default, skip_serializing_if = "Option::is_none")]
1975 pub slug: Option<String>,
1976}
1977
1978#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1980pub struct UpdateProductReviewDto {
1981 #[serde(rename = "altId")]
1984 pub alt_id: String,
1985 #[serde(rename = "altType")]
1988 pub alt_type: String,
1989 #[serde(rename = "productId")]
1992 pub product_id: String,
1993 pub status: String,
1996 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1998 pub reply: Vec<ProductReviewDto>,
1999 #[serde(default, skip_serializing_if = "Option::is_none")]
2001 pub rating: Option<f64>,
2002 #[serde(default, skip_serializing_if = "Option::is_none")]
2004 pub headline: Option<String>,
2005 #[serde(default, skip_serializing_if = "Option::is_none")]
2007 pub detail: Option<String>,
2008}
2009
2010#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2012pub struct UpdateProductReviewObjectDto {
2013 #[serde(rename = "reviewId")]
2016 pub review_id: String,
2017 #[serde(rename = "productId")]
2020 pub product_id: String,
2021 #[serde(rename = "storeId")]
2024 pub store_id: String,
2025}
2026
2027#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2029pub struct UpdateProductReviewsDto {
2030 #[serde(rename = "altId")]
2033 pub alt_id: String,
2034 #[serde(rename = "altType")]
2037 pub alt_type: String,
2038 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2041 pub reviews: Vec<UpdateProductReviewObjectDto>,
2042 pub status: serde_json::Value,
2045}
2046
2047#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2049pub struct UpdateProductReviewsResponseDto {
2050 pub status: bool,
2053 #[serde(default, skip_serializing_if = "Option::is_none")]
2055 pub message: Option<String>,
2056}
2057
2058#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2060pub struct UpdateProductStoreDto {
2061 #[serde(rename = "altId")]
2064 pub alt_id: String,
2065 #[serde(rename = "altType")]
2068 pub alt_type: String,
2069 pub action: String,
2073 #[serde(rename = "productIds", default, skip_serializing_if = "Vec::is_empty")]
2076 pub product_ids: Vec<String>,
2077}
2078
2079#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2081pub struct UpdateProductStoreResponseDto {
2082 pub status: bool,
2085 #[serde(default, skip_serializing_if = "Option::is_none")]
2087 pub message: Option<String>,
2088}
2089
2090#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2092pub struct UserDetailsDto {
2093 pub name: String,
2096 pub email: String,
2099 #[serde(default, skip_serializing_if = "Option::is_none")]
2101 pub phone: Option<String>,
2102 #[serde(
2104 rename = "isCustomer",
2105 default,
2106 skip_serializing_if = "Option::is_none"
2107 )]
2108 pub is_customer: Option<bool>,
2109}
2110
2111#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2113pub struct WeightOptionsDto {
2114 pub value: f64,
2117 pub unit: String,
2121}