use serde::{Deserialize, Serialize};

/// EligibilityMetaDataJson : Metadata about the response. Stedi uses this data for tracking and troubleshooting.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct EligibilityMetaDataJson {
    /// The type of data in the request. This is either `production` when you send a request with a standard API key or `test` when you send a request in test mode with a [test API key](https://www.stedi.com/docs/api-reference/index#api-key-types). The `information` value is not currently used.  Payers may sometimes return other non-compliant values.
    #[serde(rename = "applicationMode", skip_serializing_if = "Option::is_none")]
    pub application_mode: Option<super::ApplicationModes>,
    /// The biller ID Stedi assigns to this request.
    #[serde(rename = "billerId", skip_serializing_if = "Option::is_none")]
    pub biller_id: Option<String>,
    /// The unique ID Stedi assigns to this request.
    #[serde(rename = "outboundTraceId", skip_serializing_if = "Option::is_none")]
    pub outbound_trace_id: Option<String>,
    /// The sender ID Stedi assigns to this request.
    #[serde(rename = "senderId", skip_serializing_if = "Option::is_none")]
    pub sender_id: Option<String>,
    /// The submitter ID Stedi assigns to this request.
    #[serde(rename = "submitterId", skip_serializing_if = "Option::is_none")]
    pub submitter_id: Option<String>,
    /// The transaction identifier the payer sends in the response. This should be the same as the `outboundTraceId`.
    #[serde(rename = "traceId", skip_serializing_if = "Option::is_none")]
    pub trace_id: Option<String>,
}

impl EligibilityMetaDataJson {
    /// Metadata about the response. Stedi uses this data for tracking and troubleshooting.
    pub fn new() -> EligibilityMetaDataJson {
        EligibilityMetaDataJson {
            application_mode: None,
            biller_id: None,
            outbound_trace_id: None,
            sender_id: None,
            submitter_id: None,
            trace_id: None,
        }
    }
}
