namespace EntKube.SharedKernel.Contracts;

/// <summary>
/// Standard API response envelope used by all EntKube microservices.
/// Every HTTP response wraps its payload in this structure so clients
/// always know where to find the data, error messages, and metadata.
/// </summary>
public record ApiResponse<T>
{
    public bool Success { get; init; }
    public T? Data { get; init; }
    public string? Error { get; init; }
    public DateTimeOffset Timestamp { get; init; } = DateTimeOffset.UtcNow;

    public static ApiResponse<T> Ok(T data) => new()
    {
        Success = true,
        Data = data
    };

    public static ApiResponse<T> Fail(string error) => new()
    {
        Success = false,
        Error = error
    };
}
