use crate::*;
use serde_with::{serde_as, OneOrMany};
pub type CarGtinFieldEnum = String;
pub type CarAsinFieldEnum = String;
pub type CarAdditionalTypeFieldEnum = String;
#[serde_as]
#[derive(Debug, serde::Deserialize)]
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
pub struct Car {
#[serde(rename = "@context")]
pub context: String,
#[serde(rename = "acrissCode")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub acriss_code: Vec<String>,
#[serde(rename = "roofLoad")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub roof_load: Vec<QuantitativeValue>,
#[serde(rename = "mileageFromOdometer")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub mileage_from_odometer: Vec<QuantitativeValue>,
#[serde(rename = "fuelCapacity")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub fuel_capacity: Vec<QuantitativeValue>,
#[serde(rename = "vehicleTransmission")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub vehicle_transmission: Vec<CarVehicleTransmissionFieldEnum>,
#[serde(rename = "bodyType")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub body_type: Vec<CarBodyTypeFieldEnum>,
#[serde(rename = "vehicleInteriorColor")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub vehicle_interior_color: Vec<String>,
#[serde(rename = "fuelConsumption")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub fuel_consumption: Vec<QuantitativeValue>,
#[serde(rename = "productionDate")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub production_date: Vec<String>,
#[serde(rename = "vehicleSpecialUsage")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub vehicle_special_usage: Vec<CarVehicleSpecialUsageFieldEnum>,
#[serde(rename = "numberOfForwardGears")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub number_of_forward_gears: Vec<CarNumberOfForwardGearsFieldEnum>,
#[serde(rename = "fuelEfficiency")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub fuel_efficiency: Vec<QuantitativeValue>,
#[serde(rename = "vehicleModelDate")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub vehicle_model_date: Vec<String>,
#[serde(rename = "vehicleEngine")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub vehicle_engine: Vec<EngineSpecification>,
#[serde(rename = "numberOfDoors")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub number_of_doors: Vec<CarNumberOfDoorsFieldEnum>,
#[serde(rename = "numberOfPreviousOwners")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub number_of_previous_owners: Vec<CarNumberOfPreviousOwnersFieldEnum>,
#[serde(rename = "weightTotal")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub weight_total: Vec<QuantitativeValue>,
#[serde(rename = "numberOfAxles")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub number_of_axles: Vec<CarNumberOfAxlesFieldEnum>,
#[serde(rename = "payload")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub payload: Vec<QuantitativeValue>,
#[serde(rename = "cargoVolume")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub cargo_volume: Vec<QuantitativeValue>,
#[serde(rename = "meetsEmissionStandard")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub meets_emission_standard: Vec<CarMeetsEmissionStandardFieldEnum>,
#[serde(rename = "wheelbase")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub wheelbase: Vec<QuantitativeValue>,
#[serde(rename = "speed")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub speed: Vec<QuantitativeValue>,
#[serde(rename = "modelDate")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub model_date: Vec<String>,
#[serde(rename = "numberOfAirbags")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub number_of_airbags: Vec<CarNumberOfAirbagsFieldEnum>,
#[serde(rename = "accelerationTime")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub acceleration_time: Vec<QuantitativeValue>,
#[serde(rename = "callSign")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub call_sign: Vec<String>,
#[serde(rename = "tongueWeight")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub tongue_weight: Vec<QuantitativeValue>,
#[serde(rename = "seatingCapacity")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub seating_capacity: Vec<CarSeatingCapacityFieldEnum>,
#[serde(rename = "driveWheelConfiguration")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub drive_wheel_configuration: Vec<CarDriveWheelConfigurationFieldEnum>,
#[serde(rename = "fuelType")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub fuel_type: Vec<CarFuelTypeFieldEnum>,
#[serde(rename = "vehicleInteriorType")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub vehicle_interior_type: Vec<String>,
#[serde(rename = "vehicleConfiguration")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub vehicle_configuration: Vec<String>,
#[serde(rename = "dateVehicleFirstRegistered")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub date_vehicle_first_registered: Vec<String>,
#[serde(rename = "vehicleIdentificationNumber")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub vehicle_identification_number: Vec<String>,
#[serde(rename = "emissionsCO2")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub emissions_co2: Vec<f32>,
#[serde(rename = "knownVehicleDamages")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub known_vehicle_damages: Vec<String>,
#[serde(rename = "vehicleSeatingCapacity")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub vehicle_seating_capacity: Vec<CarVehicleSeatingCapacityFieldEnum>,
#[serde(rename = "trailerWeight")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub trailer_weight: Vec<QuantitativeValue>,
#[serde(rename = "purchaseDate")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub purchase_date: Vec<String>,
#[serde(rename = "steeringPosition")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub steering_position: Vec<SteeringPositionValueEnum>,
#[serde(rename = "productID")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub product_id: Vec<String>,
#[serde(rename = "aggregateRating")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub aggregate_rating: Vec<AggregateRating>,
#[serde(rename = "hasCertification")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub has_certification: Vec<Certification>,
#[serde(rename = "isSimilarTo")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_similar_to: Vec<CarIsSimilarToFieldEnum>,
#[serde(rename = "colorSwatch")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub color_swatch: Vec<CarColorSwatchFieldEnum>,
#[serde(rename = "countryOfAssembly")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub country_of_assembly: Vec<String>,
#[serde(rename = "countryOfOrigin")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub country_of_origin: Vec<Country>,
#[serde(rename = "sku")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub sku: Vec<String>,
#[serde(rename = "hasMerchantReturnPolicy")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub has_merchant_return_policy: Vec<MerchantReturnPolicy>,
#[serde(rename = "weight")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub weight: Vec<CarWeightFieldEnum>,
#[serde(rename = "mpn")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub mpn: Vec<String>,
#[serde(rename = "hasGS1DigitalLink")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub has_gs1_digital_link: Vec<String>,
#[serde(rename = "model")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub model: Vec<CarModelFieldEnum>,
#[serde(rename = "isRelatedTo")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_related_to: Vec<CarIsRelatedToFieldEnum>,
#[serde(rename = "reviews")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub reviews: Vec<Review>,
#[serde(rename = "gtin12")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub gtin12: Vec<String>,
#[serde(rename = "pattern")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub pattern: Vec<CarPatternFieldEnum>,
#[serde(rename = "offers")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub offers: Vec<CarOffersFieldEnum>,
#[serde(rename = "keywords")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub keywords: Vec<CarKeywordsFieldEnum>,
#[serde(rename = "negativeNotes")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub negative_notes: Vec<CarNegativeNotesFieldEnum>,
#[serde(rename = "gtin13")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub gtin13: Vec<String>,
#[serde(rename = "hasMeasurement")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub has_measurement: Vec<QuantitativeValue>,
#[serde(rename = "gtin")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub gtin: Vec<CarGtinFieldEnum>,
#[serde(rename = "funding")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub funding: Vec<Grant>,
#[serde(rename = "isConsumableFor")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_consumable_for: Vec<Product>,
#[serde(rename = "mobileUrl")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub mobile_url: Vec<String>,
#[serde(rename = "category")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub category: Vec<CarCategoryFieldEnum>,
#[serde(rename = "asin")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub asin: Vec<CarAsinFieldEnum>,
#[serde(rename = "color")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub color: Vec<String>,
#[serde(rename = "countryOfLastProcessing")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub country_of_last_processing: Vec<String>,
#[serde(rename = "logo")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub logo: Vec<CarLogoFieldEnum>,
#[serde(rename = "award")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub award: Vec<String>,
#[serde(rename = "isFamilyFriendly")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_family_friendly: Vec<String>,
#[serde(rename = "releaseDate")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub release_date: Vec<String>,
#[serde(rename = "brand")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub brand: Vec<CarBrandFieldEnum>,
#[serde(rename = "inProductGroupWithID")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub in_product_group_with_id: Vec<String>,
#[serde(rename = "manufacturer")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub manufacturer: Vec<Organization>,
#[serde(rename = "awards")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub awards: Vec<String>,
#[serde(rename = "width")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub width: Vec<CarWidthFieldEnum>,
#[serde(rename = "hasAdultConsideration")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub has_adult_consideration: Vec<AdultOrientedEnumerationEnum>,
#[serde(rename = "audience")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub audience: Vec<Audience>,
#[serde(rename = "material")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub material: Vec<CarMaterialFieldEnum>,
#[serde(rename = "additionalProperty")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub additional_property: Vec<PropertyValue>,
#[serde(rename = "slogan")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub slogan: Vec<String>,
#[serde(rename = "depth")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub depth: Vec<CarDepthFieldEnum>,
#[serde(rename = "review")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub review: Vec<Review>,
#[serde(rename = "itemCondition")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub item_condition: Vec<OfferItemConditionEnum>,
#[serde(rename = "nsn")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub nsn: Vec<String>,
#[serde(rename = "positiveNotes")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub positive_notes: Vec<CarPositiveNotesFieldEnum>,
#[serde(rename = "size")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub size: Vec<CarSizeFieldEnum>,
#[serde(rename = "hasEnergyConsumptionDetails")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub has_energy_consumption_details: Vec<EnergyConsumptionDetails>,
#[serde(rename = "gtin14")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub gtin14: Vec<String>,
#[serde(rename = "height")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub height: Vec<CarHeightFieldEnum>,
#[serde(rename = "isVariantOf")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_variant_of: Vec<CarIsVariantOfFieldEnum>,
#[serde(rename = "gtin8")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub gtin8: Vec<String>,
#[serde(rename = "isAccessoryOrSparePartFor")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_accessory_or_spare_part_for: Vec<Product>,
#[serde(rename = "name")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub name: Vec<String>,
#[serde(rename = "mainEntityOfPage")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub main_entity_of_page: Vec<CarMainEntityOfPageFieldEnum>,
#[serde(rename = "url")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub url: Vec<String>,
#[serde(rename = "disambiguatingDescription")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub disambiguating_description: Vec<String>,
#[serde(rename = "identifier")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub identifier: Vec<CarIdentifierFieldEnum>,
#[serde(rename = "description")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub description: Vec<CarDescriptionFieldEnum>,
#[serde(rename = "subjectOf")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub subject_of: Vec<CarSubjectOfFieldEnum>,
#[serde(rename = "alternateName")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub alternate_name: Vec<String>,
#[serde(rename = "additionalType")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub additional_type: Vec<CarAdditionalTypeFieldEnum>,
#[serde(rename = "potentialAction")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub potential_action: Vec<Action>,
#[serde(rename = "sameAs")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub same_as: Vec<String>,
#[serde(rename = "image")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub image: Vec<CarImageFieldEnum>,
}