Skip to main content

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#[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        /// Validity of offer towards passenger 
25        #[serde(rename = "createdOn")]
26        created_on: String,
27        /// 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. 
28        #[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
29        confirmable_until: Option<String>,
30        #[serde(rename = "validFrom")]
31        valid_from: String,
32        /// Validity of offer towards passenger 
33        #[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        /// 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 
48        #[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
49        summary_product_id: Option<String>,
50        /// 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. 
51        #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
52        products: Option<Vec<models::ProductLegAssociation>>,
53        #[serde(rename = "status")]
54        status: models::BookingPartStatus,
55        /// payment status in post-payment scenarios
56        #[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        /// The unique booking code for the part in the provider system. 
61        #[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
62        booking_part_code: Option<String>,
63        /// reference to the booking in the downstream distributor system 
64        #[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
65        distributor_booking_ref: Option<String>,
66        /// reference to the booking in the downstream distributor system 
67        #[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
68        retailer_booking_ref: Option<String>,
69        /// Id of the passenger 
70        #[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        /// Fine grained specification of the after sale condition of the booking. 
79        #[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        /// Validity of offer towards passenger 
105        #[serde(rename = "createdOn")]
106        created_on: String,
107        /// 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. 
108        #[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
109        confirmable_until: Option<String>,
110        #[serde(rename = "validFrom")]
111        valid_from: String,
112        /// Validity of offer towards passenger 
113        #[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        /// 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 
128        #[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
129        summary_product_id: Option<String>,
130        /// 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. 
131        #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
132        products: Option<Vec<models::ProductLegAssociation>>,
133        #[serde(rename = "status")]
134        status: models::BookingPartStatus,
135        /// payment status in post-payment scenarios
136        #[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        /// The unique booking code for the part in the provider system. 
141        #[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
142        booking_part_code: Option<String>,
143        /// reference to the booking in the downstream distributor system 
144        #[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
145        distributor_booking_ref: Option<String>,
146        /// reference to the booking in the downstream distributor system 
147        #[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
148        retailer_booking_ref: Option<String>,
149        /// Id of the passenger 
150        #[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        /// Fine grained specification of the after sale condition of the booking. 
159        #[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        /// Validity of offer towards passenger 
185        #[serde(rename = "createdOn")]
186        created_on: String,
187        /// 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. 
188        #[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
189        confirmable_until: Option<String>,
190        #[serde(rename = "validFrom")]
191        valid_from: String,
192        /// Validity of offer towards passenger 
193        #[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        /// 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 
208        #[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
209        summary_product_id: Option<String>,
210        /// 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. 
211        #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
212        products: Option<Vec<models::ProductLegAssociation>>,
213        #[serde(rename = "status")]
214        status: models::BookingPartStatus,
215        /// payment status in post-payment scenarios
216        #[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        /// The unique booking code for the part in the provider system. 
221        #[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
222        booking_part_code: Option<String>,
223        /// reference to the booking in the downstream distributor system 
224        #[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
225        distributor_booking_ref: Option<String>,
226        /// reference to the booking in the downstream distributor system 
227        #[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
228        retailer_booking_ref: Option<String>,
229        /// Id of the passenger 
230        #[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        /// Fine grained specification of the after sale condition of the booking. 
239        #[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        /// Validity of offer towards passenger 
265        #[serde(rename = "createdOn")]
266        created_on: String,
267        /// 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. 
268        #[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
269        confirmable_until: Option<String>,
270        #[serde(rename = "validFrom")]
271        valid_from: String,
272        /// Validity of offer towards passenger 
273        #[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        /// 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 
288        #[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
289        summary_product_id: Option<String>,
290        /// 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. 
291        #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
292        products: Option<Vec<models::ProductLegAssociation>>,
293        #[serde(rename = "status")]
294        status: models::BookingPartStatus,
295        /// payment status in post-payment scenarios
296        #[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        /// The unique booking code for the part in the provider system. 
301        #[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
302        booking_part_code: Option<String>,
303        /// reference to the booking in the downstream distributor system 
304        #[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
305        distributor_booking_ref: Option<String>,
306        /// reference to the booking in the downstream distributor system 
307        #[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
308        retailer_booking_ref: Option<String>,
309        /// Id of the passenger 
310        #[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        /// Fine grained specification of the after sale condition of the booking. 
319        #[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        /// Validity of offer towards passenger 
345        #[serde(rename = "createdOn")]
346        created_on: String,
347        /// 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. 
348        #[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
349        confirmable_until: Option<String>,
350        #[serde(rename = "validFrom")]
351        valid_from: String,
352        /// Validity of offer towards passenger 
353        #[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        /// 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 
368        #[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
369        summary_product_id: Option<String>,
370        /// 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. 
371        #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
372        products: Option<Vec<models::ProductLegAssociation>>,
373        #[serde(rename = "status")]
374        status: models::BookingPartStatus,
375        /// payment status in post-payment scenarios
376        #[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        /// The unique booking code for the part in the provider system. 
381        #[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
382        booking_part_code: Option<String>,
383        /// reference to the booking in the downstream distributor system 
384        #[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
385        distributor_booking_ref: Option<String>,
386        /// reference to the booking in the downstream distributor system 
387        #[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
388        retailer_booking_ref: Option<String>,
389        /// Id of the passenger 
390        #[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        /// Fine grained specification of the after sale condition of the booking. 
399        #[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