using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; namespace gehGassi.Pwned.Models { /// /// /// [ExcludeFromCodeCoverage] public class Breach { /// /// A Pascal-cased name representing the breach which is unique across all other breaches. /// This value never changes and may be used to name dependent assets (such as images) /// but should not be shown directly to end users (see the "Title" attribute instead). /// public string Name { get; set; } /// /// A descriptive title for the breach suitable for displaying to end users. /// It's unique across all breaches but individual values may change in the future /// (i.e. if another breach occurs against an organization already in the system). I /// f a stable value is required to reference the breach, refer to the "Name" attribute instead. /// public string Title { get; set; } /// /// The domain of the primary website the breach occurred on. /// This may be used for identifying other assets external systems may have for the site. /// public string Domain { get; set; } /// /// The date (with no time) the breach originally occurred on in ISO 8601 format. /// This is not always accurate — frequently breaches are discovered and reported long after the original incident. /// Use this attribute as a guide only. /// public string BreachDate { get; set; } /// /// The date and time (precision to the minute) the breach was added to the system in ISO 8601 format. /// public DateTime AddedDate { get; set; } /// /// The date and time (precision to the minute) the breach was modified in ISO 8601 format. /// This will only differ from the AddedDate attribute if other attributes represented /// here are changed or data in the breach itself is changed (i.e. additional data is identified and loaded). /// It is always either equal to or greater then the AddedDate attribute, never less than. /// public DateTime ModifiedDate { get; set; } /// /// The total number of accounts loaded into the system. /// This is usually less than the total number reported by the media due to duplication /// or other data integrity issues in the source data. /// public int PwnCount { get; set; } /// /// Contains an overview of the breach represented in HTML markup. /// The description may include markup such as emphasis and strong tags as well as hyperlinks. /// public string Description { get; set; } /// /// This attribute describes the nature of the data compromised in the breach /// and contains an alphabetically ordered string array of impacted data classes. /// public List DataClasses { get; set; } /// /// Indicates that the breach is considered unverified. /// An unverified breach may not have been hacked from the indicated website. /// An unverified breach is still loaded into HIBP when there's sufficient confidence /// that a significant portion of the data is legitimate. /// public bool IsVerified { get; set; } /// /// Indicates that the breach is considered fabricated. A fabricated breach is unlikely /// to have been hacked from the indicated website and usually contains a large amount of manufactured data. /// However, it still contains legitimate email addresses and asserts that the account owners were compromised in the alleged breach. /// public bool IsFabricated { get; set; } /// /// Indicates if the breach is considered sensitive. /// The public API will not return any accounts for a breach flagged as sensitive. /// public bool IsSensitive { get; set; } /// /// Active within the dataset of the pwened. /// public bool IsActive { get; set; } /// /// Indicates if the breach has been retired. /// This data has been permanently removed and will not be returned by the API. /// public bool IsRetired { get; set; } /// /// ndicates if the breach is considered a spam list. /// This flag has no impact on any other attributes but it means that the data has not come as a result of a security compromise. /// public bool IsSpamList { get; set; } /// /// Svg, Jpeg etc. /// public string LogoType { get; set; } } }