using System.Text.Json.Serialization; namespace PlaylistShared.Shared; /// Универсальный контейнер ответа API. /// Тип данных ответа. public class ApiResponse { /// Успешен ли запрос. [JsonPropertyName("success")] public bool Success { get; set; } /// Данные ответа (при успехе). [JsonPropertyName("data")] public T? Data { get; set; } /// Сообщение (опционально). [JsonPropertyName("message")] public string? Message { get; set; } /// Ошибка (при неудаче). [JsonPropertyName("error")] public ErrorResponse? Error { get; set; } /// Создаёт успешный ответ. public static ApiResponse Ok(T data, string? message = null) => new() { Success = true, Data = data, Message = message }; /// Создаёт ответ с ошибкой. public static ApiResponse Fail(ErrorResponse error) => new() { Success = false, Error = error }; }