late 0.0.346

API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
Documentation
/*
 * Zernio API
 *
 * API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
 *
 * The version of the OpenAPI document: 1.0.4
 * Contact: support@zernio.com
 * Generated by: https://openapi-generator.tech
 */

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

/// TwitterPlatformData : X (Twitter) geo-restriction applies at the media level. Media in geo-restricted tweets will be hidden for users outside the specified countries; the tweet text itself remains visible globally. Requires media to be attached (ignored for text-only tweets).
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct TwitterPlatformData {
    /// ID of an existing tweet to reply to. The published tweet will appear as a reply in that tweet's thread. For threads, only the first tweet replies to the target; subsequent tweets chain normally.
    #[serde(rename = "replyToTweetId", skip_serializing_if = "Option::is_none")]
    pub reply_to_tweet_id: Option<String>,
    /// ID (or full status URL) of an existing tweet to quote-repost. The published tweet becomes a quote tweet of the target. Mutually exclusive with media and poll. X only permits quoting your own posts or posts you are mentioned in / part of the conversation thread of; quoting an arbitrary other account's post is rejected by X. Billed at the standard create rate ($0.015), unlike pasting a tweet URL into the text which is billed at the URL rate ($0.20). For threads, applies to the first tweet only.
    #[serde(rename = "quoteTweetId", skip_serializing_if = "Option::is_none")]
    pub quote_tweet_id: Option<String>,
    /// Controls who can reply to the tweet. \"following\" allows only people you follow, \"mentionedUsers\" allows only mentioned users, \"subscribers\" allows only subscribers, \"verified\" allows only verified users. Omit for default (everyone can reply). For threads, applies to the first tweet only. Cannot be combined with replyToTweetId.
    #[serde(rename = "replySettings", skip_serializing_if = "Option::is_none")]
    pub reply_settings: Option<ReplySettings>,
    /// Complete sequence of tweets in a thread. The first item becomes the root tweet, subsequent items are chained as replies. When threadItems is provided, the top-level content field is used only for display and search purposes, it is NOT published. You must include your first tweet as threadItems[0].
    #[serde(rename = "threadItems", skip_serializing_if = "Option::is_none")]
    pub thread_items: Option<Vec<models::TwitterPlatformDataThreadItemsInner>>,
    #[serde(rename = "poll", skip_serializing_if = "Option::is_none")]
    pub poll: Option<Box<models::TwitterPlatformDataPoll>>,
    /// Enable long video uploads (over 140 seconds) using amplify_video media category. Requires the connected X account to have an active X Premium subscription. When true, videos are uploaded with the amplify_video category which supports longer durations (up to 10 minutes via API). When false or omitted, the standard tweet_video category is used (140 second limit). Note that not all Premium accounts have API long-video access, as X may require separate allowlisting.
    #[serde(rename = "longVideo", skip_serializing_if = "Option::is_none")]
    pub long_video: Option<bool>,
    #[serde(rename = "geoRestriction", skip_serializing_if = "Option::is_none")]
    pub geo_restriction: Option<Box<models::GeoRestriction>>,
    /// When true, the post is labeled by X as a paid partnership / paid promotion. For threads, applies to the root tweet only. Field availability may depend on your X API access tier.
    #[serde(rename = "paidPartnership", skip_serializing_if = "Option::is_none")]
    pub paid_partnership: Option<bool>,
    /// When true, the post is labeled by X as containing AI-generated media. Per X, this label is for AI-generated media, not AI-written text. For threads, applies to the root tweet only.
    #[serde(rename = "madeWithAi", skip_serializing_if = "Option::is_none")]
    pub made_with_ai: Option<bool>,
    #[serde(rename = "sensitiveMedia", skip_serializing_if = "Option::is_none")]
    pub sensitive_media: Option<Box<models::TwitterPlatformDataSensitiveMedia>>,
}

impl TwitterPlatformData {
    /// X (Twitter) geo-restriction applies at the media level. Media in geo-restricted tweets will be hidden for users outside the specified countries; the tweet text itself remains visible globally. Requires media to be attached (ignored for text-only tweets).
    pub fn new() -> TwitterPlatformData {
        TwitterPlatformData {
            reply_to_tweet_id: None,
            quote_tweet_id: None,
            reply_settings: None,
            thread_items: None,
            poll: None,
            long_video: None,
            geo_restriction: None,
            paid_partnership: None,
            made_with_ai: None,
            sensitive_media: None,
        }
    }
}
/// Controls who can reply to the tweet. \"following\" allows only people you follow, \"mentionedUsers\" allows only mentioned users, \"subscribers\" allows only subscribers, \"verified\" allows only verified users. Omit for default (everyone can reply). For threads, applies to the first tweet only. Cannot be combined with replyToTweetId.
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ReplySettings {
    #[serde(rename = "following")]
    Following,
    #[serde(rename = "mentionedUsers")]
    MentionedUsers,
    #[serde(rename = "subscribers")]
    Subscribers,
    #[serde(rename = "verified")]
    Verified,
}

impl Default for ReplySettings {
    fn default() -> ReplySettings {
        Self::Following
    }
}