using StellaOps.VexHub.Core.Models; namespace StellaOps.VexHub.WebService.Models; /// /// Response containing VEX statements. /// public sealed class VexStatementsResponse { public required IReadOnlyList Statements { get; init; } public required int TotalCount { get; init; } public required string QueryType { get; init; } public required string QueryValue { get; init; } } /// /// Response for VEX search queries. /// public sealed class VexSearchResponse { public required IReadOnlyList Statements { get; init; } public required long TotalCount { get; init; } public required int Limit { get; init; } public required int Offset { get; init; } } /// /// VEX Hub statistics. /// public sealed class VexHubStats { public required long TotalStatements { get; init; } public required long VerifiedStatements { get; init; } public required long FlaggedStatements { get; init; } public required IReadOnlyDictionary ByStatus { get; init; } public required IReadOnlyDictionary BySource { get; init; } public required IReadOnlyList RecentActivity { get; init; } public required IReadOnlyList Trends { get; init; } public required DateTimeOffset GeneratedAt { get; init; } } public sealed class VexHubActivityItem { public required Guid StatementId { get; init; } public required string CveId { get; init; } public required string Action { get; init; } public required DateTimeOffset Timestamp { get; init; } } public sealed class VexHubTrendPoint { public required DateOnly Date { get; init; } public required int Affected { get; init; } public required int NotAffected { get; init; } public required int Fixed { get; init; } public required int Investigating { get; init; } } /// /// VEX Hub index manifest for tool integration. /// public sealed class VexIndexManifest { public required string Version { get; init; } public required DateTimeOffset LastUpdated { get; init; } public required VexIndexEndpoints Endpoints { get; init; } } /// /// VEX Hub API endpoints. /// public sealed class VexIndexEndpoints { public required string ByCve { get; init; } public required string ByPackage { get; init; } public required string BySource { get; init; } public required string Search { get; init; } public required string Stats { get; init; } public required string Export { get; init; } }