osdm_sys/models/
abstract_booking_part.rs

1/*
2 * UIC 90918-10 - OSDM
3 *
4 * Specifications for the OSDM API standard. The OSDM specification supports two modes of operation: Retailer Mode and Distributor Mode. The API works identically in both modes, except that in distributor mode the API also returns fare information.  The following resources are key to get started:    -  [Processes](https://osdm.io/spec/processes/)   -  [Models](https://osdm.io/spec/models/)   -  [Getting started](https://osdm.io/spec/getting-started/) 
5 *
6 * The version of the OpenAPI document: 3.7.0
7 * Contact: osdm@uic.org
8 * Generated by: https://openapi-generator.tech
9 */
10
11use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
15#[serde(tag = "objectType")]
16pub enum AbstractBookingPart {
17    #[serde(rename="Admission")]
18    Admission {
19        #[serde(rename = "id")]
20        id: String,
21        #[serde(rename = "summary", skip_serializing_if = "Option::is_none")]
22        summary: Option<String>,
23        /// Validity of offer towards passenger 
24        #[serde(rename = "createdOn")]
25        created_on: String,
26        /// confirmationTimeLimit in booking should be used. Date until the booking part needs to be confirmed. Must be provided for a booking part in PREBOOKED stated. For later states, the value is ignored and can be null. 
27        #[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
28        confirmable_until: Option<String>,
29        #[serde(rename = "validFrom")]
30        valid_from: String,
31        /// Validity of offer towards passenger 
32        #[serde(rename = "validUntil", skip_serializing_if = "Option::is_none")]
33        valid_until: Option<String>,
34        #[serde(rename = "confirmedOn", skip_serializing_if = "Option::is_none")]
35        confirmed_on: Option<String>,
36        #[serde(rename = "confirmedFulfillmentOptions", skip_serializing_if = "Option::is_none")]
37        confirmed_fulfillment_options: Option<Box<models::FulfillmentOption>>,
38        #[serde(rename = "price")]
39        price: Box<models::Price>,
40        #[serde(rename = "refundAmount", skip_serializing_if = "Option::is_none")]
41        refund_amount: Option<Box<models::Price>>,
42        #[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
43        trip_coverage: Option<Box<models::TripCoverage>>,
44        #[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
45        inbound_trip_coverage: Option<Box<models::TripCoverage>>,
46        /// Id of the product representing the commercial attributes of this booking part. Although not currently mandatory, this attribute should in all cases be filled in order to allow matching a booking response to the data in the booking request 
47        #[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
48        summary_product_id: Option<String>,
49        /// In offer mode, in almost all cases exactly one product is referenced. Only on some French trips consisting of a TGV and a TER two products need to be used. In fare mode, no product exists as first needs to created from the different fares. 
50        #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
51        products: Option<Vec<models::ProductLegAssociation>>,
52        #[serde(rename = "status")]
53        status: models::BookingPartStatus,
54        /// payment status in post-payment scenarios
55        #[serde(rename = "pricingStatus", skip_serializing_if = "Option::is_none")]
56        pricing_status: Option<String>,
57        #[serde(rename = "offerMode", skip_serializing_if = "Option::is_none")]
58        offer_mode: Option<models::OfferMode>,
59        /// The unique booking code for the part in the provider system. 
60        #[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
61        booking_part_code: Option<String>,
62        /// reference to the booking in the downstream distributor system 
63        #[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
64        distributor_booking_ref: Option<String>,
65        /// reference to the booking in the downstream distributor system 
66        #[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
67        retailer_booking_ref: Option<String>,
68        /// Id of the passenger 
69        #[serde(rename = "passengerIds")]
70        passenger_ids: Vec<String>,
71        #[serde(rename = "availableFulfillmentOptions", skip_serializing_if = "Option::is_none")]
72        available_fulfillment_options: Option<Vec<models::FulfillmentOption>>,
73        #[serde(rename = "refundable")]
74        refundable: models::RefundType,
75        #[serde(rename = "exchangeable")]
76        exchangeable: models::ExchangeableType,
77        /// Fine grained specification of the after sale condition of the booking. 
78        #[serde(rename = "afterSaleConditions", skip_serializing_if = "Option::is_none")]
79        after_sale_conditions: Option<Vec<models::AfterSaleCondition>>,
80        #[serde(rename = "afterSalesOverrideDetails", skip_serializing_if = "Option::is_none")]
81        after_sales_override_details: Option<Box<models::AfterSalesOverrideDetails>>,
82        #[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
83        applied_corporate_codes: Option<Vec<models::CorporateCode>>,
84        #[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
85        applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
86        #[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
87        applied_promotion_codes: Option<Vec<models::PromotionCode>>,
88        #[serde(rename = "appliedReductions", skip_serializing_if = "Option::is_none")]
89        applied_reductions: Option<Vec<models::CardReference>>,
90        #[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
91        indicated_consumption: Option<Box<models::IndicatedConsumption>>,
92        #[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
93        accounting_ref: Option<Box<models::AccountingRef>>,
94        #[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
95        granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
96    },
97    #[serde(rename="Ancillary")]
98    Ancillary {
99        #[serde(rename = "id")]
100        id: String,
101        #[serde(rename = "summary", skip_serializing_if = "Option::is_none")]
102        summary: Option<String>,
103        /// Validity of offer towards passenger 
104        #[serde(rename = "createdOn")]
105        created_on: String,
106        /// confirmationTimeLimit in booking should be used. Date until the booking part needs to be confirmed. Must be provided for a booking part in PREBOOKED stated. For later states, the value is ignored and can be null. 
107        #[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
108        confirmable_until: Option<String>,
109        #[serde(rename = "validFrom")]
110        valid_from: String,
111        /// Validity of offer towards passenger 
112        #[serde(rename = "validUntil", skip_serializing_if = "Option::is_none")]
113        valid_until: Option<String>,
114        #[serde(rename = "confirmedOn", skip_serializing_if = "Option::is_none")]
115        confirmed_on: Option<String>,
116        #[serde(rename = "confirmedFulfillmentOptions", skip_serializing_if = "Option::is_none")]
117        confirmed_fulfillment_options: Option<Box<models::FulfillmentOption>>,
118        #[serde(rename = "price")]
119        price: Box<models::Price>,
120        #[serde(rename = "refundAmount", skip_serializing_if = "Option::is_none")]
121        refund_amount: Option<Box<models::Price>>,
122        #[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
123        trip_coverage: Option<Box<models::TripCoverage>>,
124        #[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
125        inbound_trip_coverage: Option<Box<models::TripCoverage>>,
126        /// Id of the product representing the commercial attributes of this booking part. Although not currently mandatory, this attribute should in all cases be filled in order to allow matching a booking response to the data in the booking request 
127        #[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
128        summary_product_id: Option<String>,
129        /// In offer mode, in almost all cases exactly one product is referenced. Only on some French trips consisting of a TGV and a TER two products need to be used. In fare mode, no product exists as first needs to created from the different fares. 
130        #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
131        products: Option<Vec<models::ProductLegAssociation>>,
132        #[serde(rename = "status")]
133        status: models::BookingPartStatus,
134        /// payment status in post-payment scenarios
135        #[serde(rename = "pricingStatus", skip_serializing_if = "Option::is_none")]
136        pricing_status: Option<String>,
137        #[serde(rename = "offerMode", skip_serializing_if = "Option::is_none")]
138        offer_mode: Option<models::OfferMode>,
139        /// The unique booking code for the part in the provider system. 
140        #[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
141        booking_part_code: Option<String>,
142        /// reference to the booking in the downstream distributor system 
143        #[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
144        distributor_booking_ref: Option<String>,
145        /// reference to the booking in the downstream distributor system 
146        #[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
147        retailer_booking_ref: Option<String>,
148        /// Id of the passenger 
149        #[serde(rename = "passengerIds")]
150        passenger_ids: Vec<String>,
151        #[serde(rename = "availableFulfillmentOptions", skip_serializing_if = "Option::is_none")]
152        available_fulfillment_options: Option<Vec<models::FulfillmentOption>>,
153        #[serde(rename = "refundable")]
154        refundable: models::RefundType,
155        #[serde(rename = "exchangeable")]
156        exchangeable: models::ExchangeableType,
157        /// Fine grained specification of the after sale condition of the booking. 
158        #[serde(rename = "afterSaleConditions", skip_serializing_if = "Option::is_none")]
159        after_sale_conditions: Option<Vec<models::AfterSaleCondition>>,
160        #[serde(rename = "afterSalesOverrideDetails", skip_serializing_if = "Option::is_none")]
161        after_sales_override_details: Option<Box<models::AfterSalesOverrideDetails>>,
162        #[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
163        applied_corporate_codes: Option<Vec<models::CorporateCode>>,
164        #[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
165        applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
166        #[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
167        applied_promotion_codes: Option<Vec<models::PromotionCode>>,
168        #[serde(rename = "appliedReductions", skip_serializing_if = "Option::is_none")]
169        applied_reductions: Option<Vec<models::CardReference>>,
170        #[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
171        indicated_consumption: Option<Box<models::IndicatedConsumption>>,
172        #[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
173        accounting_ref: Option<Box<models::AccountingRef>>,
174        #[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
175        granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
176    },
177    #[serde(rename="ContinuousServiceBookingPart")]
178    ContinuousServiceBookingPart {
179        #[serde(rename = "id")]
180        id: String,
181        #[serde(rename = "summary", skip_serializing_if = "Option::is_none")]
182        summary: Option<String>,
183        /// Validity of offer towards passenger 
184        #[serde(rename = "createdOn")]
185        created_on: String,
186        /// confirmationTimeLimit in booking should be used. Date until the booking part needs to be confirmed. Must be provided for a booking part in PREBOOKED stated. For later states, the value is ignored and can be null. 
187        #[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
188        confirmable_until: Option<String>,
189        #[serde(rename = "validFrom")]
190        valid_from: String,
191        /// Validity of offer towards passenger 
192        #[serde(rename = "validUntil", skip_serializing_if = "Option::is_none")]
193        valid_until: Option<String>,
194        #[serde(rename = "confirmedOn", skip_serializing_if = "Option::is_none")]
195        confirmed_on: Option<String>,
196        #[serde(rename = "confirmedFulfillmentOptions", skip_serializing_if = "Option::is_none")]
197        confirmed_fulfillment_options: Option<Box<models::FulfillmentOption>>,
198        #[serde(rename = "price")]
199        price: Box<models::Price>,
200        #[serde(rename = "refundAmount", skip_serializing_if = "Option::is_none")]
201        refund_amount: Option<Box<models::Price>>,
202        #[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
203        trip_coverage: Option<Box<models::TripCoverage>>,
204        #[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
205        inbound_trip_coverage: Option<Box<models::TripCoverage>>,
206        /// Id of the product representing the commercial attributes of this booking part. Although not currently mandatory, this attribute should in all cases be filled in order to allow matching a booking response to the data in the booking request 
207        #[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
208        summary_product_id: Option<String>,
209        /// In offer mode, in almost all cases exactly one product is referenced. Only on some French trips consisting of a TGV and a TER two products need to be used. In fare mode, no product exists as first needs to created from the different fares. 
210        #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
211        products: Option<Vec<models::ProductLegAssociation>>,
212        #[serde(rename = "status")]
213        status: models::BookingPartStatus,
214        /// payment status in post-payment scenarios
215        #[serde(rename = "pricingStatus", skip_serializing_if = "Option::is_none")]
216        pricing_status: Option<String>,
217        #[serde(rename = "offerMode", skip_serializing_if = "Option::is_none")]
218        offer_mode: Option<models::OfferMode>,
219        /// The unique booking code for the part in the provider system. 
220        #[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
221        booking_part_code: Option<String>,
222        /// reference to the booking in the downstream distributor system 
223        #[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
224        distributor_booking_ref: Option<String>,
225        /// reference to the booking in the downstream distributor system 
226        #[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
227        retailer_booking_ref: Option<String>,
228        /// Id of the passenger 
229        #[serde(rename = "passengerIds")]
230        passenger_ids: Vec<String>,
231        #[serde(rename = "availableFulfillmentOptions", skip_serializing_if = "Option::is_none")]
232        available_fulfillment_options: Option<Vec<models::FulfillmentOption>>,
233        #[serde(rename = "refundable")]
234        refundable: models::RefundType,
235        #[serde(rename = "exchangeable")]
236        exchangeable: models::ExchangeableType,
237        /// Fine grained specification of the after sale condition of the booking. 
238        #[serde(rename = "afterSaleConditions", skip_serializing_if = "Option::is_none")]
239        after_sale_conditions: Option<Vec<models::AfterSaleCondition>>,
240        #[serde(rename = "afterSalesOverrideDetails", skip_serializing_if = "Option::is_none")]
241        after_sales_override_details: Option<Box<models::AfterSalesOverrideDetails>>,
242        #[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
243        applied_corporate_codes: Option<Vec<models::CorporateCode>>,
244        #[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
245        applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
246        #[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
247        applied_promotion_codes: Option<Vec<models::PromotionCode>>,
248        #[serde(rename = "appliedReductions", skip_serializing_if = "Option::is_none")]
249        applied_reductions: Option<Vec<models::CardReference>>,
250        #[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
251        indicated_consumption: Option<Box<models::IndicatedConsumption>>,
252        #[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
253        accounting_ref: Option<Box<models::AccountingRef>>,
254        #[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
255        granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
256    },
257    #[serde(rename="ContinuousServiceOfferPart")]
258    ContinuousServiceOfferPart {
259        #[serde(rename = "id")]
260        id: String,
261        #[serde(rename = "summary", skip_serializing_if = "Option::is_none")]
262        summary: Option<String>,
263        /// Validity of offer towards passenger 
264        #[serde(rename = "createdOn")]
265        created_on: String,
266        /// confirmationTimeLimit in booking should be used. Date until the booking part needs to be confirmed. Must be provided for a booking part in PREBOOKED stated. For later states, the value is ignored and can be null. 
267        #[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
268        confirmable_until: Option<String>,
269        #[serde(rename = "validFrom")]
270        valid_from: String,
271        /// Validity of offer towards passenger 
272        #[serde(rename = "validUntil", skip_serializing_if = "Option::is_none")]
273        valid_until: Option<String>,
274        #[serde(rename = "confirmedOn", skip_serializing_if = "Option::is_none")]
275        confirmed_on: Option<String>,
276        #[serde(rename = "confirmedFulfillmentOptions", skip_serializing_if = "Option::is_none")]
277        confirmed_fulfillment_options: Option<Box<models::FulfillmentOption>>,
278        #[serde(rename = "price")]
279        price: Box<models::Price>,
280        #[serde(rename = "refundAmount", skip_serializing_if = "Option::is_none")]
281        refund_amount: Option<Box<models::Price>>,
282        #[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
283        trip_coverage: Option<Box<models::TripCoverage>>,
284        #[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
285        inbound_trip_coverage: Option<Box<models::TripCoverage>>,
286        /// Id of the product representing the commercial attributes of this booking part. Although not currently mandatory, this attribute should in all cases be filled in order to allow matching a booking response to the data in the booking request 
287        #[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
288        summary_product_id: Option<String>,
289        /// In offer mode, in almost all cases exactly one product is referenced. Only on some French trips consisting of a TGV and a TER two products need to be used. In fare mode, no product exists as first needs to created from the different fares. 
290        #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
291        products: Option<Vec<models::ProductLegAssociation>>,
292        #[serde(rename = "status")]
293        status: models::BookingPartStatus,
294        /// payment status in post-payment scenarios
295        #[serde(rename = "pricingStatus", skip_serializing_if = "Option::is_none")]
296        pricing_status: Option<String>,
297        #[serde(rename = "offerMode", skip_serializing_if = "Option::is_none")]
298        offer_mode: Option<models::OfferMode>,
299        /// The unique booking code for the part in the provider system. 
300        #[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
301        booking_part_code: Option<String>,
302        /// reference to the booking in the downstream distributor system 
303        #[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
304        distributor_booking_ref: Option<String>,
305        /// reference to the booking in the downstream distributor system 
306        #[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
307        retailer_booking_ref: Option<String>,
308        /// Id of the passenger 
309        #[serde(rename = "passengerIds")]
310        passenger_ids: Vec<String>,
311        #[serde(rename = "availableFulfillmentOptions", skip_serializing_if = "Option::is_none")]
312        available_fulfillment_options: Option<Vec<models::FulfillmentOption>>,
313        #[serde(rename = "refundable")]
314        refundable: models::RefundType,
315        #[serde(rename = "exchangeable")]
316        exchangeable: models::ExchangeableType,
317        /// Fine grained specification of the after sale condition of the booking. 
318        #[serde(rename = "afterSaleConditions", skip_serializing_if = "Option::is_none")]
319        after_sale_conditions: Option<Vec<models::AfterSaleCondition>>,
320        #[serde(rename = "afterSalesOverrideDetails", skip_serializing_if = "Option::is_none")]
321        after_sales_override_details: Option<Box<models::AfterSalesOverrideDetails>>,
322        #[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
323        applied_corporate_codes: Option<Vec<models::CorporateCode>>,
324        #[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
325        applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
326        #[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
327        applied_promotion_codes: Option<Vec<models::PromotionCode>>,
328        #[serde(rename = "appliedReductions", skip_serializing_if = "Option::is_none")]
329        applied_reductions: Option<Vec<models::CardReference>>,
330        #[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
331        indicated_consumption: Option<Box<models::IndicatedConsumption>>,
332        #[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
333        accounting_ref: Option<Box<models::AccountingRef>>,
334        #[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
335        granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
336    },
337    #[serde(rename="Reservation")]
338    Reservation {
339        #[serde(rename = "id")]
340        id: String,
341        #[serde(rename = "summary", skip_serializing_if = "Option::is_none")]
342        summary: Option<String>,
343        /// Validity of offer towards passenger 
344        #[serde(rename = "createdOn")]
345        created_on: String,
346        /// confirmationTimeLimit in booking should be used. Date until the booking part needs to be confirmed. Must be provided for a booking part in PREBOOKED stated. For later states, the value is ignored and can be null. 
347        #[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
348        confirmable_until: Option<String>,
349        #[serde(rename = "validFrom")]
350        valid_from: String,
351        /// Validity of offer towards passenger 
352        #[serde(rename = "validUntil", skip_serializing_if = "Option::is_none")]
353        valid_until: Option<String>,
354        #[serde(rename = "confirmedOn", skip_serializing_if = "Option::is_none")]
355        confirmed_on: Option<String>,
356        #[serde(rename = "confirmedFulfillmentOptions", skip_serializing_if = "Option::is_none")]
357        confirmed_fulfillment_options: Option<Box<models::FulfillmentOption>>,
358        #[serde(rename = "price")]
359        price: Box<models::Price>,
360        #[serde(rename = "refundAmount", skip_serializing_if = "Option::is_none")]
361        refund_amount: Option<Box<models::Price>>,
362        #[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
363        trip_coverage: Option<Box<models::TripCoverage>>,
364        #[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
365        inbound_trip_coverage: Option<Box<models::TripCoverage>>,
366        /// Id of the product representing the commercial attributes of this booking part. Although not currently mandatory, this attribute should in all cases be filled in order to allow matching a booking response to the data in the booking request 
367        #[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
368        summary_product_id: Option<String>,
369        /// In offer mode, in almost all cases exactly one product is referenced. Only on some French trips consisting of a TGV and a TER two products need to be used. In fare mode, no product exists as first needs to created from the different fares. 
370        #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
371        products: Option<Vec<models::ProductLegAssociation>>,
372        #[serde(rename = "status")]
373        status: models::BookingPartStatus,
374        /// payment status in post-payment scenarios
375        #[serde(rename = "pricingStatus", skip_serializing_if = "Option::is_none")]
376        pricing_status: Option<String>,
377        #[serde(rename = "offerMode", skip_serializing_if = "Option::is_none")]
378        offer_mode: Option<models::OfferMode>,
379        /// The unique booking code for the part in the provider system. 
380        #[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
381        booking_part_code: Option<String>,
382        /// reference to the booking in the downstream distributor system 
383        #[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
384        distributor_booking_ref: Option<String>,
385        /// reference to the booking in the downstream distributor system 
386        #[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
387        retailer_booking_ref: Option<String>,
388        /// Id of the passenger 
389        #[serde(rename = "passengerIds")]
390        passenger_ids: Vec<String>,
391        #[serde(rename = "availableFulfillmentOptions", skip_serializing_if = "Option::is_none")]
392        available_fulfillment_options: Option<Vec<models::FulfillmentOption>>,
393        #[serde(rename = "refundable")]
394        refundable: models::RefundType,
395        #[serde(rename = "exchangeable")]
396        exchangeable: models::ExchangeableType,
397        /// Fine grained specification of the after sale condition of the booking. 
398        #[serde(rename = "afterSaleConditions", skip_serializing_if = "Option::is_none")]
399        after_sale_conditions: Option<Vec<models::AfterSaleCondition>>,
400        #[serde(rename = "afterSalesOverrideDetails", skip_serializing_if = "Option::is_none")]
401        after_sales_override_details: Option<Box<models::AfterSalesOverrideDetails>>,
402        #[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
403        applied_corporate_codes: Option<Vec<models::CorporateCode>>,
404        #[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
405        applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
406        #[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
407        applied_promotion_codes: Option<Vec<models::PromotionCode>>,
408        #[serde(rename = "appliedReductions", skip_serializing_if = "Option::is_none")]
409        applied_reductions: Option<Vec<models::CardReference>>,
410        #[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
411        indicated_consumption: Option<Box<models::IndicatedConsumption>>,
412        #[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
413        accounting_ref: Option<Box<models::AccountingRef>>,
414        #[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
415        granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
416    },
417}
418
419impl Default for AbstractBookingPart {
420    fn default() -> Self {
421        Self::Admission {
422            id: Default::default(),
423            summary: Default::default(),
424            created_on: Default::default(),
425            confirmable_until: Default::default(),
426            valid_from: Default::default(),
427            valid_until: Default::default(),
428            confirmed_on: Default::default(),
429            confirmed_fulfillment_options: Default::default(),
430            price: Default::default(),
431            refund_amount: Default::default(),
432            trip_coverage: Default::default(),
433            inbound_trip_coverage: Default::default(),
434            summary_product_id: Default::default(),
435            products: Default::default(),
436            status: Default::default(),
437            pricing_status: Default::default(),
438            offer_mode: Default::default(),
439            booking_part_code: Default::default(),
440            distributor_booking_ref: Default::default(),
441            retailer_booking_ref: Default::default(),
442            passenger_ids: Default::default(),
443            available_fulfillment_options: Default::default(),
444            refundable: Default::default(),
445            exchangeable: Default::default(),
446            after_sale_conditions: Default::default(),
447            after_sales_override_details: Default::default(),
448            applied_corporate_codes: Default::default(),
449            applied_passenger_types: Default::default(),
450            applied_promotion_codes: Default::default(),
451            applied_reductions: Default::default(),
452            indicated_consumption: Default::default(),
453            accounting_ref: Default::default(),
454            granted_reduction_amounts: Default::default(),
455        }
456        
457    }
458}
459
460