using System; using System.Collections.Generic; using API.Entities.Enums; namespace API.DTOs.Stats.V3; /// /// Represents information about a Kavita Installation for Kavita Stats v3 API /// public class ServerInfoV3Dto { /// /// Unique Id that represents a unique install /// public required string InstallId { get; set; } public required string Os { get; set; } /// /// If the Kavita install is using Docker /// public bool IsDocker { get; set; } /// /// Version of .NET instance is running /// public required string DotnetVersion { get; set; } /// /// Version of Kavita /// public required string KavitaVersion { get; set; } /// /// Version of Kavita on Installation /// public required string InitialKavitaVersion { get; set; } /// /// Date of first Installation /// public DateTime InitialInstallDate { get; set; } /// /// Number of Cores on the instance /// public int NumOfCores { get; set; } /// /// OS locale on the instance /// public string OsLocale { get; set; } /// /// Milliseconds to open a random archive (zip/cbz) for reading /// public long TimeToOpeCbzMs { get; set; } /// /// Number of pages for said archive (zip/cbz) /// public long TimeToOpenCbzPages { get; set; } /// /// Milliseconds to get a response from KavitaStats API /// /// This pings a health check and does not capture any IP Information public long TimeToPingKavitaStatsApi { get; set; } #region Media /// /// Number of collections on the install /// public int NumberOfCollections { get; set; } /// /// Number of reading lists on the install (Sum of all users) /// public int NumberOfReadingLists { get; set; } /// /// Total number of files in the instance /// public int TotalFiles { get; set; } /// /// Total number of Genres in the instance /// public int TotalGenres { get; set; } /// /// Total number of Series in the instance /// public int TotalSeries { get; set; } /// /// Total number of Libraries in the instance /// public int TotalLibraries { get; set; } /// /// Total number of People in the instance /// public int TotalPeople { get; set; } /// /// Max number of Series for any library on the instance /// public int MaxSeriesInALibrary { get; set; } /// /// Max number of Volumes for any library on the instance /// public int MaxVolumesInASeries { get; set; } /// /// Max number of Chapters for any library on the instance /// public int MaxChaptersInASeries { get; set; } /// /// Everything about the Libraries on the instance /// public IList Libraries { get; set; } /// /// Everything around Series Relationships between series /// public IList Relationships { get; set; } #endregion #region Server /// /// Is OPDS enabled /// public bool OpdsEnabled { get; set; } /// /// The encoding the server is using to save media /// public EncodeFormat EncodeMediaAs { get; set; } /// /// The last user reading progress on the server (in UTC) /// public DateTime LastReadTime { get; set; } /// /// Is this server using Kavita+ /// public bool ActiveKavitaPlusSubscription { get; set; } #endregion #region Users /// /// If there is at least one user that is using an age restricted profile on the instance /// /// Introduced in v0.6.0 public bool UsingRestrictedProfiles { get; set; } public IList Users { get; set; } #endregion }