use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde(tag = "objectType")]
pub enum AbstractBookingPart {
#[serde(rename="Admission")]
Admission {
#[serde(rename = "id")]
id: String,
#[serde(rename = "summary", skip_serializing_if = "Option::is_none")]
summary: Option<String>,
#[serde(rename = "createdOn")]
created_on: String,
#[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
confirmable_until: Option<String>,
#[serde(rename = "validFrom")]
valid_from: String,
#[serde(rename = "validUntil", skip_serializing_if = "Option::is_none")]
valid_until: Option<String>,
#[serde(rename = "confirmedOn", skip_serializing_if = "Option::is_none")]
confirmed_on: Option<String>,
#[serde(rename = "confirmedFulfillmentOptions", skip_serializing_if = "Option::is_none")]
confirmed_fulfillment_options: Option<Box<models::FulfillmentOption>>,
#[serde(rename = "price")]
price: Box<models::Price>,
#[serde(rename = "refundAmount", skip_serializing_if = "Option::is_none")]
refund_amount: Option<Box<models::Price>>,
#[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
trip_coverage: Option<Box<models::TripCoverage>>,
#[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
inbound_trip_coverage: Option<Box<models::TripCoverage>>,
#[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
summary_product_id: Option<String>,
#[serde(rename = "products", skip_serializing_if = "Option::is_none")]
products: Option<Vec<models::ProductLegAssociation>>,
#[serde(rename = "status")]
status: models::BookingPartStatus,
#[serde(rename = "pricingStatus", skip_serializing_if = "Option::is_none")]
pricing_status: Option<String>,
#[serde(rename = "offerMode", skip_serializing_if = "Option::is_none")]
offer_mode: Option<models::OfferMode>,
#[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
booking_part_code: Option<String>,
#[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
distributor_booking_ref: Option<String>,
#[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
retailer_booking_ref: Option<String>,
#[serde(rename = "passengerIds")]
passenger_ids: Vec<String>,
#[serde(rename = "availableFulfillmentOptions", skip_serializing_if = "Option::is_none")]
available_fulfillment_options: Option<Vec<models::FulfillmentOption>>,
#[serde(rename = "refundable")]
refundable: models::RefundType,
#[serde(rename = "exchangeable")]
exchangeable: models::ExchangeableType,
#[serde(rename = "afterSaleConditions", skip_serializing_if = "Option::is_none")]
after_sale_conditions: Option<Vec<models::AfterSaleCondition>>,
#[serde(rename = "afterSalesOverrideDetails", skip_serializing_if = "Option::is_none")]
after_sales_override_details: Option<Box<models::AfterSalesOverrideDetails>>,
#[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
applied_corporate_codes: Option<Vec<models::CorporateCode>>,
#[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
#[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
applied_promotion_codes: Option<Vec<models::PromotionCode>>,
#[serde(rename = "appliedReductions", skip_serializing_if = "Option::is_none")]
applied_reductions: Option<Vec<models::CardReference>>,
#[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
indicated_consumption: Option<Box<models::IndicatedConsumption>>,
#[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
accounting_ref: Option<Box<models::AccountingRef>>,
#[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
},
#[serde(rename="Ancillary")]
Ancillary {
#[serde(rename = "id")]
id: String,
#[serde(rename = "summary", skip_serializing_if = "Option::is_none")]
summary: Option<String>,
#[serde(rename = "createdOn")]
created_on: String,
#[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
confirmable_until: Option<String>,
#[serde(rename = "validFrom")]
valid_from: String,
#[serde(rename = "validUntil", skip_serializing_if = "Option::is_none")]
valid_until: Option<String>,
#[serde(rename = "confirmedOn", skip_serializing_if = "Option::is_none")]
confirmed_on: Option<String>,
#[serde(rename = "confirmedFulfillmentOptions", skip_serializing_if = "Option::is_none")]
confirmed_fulfillment_options: Option<Box<models::FulfillmentOption>>,
#[serde(rename = "price")]
price: Box<models::Price>,
#[serde(rename = "refundAmount", skip_serializing_if = "Option::is_none")]
refund_amount: Option<Box<models::Price>>,
#[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
trip_coverage: Option<Box<models::TripCoverage>>,
#[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
inbound_trip_coverage: Option<Box<models::TripCoverage>>,
#[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
summary_product_id: Option<String>,
#[serde(rename = "products", skip_serializing_if = "Option::is_none")]
products: Option<Vec<models::ProductLegAssociation>>,
#[serde(rename = "status")]
status: models::BookingPartStatus,
#[serde(rename = "pricingStatus", skip_serializing_if = "Option::is_none")]
pricing_status: Option<String>,
#[serde(rename = "offerMode", skip_serializing_if = "Option::is_none")]
offer_mode: Option<models::OfferMode>,
#[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
booking_part_code: Option<String>,
#[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
distributor_booking_ref: Option<String>,
#[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
retailer_booking_ref: Option<String>,
#[serde(rename = "passengerIds")]
passenger_ids: Vec<String>,
#[serde(rename = "availableFulfillmentOptions", skip_serializing_if = "Option::is_none")]
available_fulfillment_options: Option<Vec<models::FulfillmentOption>>,
#[serde(rename = "refundable")]
refundable: models::RefundType,
#[serde(rename = "exchangeable")]
exchangeable: models::ExchangeableType,
#[serde(rename = "afterSaleConditions", skip_serializing_if = "Option::is_none")]
after_sale_conditions: Option<Vec<models::AfterSaleCondition>>,
#[serde(rename = "afterSalesOverrideDetails", skip_serializing_if = "Option::is_none")]
after_sales_override_details: Option<Box<models::AfterSalesOverrideDetails>>,
#[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
applied_corporate_codes: Option<Vec<models::CorporateCode>>,
#[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
#[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
applied_promotion_codes: Option<Vec<models::PromotionCode>>,
#[serde(rename = "appliedReductions", skip_serializing_if = "Option::is_none")]
applied_reductions: Option<Vec<models::CardReference>>,
#[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
indicated_consumption: Option<Box<models::IndicatedConsumption>>,
#[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
accounting_ref: Option<Box<models::AccountingRef>>,
#[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
},
#[serde(rename="ContinuousServiceBookingPart")]
ContinuousServiceBookingPart {
#[serde(rename = "id")]
id: String,
#[serde(rename = "summary", skip_serializing_if = "Option::is_none")]
summary: Option<String>,
#[serde(rename = "createdOn")]
created_on: String,
#[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
confirmable_until: Option<String>,
#[serde(rename = "validFrom")]
valid_from: String,
#[serde(rename = "validUntil", skip_serializing_if = "Option::is_none")]
valid_until: Option<String>,
#[serde(rename = "confirmedOn", skip_serializing_if = "Option::is_none")]
confirmed_on: Option<String>,
#[serde(rename = "confirmedFulfillmentOptions", skip_serializing_if = "Option::is_none")]
confirmed_fulfillment_options: Option<Box<models::FulfillmentOption>>,
#[serde(rename = "price")]
price: Box<models::Price>,
#[serde(rename = "refundAmount", skip_serializing_if = "Option::is_none")]
refund_amount: Option<Box<models::Price>>,
#[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
trip_coverage: Option<Box<models::TripCoverage>>,
#[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
inbound_trip_coverage: Option<Box<models::TripCoverage>>,
#[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
summary_product_id: Option<String>,
#[serde(rename = "products", skip_serializing_if = "Option::is_none")]
products: Option<Vec<models::ProductLegAssociation>>,
#[serde(rename = "status")]
status: models::BookingPartStatus,
#[serde(rename = "pricingStatus", skip_serializing_if = "Option::is_none")]
pricing_status: Option<String>,
#[serde(rename = "offerMode", skip_serializing_if = "Option::is_none")]
offer_mode: Option<models::OfferMode>,
#[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
booking_part_code: Option<String>,
#[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
distributor_booking_ref: Option<String>,
#[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
retailer_booking_ref: Option<String>,
#[serde(rename = "passengerIds")]
passenger_ids: Vec<String>,
#[serde(rename = "availableFulfillmentOptions", skip_serializing_if = "Option::is_none")]
available_fulfillment_options: Option<Vec<models::FulfillmentOption>>,
#[serde(rename = "refundable")]
refundable: models::RefundType,
#[serde(rename = "exchangeable")]
exchangeable: models::ExchangeableType,
#[serde(rename = "afterSaleConditions", skip_serializing_if = "Option::is_none")]
after_sale_conditions: Option<Vec<models::AfterSaleCondition>>,
#[serde(rename = "afterSalesOverrideDetails", skip_serializing_if = "Option::is_none")]
after_sales_override_details: Option<Box<models::AfterSalesOverrideDetails>>,
#[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
applied_corporate_codes: Option<Vec<models::CorporateCode>>,
#[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
#[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
applied_promotion_codes: Option<Vec<models::PromotionCode>>,
#[serde(rename = "appliedReductions", skip_serializing_if = "Option::is_none")]
applied_reductions: Option<Vec<models::CardReference>>,
#[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
indicated_consumption: Option<Box<models::IndicatedConsumption>>,
#[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
accounting_ref: Option<Box<models::AccountingRef>>,
#[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
},
#[serde(rename="ContinuousServiceOfferPart")]
ContinuousServiceOfferPart {
#[serde(rename = "id")]
id: String,
#[serde(rename = "summary", skip_serializing_if = "Option::is_none")]
summary: Option<String>,
#[serde(rename = "createdOn")]
created_on: String,
#[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
confirmable_until: Option<String>,
#[serde(rename = "validFrom")]
valid_from: String,
#[serde(rename = "validUntil", skip_serializing_if = "Option::is_none")]
valid_until: Option<String>,
#[serde(rename = "confirmedOn", skip_serializing_if = "Option::is_none")]
confirmed_on: Option<String>,
#[serde(rename = "confirmedFulfillmentOptions", skip_serializing_if = "Option::is_none")]
confirmed_fulfillment_options: Option<Box<models::FulfillmentOption>>,
#[serde(rename = "price")]
price: Box<models::Price>,
#[serde(rename = "refundAmount", skip_serializing_if = "Option::is_none")]
refund_amount: Option<Box<models::Price>>,
#[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
trip_coverage: Option<Box<models::TripCoverage>>,
#[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
inbound_trip_coverage: Option<Box<models::TripCoverage>>,
#[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
summary_product_id: Option<String>,
#[serde(rename = "products", skip_serializing_if = "Option::is_none")]
products: Option<Vec<models::ProductLegAssociation>>,
#[serde(rename = "status")]
status: models::BookingPartStatus,
#[serde(rename = "pricingStatus", skip_serializing_if = "Option::is_none")]
pricing_status: Option<String>,
#[serde(rename = "offerMode", skip_serializing_if = "Option::is_none")]
offer_mode: Option<models::OfferMode>,
#[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
booking_part_code: Option<String>,
#[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
distributor_booking_ref: Option<String>,
#[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
retailer_booking_ref: Option<String>,
#[serde(rename = "passengerIds")]
passenger_ids: Vec<String>,
#[serde(rename = "availableFulfillmentOptions", skip_serializing_if = "Option::is_none")]
available_fulfillment_options: Option<Vec<models::FulfillmentOption>>,
#[serde(rename = "refundable")]
refundable: models::RefundType,
#[serde(rename = "exchangeable")]
exchangeable: models::ExchangeableType,
#[serde(rename = "afterSaleConditions", skip_serializing_if = "Option::is_none")]
after_sale_conditions: Option<Vec<models::AfterSaleCondition>>,
#[serde(rename = "afterSalesOverrideDetails", skip_serializing_if = "Option::is_none")]
after_sales_override_details: Option<Box<models::AfterSalesOverrideDetails>>,
#[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
applied_corporate_codes: Option<Vec<models::CorporateCode>>,
#[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
#[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
applied_promotion_codes: Option<Vec<models::PromotionCode>>,
#[serde(rename = "appliedReductions", skip_serializing_if = "Option::is_none")]
applied_reductions: Option<Vec<models::CardReference>>,
#[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
indicated_consumption: Option<Box<models::IndicatedConsumption>>,
#[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
accounting_ref: Option<Box<models::AccountingRef>>,
#[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
},
#[serde(rename="Reservation")]
Reservation {
#[serde(rename = "id")]
id: String,
#[serde(rename = "summary", skip_serializing_if = "Option::is_none")]
summary: Option<String>,
#[serde(rename = "createdOn")]
created_on: String,
#[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
confirmable_until: Option<String>,
#[serde(rename = "validFrom")]
valid_from: String,
#[serde(rename = "validUntil", skip_serializing_if = "Option::is_none")]
valid_until: Option<String>,
#[serde(rename = "confirmedOn", skip_serializing_if = "Option::is_none")]
confirmed_on: Option<String>,
#[serde(rename = "confirmedFulfillmentOptions", skip_serializing_if = "Option::is_none")]
confirmed_fulfillment_options: Option<Box<models::FulfillmentOption>>,
#[serde(rename = "price")]
price: Box<models::Price>,
#[serde(rename = "refundAmount", skip_serializing_if = "Option::is_none")]
refund_amount: Option<Box<models::Price>>,
#[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
trip_coverage: Option<Box<models::TripCoverage>>,
#[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
inbound_trip_coverage: Option<Box<models::TripCoverage>>,
#[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
summary_product_id: Option<String>,
#[serde(rename = "products", skip_serializing_if = "Option::is_none")]
products: Option<Vec<models::ProductLegAssociation>>,
#[serde(rename = "status")]
status: models::BookingPartStatus,
#[serde(rename = "pricingStatus", skip_serializing_if = "Option::is_none")]
pricing_status: Option<String>,
#[serde(rename = "offerMode", skip_serializing_if = "Option::is_none")]
offer_mode: Option<models::OfferMode>,
#[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
booking_part_code: Option<String>,
#[serde(rename = "distributorBookingRef", skip_serializing_if = "Option::is_none")]
distributor_booking_ref: Option<String>,
#[serde(rename = "retailerBookingRef", skip_serializing_if = "Option::is_none")]
retailer_booking_ref: Option<String>,
#[serde(rename = "passengerIds")]
passenger_ids: Vec<String>,
#[serde(rename = "availableFulfillmentOptions", skip_serializing_if = "Option::is_none")]
available_fulfillment_options: Option<Vec<models::FulfillmentOption>>,
#[serde(rename = "refundable")]
refundable: models::RefundType,
#[serde(rename = "exchangeable")]
exchangeable: models::ExchangeableType,
#[serde(rename = "afterSaleConditions", skip_serializing_if = "Option::is_none")]
after_sale_conditions: Option<Vec<models::AfterSaleCondition>>,
#[serde(rename = "afterSalesOverrideDetails", skip_serializing_if = "Option::is_none")]
after_sales_override_details: Option<Box<models::AfterSalesOverrideDetails>>,
#[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
applied_corporate_codes: Option<Vec<models::CorporateCode>>,
#[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
#[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
applied_promotion_codes: Option<Vec<models::PromotionCode>>,
#[serde(rename = "appliedReductions", skip_serializing_if = "Option::is_none")]
applied_reductions: Option<Vec<models::CardReference>>,
#[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
indicated_consumption: Option<Box<models::IndicatedConsumption>>,
#[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
accounting_ref: Option<Box<models::AccountingRef>>,
#[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
},
}
impl Default for AbstractBookingPart {
fn default() -> Self {
Self::Admission {
id: Default::default(),
summary: Default::default(),
created_on: Default::default(),
confirmable_until: Default::default(),
valid_from: Default::default(),
valid_until: Default::default(),
confirmed_on: Default::default(),
confirmed_fulfillment_options: Default::default(),
price: Default::default(),
refund_amount: Default::default(),
trip_coverage: Default::default(),
inbound_trip_coverage: Default::default(),
summary_product_id: Default::default(),
products: Default::default(),
status: Default::default(),
pricing_status: Default::default(),
offer_mode: Default::default(),
booking_part_code: Default::default(),
distributor_booking_ref: Default::default(),
retailer_booking_ref: Default::default(),
passenger_ids: Default::default(),
available_fulfillment_options: Default::default(),
refundable: Default::default(),
exchangeable: Default::default(),
after_sale_conditions: Default::default(),
after_sales_override_details: Default::default(),
applied_corporate_codes: Default::default(),
applied_passenger_types: Default::default(),
applied_promotion_codes: Default::default(),
applied_reductions: Default::default(),
indicated_consumption: Default::default(),
accounting_ref: Default::default(),
granted_reduction_amounts: Default::default(),
}
}
}