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

/// Reimbursement : Customers who have bought a ticket which allows reimbursement and which have not traveled or traveled partially only can claim to be reimbursed. The customer must prove that he has not or only partially used the ticket. A partial use might be a only a part of the trip was traveled or only some of the travelers were traveling or a combination of both. 
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct Reimbursement {
    #[serde(rename = "id")]
    pub id: String,
    #[serde(rename = "request")]
    pub request: Box<models::ReimbursementRequest>,
    #[serde(rename = "status")]
    pub status: models::BackOfficeStatus,
    #[serde(rename = "missingInformation", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub missing_information: Option<Option<Vec<String>>>,
    #[serde(rename = "decision", skip_serializing_if = "Option::is_none")]
    pub decision: Option<Box<models::ReimbursementDecision>>,
    ///  Java Property Name: 'links' 
    #[serde(rename = "_links", skip_serializing_if = "Option::is_none")]
    pub _links: Option<Vec<models::Link>>,
}

impl Reimbursement {
    /// Customers who have bought a ticket which allows reimbursement and which have not traveled or traveled partially only can claim to be reimbursed. The customer must prove that he has not or only partially used the ticket. A partial use might be a only a part of the trip was traveled or only some of the travelers were traveling or a combination of both. 
    pub fn new(id: String, request: models::ReimbursementRequest, status: models::BackOfficeStatus) -> Reimbursement {
        Reimbursement {
            id,
            request: Box::new(request),
            status,
            missing_information: None,
            decision: None,
            _links: None,
        }
    }
}