// !!!
// WARNING: This file is autogenerated
// Only modify code within MANUAL() sections
// or your changes may be overwritten later!
// !!!

use serde::{Deserialize, Serialize};

/// DeviceAttributeDetails:
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct DeviceAttributeDetails {
    /// is_new: Whether this `ip_geo_country` has been seen before for this user.
    pub is_new: bool,
    /// first_seen_at: When this `ip_geo_country` was first seen for this user. Values conform to the RFC 3339
    /// standard and are expressed in UTC, e.g. `2021-12-29T12:33:09Z`.
    pub first_seen_at: std::option::Option<chrono::DateTime<chrono::Utc>>,
    /// last_seen_at: When this `ip_geo_country` was last seen for this user. Values conform to the RFC 3339
    /// standard and are expressed in UTC, e.g. `2021-12-29T12:33:09Z`.
    pub last_seen_at: std::option::Option<chrono::DateTime<chrono::Utc>>,
}
/// DeviceInfo:
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct DeviceInfo {
    /// visitor_id: The `visitor_id` (a unique identifier) of the user's device. See the
    /// [Device Fingerprinting documentation](https://stytch.com/docs/fraud/guides/device-fingerprinting/fingerprints) for more details on the `visitor_id`.
    pub visitor_id: String,
    /// visitor_id_details: Information about the `visitor_id`.
    pub visitor_id_details: std::option::Option<DeviceAttributeDetails>,
    /// ip_address: The IP address of the user's device.
    pub ip_address: std::option::Option<String>,
    /// ip_address_details: Information about the `ip_address`.
    pub ip_address_details: std::option::Option<DeviceAttributeDetails>,
    /// ip_geo_city: The city where the IP address is located.
    pub ip_geo_city: std::option::Option<String>,
    /// ip_geo_region: The region where the IP address is located.
    pub ip_geo_region: std::option::Option<String>,
    /// ip_geo_country: The country code where the IP address is located.
    pub ip_geo_country: std::option::Option<String>,
    /// ip_geo_country_details: Information about the `ip_geo_country`.
    pub ip_geo_country_details: std::option::Option<DeviceAttributeDetails>,
}
