#![warn(missing_docs)]
#![warn(rustdoc::broken_intra_doc_links)]
use serde::{Deserialize, Serialize};
use super::*;
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ProductDefinitions {
#[serde(rename = "ProductMetaData", skip_serializing_if = "Option::is_none")]
pub product_meta_data: Option<ProductMetaData>,
#[serde(rename = "Variants", skip_serializing_if = "Option::is_none")]
pub variants: Option<Variants>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct LuminaireMaintenanceFactor {
#[serde(rename = "@years", default, skip_serializing_if = "Option::is_none")]
pub years: Option<i32>,
#[serde(rename = "@roomCondition", default, skip_serializing_if = "Option::is_none")]
pub room_condition: Option<String>,
#[serde(rename = "$text", default)]
pub value: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct CieLuminaireMaintenanceFactors {
#[serde(rename = "LuminaireMaintenanceFactor", default)]
pub luminaire_maintenance_factor: Vec<LuminaireMaintenanceFactor>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct LuminaireDirtDepreciation {
#[serde(rename = "@years", default)]
pub years: i32,
#[serde(rename = "@roomCondition", default)]
pub room_condition: String,
#[serde(rename = "$text", default)]
pub value: f64,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct IesLuminaireLightLossFactors {
#[serde(rename = "LuminaireDirtDepreciation", default)]
pub luminaire_dirt_depreciation: Vec<LuminaireDirtDepreciation>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct JiegMaintenanceFactors {
#[serde(rename = "LuminaireMaintenanceFactor", default)]
pub luminaire_maintenance_factor: Vec<LuminaireMaintenanceFactor>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct LuminaireMaintenance {
#[serde(rename = "Cie97LuminaireType", default, skip_serializing_if = "Option::is_none")]
pub cie97_luminaire_type: Option<String>,
#[serde(rename = "CieLuminaireMaintenanceFactors", default, skip_serializing_if = "Option::is_none")]
pub cie_luminaire_maintenance_factors: Option<CieLuminaireMaintenanceFactors>,
#[serde(rename = "IesLuminaireLightLossFactors", default, skip_serializing_if = "Option::is_none")]
pub ies_luminaire_light_loss_factors: Option<IesLuminaireLightLossFactors>,
#[serde(rename = "JiegMaintenanceFactors", default, skip_serializing_if = "Option::is_none")]
pub jieg_maintenance_factors: Option<JiegMaintenanceFactors>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ProductMetaData {
#[serde(rename = "ProductNumber", skip_serializing_if = "Option::is_none")]
pub product_number: Option<LocaleFoo>,
#[serde(rename = "Name", skip_serializing_if = "Option::is_none")]
pub name: Option<LocaleFoo>,
#[serde(rename = "Description", skip_serializing_if = "Option::is_none")]
pub description: Option<LocaleFoo>,
#[serde(rename = "TenderText", skip_serializing_if = "Option::is_none")]
pub tender_text: Option<LocaleFoo>,
#[serde(rename = "ProductSeries", skip_serializing_if = "Option::is_none")]
pub product_series: Option<ProductSeries>,
#[serde(rename = "Pictures", skip_serializing_if = "Option::is_none")]
pub pictures: Option<Images>,
#[serde(rename = "LuminaireMaintenance", skip_serializing_if = "Option::is_none")]
pub luminaire_maintenance: Option<LuminaireMaintenance>,
#[serde(rename = "DescriptiveAttributes", skip_serializing_if = "Option::is_none")]
pub descriptive_attributes: Option<DescriptiveAttributes>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct RectangularCutout {
#[serde(rename = "@Width", default)]
pub width: i32,
#[serde(rename = "@Length", default)]
pub length: i32,
#[serde(rename = "@Depth", default)]
pub depth: i32,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct CircularCutout {
#[serde(rename = "@Diameter", default)]
pub diameter: i32,
#[serde(rename = "@Depth", default)]
pub depth: i32,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Recessed {
#[serde(rename = "@recessedDepth", default)]
pub recessed_depth: i32,
#[serde(rename = "RectangularCutout", default, skip_serializing_if = "Option::is_none")]
pub rectangular_cutout: Option<RectangularCutout>,
#[serde(rename = "CircularCutout", default, skip_serializing_if = "Option::is_none")]
pub circular_cutout: Option<CircularCutout>,
#[serde(rename = "@Depth", default)]
pub depth: i32,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SurfaceMounted {}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Pendant {
#[serde(rename = "pendantLength", default)]
pub pendant_length: f64,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Ceiling {
#[serde(rename = "Recessed", skip_serializing_if = "Option::is_none")]
pub recessed: Option<Recessed>,
#[serde(rename = "SurfaceMounted", skip_serializing_if = "Option::is_none")]
pub surface_mounted: Option<SurfaceMounted>,
#[serde(rename = "Pendant", skip_serializing_if = "Option::is_none")]
pub pendant: Option<Pendant>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Wall {
#[serde(rename = "@mountingHeight", default)]
pub mounting_height: i32,
#[serde(rename = "Recessed", default, skip_serializing_if = "Option::is_none")]
pub recessed: Option<Recessed>,
#[serde(rename = "SurfaceMounted", default, skip_serializing_if = "Option::is_none")]
pub surface_mounted: Option<SurfaceMounted>,
#[serde(rename = "Depth", default)]
pub depth: i32,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct FreeStanding {}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct WorkingPlane {
#[serde(rename = "FreeStanding", skip_serializing_if = "Option::is_none")]
pub free_standing: Option<FreeStanding>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PoleTop {
#[serde(rename = "poleHeight")]
pub pole_height: i32,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PoleIntegrated {
#[serde(rename = "poleHeight")]
pub pole_height: i32,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Ground {
#[serde(rename = "PoleTop", skip_serializing_if = "Option::is_none")]
pub pole_top: Option<PoleTop>,
#[serde(rename = "PoleIntegrated", skip_serializing_if = "Option::is_none")]
pub pole_integrated: Option<PoleIntegrated>,
#[serde(rename = "FreeStanding", skip_serializing_if = "Option::is_none")]
pub free_standing: Option<FreeStanding>,
#[serde(rename = "SurfaceMounted", skip_serializing_if = "Option::is_none")]
pub surface_mounted: Option<SurfaceMounted>,
#[serde(rename = "Recessed", skip_serializing_if = "Option::is_none")]
pub recessed: Option<Recessed>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Mountings {
#[serde(rename = "Ceiling", skip_serializing_if = "Option::is_none")]
pub ceiling: Option<Ceiling>,
#[serde(rename = "Wall", skip_serializing_if = "Option::is_none")]
pub wall: Option<Wall>,
#[serde(rename = "WorkingPlane", skip_serializing_if = "Option::is_none")]
pub working_plane: Option<WorkingPlane>,
#[serde(rename = "Ground", skip_serializing_if = "Option::is_none")]
pub ground: Option<Ground>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct EmitterReference {
#[serde(rename = "@emitterId")]
pub emitter_id: String,
#[serde(rename = "EmitterObjectExternalName")]
pub emitter_object_external_name: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SimpleGeometryReference {
#[serde(rename = "@geometryId")]
pub geometry_id: String,
#[serde(rename = "@emitterId")]
pub emitter_id: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ModelGeometryReference {
#[serde(rename = "@geometryId")]
pub geometry_id: String,
#[serde(rename = "EmitterReference", default)]
pub emitter_reference: Vec<EmitterReference>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct GeometryReferences {
#[serde(rename = "SimpleGeometryReference", skip_serializing_if = "Option::is_none")]
pub simple_geometry_reference: Option<SimpleGeometryReference>,
#[serde(rename = "ModelGeometryReference", skip_serializing_if = "Option::is_none")]
pub model_geometry_reference: Option<ModelGeometryReference>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Geometry {
#[serde(rename = "SimpleGeometryReference", skip_serializing_if = "Option::is_none")]
pub simple_geometry_reference: Option<SimpleGeometryReference>,
#[serde(rename = "ModelGeometryReference", skip_serializing_if = "Option::is_none")]
pub model_geometry_reference: Option<ModelGeometryReference>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Symbol {
#[serde(rename = "@fileId")]
pub file_id: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Variant {
#[serde(rename = "@id")]
pub id: String,
#[serde(rename = "sortOrder", skip_serializing_if = "Option::is_none")]
pub sort_order: Option<i32>,
#[serde(rename = "ProductNumber", skip_serializing_if = "Option::is_none")]
pub product_number: Option<LocaleFoo>,
#[serde(rename = "Name", skip_serializing_if = "Option::is_none")]
pub name: Option<LocaleFoo>,
#[serde(rename = "Description", skip_serializing_if = "Option::is_none")]
pub description: Option<LocaleFoo>,
#[serde(rename = "TenderText", skip_serializing_if = "Option::is_none")]
pub tender_text: Option<LocaleFoo>,
#[serde(rename = "GTIN", skip_serializing_if = "Option::is_none")]
pub gtin: Option<String>,
#[serde(rename = "Mountings", skip_serializing_if = "Option::is_none")]
pub mountings: Option<Mountings>,
#[serde(rename = "Geometry", skip_serializing_if = "Option::is_none")]
pub geometry: Option<Geometry>,
#[serde(rename = "ProductSeries", skip_serializing_if = "Option::is_none")]
pub product_series: Option<ProductSeries>,
#[serde(rename = "Pictures", skip_serializing_if = "Option::is_none")]
pub pictures: Option<Images>,
#[serde(rename = "Symbol", skip_serializing_if = "Option::is_none")]
pub symbol: Option<Symbol>,
#[serde(rename = "DescriptiveAttributes", skip_serializing_if = "Option::is_none")]
pub descriptive_attributes: Option<DescriptiveAttributes>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Variants {
#[serde(rename = "Variant", default)]
pub variant: Vec<Variant>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ProductSize {
#[serde(rename = "Length")]
pub length: i32,
#[serde(rename = "Width")]
pub width: i32,
#[serde(rename = "Height")]
pub height: i32,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Adjustabilities {
#[serde(rename = "Adjustability", default)]
pub adjustability: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ProtectiveAreas {
#[serde(rename = "Area", default)]
pub area: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Mechanical {
#[serde(rename = "ProductSize", skip_serializing_if = "Option::is_none")]
pub product_size: Option<ProductSize>,
#[serde(rename = "ProductForm", skip_serializing_if = "Option::is_none")]
pub product_form: Option<String>,
#[serde(rename = "SealingMaterial", skip_serializing_if = "Option::is_none")]
pub sealing_material: Option<LocaleFoo>,
#[serde(rename = "Adjustabilities", skip_serializing_if = "Option::is_none")]
pub adjustabilities: Option<Adjustabilities>,
#[serde(rename = "IKRating", skip_serializing_if = "Option::is_none")]
pub ik_rating: Option<String>,
#[serde(rename = "ProtectiveAreas", skip_serializing_if = "Option::is_none")]
pub protective_areas: Option<ProtectiveAreas>,
#[serde(rename = "Weight", skip_serializing_if = "Option::is_none")]
pub weight: Option<f64>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ClampingRange {
#[serde(rename = "Lower")]
pub lower: f64,
#[serde(rename = "Upper")]
pub upper: f64,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Electrical {
#[serde(rename = "ClampingRange", skip_serializing_if = "Option::is_none")]
pub clamping_range: Option<ClampingRange>,
#[serde(rename = "SwitchingCapacity", skip_serializing_if = "Option::is_none")]
pub switching_capacity: Option<String>,
#[serde(rename = "ElectricalSafetyClass", skip_serializing_if = "Option::is_none")]
pub electrical_safety_class: Option<String>,
#[serde(rename = "IngressProtectionIPCode", skip_serializing_if = "Option::is_none")]
pub ingress_protection_ip_code: Option<String>,
#[serde(rename = "PowerFactor", skip_serializing_if = "Option::is_none")]
pub power_factor: Option<f64>,
#[serde(rename = "ConstantLightOutput", skip_serializing_if = "Option::is_none")]
pub constant_light_output: Option<bool>,
#[serde(rename = "LightDistribution", skip_serializing_if = "Option::is_none")]
pub light_distribution: Option<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Flux {
#[serde(rename = "@hours")]
pub hours: i32,
#[serde(rename = "$text")]
pub value: i32,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct DurationTimeAndFlux {
#[serde(rename = "Flux", default)]
pub flux: Vec<Flux>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Emergency {
#[serde(rename = "DurationTimeAndFlux", skip_serializing_if = "Option::is_none")]
pub duration_time_and_flux: Option<DurationTimeAndFlux>,
#[serde(rename = "DedicatedEmergencyLightingType", skip_serializing_if = "Option::is_none")]
pub dedicated_emergency_lighting_type: Option<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ListPrice {
#[serde(rename = "@currency", skip_serializing_if = "Option::is_none")]
pub currency: Option<String>,
#[serde(rename = "$text")]
pub value: f64,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ListPrices {
#[serde(rename = "ListPrice", default)]
pub list_price: Vec<ListPrice>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct HousingColor {
#[serde(rename = "@ral", skip_serializing_if = "Option::is_none")]
pub ral: Option<i32>,
#[serde(flatten)]
pub locale: Locale,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct HousingColors {
#[serde(rename = "HousingColor", default)]
pub housing_color: Vec<HousingColor>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Markets {
#[serde(rename = "Region", default)]
pub region: Vec<Locale>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ApprovalMarks {
#[serde(rename = "ApprovalMark", default)]
pub approval_mark: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct DesignAwards {
#[serde(rename = "DesignAward", default)]
pub design_award: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Labels {
#[serde(rename = "Label", default)]
pub label: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Applications {
#[serde(rename = "Application", default)]
pub application: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Marketing {
#[serde(rename = "ListPrices", skip_serializing_if = "Option::is_none")]
pub list_prices: Option<ListPrices>,
#[serde(rename = "HousingColors", skip_serializing_if = "Option::is_none")]
pub housing_colors: Option<HousingColors>,
#[serde(rename = "Markets", skip_serializing_if = "Option::is_none")]
pub markets: Option<Markets>,
#[serde(rename = "Hyperlinks", skip_serializing_if = "Option::is_none")]
pub hyperlinks: Option<Hyperlinks>,
#[serde(rename = "Designer", skip_serializing_if = "Option::is_none")]
pub designer: Option<String>,
#[serde(rename = "ApprovalMarks", skip_serializing_if = "Option::is_none")]
pub approval_marks: Option<ApprovalMarks>,
#[serde(rename = "DesignAwards", skip_serializing_if = "Option::is_none")]
pub design_awards: Option<DesignAwards>,
#[serde(rename = "Labels", skip_serializing_if = "Option::is_none")]
pub labels: Option<Labels>,
#[serde(rename = "Applications", skip_serializing_if = "Option::is_none")]
pub applications: Option<Applications>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct UsefulLifeTimes {
#[serde(rename = "UsefulLife", default)]
pub useful_life: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct MedianUsefulLifeTimes {
#[serde(rename = "MedianUsefulLife", default)]
pub median_useful_life: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Directives {
#[serde(rename = "Directive", default)]
pub directive: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Classes {
#[serde(rename = "Class", default)]
pub class: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Divisions {
#[serde(rename = "Division", default)]
pub division: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Gas {
#[serde(rename = "Group", default)]
pub group: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Dust {
#[serde(rename = "Group", default)]
pub group: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct DivisionGroups {
#[serde(rename = "Gas")]
pub gas: Gas,
#[serde(rename = "Dust")]
pub dust: Dust,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Zones {
#[serde(rename = "Gas")]
pub gas: Gas,
#[serde(rename = "Dust")]
pub dust: Dust,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ZoneGroups {
#[serde(rename = "Gas")]
pub gas: Gas,
#[serde(rename = "Dust")]
pub dust: Dust,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct TemperatureClasses {
#[serde(rename = "TemperatureClass", default)]
pub temperature_class: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ExCodes {
#[serde(rename = "ExCode", default)]
pub ex_code: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct EquipmentProtectionLevels {
#[serde(rename = "EquipmentProtectionLevel", default)]
pub equipment_protection_level: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct EquipmentGroups {
#[serde(rename = "EquipmentGroup", default)]
pub equipment_group: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct EquipmentCategories {
#[serde(rename = "EquipmentCategory", default)]
pub equipment_category: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Atmospheres {
#[serde(rename = "Atmosphere", default)]
pub atmosphere: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Groups {
#[serde(rename = "Group", default)]
pub group: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ATEX {
#[serde(rename = "Directives")]
pub directives: Directives,
#[serde(rename = "Classes")]
pub classes: Classes,
#[serde(rename = "Divisions")]
pub divisions: Divisions,
#[serde(rename = "DivisionGroups")]
pub division_groups: DivisionGroups,
#[serde(rename = "Zones")]
pub zones: Zones,
#[serde(rename = "ZoneGroups")]
pub zone_groups: ZoneGroups,
#[serde(rename = "MaximumSurfaceTemperature")]
pub maximum_surface_temperature: String,
#[serde(rename = "Groups")]
pub groups: Groups,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct AbsorptionRate {
#[serde(rename = "@hertz")]
pub hertz: i32,
#[serde(rename = "$text")]
pub value: f64,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct AcousticAbsorptionRates {
#[serde(rename = "AbsorptionRate", default)]
pub absorption_rate: Vec<AbsorptionRate>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct TemperatureRange {
#[serde(rename = "Lower")]
pub lower: i32,
#[serde(rename = "Upper")]
pub upper: i32,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct OperationsAndMaintenance {
#[serde(rename = "UsefulLifeTimes", skip_serializing_if = "Option::is_none")]
pub useful_life_times: Option<UsefulLifeTimes>,
#[serde(rename = "MedianUsefulLifeTimes", skip_serializing_if = "Option::is_none")]
pub median_useful_life_times: Option<MedianUsefulLifeTimes>,
#[serde(rename = "OperatingTemperature", skip_serializing_if = "Option::is_none")]
pub operating_temperature: Option<TemperatureRange>,
#[serde(rename = "AmbientTemperature", skip_serializing_if = "Option::is_none")]
pub ambient_temperature: Option<TemperatureRange>,
#[serde(rename = "RatedAmbientTemperature", skip_serializing_if = "Option::is_none")]
pub rated_ambient_temperature: Option<i32>,
#[serde(rename = "ATEX", skip_serializing_if = "Option::is_none")]
pub atex: Option<ATEX>,
#[serde(rename = "AcousticAbsorptionRates", skip_serializing_if = "Option::is_none")]
pub acoustic_absorption_rates: Option<AcousticAbsorptionRates>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct FileReference {
#[serde(rename = "@fileId")]
pub file_id: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Property {
#[serde(rename = "@id", default)]
pub id: String,
#[serde(rename = "Name", default)]
pub name: Locale,
#[serde(rename = "PropertySource", default)]
pub property_source: String,
#[serde(rename = "Value", default)]
pub value: String,
#[serde(rename = "FileReference", default, skip_serializing_if = "Option::is_none")]
pub file_reference: Option<FileReference>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct CustomProperties {
#[serde(rename = "Property", default)]
pub property: Vec<Property>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct DescriptiveAttributes {
#[serde(rename = "Mechanical", skip_serializing_if = "Option::is_none")]
pub mechanical: Option<Mechanical>,
#[serde(rename = "Electrical", skip_serializing_if = "Option::is_none")]
pub electrical: Option<Electrical>,
#[serde(rename = "Emergency", skip_serializing_if = "Option::is_none")]
pub emergency: Option<Emergency>,
#[serde(rename = "Marketing", skip_serializing_if = "Option::is_none")]
pub marketing: Option<Marketing>,
#[serde(rename = "OperationsAndMaintenance", skip_serializing_if = "Option::is_none")]
pub operations_and_maintenance: Option<OperationsAndMaintenance>,
#[serde(rename = "CustomProperties", skip_serializing_if = "Option::is_none")]
pub custom_properties: Option<CustomProperties>,
}