/*
 * 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};

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct GetInboxPostComments200ResponseCommentsInner {
    #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(rename = "message", skip_serializing_if = "Option::is_none")]
    pub message: Option<String>,
    #[serde(rename = "createdTime", skip_serializing_if = "Option::is_none")]
    pub created_time: Option<String>,
    #[serde(rename = "from", skip_serializing_if = "Option::is_none")]
    pub from: Option<Box<models::GetInboxPostComments200ResponseCommentsInnerFrom>>,
    #[serde(rename = "likeCount", skip_serializing_if = "Option::is_none")]
    pub like_count: Option<i32>,
    #[serde(rename = "replyCount", skip_serializing_if = "Option::is_none")]
    pub reply_count: Option<i32>,
    /// The platform this comment is from
    #[serde(rename = "platform", skip_serializing_if = "Option::is_none")]
    pub platform: Option<String>,
    /// Direct link to the comment on the platform (if available)
    #[serde(
        rename = "url",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub url: Option<Option<String>>,
    #[serde(rename = "replies", skip_serializing_if = "Option::is_none")]
    pub replies: Option<Vec<serde_json::Value>>,
    #[serde(rename = "canReply", skip_serializing_if = "Option::is_none")]
    pub can_reply: Option<bool>,
    #[serde(rename = "canDelete", skip_serializing_if = "Option::is_none")]
    pub can_delete: Option<bool>,
    /// Whether this comment can be hidden (Facebook, Instagram, Threads)
    #[serde(rename = "canHide", skip_serializing_if = "Option::is_none")]
    pub can_hide: Option<bool>,
    /// Whether this comment can be liked (Facebook, Twitter/X, Bluesky, Reddit)
    #[serde(rename = "canLike", skip_serializing_if = "Option::is_none")]
    pub can_like: Option<bool>,
    /// Whether the comment is currently hidden
    #[serde(rename = "isHidden", skip_serializing_if = "Option::is_none")]
    pub is_hidden: Option<bool>,
    /// Whether the current user has liked this comment
    #[serde(rename = "isLiked", skip_serializing_if = "Option::is_none")]
    pub is_liked: Option<bool>,
    /// Bluesky like URI for unliking
    #[serde(
        rename = "likeUri",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub like_uri: Option<Option<String>>,
    /// Bluesky content identifier
    #[serde(
        rename = "cid",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub cid: Option<Option<String>>,
    /// Parent comment ID for nested replies
    #[serde(
        rename = "parentId",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub parent_id: Option<Option<String>>,
    /// Bluesky root post URI
    #[serde(
        rename = "rootUri",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub root_uri: Option<Option<String>>,
    /// Bluesky root post CID
    #[serde(
        rename = "rootCid",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub root_cid: Option<Option<String>>,
}

impl GetInboxPostComments200ResponseCommentsInner {
    pub fn new() -> GetInboxPostComments200ResponseCommentsInner {
        GetInboxPostComments200ResponseCommentsInner {
            id: None,
            message: None,
            created_time: None,
            from: None,
            like_count: None,
            reply_count: None,
            platform: None,
            url: None,
            replies: None,
            can_reply: None,
            can_delete: None,
            can_hide: None,
            can_like: None,
            is_hidden: None,
            is_liked: None,
            like_uri: None,
            cid: None,
            parent_id: None,
            root_uri: None,
            root_cid: None,
        }
    }
}
