81 lines
2.6 KiB
C#
81 lines
2.6 KiB
C#
using StellaOps.VexHub.Core.Models;
|
|
|
|
namespace StellaOps.VexHub.WebService.Models;
|
|
|
|
/// <summary>
|
|
/// Response containing VEX statements.
|
|
/// </summary>
|
|
public sealed class VexStatementsResponse
|
|
{
|
|
public required IReadOnlyList<AggregatedVexStatement> Statements { get; init; }
|
|
public required int TotalCount { get; init; }
|
|
public required string QueryType { get; init; }
|
|
public required string QueryValue { get; init; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Response for VEX search queries.
|
|
/// </summary>
|
|
public sealed class VexSearchResponse
|
|
{
|
|
public required IReadOnlyList<AggregatedVexStatement> Statements { get; init; }
|
|
public required long TotalCount { get; init; }
|
|
public required int Limit { get; init; }
|
|
public required int Offset { get; init; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// VEX Hub statistics.
|
|
/// </summary>
|
|
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<string, long> ByStatus { get; init; }
|
|
public required IReadOnlyDictionary<string, long> BySource { get; init; }
|
|
public required IReadOnlyList<VexHubActivityItem> RecentActivity { get; init; }
|
|
public required IReadOnlyList<VexHubTrendPoint> 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; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// VEX Hub index manifest for tool integration.
|
|
/// </summary>
|
|
public sealed class VexIndexManifest
|
|
{
|
|
public required string Version { get; init; }
|
|
public required DateTimeOffset LastUpdated { get; init; }
|
|
public required VexIndexEndpoints Endpoints { get; init; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// VEX Hub API endpoints.
|
|
/// </summary>
|
|
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; }
|
|
}
|