namespace StellaOps.VulnExplorer.Api.Models;
///
/// In-toto style attestation for vulnerability scan results.
/// Based on docs/schemas/attestation-vuln-scan.schema.json
///
public sealed record VulnScanAttestationDto(
string Type,
string PredicateType,
IReadOnlyList Subject,
VulnScanPredicateDto Predicate,
AttestationMetaDto AttestationMeta);
///
/// Subject of an attestation (artifact that was scanned).
///
public sealed record AttestationSubjectDto(
string Name,
IReadOnlyDictionary Digest);
///
/// Vulnerability scan result predicate.
///
public sealed record VulnScanPredicateDto(
ScannerInfoDto Scanner,
ScannerDbInfoDto? ScannerDb,
DateTimeOffset ScanStartedAt,
DateTimeOffset ScanCompletedAt,
SeverityCountsDto SeverityCounts,
FindingReportDto FindingReport);
///
/// Scanner information.
///
public sealed record ScannerInfoDto(
string Name,
string Version);
///
/// Vulnerability database information.
///
public sealed record ScannerDbInfoDto(
DateTimeOffset? LastUpdatedAt);
///
/// Count of findings by severity.
///
public sealed record SeverityCountsDto(
int Critical,
int High,
int Medium,
int Low);
///
/// Reference to the full findings report.
///
public sealed record FindingReportDto(
string MediaType,
string Location,
IReadOnlyDictionary Digest);
///
/// Attestation metadata including signer info.
///
public sealed record AttestationMetaDto(
string StatementId,
DateTimeOffset CreatedAt,
AttestationSignerDto Signer);
///
/// Entity that signed an attestation.
///
public sealed record AttestationSignerDto(
string Name,
string KeyId);
///
/// Response for listing attestations.
///
public sealed record AttestationListResponse(
IReadOnlyList Items,
string? NextPageToken);
///
/// Summary view of an attestation for listing.
///
public sealed record AttestationSummaryDto(
string Id,
AttestationType Type,
string SubjectName,
IReadOnlyDictionary SubjectDigest,
string PredicateType,
DateTimeOffset CreatedAt,
string? SignerName,
string? SignerKeyId,
bool Verified);
///
/// Attestation type enumeration.
///
public enum AttestationType
{
VulnScan,
Sbom,
Vex,
PolicyEval,
Other
}