osdm_sys/models/
continuous_service_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/// ContinuousServiceBookingPart : A booking part for a continuous on-demand service. 
15#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct ContinuousServiceBookingPart {
17    /// Attribute is used as discriminator for inheritance between data types.
18    #[serde(rename = "objectType")]
19    pub object_type: String,
20    #[serde(rename = "id")]
21    pub id: String,
22    #[serde(rename = "summary", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
23    pub summary: Option<Option<String>>,
24    /// Validity of offer towards passenger 
25    #[serde(rename = "createdOn")]
26    pub 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    pub confirmable_until: Option<String>,
30    #[serde(rename = "validFrom")]
31    pub valid_from: String,
32    /// Validity of offer towards passenger 
33    #[serde(rename = "validUntil", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
34    pub valid_until: Option<Option<String>>,
35    #[serde(rename = "confirmedOn", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
36    pub confirmed_on: Option<Option<String>>,
37    #[serde(rename = "confirmedFulfillmentOptions", skip_serializing_if = "Option::is_none")]
38    pub confirmed_fulfillment_options: Option<Box<models::FulfillmentOption>>,
39    #[serde(rename = "price")]
40    pub price: Box<models::Price>,
41    #[serde(rename = "refundAmount", skip_serializing_if = "Option::is_none")]
42    pub refund_amount: Option<Box<models::Price>>,
43    #[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
44    pub trip_coverage: Option<Box<models::TripCoverage>>,
45    #[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
46    pub 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    pub 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    pub products: Option<Vec<models::ProductLegAssociation>>,
53    #[serde(rename = "status")]
54    pub status: models::BookingPartStatus,
55    /// payment status in post-payment scenarios
56    #[serde(rename = "pricingStatus", skip_serializing_if = "Option::is_none")]
57    pub pricing_status: Option<String>,
58    #[serde(rename = "offerMode", skip_serializing_if = "Option::is_none")]
59    pub 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    pub booking_part_code: Option<String>,
63    /// reference to the booking in the downstream distributor system 
64    #[serde(rename = "distributorBookingRef", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
65    pub distributor_booking_ref: Option<Option<String>>,
66    /// reference to the booking in the downstream distributor system 
67    #[serde(rename = "retailerBookingRef", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
68    pub retailer_booking_ref: Option<Option<String>>,
69    /// Id of the passenger 
70    #[serde(rename = "passengerIds")]
71    pub passenger_ids: Vec<String>,
72    #[serde(rename = "availableFulfillmentOptions", skip_serializing_if = "Option::is_none")]
73    pub available_fulfillment_options: Option<Vec<models::FulfillmentOption>>,
74    #[serde(rename = "refundable")]
75    pub refundable: models::RefundType,
76    #[serde(rename = "exchangeable")]
77    pub 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    pub after_sale_conditions: Option<Vec<models::AfterSaleCondition>>,
81    #[serde(rename = "afterSalesOverrideDetails", skip_serializing_if = "Option::is_none")]
82    pub after_sales_override_details: Option<Box<models::AfterSalesOverrideDetails>>,
83    #[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
84    pub applied_corporate_codes: Option<Vec<models::CorporateCode>>,
85    #[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
86    pub applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
87    #[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
88    pub applied_promotion_codes: Option<Vec<models::PromotionCode>>,
89    #[serde(rename = "appliedReductions", skip_serializing_if = "Option::is_none")]
90    pub applied_reductions: Option<Vec<models::CardReference>>,
91    #[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
92    pub indicated_consumption: Option<Box<models::IndicatedConsumption>>,
93    #[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
94    pub accounting_ref: Option<Box<models::AccountingRef>>,
95    #[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
96    pub granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
97    /// List of pick-up places for on-demand vehicles. The list might include more or other pick up places than mentioned originally in the trip specification. 
98    #[serde(rename = "pickUpPlaces")]
99    pub pick_up_places: Vec<models::ContinuousServicePickUpPlace>,
100    /// id of the tip for staff (e.g. taxi)
101    #[serde(rename = "tipRef", skip_serializing_if = "Option::is_none")]
102    pub tip_ref: Option<String>,
103}
104
105impl ContinuousServiceBookingPart {
106    /// A booking part for a continuous on-demand service. 
107    pub fn new(object_type: String, id: String, created_on: String, valid_from: String, price: models::Price, status: models::BookingPartStatus, passenger_ids: Vec<String>, refundable: models::RefundType, exchangeable: models::ExchangeableType, pick_up_places: Vec<models::ContinuousServicePickUpPlace>) -> ContinuousServiceBookingPart {
108        ContinuousServiceBookingPart {
109            object_type,
110            id,
111            summary: None,
112            created_on,
113            confirmable_until: None,
114            valid_from,
115            valid_until: None,
116            confirmed_on: None,
117            confirmed_fulfillment_options: None,
118            price: Box::new(price),
119            refund_amount: None,
120            trip_coverage: None,
121            inbound_trip_coverage: None,
122            summary_product_id: None,
123            products: None,
124            status,
125            pricing_status: None,
126            offer_mode: None,
127            booking_part_code: None,
128            distributor_booking_ref: None,
129            retailer_booking_ref: None,
130            passenger_ids,
131            available_fulfillment_options: None,
132            refundable,
133            exchangeable,
134            after_sale_conditions: None,
135            after_sales_override_details: None,
136            applied_corporate_codes: None,
137            applied_passenger_types: None,
138            applied_promotion_codes: None,
139            applied_reductions: None,
140            indicated_consumption: None,
141            accounting_ref: None,
142            granted_reduction_amounts: None,
143            pick_up_places,
144            tip_ref: None,
145        }
146    }
147}
148