using System.Text.Json.Serialization; namespace Web.Api.Common; public sealed class ApiResponse { [JsonPropertyName("success")] public bool Success { get; init; } [JsonPropertyName("data")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public object? Data { get; init; } [JsonPropertyName("status")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] public int Status { get; init; } [JsonPropertyName("message")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? Message { get; init; } [JsonPropertyName("errors")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public object? Errors { get; init; } public static IResult Ok(object? data = null) { return Results.Ok(new ApiResponse { Success = true, Data = data }); } public static IResult Created(object? data = null) { return Results.Json(new ApiResponse { Success = true, Data = data }, statusCode: StatusCodes.Status201Created); } public static IResult Fail(int status, string message, object? errors = null) { return Results.Json(new ApiResponse { Success = false, Status = status, Message = message, Errors = errors }, statusCode: status); } }