using System.Text.Json.Serialization; namespace NeonSprawl.Server.Game.Factions; /// JSON body for GET /game/players/{{id}}/faction-standing (NEO-139). public sealed class FactionStandingSnapshotResponse { public const int CurrentSchemaVersion = 1; [JsonPropertyName("schemaVersion")] public int SchemaVersion { get; init; } = CurrentSchemaVersion; [JsonPropertyName("playerId")] public required string PlayerId { get; init; } /// One row per catalog faction id. Consumers must treat this as unordered and key rows by — array order is not part of the public contract. [JsonPropertyName("factions")] public required IReadOnlyList Factions { get; init; } } /// Current standing for one faction (missing store row reads as neutral 0). public sealed class FactionStandingRowJson { [JsonPropertyName("id")] public required string Id { get; init; } [JsonPropertyName("standing")] public int Standing { get; init; } }