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
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:
@@ -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);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
namespace StellaOps.ExportCenter.Infrastructure;
|
||||
|
||||
public class Class1
|
||||
{
|
||||
|
||||
}
|
||||
namespace StellaOps.ExportCenter.Infrastructure;
|
||||
|
||||
public class Class1
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user