1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
15#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
16#[serde(tag = "objectType")]
17pub enum AbstractBookingPart {
18 #[serde(rename="Admission")]
19 Admission {
20 #[serde(rename = "id")]
21 id: String,
22 #[serde(rename = "summary", skip_serializing_if = "Option::is_none")]
23 summary: Option<String>,
24 #[serde(rename = "createdOn")]
26 created_on: String,
27 #[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
29 confirmable_until: Option<String>,
30 #[serde(rename = "validFrom")]
31 valid_from: String,
32 #[serde(rename = "validUntil", skip_serializing_if = "Option::is_none")]
34 valid_until: Option<String>,
35 #[serde(rename = "confirmedOn", skip_serializing_if = "Option::is_none")]
36 confirmed_on: Option<String>,
37 #[serde(rename = "confirmedFulfillmentOptions", skip_serializing_if = "Option::is_none")]
38 confirmed_fulfillment_options: Option<Box<models::FulfillmentOption>>,
39 #[serde(rename = "price")]
40 price: Box<models::Price>,
41 #[serde(rename = "refundAmount", skip_serializing_if = "Option::is_none")]
42 refund_amount: Option<Box<models::Price>>,
43 #[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
44 trip_coverage: Option<Box<models::TripCoverage>>,
45 #[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
46 inbound_trip_coverage: Option<Box<models::TripCoverage>>,
47 #[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
49 summary_product_id: Option<String>,
50 #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
52 products: Option<Vec<models::ProductLegAssociation>>,
53 #[serde(rename = "status")]
54 status: models::BookingPartStatus,
55 #[serde(rename = "pricingStatus", skip_serializing_if = "Option::is_none")]
57 pricing_status: Option<String>,
58 #[serde(rename = "offerMode", skip_serializing_if = "Option::is_none")]
59 offer_mode: Option<models::OfferMode>,
60 #[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
62 booking_part_code: Option<String>,
63 #[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
65 distributor_booking_ref: Option<String>,
66 #[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
68 retailer_booking_ref: Option<String>,
69 #[serde(rename = "passengerIds")]
71 passenger_ids: Vec<String>,
72 #[serde(rename = "availableFulfillmentOptions", skip_serializing_if = "Option::is_none")]
73 available_fulfillment_options: Option<Vec<models::FulfillmentOption>>,
74 #[serde(rename = "refundable")]
75 refundable: models::RefundType,
76 #[serde(rename = "exchangeable")]
77 exchangeable: models::ExchangeableType,
78 #[serde(rename = "afterSaleConditions", skip_serializing_if = "Option::is_none")]
80 after_sale_conditions: Option<Vec<models::AfterSaleCondition>>,
81 #[serde(rename = "afterSalesOverrideDetails", skip_serializing_if = "Option::is_none")]
82 after_sales_override_details: Option<Box<models::AfterSalesOverrideDetails>>,
83 #[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
84 applied_corporate_codes: Option<Vec<models::CorporateCode>>,
85 #[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
86 applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
87 #[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
88 applied_promotion_codes: Option<Vec<models::PromotionCode>>,
89 #[serde(rename = "appliedReductions", skip_serializing_if = "Option::is_none")]
90 applied_reductions: Option<Vec<models::CardReference>>,
91 #[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
92 indicated_consumption: Option<Box<models::IndicatedConsumption>>,
93 #[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
94 accounting_ref: Option<Box<models::AccountingRef>>,
95 #[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
96 granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
97 },
98 #[serde(rename="Ancillary")]
99 Ancillary {
100 #[serde(rename = "id")]
101 id: String,
102 #[serde(rename = "summary", skip_serializing_if = "Option::is_none")]
103 summary: Option<String>,
104 #[serde(rename = "createdOn")]
106 created_on: String,
107 #[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
109 confirmable_until: Option<String>,
110 #[serde(rename = "validFrom")]
111 valid_from: String,
112 #[serde(rename = "validUntil", skip_serializing_if = "Option::is_none")]
114 valid_until: Option<String>,
115 #[serde(rename = "confirmedOn", skip_serializing_if = "Option::is_none")]
116 confirmed_on: Option<String>,
117 #[serde(rename = "confirmedFulfillmentOptions", skip_serializing_if = "Option::is_none")]
118 confirmed_fulfillment_options: Option<Box<models::FulfillmentOption>>,
119 #[serde(rename = "price")]
120 price: Box<models::Price>,
121 #[serde(rename = "refundAmount", skip_serializing_if = "Option::is_none")]
122 refund_amount: Option<Box<models::Price>>,
123 #[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
124 trip_coverage: Option<Box<models::TripCoverage>>,
125 #[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
126 inbound_trip_coverage: Option<Box<models::TripCoverage>>,
127 #[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
129 summary_product_id: Option<String>,
130 #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
132 products: Option<Vec<models::ProductLegAssociation>>,
133 #[serde(rename = "status")]
134 status: models::BookingPartStatus,
135 #[serde(rename = "pricingStatus", skip_serializing_if = "Option::is_none")]
137 pricing_status: Option<String>,
138 #[serde(rename = "offerMode", skip_serializing_if = "Option::is_none")]
139 offer_mode: Option<models::OfferMode>,
140 #[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
142 booking_part_code: Option<String>,
143 #[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
145 distributor_booking_ref: Option<String>,
146 #[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
148 retailer_booking_ref: Option<String>,
149 #[serde(rename = "passengerIds")]
151 passenger_ids: Vec<String>,
152 #[serde(rename = "availableFulfillmentOptions", skip_serializing_if = "Option::is_none")]
153 available_fulfillment_options: Option<Vec<models::FulfillmentOption>>,
154 #[serde(rename = "refundable")]
155 refundable: models::RefundType,
156 #[serde(rename = "exchangeable")]
157 exchangeable: models::ExchangeableType,
158 #[serde(rename = "afterSaleConditions", skip_serializing_if = "Option::is_none")]
160 after_sale_conditions: Option<Vec<models::AfterSaleCondition>>,
161 #[serde(rename = "afterSalesOverrideDetails", skip_serializing_if = "Option::is_none")]
162 after_sales_override_details: Option<Box<models::AfterSalesOverrideDetails>>,
163 #[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
164 applied_corporate_codes: Option<Vec<models::CorporateCode>>,
165 #[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
166 applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
167 #[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
168 applied_promotion_codes: Option<Vec<models::PromotionCode>>,
169 #[serde(rename = "appliedReductions", skip_serializing_if = "Option::is_none")]
170 applied_reductions: Option<Vec<models::CardReference>>,
171 #[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
172 indicated_consumption: Option<Box<models::IndicatedConsumption>>,
173 #[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
174 accounting_ref: Option<Box<models::AccountingRef>>,
175 #[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
176 granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
177 },
178 #[serde(rename="ContinuousServiceBookingPart")]
179 ContinuousServiceBookingPart {
180 #[serde(rename = "id")]
181 id: String,
182 #[serde(rename = "summary", skip_serializing_if = "Option::is_none")]
183 summary: Option<String>,
184 #[serde(rename = "createdOn")]
186 created_on: String,
187 #[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
189 confirmable_until: Option<String>,
190 #[serde(rename = "validFrom")]
191 valid_from: String,
192 #[serde(rename = "validUntil", skip_serializing_if = "Option::is_none")]
194 valid_until: Option<String>,
195 #[serde(rename = "confirmedOn", skip_serializing_if = "Option::is_none")]
196 confirmed_on: Option<String>,
197 #[serde(rename = "confirmedFulfillmentOptions", skip_serializing_if = "Option::is_none")]
198 confirmed_fulfillment_options: Option<Box<models::FulfillmentOption>>,
199 #[serde(rename = "price")]
200 price: Box<models::Price>,
201 #[serde(rename = "refundAmount", skip_serializing_if = "Option::is_none")]
202 refund_amount: Option<Box<models::Price>>,
203 #[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
204 trip_coverage: Option<Box<models::TripCoverage>>,
205 #[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
206 inbound_trip_coverage: Option<Box<models::TripCoverage>>,
207 #[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
209 summary_product_id: Option<String>,
210 #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
212 products: Option<Vec<models::ProductLegAssociation>>,
213 #[serde(rename = "status")]
214 status: models::BookingPartStatus,
215 #[serde(rename = "pricingStatus", skip_serializing_if = "Option::is_none")]
217 pricing_status: Option<String>,
218 #[serde(rename = "offerMode", skip_serializing_if = "Option::is_none")]
219 offer_mode: Option<models::OfferMode>,
220 #[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
222 booking_part_code: Option<String>,
223 #[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
225 distributor_booking_ref: Option<String>,
226 #[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
228 retailer_booking_ref: Option<String>,
229 #[serde(rename = "passengerIds")]
231 passenger_ids: Vec<String>,
232 #[serde(rename = "availableFulfillmentOptions", skip_serializing_if = "Option::is_none")]
233 available_fulfillment_options: Option<Vec<models::FulfillmentOption>>,
234 #[serde(rename = "refundable")]
235 refundable: models::RefundType,
236 #[serde(rename = "exchangeable")]
237 exchangeable: models::ExchangeableType,
238 #[serde(rename = "afterSaleConditions", skip_serializing_if = "Option::is_none")]
240 after_sale_conditions: Option<Vec<models::AfterSaleCondition>>,
241 #[serde(rename = "afterSalesOverrideDetails", skip_serializing_if = "Option::is_none")]
242 after_sales_override_details: Option<Box<models::AfterSalesOverrideDetails>>,
243 #[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
244 applied_corporate_codes: Option<Vec<models::CorporateCode>>,
245 #[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
246 applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
247 #[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
248 applied_promotion_codes: Option<Vec<models::PromotionCode>>,
249 #[serde(rename = "appliedReductions", skip_serializing_if = "Option::is_none")]
250 applied_reductions: Option<Vec<models::CardReference>>,
251 #[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
252 indicated_consumption: Option<Box<models::IndicatedConsumption>>,
253 #[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
254 accounting_ref: Option<Box<models::AccountingRef>>,
255 #[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
256 granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
257 },
258 #[serde(rename="ContinuousServiceOfferPart")]
259 ContinuousServiceOfferPart {
260 #[serde(rename = "id")]
261 id: String,
262 #[serde(rename = "summary", skip_serializing_if = "Option::is_none")]
263 summary: Option<String>,
264 #[serde(rename = "createdOn")]
266 created_on: String,
267 #[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
269 confirmable_until: Option<String>,
270 #[serde(rename = "validFrom")]
271 valid_from: String,
272 #[serde(rename = "validUntil", skip_serializing_if = "Option::is_none")]
274 valid_until: Option<String>,
275 #[serde(rename = "confirmedOn", skip_serializing_if = "Option::is_none")]
276 confirmed_on: Option<String>,
277 #[serde(rename = "confirmedFulfillmentOptions", skip_serializing_if = "Option::is_none")]
278 confirmed_fulfillment_options: Option<Box<models::FulfillmentOption>>,
279 #[serde(rename = "price")]
280 price: Box<models::Price>,
281 #[serde(rename = "refundAmount", skip_serializing_if = "Option::is_none")]
282 refund_amount: Option<Box<models::Price>>,
283 #[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
284 trip_coverage: Option<Box<models::TripCoverage>>,
285 #[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
286 inbound_trip_coverage: Option<Box<models::TripCoverage>>,
287 #[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
289 summary_product_id: Option<String>,
290 #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
292 products: Option<Vec<models::ProductLegAssociation>>,
293 #[serde(rename = "status")]
294 status: models::BookingPartStatus,
295 #[serde(rename = "pricingStatus", skip_serializing_if = "Option::is_none")]
297 pricing_status: Option<String>,
298 #[serde(rename = "offerMode", skip_serializing_if = "Option::is_none")]
299 offer_mode: Option<models::OfferMode>,
300 #[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
302 booking_part_code: Option<String>,
303 #[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
305 distributor_booking_ref: Option<String>,
306 #[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
308 retailer_booking_ref: Option<String>,
309 #[serde(rename = "passengerIds")]
311 passenger_ids: Vec<String>,
312 #[serde(rename = "availableFulfillmentOptions", skip_serializing_if = "Option::is_none")]
313 available_fulfillment_options: Option<Vec<models::FulfillmentOption>>,
314 #[serde(rename = "refundable")]
315 refundable: models::RefundType,
316 #[serde(rename = "exchangeable")]
317 exchangeable: models::ExchangeableType,
318 #[serde(rename = "afterSaleConditions", skip_serializing_if = "Option::is_none")]
320 after_sale_conditions: Option<Vec<models::AfterSaleCondition>>,
321 #[serde(rename = "afterSalesOverrideDetails", skip_serializing_if = "Option::is_none")]
322 after_sales_override_details: Option<Box<models::AfterSalesOverrideDetails>>,
323 #[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
324 applied_corporate_codes: Option<Vec<models::CorporateCode>>,
325 #[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
326 applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
327 #[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
328 applied_promotion_codes: Option<Vec<models::PromotionCode>>,
329 #[serde(rename = "appliedReductions", skip_serializing_if = "Option::is_none")]
330 applied_reductions: Option<Vec<models::CardReference>>,
331 #[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
332 indicated_consumption: Option<Box<models::IndicatedConsumption>>,
333 #[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
334 accounting_ref: Option<Box<models::AccountingRef>>,
335 #[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
336 granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
337 },
338 #[serde(rename="Reservation")]
339 Reservation {
340 #[serde(rename = "id")]
341 id: String,
342 #[serde(rename = "summary", skip_serializing_if = "Option::is_none")]
343 summary: Option<String>,
344 #[serde(rename = "createdOn")]
346 created_on: String,
347 #[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
349 confirmable_until: Option<String>,
350 #[serde(rename = "validFrom")]
351 valid_from: String,
352 #[serde(rename = "validUntil", skip_serializing_if = "Option::is_none")]
354 valid_until: Option<String>,
355 #[serde(rename = "confirmedOn", skip_serializing_if = "Option::is_none")]
356 confirmed_on: Option<String>,
357 #[serde(rename = "confirmedFulfillmentOptions", skip_serializing_if = "Option::is_none")]
358 confirmed_fulfillment_options: Option<Box<models::FulfillmentOption>>,
359 #[serde(rename = "price")]
360 price: Box<models::Price>,
361 #[serde(rename = "refundAmount", skip_serializing_if = "Option::is_none")]
362 refund_amount: Option<Box<models::Price>>,
363 #[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
364 trip_coverage: Option<Box<models::TripCoverage>>,
365 #[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
366 inbound_trip_coverage: Option<Box<models::TripCoverage>>,
367 #[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
369 summary_product_id: Option<String>,
370 #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
372 products: Option<Vec<models::ProductLegAssociation>>,
373 #[serde(rename = "status")]
374 status: models::BookingPartStatus,
375 #[serde(rename = "pricingStatus", skip_serializing_if = "Option::is_none")]
377 pricing_status: Option<String>,
378 #[serde(rename = "offerMode", skip_serializing_if = "Option::is_none")]
379 offer_mode: Option<models::OfferMode>,
380 #[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
382 booking_part_code: Option<String>,
383 #[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
385 distributor_booking_ref: Option<String>,
386 #[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
388 retailer_booking_ref: Option<String>,
389 #[serde(rename = "passengerIds")]
391 passenger_ids: Vec<String>,
392 #[serde(rename = "availableFulfillmentOptions", skip_serializing_if = "Option::is_none")]
393 available_fulfillment_options: Option<Vec<models::FulfillmentOption>>,
394 #[serde(rename = "refundable")]
395 refundable: models::RefundType,
396 #[serde(rename = "exchangeable")]
397 exchangeable: models::ExchangeableType,
398 #[serde(rename = "afterSaleConditions", skip_serializing_if = "Option::is_none")]
400 after_sale_conditions: Option<Vec<models::AfterSaleCondition>>,
401 #[serde(rename = "afterSalesOverrideDetails", skip_serializing_if = "Option::is_none")]
402 after_sales_override_details: Option<Box<models::AfterSalesOverrideDetails>>,
403 #[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
404 applied_corporate_codes: Option<Vec<models::CorporateCode>>,
405 #[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
406 applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
407 #[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
408 applied_promotion_codes: Option<Vec<models::PromotionCode>>,
409 #[serde(rename = "appliedReductions", skip_serializing_if = "Option::is_none")]
410 applied_reductions: Option<Vec<models::CardReference>>,
411 #[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
412 indicated_consumption: Option<Box<models::IndicatedConsumption>>,
413 #[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
414 accounting_ref: Option<Box<models::AccountingRef>>,
415 #[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
416 granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
417 },
418}
419
420impl Default for AbstractBookingPart {
421 fn default() -> Self {
422 Self::Admission {
423 id: Default::default(),
424 summary: Default::default(),
425 created_on: Default::default(),
426 confirmable_until: Default::default(),
427 valid_from: Default::default(),
428 valid_until: Default::default(),
429 confirmed_on: Default::default(),
430 confirmed_fulfillment_options: Default::default(),
431 price: Default::default(),
432 refund_amount: Default::default(),
433 trip_coverage: Default::default(),
434 inbound_trip_coverage: Default::default(),
435 summary_product_id: Default::default(),
436 products: Default::default(),
437 status: Default::default(),
438 pricing_status: Default::default(),
439 offer_mode: Default::default(),
440 booking_part_code: Default::default(),
441 distributor_booking_ref: Default::default(),
442 retailer_booking_ref: Default::default(),
443 passenger_ids: Default::default(),
444 available_fulfillment_options: Default::default(),
445 refundable: Default::default(),
446 exchangeable: Default::default(),
447 after_sale_conditions: Default::default(),
448 after_sales_override_details: Default::default(),
449 applied_corporate_codes: Default::default(),
450 applied_passenger_types: Default::default(),
451 applied_promotion_codes: Default::default(),
452 applied_reductions: Default::default(),
453 indicated_consumption: Default::default(),
454 accounting_ref: Default::default(),
455 granted_reduction_amounts: Default::default(),
456 }
457
458 }
459}
460
461