@@ -622,6 +622,72 @@ evidence for both dates — not yet deleted.
622622
623623---
624624
625+ ### ISSUE-85: No REST endpoint exists to create a ` SolutionPort ` element — only attach/detach/delegation relationships are exposed
626+
627+ ** Status:** open, confirmed Egeria-side gap 2026-09-03. Found by a
628+ consumer (trellis/Resource Explorer, designing a ` PortMaterializer ` for
629+ architecture-recovery proposals) hitting the same shape of gap ISSUE-84
630+ turned out not to be: this time the ` .http ` ground truth's absence really
631+ does match the live server, not a stale/incomplete ` .http ` file.
632+
633+ ** Confirmed at every layer:**
634+ - ` pyegeria/omvs/solution_architect.py ` : ` link_solution_component_port `
635+ (attach an * existing* port to a component), ` link_solution_port_delegation `
636+ (port-to-port delegation), and both detach counterparts exist. No
637+ ` create_solution_port ` /` _async_create_solution_port ` anywhere.
638+ - ` Egeria-api-solution-architect.http ` : only `.../solution-components/
639+ {guid}/solution-ports/{guid}/attach|detach` and ` .../solution-ports/
640+ {guid}/port-delegations/{guid}/attach|detach` . No ` POST .../solution-ports`
641+ create path.
642+ - ` md_processing/data/compact_commands/commands_solution_architect_compact.json ` :
643+ only ` Link Solution Component Port ` /` Link Solution Port Delegation ` . No
644+ ` Create Solution Port ` command.
645+ - ` pyegeria/models/models.py ` : no ` SolutionPortProperties ` model at all —
646+ so even the generic fallback route has nothing typed to build a body
647+ against.
648+
649+ ** Live-verified not just a stale-` .http ` -file case** (the precedent this
650+ repo already has for that shape of false alarm — see the multi-link audit
651+ above, where 3 of 4 similarly-unwrapped relationship types turned out to
652+ have zero real endpoint on live-server inspection while others did):
653+ ` dwolfson-1b ` /trellis fetched the full live OpenAPI spec directly
654+ (` GET /v3/api-docs ` , 2.39MB) and searched every path containing "port" —
655+ 30 POST paths matched, every one of them attach/detach (component-port,
656+ port-delegation, even a generic process-ports attach under a different
657+ ` {urlMarker} ` service). Zero creation endpoints anywhere in the spec.
658+ This confirms the ` .http ` ground truth exactly; not a documentation gap.
659+
660+ ** The generic fallback exists but isn't usable without guessing:**
661+ ` /servers/{serverName}/api/open-metadata/{urlMarker}/metadata-elements `
662+ (` MetadataExpert.create_metadata_element ` ,
663+ ` NewOpenMetadataElementRequestBody ` ) is real and live-confirmed present,
664+ with a top-level ` type_name ` field that could carry ` "SolutionPort" ` . But
665+ per this file's own ` pyegeria/models/models.py ` gotcha, that endpoint's
666+ ` properties ` field needs the verbose nested ` ElementProperties ` /
667+ ` propertyValueMap ` shape server-side, not the flat dict every bespoke
668+ wrapper uses — and with no ` SolutionPortProperties ` model to check
669+ property names against, building that body means hand-guessing what
670+ properties a ` SolutionPort ` actually takes. Consistent with this repo's
671+ established practice (see the multi-link audit's "left unbuilt rather
672+ than guessing at undocumented URLs or building against the awkward
673+ generic path speculatively") — not attempted.
674+
675+ ** Nothing to fix in pyegeria until Egeria adds a real create endpoint.**
676+ Once one exists, the follow-on work is small and well-precedented: a
677+ ` create_solution_port ` /` _async_create_solution_port ` wrapper in
678+ ` SolutionArchitect ` following the exact pattern ISSUE-84 just corrected
679+ (` NewElementRequestBody ` + ` contentStatus ` inside ` properties ` , no
680+ fictional separate request-body class), plus a ` Create Solution Port `
681+ Dr.Egeria compact command — the family's registration plumbing in
682+ ` register_solution_architect_processors() ` (` md_processing/dr_egeria.py ` )
683+ already handles this shape of addition with no new routing logic needed.
684+
685+ ** Not blocking anything urgent** on the trellis/Resource Explorer side —
686+ they're holding real port materialization until this exists server-side
687+ (tracked as their own Backlog item 8), or until a workaround surfaces.
688+
689+ ---
690+
625691## Open pyegeria items (including follow-ons blocked on an Egeria fix)
626692
627693Actionable in this repo. Some of these are fully blocked today — waiting
0 commit comments