Class BowireCatalogueEntry
- Namespace
- Kuestenlogik.Bowire.Sources
- Assembly
- Kuestenlogik.Bowire.dll
One row in a Bowire URL/service catalogue — a discoverable target surfaced by an IBowireCatalogueProvider (#136).
public sealed record BowireCatalogueEntry : IEquatable<BowireCatalogueEntry>
- Inheritance
-
BowireCatalogueEntry
- Implements
- Inherited Members
Remarks
The shape mirrors the documented JSON wire format so callers can deserialise a remote catalogue document straight into this record without an intermediate DTO:
{
"url": "https://staging-payments.example.com",
"name": "Staging Payments",
"protocols": ["rest", "grpc"],
"tags": ["env:staging", "team:payments"],
"schema": "https://staging-payments.example.com/openapi.json"
}
Only Url is required. Everything else is metadata
the workbench can use to filter, pre-pin the right protocol plugin
(Url's protocol@ hint stays the per-call override), or
surface a friendly label in the Sources rail.
Constructors
BowireCatalogueEntry(string, string?, IReadOnlyList<string>?, IReadOnlyList<string>?, string?)
One row in a Bowire URL/service catalogue — a discoverable target surfaced by an IBowireCatalogueProvider (#136).
public BowireCatalogueEntry(string Url, string? Name = null, IReadOnlyList<string>? Protocols = null, IReadOnlyList<string>? Tags = null, string? Schema = null)
Parameters
UrlstringThe discoverable target — anything Bowire's protocol plugins would accept as a server URL. Required. Empty / null entries are dropped by the registry merge.
NamestringOptional human-readable label (e.g.
"Staging Payments"). When null the workbench falls back to Url.ProtocolsIReadOnlyList<string>Optional list of protocol plugin ids the entry advertises (e.g.
["rest", "grpc"]). Used as a discovery hint — the workbench can short-circuit the per-plugin probe fanout for entries that declare their protocols up front.TagsIReadOnlyList<string>Optional metadata tags — free-form strings, conventionally
"key:value"(e.g."env:staging","team:payments"). The workbench's filter popup surfaces these.SchemastringOptional URL to an OpenAPI / GraphQL SDL / .proto schema document that pins the entry's wire shape — saves the workbench from probing reflection / introspection at discovery time.
Remarks
The shape mirrors the documented JSON wire format so callers can deserialise a remote catalogue document straight into this record without an intermediate DTO:
{
"url": "https://staging-payments.example.com",
"name": "Staging Payments",
"protocols": ["rest", "grpc"],
"tags": ["env:staging", "team:payments"],
"schema": "https://staging-payments.example.com/openapi.json"
}
Only Url is required. Everything else is metadata
the workbench can use to filter, pre-pin the right protocol plugin
(Url's protocol@ hint stays the per-call override), or
surface a friendly label in the Sources rail.
Properties
Name
Optional human-readable label (e.g. "Staging Payments"). When
null the workbench falls back to Url.
[JsonPropertyName("name")]
public string? Name { get; init; }
Property Value
Protocols
Optional list of protocol plugin ids the entry advertises (e.g.
["rest", "grpc"]). Used as a discovery hint — the workbench
can short-circuit the per-plugin probe fanout for entries that
declare their protocols up front.
[JsonPropertyName("protocols")]
public IReadOnlyList<string>? Protocols { get; init; }
Property Value
Schema
Optional URL to an OpenAPI / GraphQL SDL / .proto schema document that pins the entry's wire shape — saves the workbench from probing reflection / introspection at discovery time.
[JsonPropertyName("schema")]
public string? Schema { get; init; }
Property Value
Tags
Optional metadata tags — free-form strings, conventionally
"key:value" (e.g. "env:staging", "team:payments").
The workbench's filter popup surfaces these.
[JsonPropertyName("tags")]
public IReadOnlyList<string>? Tags { get; init; }
Property Value
Url
The discoverable target — anything Bowire's protocol plugins would accept as a server URL. Required. Empty / null entries are dropped by the registry merge.
[JsonPropertyName("url")]
public string Url { get; init; }
Property Value
Methods
Deconstruct(out string, out string?, out IReadOnlyList<string>?, out IReadOnlyList<string>?, out string?)
public void Deconstruct(out string Url, out string? Name, out IReadOnlyList<string>? Protocols, out IReadOnlyList<string>? Tags, out string? Schema)
Parameters
UrlstringNamestringProtocolsIReadOnlyList<string>TagsIReadOnlyList<string>Schemastring
Equals(BowireCatalogueEntry?)
public bool Equals(BowireCatalogueEntry? other)
Parameters
otherBowireCatalogueEntry
Returns
Equals(object?)
public override bool Equals(object? obj)
Parameters
objobject
Returns
GetHashCode()
public override int GetHashCode()
Returns
ToString()
public override string ToString()
Returns
Operators
operator ==(BowireCatalogueEntry?, BowireCatalogueEntry?)
public static bool operator ==(BowireCatalogueEntry? left, BowireCatalogueEntry? right)
Parameters
leftBowireCatalogueEntryrightBowireCatalogueEntry
Returns
operator !=(BowireCatalogueEntry?, BowireCatalogueEntry?)
public static bool operator !=(BowireCatalogueEntry? left, BowireCatalogueEntry? right)
Parameters
leftBowireCatalogueEntryrightBowireCatalogueEntry