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};

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct FulfillmentConstraint {
    #[serde(rename = "acceptedControlSecurityTypes")]
    pub accepted_control_security_types: Vec<String>,
    /// for SiD fulfillment one of the listed bar codes is required 
    #[serde(rename = "acceptedBarCodes", skip_serializing_if = "Option::is_none")]
    pub accepted_bar_codes: Option<Vec<String>>,
    /// One of the listed bar codes must be provided. 
    #[serde(rename = "requiredBarCodes", skip_serializing_if = "Option::is_none")]
    pub required_bar_codes: Option<Vec<String>>,
    #[serde(rename = "requiredSiS", skip_serializing_if = "Option::is_none")]
    pub required_si_s: Option<Vec<String>>,
    /// a separate fulfillment per passenger is forbidden 
    #[serde(rename = "isIndividualTicketingForbidden", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub is_individual_ticketing_forbidden: Option<Option<bool>>,
}

impl FulfillmentConstraint {
    pub fn new(accepted_control_security_types: Vec<String>) -> FulfillmentConstraint {
        FulfillmentConstraint {
            accepted_control_security_types,
            accepted_bar_codes: None,
            required_bar_codes: None,
            required_si_s: None,
            is_individual_ticketing_forbidden: None,
        }
    }
}