using MessagePack; using System.Text.Json.Serialization; using SVSim.EmulatedEntrypoint.Models.Dtos.Common; namespace SVSim.EmulatedEntrypoint.Models.Dtos.Guild; /// /// Response for POST /guild/invite_user_list. /// Lists outstanding invites the guild has sent out (leader/sub-leader view). /// [MessagePackObject] public class GuildInviteUserListResponse { [JsonPropertyName("list"), Key("list")] public List Users { get; set; } = new(); } /// /// OutgoingInvite — UserInfoBase fields flat-spread + invite_id + invite_time. /// Matches guild-invite_user_list.md OutgoingInvite interface. /// [MessagePackObject] public class GuildOutgoingInviteDto { [JsonPropertyName("viewer_id"), Key("viewer_id"), JsonConverter(typeof(StringifiedLongConverter))] public long ViewerId { get; set; } [JsonPropertyName("name"), Key("name")] public string Name { get; set; } = ""; [JsonPropertyName("emblem_id"), Key("emblem_id"), JsonConverter(typeof(StringifiedLongConverter))] public long EmblemId { get; set; } [JsonPropertyName("country_code"), Key("country_code")] public string CountryCode { get; set; } = ""; [JsonPropertyName("rank"), Key("rank"), JsonConverter(typeof(StringifiedIntConverter))] public int Rank { get; set; } [JsonPropertyName("degree_id"), Key("degree_id"), JsonConverter(typeof(StringifiedIntConverter))] public int DegreeId { get; set; } [JsonPropertyName("is_friend"), Key("is_friend")] public int? IsFriend { get; set; } [JsonPropertyName("is_friend_apply"), Key("is_friend_apply")] public int? IsFriendApply { get; set; } /// Invite id — pass to /guild/cancel_invite to retract. [JsonPropertyName("invite_id"), Key("invite_id")] public long InviteId { get; set; } /// Unix seconds when the invite was sent. [JsonPropertyName("invite_time"), Key("invite_time")] public long InviteTime { get; set; } }