#![allow(
missing_docs,
clippy::doc_lazy_continuation,
clippy::doc_overindented_list_items
)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct BulkEditPriceDto {
#[serde(rename = "_id")]
pub id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub amount: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub currency: Option<String>,
#[serde(
rename = "compareAtPrice",
default,
skip_serializing_if = "Option::is_none"
)]
pub compare_at_price: Option<f64>,
#[serde(
rename = "availableQuantity",
default,
skip_serializing_if = "Option::is_none"
)]
pub available_quantity: Option<f64>,
#[serde(
rename = "trackInventory",
default,
skip_serializing_if = "Option::is_none"
)]
pub track_inventory: Option<bool>,
#[serde(
rename = "allowOutOfStockPurchases",
default,
skip_serializing_if = "Option::is_none"
)]
pub allow_out_of_stock_purchases: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sku: Option<String>,
#[serde(
rename = "trialPeriod",
default,
skip_serializing_if = "Option::is_none"
)]
pub trial_period: Option<f64>,
#[serde(
rename = "totalCycles",
default,
skip_serializing_if = "Option::is_none"
)]
pub total_cycles: Option<f64>,
#[serde(rename = "setupFee", default, skip_serializing_if = "Option::is_none")]
pub setup_fee: Option<f64>,
#[serde(
rename = "shippingOptions",
default,
skip_serializing_if = "Option::is_none"
)]
pub shipping_options: Option<ShippingOptionsDto>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub recurring: Option<RecurringDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct BulkEditProductDto {
#[serde(rename = "_id")]
pub id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
#[serde(
rename = "availableInStore",
default,
skip_serializing_if = "Option::is_none"
)]
pub available_in_store: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub prices: Vec<BulkEditPriceDto>,
#[serde(
rename = "collectionIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub collection_ids: Vec<String>,
#[serde(
rename = "isLabelEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_label_enabled: Option<bool>,
#[serde(
rename = "isTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_taxes_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub seo: Option<ProductSEODto>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
#[serde(
rename = "automaticTaxCategoryId",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_tax_category_id: Option<String>,
#[serde(
rename = "taxInclusive",
default,
skip_serializing_if = "Option::is_none"
)]
pub tax_inclusive: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub taxes: Vec<serde_json::Value>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub medias: Vec<serde_json::Value>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct BulkEditRequestDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub products: Vec<BulkEditProductDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct BulkEditResponseDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<bool>,
#[serde(
rename = "updatedCount",
default,
skip_serializing_if = "Option::is_none"
)]
pub updated_count: Option<f64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct BulkUpdateDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(rename = "productIds", default, skip_serializing_if = "Vec::is_empty")]
pub product_ids: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub filters: Option<BulkUpdateFilters>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub price: Option<PriceUpdateField>,
#[serde(
rename = "compareAtPrice",
default,
skip_serializing_if = "Option::is_none"
)]
pub compare_at_price: Option<PriceUpdateField>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub availability: Option<bool>,
#[serde(
rename = "collectionIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub collection_ids: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub currency: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct BulkUpdateFilters {
#[serde(
rename = "collectionIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub collection_ids: Vec<String>,
#[serde(
rename = "productType",
default,
skip_serializing_if = "Option::is_none"
)]
pub product_type: Option<String>,
#[serde(
rename = "availableInStore",
default,
skip_serializing_if = "Option::is_none"
)]
pub available_in_store: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub search: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct BulkUpdateResponseDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CollectionSEODto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CollectionSchema {
#[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "altId", default, skip_serializing_if = "Option::is_none")]
pub alt_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub seo: Option<CollectionSEODto>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CountReviewsByStatusResponseDto {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub data: Vec<Vec<serde_json::Value>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateCollectionResponseDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub data: Option<CollectionSchema>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreatePriceDto {
pub name: String,
#[serde(rename = "type")]
pub type_: String,
pub currency: String,
pub amount: f64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub recurring: Option<RecurringDto>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(
rename = "membershipOffers",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub membership_offers: Vec<MembershipOfferDto>,
#[serde(
rename = "trialPeriod",
default,
skip_serializing_if = "Option::is_none"
)]
pub trial_period: Option<f64>,
#[serde(
rename = "totalCycles",
default,
skip_serializing_if = "Option::is_none"
)]
pub total_cycles: Option<f64>,
#[serde(rename = "setupFee", default, skip_serializing_if = "Option::is_none")]
pub setup_fee: Option<f64>,
#[serde(
rename = "variantOptionIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub variant_option_ids: Vec<String>,
#[serde(
rename = "compareAtPrice",
default,
skip_serializing_if = "Option::is_none"
)]
pub compare_at_price: Option<f64>,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub meta: Option<PriceMetaDto>,
#[serde(
rename = "trackInventory",
default,
skip_serializing_if = "Option::is_none"
)]
pub track_inventory: Option<bool>,
#[serde(
rename = "availableQuantity",
default,
skip_serializing_if = "Option::is_none"
)]
pub available_quantity: Option<f64>,
#[serde(
rename = "allowOutOfStockPurchases",
default,
skip_serializing_if = "Option::is_none"
)]
pub allow_out_of_stock_purchases: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sku: Option<String>,
#[serde(
rename = "shippingOptions",
default,
skip_serializing_if = "Option::is_none"
)]
pub shipping_options: Option<ShippingOptionsDto>,
#[serde(
rename = "isDigitalProduct",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_digital_product: Option<bool>,
#[serde(
rename = "digitalDelivery",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub digital_delivery: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreatePriceResponseDto {
#[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(
rename = "membershipOffers",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub membership_offers: Vec<MembershipOfferDto>,
#[serde(
rename = "variantOptionIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub variant_option_ids: Vec<String>,
#[serde(
rename = "locationId",
default,
skip_serializing_if = "Option::is_none"
)]
pub location_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub product: Option<String>,
#[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub currency: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub amount: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub recurring: Option<RecurringDto>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
#[serde(
rename = "compareAtPrice",
default,
skip_serializing_if = "Option::is_none"
)]
pub compare_at_price: Option<f64>,
#[serde(
rename = "trackInventory",
default,
skip_serializing_if = "Option::is_none"
)]
pub track_inventory: Option<bool>,
#[serde(
rename = "availableQuantity",
default,
skip_serializing_if = "Option::is_none"
)]
pub available_quantity: Option<f64>,
#[serde(
rename = "allowOutOfStockPurchases",
default,
skip_serializing_if = "Option::is_none"
)]
pub allow_out_of_stock_purchases: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateProductCollectionsDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
#[serde(
rename = "collectionId",
default,
skip_serializing_if = "Option::is_none"
)]
pub collection_id: Option<String>,
pub name: String,
pub slug: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub seo: Option<CollectionSEODto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateProductDto {
pub name: String,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "productType")]
pub product_type: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
#[serde(
rename = "statementDescriptor",
default,
skip_serializing_if = "Option::is_none"
)]
pub statement_descriptor: Option<String>,
#[serde(
rename = "availableInStore",
default,
skip_serializing_if = "Option::is_none"
)]
pub available_in_store: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub medias: Vec<ProductMediaDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub variants: Vec<ProductVariantDto>,
#[serde(
rename = "collectionIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub collection_ids: Vec<String>,
#[serde(
rename = "isTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_taxes_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub taxes: Vec<String>,
#[serde(
rename = "automaticTaxCategoryId",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_tax_category_id: Option<String>,
#[serde(
rename = "isLabelEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_label_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<ProductLabelDto>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub seo: Option<ProductSEODto>,
#[serde(
rename = "taxInclusive",
default,
skip_serializing_if = "Option::is_none"
)]
pub tax_inclusive: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateProductResponseDto {
#[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub variants: Vec<ProductVariantDto>,
#[serde(
rename = "locationId",
default,
skip_serializing_if = "Option::is_none"
)]
pub location_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(
rename = "productType",
default,
skip_serializing_if = "Option::is_none"
)]
pub product_type: Option<String>,
#[serde(
rename = "availableInStore",
default,
skip_serializing_if = "Option::is_none"
)]
pub available_in_store: Option<bool>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
#[serde(
rename = "statementDescriptor",
default,
skip_serializing_if = "Option::is_none"
)]
pub statement_descriptor: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
#[serde(
rename = "collectionIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub collection_ids: Vec<String>,
#[serde(
rename = "isTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_taxes_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub taxes: Vec<String>,
#[serde(
rename = "automaticTaxCategoryId",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_tax_category_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<ProductLabelDto>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DefaultCollectionResponseDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub data: Option<ProductCategories>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DefaultPriceResponseDto {
#[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(
rename = "membershipOffers",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub membership_offers: Vec<MembershipOfferDto>,
#[serde(
rename = "variantOptionIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub variant_option_ids: Vec<String>,
#[serde(
rename = "locationId",
default,
skip_serializing_if = "Option::is_none"
)]
pub location_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub product: Option<String>,
#[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub currency: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub amount: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub recurring: Option<RecurringDto>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
#[serde(
rename = "compareAtPrice",
default,
skip_serializing_if = "Option::is_none"
)]
pub compare_at_price: Option<f64>,
#[serde(
rename = "trackInventory",
default,
skip_serializing_if = "Option::is_none"
)]
pub track_inventory: Option<bool>,
#[serde(
rename = "availableQuantity",
default,
skip_serializing_if = "Option::is_none"
)]
pub available_quantity: Option<f64>,
#[serde(
rename = "allowOutOfStockPurchases",
default,
skip_serializing_if = "Option::is_none"
)]
pub allow_out_of_stock_purchases: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DefaultProductResponseDto {
#[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub variants: Vec<ProductVariantDto>,
#[serde(
rename = "locationId",
default,
skip_serializing_if = "Option::is_none"
)]
pub location_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(
rename = "productType",
default,
skip_serializing_if = "Option::is_none"
)]
pub product_type: Option<String>,
#[serde(
rename = "availableInStore",
default,
skip_serializing_if = "Option::is_none"
)]
pub available_in_store: Option<bool>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
#[serde(
rename = "statementDescriptor",
default,
skip_serializing_if = "Option::is_none"
)]
pub statement_descriptor: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
#[serde(
rename = "collectionIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub collection_ids: Vec<String>,
#[serde(
rename = "isTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_taxes_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub taxes: Vec<String>,
#[serde(
rename = "automaticTaxCategoryId",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_tax_category_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<ProductLabelDto>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DeletePriceResponseDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DeleteProductCollectionResponseDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DeleteProductResponseDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DeleteProductReviewResponseDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetInventoryResponseDto {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub inventory: Vec<InventoryItemDto>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetPriceResponseDto {
#[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(
rename = "membershipOffers",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub membership_offers: Vec<MembershipOfferDto>,
#[serde(
rename = "variantOptionIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub variant_option_ids: Vec<String>,
#[serde(
rename = "locationId",
default,
skip_serializing_if = "Option::is_none"
)]
pub location_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub product: Option<String>,
#[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub currency: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub amount: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub recurring: Option<RecurringDto>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
#[serde(
rename = "compareAtPrice",
default,
skip_serializing_if = "Option::is_none"
)]
pub compare_at_price: Option<f64>,
#[serde(
rename = "trackInventory",
default,
skip_serializing_if = "Option::is_none"
)]
pub track_inventory: Option<bool>,
#[serde(
rename = "availableQuantity",
default,
skip_serializing_if = "Option::is_none"
)]
pub available_quantity: Option<f64>,
#[serde(
rename = "allowOutOfStockPurchases",
default,
skip_serializing_if = "Option::is_none"
)]
pub allow_out_of_stock_purchases: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetProductResponseDto {
#[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub variants: Vec<ProductVariantDto>,
#[serde(
rename = "locationId",
default,
skip_serializing_if = "Option::is_none"
)]
pub location_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(
rename = "productType",
default,
skip_serializing_if = "Option::is_none"
)]
pub product_type: Option<String>,
#[serde(
rename = "availableInStore",
default,
skip_serializing_if = "Option::is_none"
)]
pub available_in_store: Option<bool>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
#[serde(
rename = "statementDescriptor",
default,
skip_serializing_if = "Option::is_none"
)]
pub statement_descriptor: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
#[serde(
rename = "collectionIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub collection_ids: Vec<String>,
#[serde(
rename = "isTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_taxes_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub taxes: Vec<String>,
#[serde(
rename = "automaticTaxCategoryId",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_tax_category_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<ProductLabelDto>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetProductStatsResponseDto {
#[serde(
rename = "totalProducts",
default,
skip_serializing_if = "Option::is_none"
)]
pub total_products: Option<f64>,
#[serde(
rename = "includedInStore",
default,
skip_serializing_if = "Option::is_none"
)]
pub included_in_store: Option<f64>,
#[serde(
rename = "excludedFromStore",
default,
skip_serializing_if = "Option::is_none"
)]
pub excluded_from_store: Option<f64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct InventoryItemDto {
#[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(
rename = "availableQuantity",
default,
skip_serializing_if = "Option::is_none"
)]
pub available_quantity: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sku: Option<String>,
#[serde(
rename = "allowOutOfStockPurchases",
default,
skip_serializing_if = "Option::is_none"
)]
pub allow_out_of_stock_purchases: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub product: Option<String>,
#[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
#[serde(
rename = "productName",
default,
skip_serializing_if = "Option::is_none"
)]
pub product_name: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ListCollectionResponseDto {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub data: Vec<Vec<serde_json::Value>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total: Option<f64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ListPricesResponseDto {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub prices: Vec<DefaultPriceResponseDto>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total: Option<f64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ListProductReviewsResponseDto {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub data: Vec<Vec<serde_json::Value>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total: Option<f64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ListProductsResponseDto {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub products: Vec<DefaultProductResponseDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub total: Vec<ListProductsStats>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ListProductsStats {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total: Option<f64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct MembershipOfferDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
#[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PriceDimensionsDto {
pub height: f64,
pub width: f64,
pub length: f64,
pub unit: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PriceMetaDto {
pub source: String,
#[serde(rename = "sourceId", default, skip_serializing_if = "Option::is_none")]
pub source_id: Option<String>,
#[serde(rename = "stripePriceId")]
pub stripe_price_id: String,
#[serde(rename = "internalSource")]
pub internal_source: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PriceUpdateField {
#[serde(rename = "type")]
pub type_: String,
pub value: f64,
#[serde(
rename = "roundToWhole",
default,
skip_serializing_if = "Option::is_none"
)]
pub round_to_whole: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ProductCategories {
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ProductLabelDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(rename = "startDate", default, skip_serializing_if = "Option::is_none")]
pub start_date: Option<String>,
#[serde(rename = "endDate", default, skip_serializing_if = "Option::is_none")]
pub end_date: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ProductMediaDto {
pub id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
pub url: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(
rename = "isFeatured",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_featured: Option<bool>,
#[serde(rename = "priceIds", default, skip_serializing_if = "Vec::is_empty")]
pub price_ids: Vec<Vec<serde_json::Value>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ProductReviewDto {
pub headline: String,
pub comment: String,
pub user: UserDetailsDto,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ProductSEODto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ProductVariantDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub options: Vec<ProductVariantOptionDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ProductVariantOptionDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RecurringDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(
rename = "intervalCount",
default,
skip_serializing_if = "Option::is_none"
)]
pub interval_count: Option<f64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ShippingOptionsDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub weight: Option<WeightOptionsDto>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dimensions: Option<PriceDimensionsDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateDisplayPriorityBodyDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub products: Vec<Vec<serde_json::Value>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateInventoryDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<UpdateInventoryItemDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateInventoryItemDto {
#[serde(rename = "priceId")]
pub price_id: String,
#[serde(
rename = "availableQuantity",
default,
skip_serializing_if = "Option::is_none"
)]
pub available_quantity: Option<f64>,
#[serde(
rename = "allowOutOfStockPurchases",
default,
skip_serializing_if = "Option::is_none"
)]
pub allow_out_of_stock_purchases: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateInventoryResponseDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdatePriceDto {
pub name: String,
#[serde(rename = "type")]
pub type_: String,
pub currency: String,
pub amount: f64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub recurring: Option<RecurringDto>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(
rename = "membershipOffers",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub membership_offers: Vec<MembershipOfferDto>,
#[serde(
rename = "trialPeriod",
default,
skip_serializing_if = "Option::is_none"
)]
pub trial_period: Option<f64>,
#[serde(
rename = "totalCycles",
default,
skip_serializing_if = "Option::is_none"
)]
pub total_cycles: Option<f64>,
#[serde(rename = "setupFee", default, skip_serializing_if = "Option::is_none")]
pub setup_fee: Option<f64>,
#[serde(
rename = "variantOptionIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub variant_option_ids: Vec<String>,
#[serde(
rename = "compareAtPrice",
default,
skip_serializing_if = "Option::is_none"
)]
pub compare_at_price: Option<f64>,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub meta: Option<PriceMetaDto>,
#[serde(
rename = "trackInventory",
default,
skip_serializing_if = "Option::is_none"
)]
pub track_inventory: Option<bool>,
#[serde(
rename = "availableQuantity",
default,
skip_serializing_if = "Option::is_none"
)]
pub available_quantity: Option<f64>,
#[serde(
rename = "allowOutOfStockPurchases",
default,
skip_serializing_if = "Option::is_none"
)]
pub allow_out_of_stock_purchases: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sku: Option<String>,
#[serde(
rename = "shippingOptions",
default,
skip_serializing_if = "Option::is_none"
)]
pub shipping_options: Option<ShippingOptionsDto>,
#[serde(
rename = "isDigitalProduct",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_digital_product: Option<bool>,
#[serde(
rename = "digitalDelivery",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub digital_delivery: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdatePriceResponseDto {
#[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(
rename = "membershipOffers",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub membership_offers: Vec<MembershipOfferDto>,
#[serde(
rename = "variantOptionIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub variant_option_ids: Vec<String>,
#[serde(
rename = "locationId",
default,
skip_serializing_if = "Option::is_none"
)]
pub location_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub product: Option<String>,
#[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub currency: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub amount: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub recurring: Option<RecurringDto>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
#[serde(
rename = "compareAtPrice",
default,
skip_serializing_if = "Option::is_none"
)]
pub compare_at_price: Option<f64>,
#[serde(
rename = "trackInventory",
default,
skip_serializing_if = "Option::is_none"
)]
pub track_inventory: Option<bool>,
#[serde(
rename = "availableQuantity",
default,
skip_serializing_if = "Option::is_none"
)]
pub available_quantity: Option<f64>,
#[serde(
rename = "allowOutOfStockPurchases",
default,
skip_serializing_if = "Option::is_none"
)]
pub allow_out_of_stock_purchases: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateProductCollectionResponseDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateProductCollectionsDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub seo: Option<CollectionSEODto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateProductDto {
pub name: String,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "productType")]
pub product_type: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
#[serde(
rename = "statementDescriptor",
default,
skip_serializing_if = "Option::is_none"
)]
pub statement_descriptor: Option<String>,
#[serde(
rename = "availableInStore",
default,
skip_serializing_if = "Option::is_none"
)]
pub available_in_store: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub medias: Vec<ProductMediaDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub variants: Vec<ProductVariantDto>,
#[serde(
rename = "collectionIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub collection_ids: Vec<String>,
#[serde(
rename = "isTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_taxes_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub taxes: Vec<String>,
#[serde(
rename = "automaticTaxCategoryId",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_tax_category_id: Option<String>,
#[serde(
rename = "isLabelEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_label_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<ProductLabelDto>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub seo: Option<ProductSEODto>,
#[serde(
rename = "taxInclusive",
default,
skip_serializing_if = "Option::is_none"
)]
pub tax_inclusive: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub prices: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateProductResponseDto {
#[serde(rename = "_id", default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub variants: Vec<ProductVariantDto>,
#[serde(
rename = "locationId",
default,
skip_serializing_if = "Option::is_none"
)]
pub location_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(
rename = "productType",
default,
skip_serializing_if = "Option::is_none"
)]
pub product_type: Option<String>,
#[serde(
rename = "availableInStore",
default,
skip_serializing_if = "Option::is_none"
)]
pub available_in_store: Option<bool>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
#[serde(
rename = "statementDescriptor",
default,
skip_serializing_if = "Option::is_none"
)]
pub statement_descriptor: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
#[serde(
rename = "collectionIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub collection_ids: Vec<String>,
#[serde(
rename = "isTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_taxes_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub taxes: Vec<String>,
#[serde(
rename = "automaticTaxCategoryId",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_tax_category_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<ProductLabelDto>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateProductReviewDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
#[serde(rename = "productId")]
pub product_id: String,
pub status: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub reply: Vec<ProductReviewDto>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rating: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub headline: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub detail: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateProductReviewObjectDto {
#[serde(rename = "reviewId")]
pub review_id: String,
#[serde(rename = "productId")]
pub product_id: String,
#[serde(rename = "storeId")]
pub store_id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateProductReviewsDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub reviews: Vec<UpdateProductReviewObjectDto>,
pub status: serde_json::Value,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateProductReviewsResponseDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateProductStoreDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub action: String,
#[serde(rename = "productIds", default, skip_serializing_if = "Vec::is_empty")]
pub product_ids: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateProductStoreResponseDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserDetailsDto {
pub name: String,
pub email: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub phone: Option<String>,
#[serde(
rename = "isCustomer",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_customer: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct WeightOptionsDto {
pub value: f64,
pub unit: String,
}