1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
17pub struct ReservationOfferPart {
18 #[serde(rename = "objectType")]
20 pub object_type: String,
21 #[serde(rename = "id")]
22 pub id: String,
23 #[serde(rename = "summary", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
25 pub summary: Option<Option<String>>,
26 #[serde(rename = "createdOn")]
27 pub created_on: String,
28 #[serde(rename = "validFrom")]
30 pub valid_from: String,
31 #[serde(rename = "validUntil", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
33 pub valid_until: Option<Option<String>>,
34 #[serde(rename = "price")]
35 pub price: Box<models::Price>,
36 #[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
37 pub trip_coverage: Option<Box<models::TripCoverage>>,
38 #[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
39 pub inbound_trip_coverage: Option<Box<models::TripCoverage>>,
40 #[serde(rename = "priceGuaranteedUntil", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
42 pub price_guaranteed_until: Option<Option<String>>,
43 #[serde(rename = "offerMode")]
44 pub offer_mode: models::OfferMode,
45 #[serde(rename = "isReusable", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
47 pub is_reusable: Option<Option<bool>>,
48 #[serde(rename = "passengerRefs")]
49 pub passenger_refs: Vec<String>,
50 #[serde(rename = "numericAvailability", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
52 pub numeric_availability: Option<Option<i32>>,
53 #[serde(rename = "refundable")]
54 pub refundable: models::RefundType,
55 #[serde(rename = "exchangeable")]
56 pub exchangeable: models::ExchangeableType,
57 #[serde(rename = "afterSalesConditions", skip_serializing_if = "Option::is_none")]
58 pub after_sales_conditions: Option<Vec<models::AfterSaleCondition>>,
59 #[serde(rename = "tripTags", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
61 pub trip_tags: Option<Option<Vec<String>>>,
62 #[serde(rename = "returnTags", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
64 pub return_tags: Option<Option<Vec<String>>>,
65 #[serde(rename = "offerTag", skip_serializing_if = "Option::is_none")]
66 pub offer_tag: Option<Box<models::OfferTag>>,
67 #[serde(rename = "requestedInformation", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
69 pub requested_information: Option<Option<String>>,
70 #[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
72 pub summary_product_id: Option<String>,
73 #[serde(rename = "products")]
74 pub products: Vec<models::ProductLegAssociation>,
75 #[serde(rename = "availableFulfillmentOptions")]
76 pub available_fulfillment_options: Vec<models::FulfillmentOption>,
77 #[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
78 pub applied_corporate_codes: Option<Vec<models::CorporateCode>>,
79 #[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
80 pub applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
81 #[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
82 pub applied_promotion_codes: Option<Vec<models::PromotionCode>>,
83 #[serde(rename = "appliedReductionCardTypes", skip_serializing_if = "Option::is_none")]
84 pub applied_reduction_card_types: Option<Vec<models::ReductionCardType>>,
85 #[serde(rename = "regionalValiditySummary", skip_serializing_if = "Option::is_none")]
86 pub regional_validity_summary: Option<Box<models::RegionalValiditySummary>>,
87 #[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
88 pub indicated_consumption: Option<Box<models::IndicatedConsumption>>,
89 #[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
90 pub granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
91 #[serde(rename = "_links", skip_serializing_if = "Option::is_none")]
93 pub _links: Option<Vec<models::Link>>,
94 #[serde(rename = "ancillaries", skip_serializing_if = "Option::is_none")]
96 pub ancillaries: Option<Vec<models::AncillaryRelation>>,
97 #[serde(rename = "availablePlaces", skip_serializing_if = "Option::is_none")]
98 pub available_places: Option<Vec<models::AvailablePlace>>,
99 #[serde(rename = "availablePlacePreferences", skip_serializing_if = "Option::is_none")]
100 pub available_place_preferences: Option<Vec<models::AvailablePlacePreferences>>,
101 #[serde(rename = "feeRefs", skip_serializing_if = "Option::is_none")]
102 pub fee_refs: Option<Vec<models::OfferPartReference>>,
103 #[serde(rename = "numberOfPrivateCompartments", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
104 pub number_of_private_compartments: Option<Option<i32>>,
105 #[serde(rename = "supportedPlaceSelectionFlows", skip_serializing_if = "Option::is_none")]
107 pub supported_place_selection_flows: Option<Vec<String>>,
108}
109
110impl ReservationOfferPart {
111 pub fn new(object_type: String, id: String, created_on: String, valid_from: String, price: models::Price, offer_mode: models::OfferMode, passenger_refs: Vec<String>, refundable: models::RefundType, exchangeable: models::ExchangeableType, products: Vec<models::ProductLegAssociation>, available_fulfillment_options: Vec<models::FulfillmentOption>) -> ReservationOfferPart {
113 ReservationOfferPart {
114 object_type,
115 id,
116 summary: None,
117 created_on,
118 valid_from,
119 valid_until: None,
120 price: Box::new(price),
121 trip_coverage: None,
122 inbound_trip_coverage: None,
123 price_guaranteed_until: None,
124 offer_mode,
125 is_reusable: None,
126 passenger_refs,
127 numeric_availability: None,
128 refundable,
129 exchangeable,
130 after_sales_conditions: None,
131 trip_tags: None,
132 return_tags: None,
133 offer_tag: None,
134 requested_information: None,
135 summary_product_id: None,
136 products,
137 available_fulfillment_options,
138 applied_corporate_codes: None,
139 applied_passenger_types: None,
140 applied_promotion_codes: None,
141 applied_reduction_card_types: None,
142 regional_validity_summary: None,
143 indicated_consumption: None,
144 granted_reduction_amounts: None,
145 _links: None,
146 ancillaries: None,
147 available_places: None,
148 available_place_preferences: None,
149 fee_refs: None,
150 number_of_private_compartments: None,
151 supported_place_selection_flows: None,
152 }
153 }
154}
155