using _Core;
using System.Collections.Generic;

namespace _Combo
{
    // GET /v1/public/announcements 接口的 HTTP 模型
    internal class GetAnnouncements
    {
        public class Request : Serializable
        {
            [Newtonsoft.Json.JsonProperty("game_id")]
            public string gameId;

            [Newtonsoft.Json.JsonProperty("distro")]
            public string distro;

            [Newtonsoft.Json.JsonProperty("lang")]
            public string lang;

            [Newtonsoft.Json.JsonProperty("combo_id", NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
            public string comboId;

            [Newtonsoft.Json.JsonProperty("level", NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
            public int? level;
        }


        // 接口顶层响应体，包含公告列表
        public class Response : Serializable
        {
            [Newtonsoft.Json.JsonProperty("announcements")]
            public List<AnnouncementItem> announcements;
        }

        // 单条公告数据，对应服务端 announcement 对象
        public class AnnouncementItem : Serializable
        {
            // 公告唯一 ID
            [Newtonsoft.Json.JsonProperty("id")]
            public string id;

            // 公告标题
            [Newtonsoft.Json.JsonProperty("title")]
            public string title;

            // 公告子标题，可为 null
            [Newtonsoft.Json.JsonProperty("subtitle")]
            public string subtitle;

            // 公告正文，格式由 format 字段决定
            [Newtonsoft.Json.JsonProperty("content")]
            public string content;

            // 内容格式：plaintext 或 html
            [Newtonsoft.Json.JsonProperty("format")]
            public string format;

            // 本地化语言标签（IETF BCP 47）
            [Newtonsoft.Json.JsonProperty("lang")]
            public string lang;

            // 最后发布时间，Unix timestamp（秒）
            [Newtonsoft.Json.JsonProperty("published_at")]
            public int publishedAt;
        }
    }
}
