vrchatapi 1.20.7

VRChat API Client for Rust
Documentation
/*
 * VRChat API Documentation
 *
 *
 * Contact: vrchatapi.lpv0t@aries.fyi
 * Generated by: https://openapi-generator.tech
 */

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

/// GroupLimitedMember : May be null when attempting to retrieve group membership for a user who is not part of the group
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct GroupLimitedMember {
    /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user.
    #[serde(
        rename = "bannedAt",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub banned_at: Option<Option<String>>,
    /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user.
    #[serde(
        rename = "createdAt",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub created_at: Option<Option<String>>,
    #[serde(rename = "groupId", skip_serializing_if = "Option::is_none")]
    pub group_id: Option<String>,
    #[serde(
        rename = "hasJoinedFromPurchase",
        skip_serializing_if = "Option::is_none"
    )]
    pub has_joined_from_purchase: Option<bool>,
    #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    /// Whether the user is representing the group. This makes the group show up above the name tag in-game.
    #[serde(rename = "isRepresenting", skip_serializing_if = "Option::is_none")]
    pub is_representing: Option<bool>,
    #[serde(
        rename = "isSubscribedToAnnouncements",
        skip_serializing_if = "Option::is_none"
    )]
    pub is_subscribed_to_announcements: Option<bool>,
    #[serde(
        rename = "isSubscribedToEventAnnouncements",
        skip_serializing_if = "Option::is_none"
    )]
    pub is_subscribed_to_event_announcements: Option<bool>,
    #[serde(
        rename = "joinedAt",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub joined_at: Option<Option<String>>,
    #[serde(
        rename = "lastPostReadAt",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub last_post_read_at: Option<Option<String>>,
    #[serde(rename = "mRoleIds", skip_serializing_if = "Option::is_none")]
    pub m_role_ids: Option<Vec<String>>,
    /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user.
    #[serde(
        rename = "managerNotes",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub manager_notes: Option<Option<String>>,
    #[serde(rename = "membershipStatus", skip_serializing_if = "Option::is_none")]
    pub membership_status: Option<models::GroupMemberStatus>,
    #[serde(rename = "roleIds", skip_serializing_if = "Option::is_none")]
    pub role_ids: Option<Vec<String>>,
    /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.
    #[serde(rename = "userId", skip_serializing_if = "Option::is_none")]
    pub user_id: Option<String>,
    #[serde(rename = "visibility", skip_serializing_if = "Option::is_none")]
    pub visibility: Option<String>,
}

impl GroupLimitedMember {
    /// May be null when attempting to retrieve group membership for a user who is not part of the group
    pub fn new() -> GroupLimitedMember {
        GroupLimitedMember {
            banned_at: None,
            created_at: None,
            group_id: None,
            has_joined_from_purchase: None,
            id: None,
            is_representing: None,
            is_subscribed_to_announcements: None,
            is_subscribed_to_event_announcements: None,
            joined_at: None,
            last_post_read_at: None,
            m_role_ids: None,
            manager_notes: None,
            membership_status: None,
            role_ids: None,
            user_id: None,
            visibility: None,
        }
    }
}