Class BowireRecording
- Namespace
- Kuestenlogik.Bowire.Mocking
- Assembly
- Kuestenlogik.Bowire.dll
One named recording — an ordered sequence of captured invocations produced by the Bowire UI's recorder and later replayed by the mock server.
public sealed class BowireRecording
- Inheritance
-
BowireRecording
- Inherited Members
Constructors
BowireRecording()
public BowireRecording()
Properties
Attack
When true, this recording is a security-test
probe (a "vulnerability template" in the
docs/architecture/security-testing.md ADR), not a
captured fixture. The bowire scan subcommand picks these
up; the mock-server replay path explicitly skips them so an
attack template never accidentally serves traffic. Optional;
default false preserves backwards-compat with
every pre-v1.4 recording.
[JsonPropertyName("attack")]
public bool Attack { get; set; }
Property Value
CreatedAt
[JsonPropertyName("createdAt")]
public long CreatedAt { get; set; }
Property Value
Description
[JsonPropertyName("description")]
public string Description { get; set; }
Property Value
Id
[JsonPropertyName("id")]
public string Id { get; set; }
Property Value
Name
[JsonPropertyName("name")]
public string Name { get; set; }
Property Value
RecordingFormatVersion
Format version the recording was written with. The mock-server loader refuses any version it wasn't built for.
[JsonPropertyName("recordingFormatVersion")]
public int? RecordingFormatVersion { get; set; }
Property Value
- int?
SchemaSnapshot
Frozen snapshot of the effective frame-semantics annotations active
at record-time — populated by Phase-5 captures so a replayed recording
mounts the same widgets the original session showed, even if the local
annotation store has drifted since. Optional: recordings made before
Phase 5 leave this null and the workbench falls back to the
live annotation store on load (same behaviour as pre-v1.3).
[JsonPropertyName("schemaSnapshot")]
public BowireRecordingSchemaSnapshot? SchemaSnapshot { get; set; }
Property Value
SourceSchema
Original-schema sidecar — when set, the recording carries the source schema (OpenAPI YAML for REST, AsyncAPI YAML for messaging, &c) that the live target advertised at capture time, plus the format tag the mock host needs to expose it under the right MIME type. Lets IBowireMockHostingExtensions serve the original contract back from the mock — so a peer Bowire discovery against the mock returns the full declared surface, not just the (smaller) set of methods this recording happens to replay. Use the step list to compute coverage; the recording reports the contract, the steps report the realised slice.
[JsonPropertyName("sourceSchema")]
public RecordingSourceSchema? SourceSchema { get; set; }
Property Value
Remarks
gRPC keeps its descriptor-set on each SchemaDescriptor
because reflection wraps a binary FileDescriptorSet per
service; this field carries a recording-wide text document for
the protocols whose source schema is a single file (OpenAPI,
AsyncAPI, GraphQL SDL, WSDL).
Steps
[JsonPropertyName("steps")]
public IList<BowireRecordingStep> Steps { get; init; }
Property Value
Vulnerability
Identifying + classification metadata for the vulnerability the template probes for. Required when Attack is true, ignored otherwise.
[JsonPropertyName("vulnerability")]
public AttackVulnerability? Vulnerability { get; set; }
Property Value
VulnerableWhen
Predicate-tree that, when matched against the response of the probe (the recording's first step), identifies the target as vulnerable. Required when Attack is true.
[JsonPropertyName("vulnerableWhen")]
public AttackPredicate? VulnerableWhen { get; set; }