using System.Text.Json.Serialization; namespace NeonSprawl.Server.Game.Skills; /// JSON body for GET /game/players/{{id}}/skill-progression (NEO-37). public sealed class SkillProgressionSnapshotResponse { public const int CurrentSchemaVersion = 1; [JsonPropertyName("schemaVersion")] public int SchemaVersion { get; init; } = CurrentSchemaVersion; [JsonPropertyName("playerId")] public required string PlayerId { get; init; } /// One row per registered skill id. Consumers must treat this as unordered and key rows by — array order is not part of the public contract. [JsonPropertyName("skills")] public required IReadOnlyList Skills { get; init; } } /// XP and level for one skill before grants (defaults) or after NEO-38 persistence. public sealed class SkillProgressionRowJson { [JsonPropertyName("id")] public required string Id { get; init; } [JsonPropertyName("xp")] public int Xp { get; init; } [JsonPropertyName("level")] public int Level { get; init; } }