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

Url string

The discoverable target — anything Bowire's protocol plugins would accept as a server URL. Required. Empty / null entries are dropped by the registry merge.

Name string

Optional human-readable label (e.g. "Staging Payments"). When null the workbench falls back to Url.

Protocols IReadOnlyList<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.

Tags IReadOnlyList<string>

Optional metadata tags — free-form strings, conventionally "key:value" (e.g. "env:staging", "team:payments"). The workbench's filter popup surfaces these.

Schema string

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.

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

string

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

IReadOnlyList<string>

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

string

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

IReadOnlyList<string>

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

string

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

Url string
Name string
Protocols IReadOnlyList<string>
Tags IReadOnlyList<string>
Schema string

Equals(BowireCatalogueEntry?)

public bool Equals(BowireCatalogueEntry? other)

Parameters

other BowireCatalogueEntry

Returns

bool

Equals(object?)

public override bool Equals(object? obj)

Parameters

obj object

Returns

bool

GetHashCode()

public override int GetHashCode()

Returns

int

ToString()

public override string ToString()

Returns

string

Operators

operator ==(BowireCatalogueEntry?, BowireCatalogueEntry?)

public static bool operator ==(BowireCatalogueEntry? left, BowireCatalogueEntry? right)

Parameters

left BowireCatalogueEntry
right BowireCatalogueEntry

Returns

bool

operator !=(BowireCatalogueEntry?, BowireCatalogueEntry?)

public static bool operator !=(BowireCatalogueEntry? left, BowireCatalogueEntry? right)

Parameters

left BowireCatalogueEntry
right BowireCatalogueEntry

Returns

bool