Class BowireRecordingStep
- Namespace
- Kuestenlogik.Bowire.Mocking
- Assembly
- Kuestenlogik.Bowire.dll
One captured invocation inside a BowireRecording.
Mirrors the payload emitted by captureRecordingStep() in the
Bowire UI's recording.js.
public sealed class BowireRecordingStep
- Inheritance
-
BowireRecordingStep
- Inherited Members
Constructors
BowireRecordingStep()
public BowireRecordingStep()
Properties
Body
Primary request body (for unary: the full request; for streaming: the first message).
[JsonPropertyName("body")]
public string? Body { get; set; }
Property Value
CapturedAt
[JsonPropertyName("capturedAt")]
public long CapturedAt { get; set; }
Property Value
Discriminator
Phase-5 discriminator-VALUE for this step — e.g. "EntityStatePdu"
for a DIS PDU-type frame, or "*" when the method carries a
single payload shape (no discriminator declared). Optional: pre-Phase-5
recordings omit this and the framework treats the step as wildcard.
[JsonPropertyName("discriminator")]
public string? Discriminator { get; set; }
Property Value
Remarks
The field carries the resolved value, not the discriminator declaration — the declaration lives at the schema level (see BowireRecordingSchemaSnapshot).
DurationMs
[JsonPropertyName("durationMs")]
public long DurationMs { get; set; }
Property Value
HttpPath
REST-only: the HTTP path template the call was made against.
[JsonPropertyName("httpPath")]
public string? HttpPath { get; set; }
Property Value
HttpVerb
REST-only: the HTTP verb the call was made with.
[JsonPropertyName("httpVerb")]
public string? HttpVerb { get; set; }
Property Value
Id
[JsonPropertyName("id")]
public string Id { get; set; }
Property Value
Interpretations
Phase-5 interpretations — one entry per widget-mountable annotation
active at record-time. Replay re-emits these alongside each frame so
the workbench shows the same widget state regardless of how detector
heuristics have drifted since capture. Optional: pre-Phase-5 captures
have no interpretations field and the workbench falls back to
running the live IFrameProber on the
replayed frame — strictly backwards-compatible with v1.x recordings.
[JsonPropertyName("interpretations")]
public IList<RecordedInterpretation>? Interpretations { get; init; }
Property Value
Messages
All request messages in order (single entry for unary; multiple for streaming).
[JsonPropertyName("messages")]
public IList<string> Messages { get; init; }
Property Value
Metadata
Request metadata / headers (including auth-helper output).
[JsonPropertyName("metadata")]
public IDictionary<string, string>? Metadata { get; init; }
Property Value
Method
Method identifier — operationId, gRPC method name, hub method, ...
[JsonPropertyName("method")]
public string Method { get; set; }
Property Value
MethodType
Unary, ServerStreaming, ClientStreaming, or Duplex.
[JsonPropertyName("methodType")]
public string MethodType { get; set; }
Property Value
Protocol
Protocol source (e.g. rest, grpc, signalr).
[JsonPropertyName("protocol")]
public string Protocol { get; set; }
Property Value
ReceivedMessages
Streaming / duplex: server-to-client frames with per-frame timestamps. Streaming replay uses these to emit frames at the original cadence.
[JsonPropertyName("receivedMessages")]
public IList<BowireRecordingFrame>? ReceivedMessages { get; init; }
Property Value
RequestBinary
gRPC-only: base64-encoded raw wire bytes of the first request message (length-prefix stripped). Written by the miss-capture writer so the user can inspect what the client sent when the matcher found no step; the replayer doesn't consume it.
[JsonPropertyName("requestBinary")]
public string? RequestBinary { get; set; }
Property Value
Response
Response body (for unary: the full response; for server-streaming: the
last frame — the replayer uses receivedMessages instead and
ignores this for streaming steps).
[JsonPropertyName("response")]
public string? Response { get; set; }
Property Value
ResponseBinary
gRPC-only: base64-encoded raw wire bytes of the response message.
Captured so mock replay can re-emit the response byte-for-byte
without a runtime protobuf encoder. Populated at recording time
from the protocol plugin's InvokeResult.ResponseBinary
and requires recordingFormatVersion: 2.
[JsonPropertyName("responseBinary")]
public string? ResponseBinary { get; set; }
Property Value
SchemaDescriptor
gRPC-only: base64-encoded protobuf FileDescriptorSet covering
this service's schema (plus its transitive deps). Captured by the
gRPC plugin at discovery time via Server Reflection, attached to
every step from the same service. Consumed by the mock to expose
its own Server Reflection so a second Bowire workbench can
auto-discover the mocked services.
[JsonPropertyName("schemaDescriptor")]
public string? SchemaDescriptor { get; set; }
Property Value
SentMessages
Duplex / client-streaming: client-to-server messages with relative timestamps. Streaming replay uses these to reproduce the send cadence.
[JsonPropertyName("sentMessages")]
public IList<BowireRecordingFrame>? SentMessages { get; init; }
Property Value
ServerUrl
[JsonPropertyName("serverUrl")]
public string? ServerUrl { get; set; }
Property Value
Service
Service identifier — OpenAPI tag, gRPC service FQN, hub name, ...
[JsonPropertyName("service")]
public string Service { get; set; }
Property Value
Status
Status string — OK, HTTP code name, gRPC status code, ...
[JsonPropertyName("status")]
public string Status { get; set; }