libmaccas 0.46.0

McDonald's API Client
Documentation
use serde_derive::Deserialize;
use serde_derive::Serialize;

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct EmailRequest {
    pub customer_identifier: String,
    pub device_id: String,
    pub registration_type: String,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ActivateAndSignInRequest {
    pub activation_link: String,
    pub client_info: ClientInfo,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ClientInfo {
    pub device: ActivationDevice,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ActivationDevice {
    pub device_unique_id: String,
    pub os: String,
    pub os_version: String,
}

#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RegistrationRequest {
    pub address: Address,
    pub audit: Audit,
    pub credentials: Credentials,
    pub device: Device,
    pub email_address: String,
    pub first_name: String,
    pub last_name: String,
    pub opt_in_for_marketing: bool,
    pub policies: Policies,
    pub preferences: Vec<Preference>,
    pub subscriptions: Vec<Subscription>,
}

#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Address {
    pub country: String,
    pub zip_code: String,
}

#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Audit {
    pub registration_channel: String,
}

#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Credentials {
    pub login_username: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub password: Option<String>,
    #[serde(rename = "type")]
    pub type_field: String,
    #[serde(rename = "sendMagicLink")]
    pub send_magic_link: bool,
}

#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Device {
    pub device_id: String,
    pub device_id_type: String,
    pub is_active: String,
    pub os: String,
    pub os_version: String,
    pub timezone: String,
}

#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Policies {
    pub acceptance_policies: AcceptancePolicies,
}

#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AcceptancePolicies {
    #[serde(rename = "1")]
    pub n1: bool,
    #[serde(rename = "4")]
    pub n4: bool,
}

#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Preference {
    pub details: Details,
    pub preference_id: i64,
}

#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Details {
    pub legacy_id: Option<String>,
    #[serde(rename = "MobileApp")]
    pub mobile_app: Option<String>,
    #[serde(rename = "Email")]
    pub email: Option<String>,
    pub enabled: Option<String>,
}

#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Subscription {
    pub opt_in_status: String,
    pub subscription_id: String,
}

#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ActivationRequest {
    pub activation_code: String,
    pub credentials: Credentials,
    pub device_id: String,
}