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 }