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 AbstractOfferPart {
#[serde(rename="AdmissionOfferPart")]
AdmissionOfferPart {
#[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 = "validFrom")]
valid_from: String,
#[serde(rename = "validUntil", skip_serializing_if = "Option::is_none")]
valid_until: Option<String>,
#[serde(rename = "price")]
price: 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 = "priceGuaranteedUntil", skip_serializing_if = "Option::is_none")]
price_guaranteed_until: Option<String>,
#[serde(rename = "offerMode")]
offer_mode: models::OfferMode,
#[serde(rename = "isReusable", skip_serializing_if = "Option::is_none")]
is_reusable: Option<bool>,
#[serde(rename = "passengerRefs")]
passenger_refs: Vec<String>,
#[serde(rename = "numericAvailability", skip_serializing_if = "Option::is_none")]
numeric_availability: Option<i32>,
#[serde(rename = "refundable")]
refundable: models::RefundType,
#[serde(rename = "exchangeable")]
exchangeable: models::ExchangeableType,
#[serde(rename = "afterSalesConditions", skip_serializing_if = "Option::is_none")]
after_sales_conditions: Option<Vec<models::AfterSaleCondition>>,
#[serde(rename = "tripTags", skip_serializing_if = "Option::is_none")]
trip_tags: Option<Vec<String>>,
#[serde(rename = "returnTags", skip_serializing_if = "Option::is_none")]
return_tags: Option<Vec<String>>,
#[serde(rename = "offerTag", skip_serializing_if = "Option::is_none")]
offer_tag: Option<Box<models::OfferTag>>,
#[serde(rename = "requestedInformation", skip_serializing_if = "Option::is_none")]
requested_information: Option<String>,
#[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
summary_product_id: Option<String>,
#[serde(rename = "products")]
products: Vec<models::ProductLegAssociation>,
#[serde(rename = "availableFulfillmentOptions")]
available_fulfillment_options: Vec<models::FulfillmentOption>,
#[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 = "appliedReductionCardTypes", skip_serializing_if = "Option::is_none")]
applied_reduction_card_types: Option<Vec<models::ReductionCardType>>,
#[serde(rename = "regionalValiditySummary", skip_serializing_if = "Option::is_none")]
regional_validity_summary: Option<Box<models::RegionalValiditySummary>>,
#[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
indicated_consumption: Option<Box<models::IndicatedConsumption>>,
#[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
#[serde(rename = "_links", skip_serializing_if = "Option::is_none")]
_links: Option<Vec<models::Link>>,
},
#[serde(rename="AncillaryOfferPart")]
AncillaryOfferPart {
#[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 = "validFrom")]
valid_from: String,
#[serde(rename = "validUntil", skip_serializing_if = "Option::is_none")]
valid_until: Option<String>,
#[serde(rename = "price")]
price: 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 = "priceGuaranteedUntil", skip_serializing_if = "Option::is_none")]
price_guaranteed_until: Option<String>,
#[serde(rename = "offerMode")]
offer_mode: models::OfferMode,
#[serde(rename = "isReusable", skip_serializing_if = "Option::is_none")]
is_reusable: Option<bool>,
#[serde(rename = "passengerRefs")]
passenger_refs: Vec<String>,
#[serde(rename = "numericAvailability", skip_serializing_if = "Option::is_none")]
numeric_availability: Option<i32>,
#[serde(rename = "refundable")]
refundable: models::RefundType,
#[serde(rename = "exchangeable")]
exchangeable: models::ExchangeableType,
#[serde(rename = "afterSalesConditions", skip_serializing_if = "Option::is_none")]
after_sales_conditions: Option<Vec<models::AfterSaleCondition>>,
#[serde(rename = "tripTags", skip_serializing_if = "Option::is_none")]
trip_tags: Option<Vec<String>>,
#[serde(rename = "returnTags", skip_serializing_if = "Option::is_none")]
return_tags: Option<Vec<String>>,
#[serde(rename = "offerTag", skip_serializing_if = "Option::is_none")]
offer_tag: Option<Box<models::OfferTag>>,
#[serde(rename = "requestedInformation", skip_serializing_if = "Option::is_none")]
requested_information: Option<String>,
#[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
summary_product_id: Option<String>,
#[serde(rename = "products")]
products: Vec<models::ProductLegAssociation>,
#[serde(rename = "availableFulfillmentOptions")]
available_fulfillment_options: Vec<models::FulfillmentOption>,
#[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 = "appliedReductionCardTypes", skip_serializing_if = "Option::is_none")]
applied_reduction_card_types: Option<Vec<models::ReductionCardType>>,
#[serde(rename = "regionalValiditySummary", skip_serializing_if = "Option::is_none")]
regional_validity_summary: Option<Box<models::RegionalValiditySummary>>,
#[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
indicated_consumption: Option<Box<models::IndicatedConsumption>>,
#[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
#[serde(rename = "_links", skip_serializing_if = "Option::is_none")]
_links: Option<Vec<models::Link>>,
},
#[serde(rename="ReservationOfferPart")]
ReservationOfferPart {
#[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 = "validFrom")]
valid_from: String,
#[serde(rename = "validUntil", skip_serializing_if = "Option::is_none")]
valid_until: Option<String>,
#[serde(rename = "price")]
price: 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 = "priceGuaranteedUntil", skip_serializing_if = "Option::is_none")]
price_guaranteed_until: Option<String>,
#[serde(rename = "offerMode")]
offer_mode: models::OfferMode,
#[serde(rename = "isReusable", skip_serializing_if = "Option::is_none")]
is_reusable: Option<bool>,
#[serde(rename = "passengerRefs")]
passenger_refs: Vec<String>,
#[serde(rename = "numericAvailability", skip_serializing_if = "Option::is_none")]
numeric_availability: Option<i32>,
#[serde(rename = "refundable")]
refundable: models::RefundType,
#[serde(rename = "exchangeable")]
exchangeable: models::ExchangeableType,
#[serde(rename = "afterSalesConditions", skip_serializing_if = "Option::is_none")]
after_sales_conditions: Option<Vec<models::AfterSaleCondition>>,
#[serde(rename = "tripTags", skip_serializing_if = "Option::is_none")]
trip_tags: Option<Vec<String>>,
#[serde(rename = "returnTags", skip_serializing_if = "Option::is_none")]
return_tags: Option<Vec<String>>,
#[serde(rename = "offerTag", skip_serializing_if = "Option::is_none")]
offer_tag: Option<Box<models::OfferTag>>,
#[serde(rename = "requestedInformation", skip_serializing_if = "Option::is_none")]
requested_information: Option<String>,
#[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
summary_product_id: Option<String>,
#[serde(rename = "products")]
products: Vec<models::ProductLegAssociation>,
#[serde(rename = "availableFulfillmentOptions")]
available_fulfillment_options: Vec<models::FulfillmentOption>,
#[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 = "appliedReductionCardTypes", skip_serializing_if = "Option::is_none")]
applied_reduction_card_types: Option<Vec<models::ReductionCardType>>,
#[serde(rename = "regionalValiditySummary", skip_serializing_if = "Option::is_none")]
regional_validity_summary: Option<Box<models::RegionalValiditySummary>>,
#[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
indicated_consumption: Option<Box<models::IndicatedConsumption>>,
#[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
#[serde(rename = "_links", skip_serializing_if = "Option::is_none")]
_links: Option<Vec<models::Link>>,
},
}
impl Default for AbstractOfferPart {
fn default() -> Self {
Self::AdmissionOfferPart {
id: Default::default(),
summary: Default::default(),
created_on: Default::default(),
valid_from: Default::default(),
valid_until: Default::default(),
price: Default::default(),
trip_coverage: Default::default(),
inbound_trip_coverage: Default::default(),
price_guaranteed_until: Default::default(),
offer_mode: Default::default(),
is_reusable: Default::default(),
passenger_refs: Default::default(),
numeric_availability: Default::default(),
refundable: Default::default(),
exchangeable: Default::default(),
after_sales_conditions: Default::default(),
trip_tags: Default::default(),
return_tags: Default::default(),
offer_tag: Default::default(),
requested_information: Default::default(),
summary_product_id: Default::default(),
products: Default::default(),
available_fulfillment_options: Default::default(),
applied_corporate_codes: Default::default(),
applied_passenger_types: Default::default(),
applied_promotion_codes: Default::default(),
applied_reduction_card_types: Default::default(),
regional_validity_summary: Default::default(),
indicated_consumption: Default::default(),
granted_reduction_amounts: Default::default(),
_links: Default::default(),
}
}
}