linkbreakers 1.52.6

Official Rust SDK for the Linkbreakers API
Documentation
/*
 * Linkbreakers API
 *
 * This is a documentation of all the APIs of Linkbreakers
 *
 * The version of the OpenAPI document: 1.52.6
 * 
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

/// Device : Tracks the fingerprint of a visitor's hardware/software so Linkbreakers can de-duplicate scans, enrich analytics, and power security heuristics.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Device {
    #[serde(rename = "asn", skip_serializing_if = "Option::is_none")]
    pub asn: Option<i64>,
    #[serde(rename = "browserLanguage", skip_serializing_if = "Option::is_none")]
    pub browser_language: Option<String>,
    #[serde(rename = "browserName", skip_serializing_if = "Option::is_none")]
    pub browser_name: Option<String>,
    #[serde(rename = "browserVersion", skip_serializing_if = "Option::is_none")]
    pub browser_version: Option<String>,
    #[serde(rename = "city", skip_serializing_if = "Option::is_none")]
    pub city: Option<String>,
    #[serde(rename = "country", skip_serializing_if = "Option::is_none")]
    pub country: Option<String>,
    #[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
    pub created_at: Option<String>,
    /// DeviceActor represents WHO or WHAT is operating the device. This distinguishes between a real human visitor, an automated crawler/scraper bot (e.g. Googlebot, BingBot), and an AI/LLM agent acting on behalf of a user (e.g. GPTBot, ClaudeBot, Gemini, Grok).   - DEVICE_ACTOR_UNSPECIFIED: Actor not specified or not yet detected  - DEVICE_ACTOR_HUMAN: Human visitor using a browser (covers MOBILE, TABLET, DESKTOP device types)  - DEVICE_ACTOR_BOT: Automated crawler or scraper bot (e.g. Googlebot, BingBot, Applebot)  - DEVICE_ACTOR_AGENT: AI/LLM agent browsing on behalf of a user (e.g. GPTBot, ClaudeBot, Gemini, Grok)  - DEVICE_ACTOR_UNKNOWN: Unable to classify the actor
    #[serde(rename = "deviceActor", skip_serializing_if = "Option::is_none")]
    pub device_actor: Option<DeviceActor>,
    /// Specific actor or crawler name for non-human traffic (e.g. \"Googlebot\", \"GPTBot\", \"ClaudeBot\"). Only populated when device_actor is BOT or AGENT. Null/empty for HUMAN visitors.
    #[serde(rename = "deviceActorName", skip_serializing_if = "Option::is_none")]
    pub device_actor_name: Option<String>,
    /// Company or organization behind the actor (e.g. \"Google\", \"OpenAI\", \"Anthropic\"). Only populated when device_actor is BOT or AGENT. Null/empty for HUMAN visitors.
    #[serde(rename = "deviceActorOrigin", skip_serializing_if = "Option::is_none")]
    pub device_actor_origin: Option<String>,
    #[serde(rename = "deviceBrand", skip_serializing_if = "Option::is_none")]
    pub device_brand: Option<String>,
    #[serde(rename = "deviceConcurrency", skip_serializing_if = "Option::is_none")]
    pub device_concurrency: Option<i32>,
    #[serde(rename = "deviceMemory", skip_serializing_if = "Option::is_none")]
    pub device_memory: Option<f64>,
    #[serde(rename = "deviceName", skip_serializing_if = "Option::is_none")]
    pub device_name: Option<String>,
    /// DeviceType represents the physical form factor of the device. This describes the hardware category (phone, tablet, laptop, etc.), NOT who or what is operating it — see DeviceActor for that.   - DEVICE_TYPE_UNSPECIFIED: Device type not specified or not yet detected  - DEVICE_TYPE_NATIVE: Native QR scanner (no browser capabilities reported)  - DEVICE_TYPE_MOBILE: Mobile handset browser  - DEVICE_TYPE_TABLET: Tablet browser  - DEVICE_TYPE_DESKTOP: Desktop or laptop browser  - DEVICE_TYPE_UNKNOWN: Unable to classify the device
    #[serde(rename = "deviceType", skip_serializing_if = "Option::is_none")]
    pub device_type: Option<DeviceType>,
    #[serde(rename = "gpu", skip_serializing_if = "Option::is_none")]
    pub gpu: Option<String>,
    #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(rename = "ipAddress", skip_serializing_if = "Option::is_none")]
    pub ip_address: Option<String>,
    #[serde(rename = "isp", skip_serializing_if = "Option::is_none")]
    pub isp: Option<String>,
    #[serde(rename = "lastUsedAt", skip_serializing_if = "Option::is_none")]
    pub last_used_at: Option<String>,
    #[serde(rename = "networkBandwidth", skip_serializing_if = "Option::is_none")]
    pub network_bandwidth: Option<f64>,
    #[serde(rename = "networkConnection", skip_serializing_if = "Option::is_none")]
    pub network_connection: Option<String>,
    #[serde(rename = "networkRtt", skip_serializing_if = "Option::is_none")]
    pub network_rtt: Option<f64>,
    #[serde(rename = "platformName", skip_serializing_if = "Option::is_none")]
    pub platform_name: Option<String>,
    #[serde(rename = "platformVersion", skip_serializing_if = "Option::is_none")]
    pub platform_version: Option<String>,
    #[serde(rename = "region", skip_serializing_if = "Option::is_none")]
    pub region: Option<String>,
    #[serde(rename = "screenHeight", skip_serializing_if = "Option::is_none")]
    pub screen_height: Option<f64>,
    #[serde(rename = "screenRatio", skip_serializing_if = "Option::is_none")]
    pub screen_ratio: Option<f64>,
    #[serde(rename = "screenWidth", skip_serializing_if = "Option::is_none")]
    pub screen_width: Option<f64>,
    #[serde(rename = "state", skip_serializing_if = "Option::is_none")]
    pub state: Option<String>,
    #[serde(rename = "timezone", skip_serializing_if = "Option::is_none")]
    pub timezone: Option<String>,
    #[serde(rename = "touchScreen", skip_serializing_if = "Option::is_none")]
    pub touch_screen: Option<bool>,
    #[serde(rename = "updatedAt", skip_serializing_if = "Option::is_none")]
    pub updated_at: Option<String>,
    #[serde(rename = "userAgent", skip_serializing_if = "Option::is_none")]
    pub user_agent: Option<String>,
}

impl Device {
    /// Tracks the fingerprint of a visitor's hardware/software so Linkbreakers can de-duplicate scans, enrich analytics, and power security heuristics.
    pub fn new() -> Device {
        Device {
            asn: None,
            browser_language: None,
            browser_name: None,
            browser_version: None,
            city: None,
            country: None,
            created_at: None,
            device_actor: None,
            device_actor_name: None,
            device_actor_origin: None,
            device_brand: None,
            device_concurrency: None,
            device_memory: None,
            device_name: None,
            device_type: None,
            gpu: None,
            id: None,
            ip_address: None,
            isp: None,
            last_used_at: None,
            network_bandwidth: None,
            network_connection: None,
            network_rtt: None,
            platform_name: None,
            platform_version: None,
            region: None,
            screen_height: None,
            screen_ratio: None,
            screen_width: None,
            state: None,
            timezone: None,
            touch_screen: None,
            updated_at: None,
            user_agent: None,
        }
    }
}
/// DeviceActor represents WHO or WHAT is operating the device. This distinguishes between a real human visitor, an automated crawler/scraper bot (e.g. Googlebot, BingBot), and an AI/LLM agent acting on behalf of a user (e.g. GPTBot, ClaudeBot, Gemini, Grok).   - DEVICE_ACTOR_UNSPECIFIED: Actor not specified or not yet detected  - DEVICE_ACTOR_HUMAN: Human visitor using a browser (covers MOBILE, TABLET, DESKTOP device types)  - DEVICE_ACTOR_BOT: Automated crawler or scraper bot (e.g. Googlebot, BingBot, Applebot)  - DEVICE_ACTOR_AGENT: AI/LLM agent browsing on behalf of a user (e.g. GPTBot, ClaudeBot, Gemini, Grok)  - DEVICE_ACTOR_UNKNOWN: Unable to classify the actor
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum DeviceActor {
    #[serde(rename = "DEVICE_ACTOR_UNSPECIFIED")]
    DeviceActorUnspecified,
    #[serde(rename = "DEVICE_ACTOR_HUMAN")]
    DeviceActorHuman,
    #[serde(rename = "DEVICE_ACTOR_BOT")]
    DeviceActorBot,
    #[serde(rename = "DEVICE_ACTOR_AGENT")]
    DeviceActorAgent,
    #[serde(rename = "DEVICE_ACTOR_UNKNOWN")]
    DeviceActorUnknown,
}

impl Default for DeviceActor {
    fn default() -> DeviceActor {
        Self::DeviceActorUnspecified
    }
}
/// DeviceType represents the physical form factor of the device. This describes the hardware category (phone, tablet, laptop, etc.), NOT who or what is operating it — see DeviceActor for that.   - DEVICE_TYPE_UNSPECIFIED: Device type not specified or not yet detected  - DEVICE_TYPE_NATIVE: Native QR scanner (no browser capabilities reported)  - DEVICE_TYPE_MOBILE: Mobile handset browser  - DEVICE_TYPE_TABLET: Tablet browser  - DEVICE_TYPE_DESKTOP: Desktop or laptop browser  - DEVICE_TYPE_UNKNOWN: Unable to classify the device
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum DeviceType {
    #[serde(rename = "DEVICE_TYPE_UNSPECIFIED")]
    DeviceTypeUnspecified,
    #[serde(rename = "DEVICE_TYPE_NATIVE")]
    DeviceTypeNative,
    #[serde(rename = "DEVICE_TYPE_MOBILE")]
    DeviceTypeMobile,
    #[serde(rename = "DEVICE_TYPE_TABLET")]
    DeviceTypeTablet,
    #[serde(rename = "DEVICE_TYPE_DESKTOP")]
    DeviceTypeDesktop,
    #[serde(rename = "DEVICE_TYPE_UNKNOWN")]
    DeviceTypeUnknown,
}

impl Default for DeviceType {
    fn default() -> DeviceType {
        Self::DeviceTypeUnspecified
    }
}