osdm-sys 0.1.0-alpha.3

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/)
Documentation
/*
 * UIC 90918-10 - OSDM
 *
 * 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/) 
 *
 * The version of the OpenAPI document: 3.7.0
 * Contact: osdm@uic.org
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

/// Section : Allows to indicate the sub-part of the trip. LegIds are only relevant if a trip can be referenced. When absent, the totality of the trip is priced. 
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct Section {
    #[serde(rename = "startPlace", skip_serializing_if = "Option::is_none")]
    pub start_place: Option<Box<models::PlaceRef>>,
    #[serde(rename = "startLegId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub start_leg_id: Option<Option<String>>,
    #[serde(rename = "endPlace", skip_serializing_if = "Option::is_none")]
    pub end_place: Option<Box<models::PlaceRef>>,
    #[serde(rename = "endLegId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub end_leg_id: Option<Option<String>>,
    /// reference to a trip in case multiple trips are provided
    #[serde(rename = "externalTripRef", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub external_trip_ref: Option<Option<String>>,
}

impl Section {
    /// Allows to indicate the sub-part of the trip. LegIds are only relevant if a trip can be referenced. When absent, the totality of the trip is priced. 
    pub fn new() -> Section {
        Section {
            start_place: None,
            start_leg_id: None,
            end_place: None,
            end_leg_id: None,
            external_trip_ref: None,
        }
    }
}