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 pub message: String,
199 pub status: bool,
202 #[serde(rename = "updatedCount")]
205 pub updated_count: f64,
206}
207
208#[derive(Debug, Clone, Default, Serialize, Deserialize)]
210pub struct BulkUpdateDto {
211 #[serde(rename = "altId")]
214 pub alt_id: String,
215 #[serde(rename = "altType")]
218 pub alt_type: String,
219 #[serde(rename = "type")]
224 pub type_: String,
225 #[serde(rename = "productIds", default, skip_serializing_if = "Vec::is_empty")]
228 pub product_ids: Vec<String>,
229 #[serde(default, skip_serializing_if = "Option::is_none")]
231 pub filters: Option<BulkUpdateFilters>,
232 #[serde(default, skip_serializing_if = "Option::is_none")]
234 pub price: Option<PriceUpdateField>,
235 #[serde(
237 rename = "compareAtPrice",
238 default,
239 skip_serializing_if = "Option::is_none"
240 )]
241 pub compare_at_price: Option<PriceUpdateField>,
242 #[serde(default, skip_serializing_if = "Option::is_none")]
244 pub availability: Option<bool>,
245 #[serde(
247 rename = "collectionIds",
248 default,
249 skip_serializing_if = "Vec::is_empty"
250 )]
251 pub collection_ids: Vec<String>,
252 #[serde(default, skip_serializing_if = "Option::is_none")]
254 pub currency: Option<String>,
255}
256
257#[derive(Debug, Clone, Default, Serialize, Deserialize)]
259pub struct BulkUpdateFilters {
260 #[serde(
262 rename = "collectionIds",
263 default,
264 skip_serializing_if = "Vec::is_empty"
265 )]
266 pub collection_ids: Vec<String>,
267 #[serde(
269 rename = "productType",
270 default,
271 skip_serializing_if = "Option::is_none"
272 )]
273 pub product_type: Option<String>,
274 #[serde(
276 rename = "availableInStore",
277 default,
278 skip_serializing_if = "Option::is_none"
279 )]
280 pub available_in_store: Option<bool>,
281 #[serde(default, skip_serializing_if = "Option::is_none")]
283 pub search: Option<String>,
284}
285
286#[derive(Debug, Clone, Default, Serialize, Deserialize)]
288pub struct BulkUpdateResponseDto {
289 pub status: bool,
292 #[serde(default, skip_serializing_if = "Option::is_none")]
294 pub message: Option<String>,
295}
296
297#[derive(Debug, Clone, Default, Serialize, Deserialize)]
299pub struct CollectionSEODto {
300 #[serde(default, skip_serializing_if = "Option::is_none")]
302 pub title: Option<String>,
303 #[serde(default, skip_serializing_if = "Option::is_none")]
305 pub description: Option<String>,
306}
307
308#[derive(Debug, Clone, Default, Serialize, Deserialize)]
310pub struct CollectionSchema {
311 #[serde(rename = "_id")]
314 pub id: String,
315 #[serde(rename = "altId")]
318 pub alt_id: String,
319 pub name: String,
322 pub slug: String,
326 pub image: String,
329 pub seo: CollectionSEODto,
332 #[serde(rename = "createdAt")]
335 pub created_at: String,
336}
337
338#[derive(Debug, Clone, Default, Serialize, Deserialize)]
340pub struct CountReviewsByStatusResponseDto {
341 #[serde(default, skip_serializing_if = "Vec::is_empty")]
344 pub data: Vec<Vec<serde_json::Value>>,
345}
346
347#[derive(Debug, Clone, Default, Serialize, Deserialize)]
349pub struct CreateCollectionResponseDto {
350 pub data: CollectionSchema,
353}
354
355#[derive(Debug, Clone, Default, Serialize, Deserialize)]
357pub struct CreatePriceDto {
358 pub name: String,
361 #[serde(rename = "type")]
365 pub type_: String,
366 pub currency: String,
369 pub amount: f64,
372 #[serde(default, skip_serializing_if = "Option::is_none")]
374 pub recurring: Option<RecurringDto>,
375 #[serde(default, skip_serializing_if = "Option::is_none")]
377 pub description: Option<String>,
378 #[serde(
380 rename = "membershipOffers",
381 default,
382 skip_serializing_if = "Vec::is_empty"
383 )]
384 pub membership_offers: Vec<MembershipOfferDto>,
385 #[serde(
387 rename = "trialPeriod",
388 default,
389 skip_serializing_if = "Option::is_none"
390 )]
391 pub trial_period: Option<f64>,
392 #[serde(
394 rename = "totalCycles",
395 default,
396 skip_serializing_if = "Option::is_none"
397 )]
398 pub total_cycles: Option<f64>,
399 #[serde(rename = "setupFee", default, skip_serializing_if = "Option::is_none")]
401 pub setup_fee: Option<f64>,
402 #[serde(
404 rename = "variantOptionIds",
405 default,
406 skip_serializing_if = "Vec::is_empty"
407 )]
408 pub variant_option_ids: Vec<String>,
409 #[serde(
411 rename = "compareAtPrice",
412 default,
413 skip_serializing_if = "Option::is_none"
414 )]
415 pub compare_at_price: Option<f64>,
416 #[serde(rename = "locationId")]
419 pub location_id: String,
420 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
422 pub user_id: Option<String>,
423 #[serde(default, skip_serializing_if = "Option::is_none")]
425 pub meta: Option<PriceMetaDto>,
426 #[serde(
428 rename = "trackInventory",
429 default,
430 skip_serializing_if = "Option::is_none"
431 )]
432 pub track_inventory: Option<bool>,
433 #[serde(
435 rename = "availableQuantity",
436 default,
437 skip_serializing_if = "Option::is_none"
438 )]
439 pub available_quantity: Option<f64>,
440 #[serde(
442 rename = "allowOutOfStockPurchases",
443 default,
444 skip_serializing_if = "Option::is_none"
445 )]
446 pub allow_out_of_stock_purchases: Option<bool>,
447 #[serde(default, skip_serializing_if = "Option::is_none")]
449 pub sku: Option<String>,
450 #[serde(
452 rename = "shippingOptions",
453 default,
454 skip_serializing_if = "Option::is_none"
455 )]
456 pub shipping_options: Option<ShippingOptionsDto>,
457 #[serde(
459 rename = "isDigitalProduct",
460 default,
461 skip_serializing_if = "Option::is_none"
462 )]
463 pub is_digital_product: Option<bool>,
464 #[serde(
466 rename = "digitalDelivery",
467 default,
468 skip_serializing_if = "Vec::is_empty"
469 )]
470 pub digital_delivery: Vec<String>,
471}
472
473#[derive(Debug, Clone, Default, Serialize, Deserialize)]
475pub struct CreatePriceResponseDto {
476 #[serde(rename = "_id")]
479 pub id: String,
480 #[serde(
482 rename = "membershipOffers",
483 default,
484 skip_serializing_if = "Vec::is_empty"
485 )]
486 pub membership_offers: Vec<MembershipOfferDto>,
487 #[serde(
489 rename = "variantOptionIds",
490 default,
491 skip_serializing_if = "Vec::is_empty"
492 )]
493 pub variant_option_ids: Vec<String>,
494 #[serde(
496 rename = "locationId",
497 default,
498 skip_serializing_if = "Option::is_none"
499 )]
500 pub location_id: Option<String>,
501 #[serde(default, skip_serializing_if = "Option::is_none")]
503 pub product: Option<String>,
504 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
506 pub user_id: Option<String>,
507 pub name: String,
510 #[serde(rename = "type")]
514 pub type_: String,
515 pub currency: String,
518 pub amount: f64,
521 #[serde(default, skip_serializing_if = "Option::is_none")]
523 pub recurring: Option<RecurringDto>,
524 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
527 pub created_at: Option<String>,
528 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
531 pub updated_at: Option<String>,
532 #[serde(
534 rename = "compareAtPrice",
535 default,
536 skip_serializing_if = "Option::is_none"
537 )]
538 pub compare_at_price: Option<f64>,
539 #[serde(
541 rename = "trackInventory",
542 default,
543 skip_serializing_if = "Option::is_none"
544 )]
545 pub track_inventory: Option<bool>,
546 #[serde(
548 rename = "availableQuantity",
549 default,
550 skip_serializing_if = "Option::is_none"
551 )]
552 pub available_quantity: Option<f64>,
553 #[serde(
555 rename = "allowOutOfStockPurchases",
556 default,
557 skip_serializing_if = "Option::is_none"
558 )]
559 pub allow_out_of_stock_purchases: Option<bool>,
560}
561
562#[derive(Debug, Clone, Default, Serialize, Deserialize)]
564pub struct CreateProductCollectionsDto {
565 #[serde(rename = "altId")]
568 pub alt_id: String,
569 #[serde(rename = "altType")]
573 pub alt_type: String,
574 #[serde(
576 rename = "collectionId",
577 default,
578 skip_serializing_if = "Option::is_none"
579 )]
580 pub collection_id: Option<String>,
581 pub name: String,
584 pub slug: String,
587 #[serde(default, skip_serializing_if = "Option::is_none")]
589 pub image: Option<String>,
590 #[serde(default, skip_serializing_if = "Option::is_none")]
592 pub seo: Option<CollectionSEODto>,
593}
594
595#[derive(Debug, Clone, Default, Serialize, Deserialize)]
597pub struct CreateProductDto {
598 pub name: String,
601 #[serde(rename = "locationId")]
604 pub location_id: String,
605 #[serde(default, skip_serializing_if = "Option::is_none")]
607 pub description: Option<String>,
608 #[serde(rename = "productType")]
611 pub product_type: String,
612 #[serde(default, skip_serializing_if = "Option::is_none")]
614 pub image: Option<String>,
615 #[serde(
617 rename = "statementDescriptor",
618 default,
619 skip_serializing_if = "Option::is_none"
620 )]
621 pub statement_descriptor: Option<String>,
622 #[serde(
624 rename = "availableInStore",
625 default,
626 skip_serializing_if = "Option::is_none"
627 )]
628 pub available_in_store: Option<bool>,
629 #[serde(default, skip_serializing_if = "Vec::is_empty")]
631 pub medias: Vec<ProductMediaDto>,
632 #[serde(default, skip_serializing_if = "Vec::is_empty")]
634 pub variants: Vec<ProductVariantDto>,
635 #[serde(
637 rename = "collectionIds",
638 default,
639 skip_serializing_if = "Vec::is_empty"
640 )]
641 pub collection_ids: Vec<String>,
642 #[serde(
645 rename = "isTaxesEnabled",
646 default,
647 skip_serializing_if = "Option::is_none"
648 )]
649 pub is_taxes_enabled: Option<bool>,
650 #[serde(default, skip_serializing_if = "Vec::is_empty")]
653 pub taxes: Vec<String>,
654 #[serde(
656 rename = "automaticTaxCategoryId",
657 default,
658 skip_serializing_if = "Option::is_none"
659 )]
660 pub automatic_tax_category_id: Option<String>,
661 #[serde(
663 rename = "isLabelEnabled",
664 default,
665 skip_serializing_if = "Option::is_none"
666 )]
667 pub is_label_enabled: Option<bool>,
668 #[serde(default, skip_serializing_if = "Option::is_none")]
670 pub label: Option<ProductLabelDto>,
671 #[serde(default, skip_serializing_if = "Option::is_none")]
673 pub slug: Option<String>,
674 #[serde(default, skip_serializing_if = "Option::is_none")]
676 pub seo: Option<ProductSEODto>,
677 #[serde(
679 rename = "taxInclusive",
680 default,
681 skip_serializing_if = "Option::is_none"
682 )]
683 pub tax_inclusive: Option<bool>,
684}
685
686#[derive(Debug, Clone, Default, Serialize, Deserialize)]
688pub struct CreateProductResponseDto {
689 #[serde(rename = "_id")]
692 pub id: String,
693 #[serde(default, skip_serializing_if = "Option::is_none")]
695 pub description: Option<String>,
696 #[serde(default, skip_serializing_if = "Vec::is_empty")]
698 pub variants: Vec<ProductVariantDto>,
699 #[serde(rename = "locationId")]
702 pub location_id: String,
703 pub name: String,
706 #[serde(rename = "productType")]
709 pub product_type: String,
710 #[serde(
712 rename = "availableInStore",
713 default,
714 skip_serializing_if = "Option::is_none"
715 )]
716 pub available_in_store: Option<bool>,
717 #[serde(rename = "createdAt")]
721 pub created_at: String,
722 #[serde(rename = "updatedAt")]
726 pub updated_at: String,
727 #[serde(
729 rename = "statementDescriptor",
730 default,
731 skip_serializing_if = "Option::is_none"
732 )]
733 pub statement_descriptor: Option<String>,
734 #[serde(default, skip_serializing_if = "Option::is_none")]
736 pub image: Option<String>,
737 #[serde(
739 rename = "collectionIds",
740 default,
741 skip_serializing_if = "Vec::is_empty"
742 )]
743 pub collection_ids: Vec<String>,
744 #[serde(
746 rename = "isTaxesEnabled",
747 default,
748 skip_serializing_if = "Option::is_none"
749 )]
750 pub is_taxes_enabled: Option<bool>,
751 #[serde(default, skip_serializing_if = "Vec::is_empty")]
755 pub taxes: Vec<String>,
756 #[serde(
758 rename = "automaticTaxCategoryId",
759 default,
760 skip_serializing_if = "Option::is_none"
761 )]
762 pub automatic_tax_category_id: Option<String>,
763 #[serde(default, skip_serializing_if = "Option::is_none")]
765 pub label: Option<ProductLabelDto>,
766 #[serde(default, skip_serializing_if = "Option::is_none")]
768 pub slug: Option<String>,
769}
770
771#[derive(Debug, Clone, Default, Serialize, Deserialize)]
773pub struct DefaultCollectionResponseDto {
774 pub data: ProductCategories,
777 pub status: bool,
780}
781
782#[derive(Debug, Clone, Default, Serialize, Deserialize)]
784pub struct DefaultPriceResponseDto {
785 #[serde(rename = "_id")]
788 pub id: String,
789 #[serde(
791 rename = "membershipOffers",
792 default,
793 skip_serializing_if = "Vec::is_empty"
794 )]
795 pub membership_offers: Vec<MembershipOfferDto>,
796 #[serde(
798 rename = "variantOptionIds",
799 default,
800 skip_serializing_if = "Vec::is_empty"
801 )]
802 pub variant_option_ids: Vec<String>,
803 #[serde(
805 rename = "locationId",
806 default,
807 skip_serializing_if = "Option::is_none"
808 )]
809 pub location_id: Option<String>,
810 #[serde(default, skip_serializing_if = "Option::is_none")]
812 pub product: Option<String>,
813 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
815 pub user_id: Option<String>,
816 pub name: String,
819 #[serde(rename = "type")]
823 pub type_: String,
824 pub currency: String,
827 pub amount: f64,
830 #[serde(default, skip_serializing_if = "Option::is_none")]
832 pub recurring: Option<RecurringDto>,
833 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
836 pub created_at: Option<String>,
837 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
840 pub updated_at: Option<String>,
841 #[serde(
843 rename = "compareAtPrice",
844 default,
845 skip_serializing_if = "Option::is_none"
846 )]
847 pub compare_at_price: Option<f64>,
848 #[serde(
850 rename = "trackInventory",
851 default,
852 skip_serializing_if = "Option::is_none"
853 )]
854 pub track_inventory: Option<bool>,
855 #[serde(
857 rename = "availableQuantity",
858 default,
859 skip_serializing_if = "Option::is_none"
860 )]
861 pub available_quantity: Option<f64>,
862 #[serde(
864 rename = "allowOutOfStockPurchases",
865 default,
866 skip_serializing_if = "Option::is_none"
867 )]
868 pub allow_out_of_stock_purchases: Option<bool>,
869}
870
871#[derive(Debug, Clone, Default, Serialize, Deserialize)]
873pub struct DefaultProductResponseDto {
874 #[serde(rename = "_id")]
877 pub id: String,
878 #[serde(default, skip_serializing_if = "Option::is_none")]
880 pub description: Option<String>,
881 #[serde(default, skip_serializing_if = "Vec::is_empty")]
883 pub variants: Vec<ProductVariantDto>,
884 #[serde(rename = "locationId")]
887 pub location_id: String,
888 pub name: String,
891 #[serde(rename = "productType")]
894 pub product_type: String,
895 #[serde(
897 rename = "availableInStore",
898 default,
899 skip_serializing_if = "Option::is_none"
900 )]
901 pub available_in_store: Option<bool>,
902 #[serde(rename = "createdAt")]
906 pub created_at: String,
907 #[serde(rename = "updatedAt")]
911 pub updated_at: String,
912 #[serde(
914 rename = "statementDescriptor",
915 default,
916 skip_serializing_if = "Option::is_none"
917 )]
918 pub statement_descriptor: Option<String>,
919 #[serde(default, skip_serializing_if = "Option::is_none")]
921 pub image: Option<String>,
922 #[serde(
924 rename = "collectionIds",
925 default,
926 skip_serializing_if = "Vec::is_empty"
927 )]
928 pub collection_ids: Vec<String>,
929 #[serde(
931 rename = "isTaxesEnabled",
932 default,
933 skip_serializing_if = "Option::is_none"
934 )]
935 pub is_taxes_enabled: Option<bool>,
936 #[serde(default, skip_serializing_if = "Vec::is_empty")]
940 pub taxes: Vec<String>,
941 #[serde(
943 rename = "automaticTaxCategoryId",
944 default,
945 skip_serializing_if = "Option::is_none"
946 )]
947 pub automatic_tax_category_id: Option<String>,
948 #[serde(default, skip_serializing_if = "Option::is_none")]
950 pub label: Option<ProductLabelDto>,
951 #[serde(default, skip_serializing_if = "Option::is_none")]
953 pub slug: Option<String>,
954}
955
956#[derive(Debug, Clone, Default, Serialize, Deserialize)]
958pub struct DeletePriceResponseDto {
959 pub status: bool,
962}
963
964#[derive(Debug, Clone, Default, Serialize, Deserialize)]
966pub struct DeleteProductCollectionResponseDto {
967 pub status: bool,
970 #[serde(default, skip_serializing_if = "Option::is_none")]
972 pub message: Option<String>,
973}
974
975#[derive(Debug, Clone, Default, Serialize, Deserialize)]
977pub struct DeleteProductResponseDto {
978 pub status: bool,
981}
982
983#[derive(Debug, Clone, Default, Serialize, Deserialize)]
985pub struct DeleteProductReviewResponseDto {
986 pub status: bool,
989 #[serde(default, skip_serializing_if = "Option::is_none")]
991 pub message: Option<String>,
992}
993
994#[derive(Debug, Clone, Default, Serialize, Deserialize)]
996pub struct GetInventoryResponseDto {
997 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1000 pub inventory: Vec<InventoryItemDto>,
1001 pub total: serde_json::Value,
1004}
1005
1006#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1008pub struct GetPriceResponseDto {
1009 #[serde(rename = "_id")]
1012 pub id: String,
1013 #[serde(
1015 rename = "membershipOffers",
1016 default,
1017 skip_serializing_if = "Vec::is_empty"
1018 )]
1019 pub membership_offers: Vec<MembershipOfferDto>,
1020 #[serde(
1022 rename = "variantOptionIds",
1023 default,
1024 skip_serializing_if = "Vec::is_empty"
1025 )]
1026 pub variant_option_ids: Vec<String>,
1027 #[serde(
1029 rename = "locationId",
1030 default,
1031 skip_serializing_if = "Option::is_none"
1032 )]
1033 pub location_id: Option<String>,
1034 #[serde(default, skip_serializing_if = "Option::is_none")]
1036 pub product: Option<String>,
1037 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
1039 pub user_id: Option<String>,
1040 pub name: String,
1043 #[serde(rename = "type")]
1047 pub type_: String,
1048 pub currency: String,
1051 pub amount: f64,
1054 #[serde(default, skip_serializing_if = "Option::is_none")]
1056 pub recurring: Option<RecurringDto>,
1057 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
1060 pub created_at: Option<String>,
1061 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
1064 pub updated_at: Option<String>,
1065 #[serde(
1067 rename = "compareAtPrice",
1068 default,
1069 skip_serializing_if = "Option::is_none"
1070 )]
1071 pub compare_at_price: Option<f64>,
1072 #[serde(
1074 rename = "trackInventory",
1075 default,
1076 skip_serializing_if = "Option::is_none"
1077 )]
1078 pub track_inventory: Option<bool>,
1079 #[serde(
1081 rename = "availableQuantity",
1082 default,
1083 skip_serializing_if = "Option::is_none"
1084 )]
1085 pub available_quantity: Option<f64>,
1086 #[serde(
1088 rename = "allowOutOfStockPurchases",
1089 default,
1090 skip_serializing_if = "Option::is_none"
1091 )]
1092 pub allow_out_of_stock_purchases: Option<bool>,
1093}
1094
1095#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1097pub struct GetProductResponseDto {
1098 #[serde(rename = "_id")]
1101 pub id: String,
1102 #[serde(default, skip_serializing_if = "Option::is_none")]
1104 pub description: Option<String>,
1105 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1107 pub variants: Vec<ProductVariantDto>,
1108 #[serde(rename = "locationId")]
1111 pub location_id: String,
1112 pub name: String,
1115 #[serde(rename = "productType")]
1118 pub product_type: String,
1119 #[serde(
1121 rename = "availableInStore",
1122 default,
1123 skip_serializing_if = "Option::is_none"
1124 )]
1125 pub available_in_store: Option<bool>,
1126 #[serde(rename = "createdAt")]
1130 pub created_at: String,
1131 #[serde(rename = "updatedAt")]
1135 pub updated_at: String,
1136 #[serde(
1138 rename = "statementDescriptor",
1139 default,
1140 skip_serializing_if = "Option::is_none"
1141 )]
1142 pub statement_descriptor: Option<String>,
1143 #[serde(default, skip_serializing_if = "Option::is_none")]
1145 pub image: Option<String>,
1146 #[serde(
1148 rename = "collectionIds",
1149 default,
1150 skip_serializing_if = "Vec::is_empty"
1151 )]
1152 pub collection_ids: Vec<String>,
1153 #[serde(
1155 rename = "isTaxesEnabled",
1156 default,
1157 skip_serializing_if = "Option::is_none"
1158 )]
1159 pub is_taxes_enabled: Option<bool>,
1160 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1164 pub taxes: Vec<String>,
1165 #[serde(
1167 rename = "automaticTaxCategoryId",
1168 default,
1169 skip_serializing_if = "Option::is_none"
1170 )]
1171 pub automatic_tax_category_id: Option<String>,
1172 #[serde(default, skip_serializing_if = "Option::is_none")]
1174 pub label: Option<ProductLabelDto>,
1175 #[serde(default, skip_serializing_if = "Option::is_none")]
1177 pub slug: Option<String>,
1178}
1179
1180#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1182pub struct GetProductStatsResponseDto {
1183 #[serde(rename = "totalProducts")]
1186 pub total_products: f64,
1187 #[serde(rename = "includedInStore")]
1190 pub included_in_store: f64,
1191 #[serde(rename = "excludedFromStore")]
1194 pub excluded_from_store: f64,
1195}
1196
1197#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1199pub struct InventoryItemDto {
1200 #[serde(rename = "_id")]
1203 pub id: String,
1204 pub name: String,
1207 #[serde(rename = "availableQuantity")]
1210 pub available_quantity: f64,
1211 pub sku: String,
1214 #[serde(rename = "allowOutOfStockPurchases")]
1217 pub allow_out_of_stock_purchases: bool,
1218 pub product: String,
1221 #[serde(rename = "updatedAt")]
1224 pub updated_at: String,
1225 #[serde(default, skip_serializing_if = "Option::is_none")]
1227 pub image: Option<String>,
1228 #[serde(
1230 rename = "productName",
1231 default,
1232 skip_serializing_if = "Option::is_none"
1233 )]
1234 pub product_name: Option<String>,
1235}
1236
1237#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1239pub struct ListCollectionResponseDto {
1240 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1243 pub data: Vec<Vec<serde_json::Value>>,
1244 pub total: f64,
1247}
1248
1249#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1251pub struct ListPricesResponseDto {
1252 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1255 pub prices: Vec<DefaultPriceResponseDto>,
1256 pub total: f64,
1258}
1259
1260#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1262pub struct ListProductReviewsResponseDto {
1263 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1266 pub data: Vec<Vec<serde_json::Value>>,
1267 pub total: f64,
1270}
1271
1272#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1274pub struct ListProductsResponseDto {
1275 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1278 pub products: Vec<DefaultProductResponseDto>,
1279 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1282 pub total: Vec<ListProductsStats>,
1283}
1284
1285#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1287pub struct ListProductsStats {
1288 pub total: f64,
1291}
1292
1293#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1295pub struct MembershipOfferDto {
1296 pub label: String,
1299 pub value: String,
1302 #[serde(rename = "_id")]
1305 pub id: String,
1306}
1307
1308#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1310pub struct PriceDimensionsDto {
1311 pub height: f64,
1314 pub width: f64,
1317 pub length: f64,
1320 pub unit: String,
1324}
1325
1326#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1328pub struct PriceMetaDto {
1329 pub source: String,
1333 #[serde(rename = "sourceId", default, skip_serializing_if = "Option::is_none")]
1335 pub source_id: Option<String>,
1336 #[serde(rename = "stripePriceId")]
1339 pub stripe_price_id: String,
1340 #[serde(rename = "internalSource")]
1345 pub internal_source: String,
1346}
1347
1348#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1350pub struct PriceUpdateField {
1351 #[serde(rename = "type")]
1356 pub type_: String,
1357 pub value: f64,
1360 #[serde(
1362 rename = "roundToWhole",
1363 default,
1364 skip_serializing_if = "Option::is_none"
1365 )]
1366 pub round_to_whole: Option<bool>,
1367}
1368
1369#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1371pub struct ProductCategories {
1372 #[serde(flatten)]
1374 pub extra: serde_json::Map<String, serde_json::Value>,
1375}
1376
1377#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1379pub struct ProductLabelDto {
1380 pub title: String,
1383 #[serde(rename = "startDate", default, skip_serializing_if = "Option::is_none")]
1385 pub start_date: Option<String>,
1386 #[serde(rename = "endDate", default, skip_serializing_if = "Option::is_none")]
1388 pub end_date: Option<String>,
1389}
1390
1391#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1393pub struct ProductMediaDto {
1394 pub id: String,
1397 #[serde(default, skip_serializing_if = "Option::is_none")]
1399 pub title: Option<String>,
1400 pub url: String,
1403 #[serde(rename = "type")]
1407 pub type_: String,
1408 #[serde(
1410 rename = "isFeatured",
1411 default,
1412 skip_serializing_if = "Option::is_none"
1413 )]
1414 pub is_featured: Option<bool>,
1415 #[serde(rename = "priceIds", default, skip_serializing_if = "Vec::is_empty")]
1417 pub price_ids: Vec<Vec<serde_json::Value>>,
1418}
1419
1420#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1422pub struct ProductReviewDto {
1423 pub headline: String,
1426 pub comment: String,
1429 pub user: UserDetailsDto,
1432}
1433
1434#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1436pub struct ProductSEODto {
1437 #[serde(default, skip_serializing_if = "Option::is_none")]
1439 pub title: Option<String>,
1440 #[serde(default, skip_serializing_if = "Option::is_none")]
1442 pub description: Option<String>,
1443}
1444
1445#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1447pub struct ProductVariantDto {
1448 pub id: String,
1451 pub name: String,
1454 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1457 pub options: Vec<ProductVariantOptionDto>,
1458}
1459
1460#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1462pub struct ProductVariantOptionDto {
1463 pub id: String,
1466 pub name: String,
1469}
1470
1471#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1473pub struct RecurringDto {
1474 pub interval: String,
1478 #[serde(rename = "intervalCount")]
1481 pub interval_count: f64,
1482}
1483
1484#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1486pub struct ShippingOptionsDto {
1487 #[serde(default, skip_serializing_if = "Option::is_none")]
1489 pub weight: Option<WeightOptionsDto>,
1490 #[serde(default, skip_serializing_if = "Option::is_none")]
1492 pub dimensions: Option<PriceDimensionsDto>,
1493}
1494
1495#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1497pub struct UpdateDisplayPriorityBodyDto {
1498 #[serde(rename = "altId")]
1501 pub alt_id: String,
1502 #[serde(rename = "altType")]
1505 pub alt_type: String,
1506 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1509 pub products: Vec<Vec<serde_json::Value>>,
1510}
1511
1512#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1514pub struct UpdateInventoryDto {
1515 #[serde(rename = "altId")]
1518 pub alt_id: String,
1519 #[serde(rename = "altType")]
1522 pub alt_type: String,
1523 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1526 pub items: Vec<UpdateInventoryItemDto>,
1527}
1528
1529#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1531pub struct UpdateInventoryItemDto {
1532 #[serde(rename = "priceId")]
1535 pub price_id: String,
1536 #[serde(
1538 rename = "availableQuantity",
1539 default,
1540 skip_serializing_if = "Option::is_none"
1541 )]
1542 pub available_quantity: Option<f64>,
1543 #[serde(
1545 rename = "allowOutOfStockPurchases",
1546 default,
1547 skip_serializing_if = "Option::is_none"
1548 )]
1549 pub allow_out_of_stock_purchases: Option<bool>,
1550}
1551
1552#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1554pub struct UpdateInventoryResponseDto {
1555 pub status: bool,
1558 #[serde(default, skip_serializing_if = "Option::is_none")]
1560 pub message: Option<String>,
1561}
1562
1563#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1565pub struct UpdatePriceDto {
1566 pub name: String,
1569 #[serde(rename = "type")]
1573 pub type_: String,
1574 pub currency: String,
1577 pub amount: f64,
1580 #[serde(default, skip_serializing_if = "Option::is_none")]
1582 pub recurring: Option<RecurringDto>,
1583 #[serde(default, skip_serializing_if = "Option::is_none")]
1585 pub description: Option<String>,
1586 #[serde(
1588 rename = "membershipOffers",
1589 default,
1590 skip_serializing_if = "Vec::is_empty"
1591 )]
1592 pub membership_offers: Vec<MembershipOfferDto>,
1593 #[serde(
1595 rename = "trialPeriod",
1596 default,
1597 skip_serializing_if = "Option::is_none"
1598 )]
1599 pub trial_period: Option<f64>,
1600 #[serde(
1602 rename = "totalCycles",
1603 default,
1604 skip_serializing_if = "Option::is_none"
1605 )]
1606 pub total_cycles: Option<f64>,
1607 #[serde(rename = "setupFee", default, skip_serializing_if = "Option::is_none")]
1609 pub setup_fee: Option<f64>,
1610 #[serde(
1612 rename = "variantOptionIds",
1613 default,
1614 skip_serializing_if = "Vec::is_empty"
1615 )]
1616 pub variant_option_ids: Vec<String>,
1617 #[serde(
1619 rename = "compareAtPrice",
1620 default,
1621 skip_serializing_if = "Option::is_none"
1622 )]
1623 pub compare_at_price: Option<f64>,
1624 #[serde(rename = "locationId")]
1627 pub location_id: String,
1628 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
1630 pub user_id: Option<String>,
1631 #[serde(default, skip_serializing_if = "Option::is_none")]
1633 pub meta: Option<PriceMetaDto>,
1634 #[serde(
1636 rename = "trackInventory",
1637 default,
1638 skip_serializing_if = "Option::is_none"
1639 )]
1640 pub track_inventory: Option<bool>,
1641 #[serde(
1643 rename = "availableQuantity",
1644 default,
1645 skip_serializing_if = "Option::is_none"
1646 )]
1647 pub available_quantity: Option<f64>,
1648 #[serde(
1650 rename = "allowOutOfStockPurchases",
1651 default,
1652 skip_serializing_if = "Option::is_none"
1653 )]
1654 pub allow_out_of_stock_purchases: Option<bool>,
1655 #[serde(default, skip_serializing_if = "Option::is_none")]
1657 pub sku: Option<String>,
1658 #[serde(
1660 rename = "shippingOptions",
1661 default,
1662 skip_serializing_if = "Option::is_none"
1663 )]
1664 pub shipping_options: Option<ShippingOptionsDto>,
1665 #[serde(
1667 rename = "isDigitalProduct",
1668 default,
1669 skip_serializing_if = "Option::is_none"
1670 )]
1671 pub is_digital_product: Option<bool>,
1672 #[serde(
1674 rename = "digitalDelivery",
1675 default,
1676 skip_serializing_if = "Vec::is_empty"
1677 )]
1678 pub digital_delivery: Vec<String>,
1679}
1680
1681#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1683pub struct UpdatePriceResponseDto {
1684 #[serde(rename = "_id")]
1687 pub id: String,
1688 #[serde(
1690 rename = "membershipOffers",
1691 default,
1692 skip_serializing_if = "Vec::is_empty"
1693 )]
1694 pub membership_offers: Vec<MembershipOfferDto>,
1695 #[serde(
1697 rename = "variantOptionIds",
1698 default,
1699 skip_serializing_if = "Vec::is_empty"
1700 )]
1701 pub variant_option_ids: Vec<String>,
1702 #[serde(
1704 rename = "locationId",
1705 default,
1706 skip_serializing_if = "Option::is_none"
1707 )]
1708 pub location_id: Option<String>,
1709 #[serde(default, skip_serializing_if = "Option::is_none")]
1711 pub product: Option<String>,
1712 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
1714 pub user_id: Option<String>,
1715 pub name: String,
1718 #[serde(rename = "type")]
1722 pub type_: String,
1723 pub currency: String,
1726 pub amount: f64,
1729 #[serde(default, skip_serializing_if = "Option::is_none")]
1731 pub recurring: Option<RecurringDto>,
1732 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
1735 pub created_at: Option<String>,
1736 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
1739 pub updated_at: Option<String>,
1740 #[serde(
1742 rename = "compareAtPrice",
1743 default,
1744 skip_serializing_if = "Option::is_none"
1745 )]
1746 pub compare_at_price: Option<f64>,
1747 #[serde(
1749 rename = "trackInventory",
1750 default,
1751 skip_serializing_if = "Option::is_none"
1752 )]
1753 pub track_inventory: Option<bool>,
1754 #[serde(
1756 rename = "availableQuantity",
1757 default,
1758 skip_serializing_if = "Option::is_none"
1759 )]
1760 pub available_quantity: Option<f64>,
1761 #[serde(
1763 rename = "allowOutOfStockPurchases",
1764 default,
1765 skip_serializing_if = "Option::is_none"
1766 )]
1767 pub allow_out_of_stock_purchases: Option<bool>,
1768}
1769
1770#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1772pub struct UpdateProductCollectionResponseDto {
1773 pub status: bool,
1776 #[serde(default, skip_serializing_if = "Option::is_none")]
1778 pub message: Option<String>,
1779}
1780
1781#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1783pub struct UpdateProductCollectionsDto {
1784 #[serde(rename = "altId")]
1787 pub alt_id: String,
1788 #[serde(rename = "altType")]
1792 pub alt_type: String,
1793 #[serde(default, skip_serializing_if = "Option::is_none")]
1795 pub name: Option<String>,
1796 #[serde(default, skip_serializing_if = "Option::is_none")]
1798 pub slug: Option<String>,
1799 #[serde(default, skip_serializing_if = "Option::is_none")]
1801 pub image: Option<String>,
1802 #[serde(default, skip_serializing_if = "Option::is_none")]
1804 pub seo: Option<CollectionSEODto>,
1805}
1806
1807#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1809pub struct UpdateProductDto {
1810 pub name: String,
1813 #[serde(rename = "locationId")]
1816 pub location_id: String,
1817 #[serde(default, skip_serializing_if = "Option::is_none")]
1819 pub description: Option<String>,
1820 #[serde(rename = "productType")]
1823 pub product_type: String,
1824 #[serde(default, skip_serializing_if = "Option::is_none")]
1826 pub image: Option<String>,
1827 #[serde(
1829 rename = "statementDescriptor",
1830 default,
1831 skip_serializing_if = "Option::is_none"
1832 )]
1833 pub statement_descriptor: Option<String>,
1834 #[serde(
1836 rename = "availableInStore",
1837 default,
1838 skip_serializing_if = "Option::is_none"
1839 )]
1840 pub available_in_store: Option<bool>,
1841 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1843 pub medias: Vec<ProductMediaDto>,
1844 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1846 pub variants: Vec<ProductVariantDto>,
1847 #[serde(
1849 rename = "collectionIds",
1850 default,
1851 skip_serializing_if = "Vec::is_empty"
1852 )]
1853 pub collection_ids: Vec<String>,
1854 #[serde(
1857 rename = "isTaxesEnabled",
1858 default,
1859 skip_serializing_if = "Option::is_none"
1860 )]
1861 pub is_taxes_enabled: Option<bool>,
1862 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1865 pub taxes: Vec<String>,
1866 #[serde(
1868 rename = "automaticTaxCategoryId",
1869 default,
1870 skip_serializing_if = "Option::is_none"
1871 )]
1872 pub automatic_tax_category_id: Option<String>,
1873 #[serde(
1875 rename = "isLabelEnabled",
1876 default,
1877 skip_serializing_if = "Option::is_none"
1878 )]
1879 pub is_label_enabled: Option<bool>,
1880 #[serde(default, skip_serializing_if = "Option::is_none")]
1882 pub label: Option<ProductLabelDto>,
1883 #[serde(default, skip_serializing_if = "Option::is_none")]
1885 pub slug: Option<String>,
1886 #[serde(default, skip_serializing_if = "Option::is_none")]
1888 pub seo: Option<ProductSEODto>,
1889 #[serde(
1891 rename = "taxInclusive",
1892 default,
1893 skip_serializing_if = "Option::is_none"
1894 )]
1895 pub tax_inclusive: Option<bool>,
1896 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1898 pub prices: Vec<String>,
1899}
1900
1901#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1903pub struct UpdateProductResponseDto {
1904 #[serde(rename = "_id")]
1907 pub id: String,
1908 #[serde(default, skip_serializing_if = "Option::is_none")]
1910 pub description: Option<String>,
1911 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1913 pub variants: Vec<ProductVariantDto>,
1914 #[serde(rename = "locationId")]
1917 pub location_id: String,
1918 pub name: String,
1921 #[serde(rename = "productType")]
1924 pub product_type: String,
1925 #[serde(
1927 rename = "availableInStore",
1928 default,
1929 skip_serializing_if = "Option::is_none"
1930 )]
1931 pub available_in_store: Option<bool>,
1932 #[serde(rename = "createdAt")]
1936 pub created_at: String,
1937 #[serde(rename = "updatedAt")]
1941 pub updated_at: String,
1942 #[serde(
1944 rename = "statementDescriptor",
1945 default,
1946 skip_serializing_if = "Option::is_none"
1947 )]
1948 pub statement_descriptor: Option<String>,
1949 #[serde(default, skip_serializing_if = "Option::is_none")]
1951 pub image: Option<String>,
1952 #[serde(
1954 rename = "collectionIds",
1955 default,
1956 skip_serializing_if = "Vec::is_empty"
1957 )]
1958 pub collection_ids: Vec<String>,
1959 #[serde(
1961 rename = "isTaxesEnabled",
1962 default,
1963 skip_serializing_if = "Option::is_none"
1964 )]
1965 pub is_taxes_enabled: Option<bool>,
1966 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1970 pub taxes: Vec<String>,
1971 #[serde(
1973 rename = "automaticTaxCategoryId",
1974 default,
1975 skip_serializing_if = "Option::is_none"
1976 )]
1977 pub automatic_tax_category_id: Option<String>,
1978 #[serde(default, skip_serializing_if = "Option::is_none")]
1980 pub label: Option<ProductLabelDto>,
1981 #[serde(default, skip_serializing_if = "Option::is_none")]
1983 pub slug: Option<String>,
1984}
1985
1986#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1988pub struct UpdateProductReviewDto {
1989 #[serde(rename = "altId")]
1992 pub alt_id: String,
1993 #[serde(rename = "altType")]
1996 pub alt_type: String,
1997 #[serde(rename = "productId")]
2000 pub product_id: String,
2001 pub status: String,
2004 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2006 pub reply: Vec<ProductReviewDto>,
2007 #[serde(default, skip_serializing_if = "Option::is_none")]
2009 pub rating: Option<f64>,
2010 #[serde(default, skip_serializing_if = "Option::is_none")]
2012 pub headline: Option<String>,
2013 #[serde(default, skip_serializing_if = "Option::is_none")]
2015 pub detail: Option<String>,
2016}
2017
2018#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2020pub struct UpdateProductReviewObjectDto {
2021 #[serde(rename = "reviewId")]
2024 pub review_id: String,
2025 #[serde(rename = "productId")]
2028 pub product_id: String,
2029 #[serde(rename = "storeId")]
2032 pub store_id: String,
2033}
2034
2035#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2037pub struct UpdateProductReviewsDto {
2038 #[serde(rename = "altId")]
2041 pub alt_id: String,
2042 #[serde(rename = "altType")]
2045 pub alt_type: String,
2046 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2049 pub reviews: Vec<UpdateProductReviewObjectDto>,
2050 pub status: serde_json::Value,
2053}
2054
2055#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2057pub struct UpdateProductReviewsResponseDto {
2058 pub status: bool,
2061 #[serde(default, skip_serializing_if = "Option::is_none")]
2063 pub message: Option<String>,
2064}
2065
2066#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2068pub struct UpdateProductStoreDto {
2069 #[serde(rename = "altId")]
2072 pub alt_id: String,
2073 #[serde(rename = "altType")]
2076 pub alt_type: String,
2077 pub action: String,
2081 #[serde(rename = "productIds", default, skip_serializing_if = "Vec::is_empty")]
2084 pub product_ids: Vec<String>,
2085}
2086
2087#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2089pub struct UpdateProductStoreResponseDto {
2090 pub status: bool,
2093 #[serde(default, skip_serializing_if = "Option::is_none")]
2095 pub message: Option<String>,
2096}
2097
2098#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2100pub struct UserDetailsDto {
2101 pub name: String,
2104 pub email: String,
2107 #[serde(default, skip_serializing_if = "Option::is_none")]
2109 pub phone: Option<String>,
2110 #[serde(
2112 rename = "isCustomer",
2113 default,
2114 skip_serializing_if = "Option::is_none"
2115 )]
2116 pub is_customer: Option<bool>,
2117}
2118
2119#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2121pub struct WeightOptionsDto {
2122 pub value: f64,
2125 pub unit: String,
2129}