using System.Text.Json; using System.Text.Json.Serialization; namespace MoShiro.Backend.Api; /// /// REST 的 JSON 源生成上下文(snake_case,字段始终存在、未知值写 null,枚举与时间的格式见数据表示规则)。 /// 新增 DTO 时在这里登记一行,不使用反射。 /// [JsonSourceGenerationOptions( PropertyNamingPolicy = JsonKnownNamingPolicy.SnakeCaseLower, DictionaryKeyPolicy = JsonKnownNamingPolicy.Unspecified, DefaultIgnoreCondition = JsonIgnoreCondition.Never, Converters = [typeof(Rfc3339Converter)], NumberHandling = JsonNumberHandling.Strict)] [JsonSerializable(typeof(ProblemDto))] [JsonSerializable(typeof(HealthDto))] [JsonSerializable(typeof(IdDto))] [JsonSerializable(typeof(OverviewDto))] [JsonSerializable(typeof(SeriesDto))] [JsonSerializable(typeof(CompareDto))] [JsonSerializable(typeof(DistributionDto))] [JsonSerializable(typeof(HeatmapDto))] [JsonSerializable(typeof(LineDto))] [JsonSerializable(typeof(QuicLineHealthDto))] [JsonSerializable(typeof(TestDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(LiveNodeDto))] [JsonSerializable(typeof(LiveTestDto))] [JsonSerializable(typeof(LoginRequest))] [JsonSerializable(typeof(LoginResponse))] [JsonSerializable(typeof(MeDto))] [JsonSerializable(typeof(AgentDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(AgentPatchRequest))] [JsonSerializable(typeof(LinkDto))] [JsonSerializable(typeof(LinkMatrixDto))] [JsonSerializable(typeof(LinkRetryDto))] [JsonSerializable(typeof(SetLinkRequest))] [JsonSerializable(typeof(BuildDto))] [JsonSerializable(typeof(ReleaseDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(PublishReleaseRequest))] [JsonSerializable(typeof(ReleaseKeysDto))] [JsonSerializable(typeof(SetReleaseKeyRequest))] [JsonSerializable(typeof(AboutDto))] [JsonSerializable(typeof(NodeBuildDto))] [JsonSerializable(typeof(NodeOwnerDto))] [JsonSerializable(typeof(BuildInfoDto))] [JsonSerializable(typeof(BackendUpdateDto))] [JsonSerializable(typeof(ConfirmBackendUpdateRequest))] [JsonSerializable(typeof(NodeInfoDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(JoinTokenDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(CreateJoinTokenRequest))] [JsonSerializable(typeof(CreatedJoinTokenDto))] [JsonSerializable(typeof(PatchProbeRequest))] [JsonSerializable(typeof(ProbeDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(HostSeriesDto))] [JsonSerializable(typeof(LiveHostDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(TaskDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(CreateTaskRequest))] [JsonSerializable(typeof(PatchTaskRequest))] [JsonSerializable(typeof(StartTestRequestDto))] [JsonSerializable(typeof(RawChunkMetaDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(ApiTokenDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(CreateApiTokenRequest))] [JsonSerializable(typeof(CapabilityCatalogDto))] [JsonSerializable(typeof(PasskeyCreationOptionsDto))] [JsonSerializable(typeof(PasskeyRequestOptionsDto))] [JsonSerializable(typeof(RegisterPasskeyRequest))] [JsonSerializable(typeof(PasskeyLoginRequest))] [JsonSerializable(typeof(Fleet.Core.SignedStatementDto), TypeInfoPropertyName = "FleetSignedStatement")] [JsonSerializable(typeof(TrustStateDto))] [JsonSerializable(typeof(SetupStatusDto))] [JsonSerializable(typeof(SetupRequest))] [JsonSerializable(typeof(ComposeInstallDto))] [JsonSerializable(typeof(QuadletInstallDto))] [JsonSerializable(typeof(ProposedCredentialDto))] [JsonSerializable(typeof(PasskeyDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(CreatedApiTokenDto))] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(Dictionary), TypeInfoPropertyName = "SettingsPatch")] [JsonSerializable(typeof(PageDto))] [JsonSerializable(typeof(UserDto))] [JsonSerializable(typeof(CreateUserRequest))] [JsonSerializable(typeof(ChangePasswordRequest))] [JsonSerializable(typeof(RecomputeDto))] [JsonSerializable(typeof(MoShiro.Protocol.LocalLimits))] [JsonSerializable(typeof(List))] public sealed partial class ApiJsonContext : JsonSerializerContext;