up
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
Export Center CI / export-ci (push) Has been cancelled
Notify Smoke Test / Notify Unit Tests (push) Has been cancelled
Notify Smoke Test / Notifier Service Tests (push) Has been cancelled
Notify Smoke Test / Notification Smoke Test (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
Scanner Analyzers / Discover Analyzers (push) Has been cancelled
Scanner Analyzers / Build Analyzers (push) Has been cancelled
Scanner Analyzers / Test Language Analyzers (push) Has been cancelled
Scanner Analyzers / Validate Test Fixtures (push) Has been cancelled
Scanner Analyzers / Verify Deterministic Output (push) Has been cancelled
Signals CI & Image / signals-ci (push) Has been cancelled
Signals Reachability Scoring & Events / reachability-smoke (push) Has been cancelled
Signals Reachability Scoring & Events / sign-and-upload (push) Has been cancelled

This commit is contained in:
StellaOps Bot
2025-12-13 00:20:26 +02:00
parent e1f1bef4c1
commit 564df71bfb
2376 changed files with 334389 additions and 328032 deletions

View File

@@ -150,3 +150,145 @@ public sealed record ErrorDetail(
public sealed record ErrorDetailItem(
[property: JsonPropertyName("field")] string? Field,
[property: JsonPropertyName("reason")] string Reason);
// ============================================================================
// Audit Bundle DTOs (based on docs/schemas/audit-bundle-index.schema.json)
// ============================================================================
/// <summary>
/// Root manifest for an immutable audit bundle containing vulnerability reports,
/// VEX decisions, policy evaluations, and attestations.
/// </summary>
public sealed record AuditBundleIndexDto(
[property: JsonPropertyName("apiVersion")] string ApiVersion,
[property: JsonPropertyName("kind")] string Kind,
[property: JsonPropertyName("bundleId")] string BundleId,
[property: JsonPropertyName("createdAt")] DateTimeOffset CreatedAt,
[property: JsonPropertyName("createdBy")] BundleActorRefDto CreatedBy,
[property: JsonPropertyName("subject")] BundleSubjectRefDto Subject,
[property: JsonPropertyName("timeWindow")] BundleTimeWindowDto? TimeWindow,
[property: JsonPropertyName("artifacts")] IReadOnlyList<BundleArtifactDto> Artifacts,
[property: JsonPropertyName("vexDecisions")] IReadOnlyList<BundleVexDecisionEntryDto>? VexDecisions,
[property: JsonPropertyName("integrity")] BundleIntegrityDto? Integrity);
/// <summary>
/// Actor reference for audit bundle.
/// </summary>
public sealed record BundleActorRefDto(
[property: JsonPropertyName("id")] string Id,
[property: JsonPropertyName("displayName")] string DisplayName);
/// <summary>
/// Subject reference for audit bundle.
/// </summary>
public sealed record BundleSubjectRefDto(
[property: JsonPropertyName("type")] string Type,
[property: JsonPropertyName("name")] string Name,
[property: JsonPropertyName("digest")] IReadOnlyDictionary<string, string> Digest);
/// <summary>
/// Time window filter for included content.
/// </summary>
public sealed record BundleTimeWindowDto(
[property: JsonPropertyName("from")] DateTimeOffset? From,
[property: JsonPropertyName("to")] DateTimeOffset? To);
/// <summary>
/// Artifact entry within an audit bundle.
/// </summary>
public sealed record BundleArtifactDto(
[property: JsonPropertyName("id")] string Id,
[property: JsonPropertyName("type")] string Type,
[property: JsonPropertyName("source")] string Source,
[property: JsonPropertyName("path")] string Path,
[property: JsonPropertyName("mediaType")] string MediaType,
[property: JsonPropertyName("digest")] IReadOnlyDictionary<string, string> Digest,
[property: JsonPropertyName("attestation")] BundleArtifactAttestationRefDto? Attestation);
/// <summary>
/// Attestation reference within a bundle artifact.
/// </summary>
public sealed record BundleArtifactAttestationRefDto(
[property: JsonPropertyName("path")] string Path,
[property: JsonPropertyName("digest")] IReadOnlyDictionary<string, string> Digest);
/// <summary>
/// VEX decision entry within an audit bundle.
/// </summary>
public sealed record BundleVexDecisionEntryDto(
[property: JsonPropertyName("decisionId")] Guid DecisionId,
[property: JsonPropertyName("vulnerabilityId")] string VulnerabilityId,
[property: JsonPropertyName("status")] string Status,
[property: JsonPropertyName("path")] string Path,
[property: JsonPropertyName("digest")] IReadOnlyDictionary<string, string> Digest);
/// <summary>
/// Integrity verification data for the entire bundle.
/// </summary>
public sealed record BundleIntegrityDto(
[property: JsonPropertyName("rootHash")] string RootHash,
[property: JsonPropertyName("hashAlgorithm")] string HashAlgorithm);
/// <summary>
/// Request to create an audit bundle.
/// </summary>
public sealed record CreateAuditBundleRequest(
[property: JsonPropertyName("subject")] BundleSubjectRefDto Subject,
[property: JsonPropertyName("timeWindow")] BundleTimeWindowDto? TimeWindow,
[property: JsonPropertyName("includeContent")] AuditBundleContentSelection IncludeContent,
[property: JsonPropertyName("callbackUrl")] string? CallbackUrl = null);
/// <summary>
/// Content selection for audit bundle creation.
/// </summary>
public sealed record AuditBundleContentSelection(
[property: JsonPropertyName("vulnReports")] bool VulnReports = true,
[property: JsonPropertyName("sbom")] bool Sbom = true,
[property: JsonPropertyName("vexDecisions")] bool VexDecisions = true,
[property: JsonPropertyName("policyEvaluations")] bool PolicyEvaluations = true,
[property: JsonPropertyName("attestations")] bool Attestations = true);
/// <summary>
/// Response from creating an audit bundle.
/// </summary>
public sealed record CreateAuditBundleResponse(
[property: JsonPropertyName("bundleId")] string BundleId,
[property: JsonPropertyName("status")] string Status,
[property: JsonPropertyName("statusUrl")] string StatusUrl,
[property: JsonPropertyName("estimatedCompletionSeconds")] int? EstimatedCompletionSeconds);
/// <summary>
/// Status of an audit bundle creation job.
/// </summary>
public sealed record AuditBundleStatus(
[property: JsonPropertyName("bundleId")] string BundleId,
[property: JsonPropertyName("status")] string Status,
[property: JsonPropertyName("progress")] int Progress,
[property: JsonPropertyName("createdAt")] DateTimeOffset CreatedAt,
[property: JsonPropertyName("completedAt")] DateTimeOffset? CompletedAt,
[property: JsonPropertyName("bundleHash")] string? BundleHash,
[property: JsonPropertyName("downloadUrl")] string? DownloadUrl,
[property: JsonPropertyName("ociReference")] string? OciReference,
[property: JsonPropertyName("errorCode")] string? ErrorCode,
[property: JsonPropertyName("errorMessage")] string? ErrorMessage);
/// <summary>
/// Response listing audit bundles.
/// </summary>
public sealed record AuditBundleListResponse(
[property: JsonPropertyName("bundles")] IReadOnlyList<AuditBundleSummary> Bundles,
[property: JsonPropertyName("continuationToken")] string? ContinuationToken,
[property: JsonPropertyName("hasMore")] bool HasMore);
/// <summary>
/// Summary of an audit bundle for listing.
/// </summary>
public sealed record AuditBundleSummary(
[property: JsonPropertyName("bundleId")] string BundleId,
[property: JsonPropertyName("subject")] BundleSubjectRefDto Subject,
[property: JsonPropertyName("status")] string Status,
[property: JsonPropertyName("createdAt")] DateTimeOffset CreatedAt,
[property: JsonPropertyName("completedAt")] DateTimeOffset? CompletedAt,
[property: JsonPropertyName("bundleHash")] string? BundleHash,
[property: JsonPropertyName("artifactCount")] int ArtifactCount,
[property: JsonPropertyName("vexDecisionCount")] int VexDecisionCount);

View File

@@ -1,6 +1,6 @@
namespace StellaOps.ExportCenter.Infrastructure;
public class Class1
{
}
namespace StellaOps.ExportCenter.Infrastructure;
public class Class1
{
}