+175
−0
File changed.
Preview size limit exceeded, changes collapsed.
Loading
Follow-up fixes to the federation-lifecycle proxy (/platform/v1/federation/partners/{partnerOpId}/federations/...)
merged in refactor/fm, so OEG matches the spec (oeg/interface-contract.md §K.6a, §N.7; ADR-0050, ADR-0051)
and FM's actual /internal routes.
Errors are always GSMA ProblemDetails on this surface (§K.6a)
type, title, status, detail, cause (+ invalidParams for
validation errors). detail is a fixed sentence per case; no exception text or upstream diagnostics.ErrorInfo on federation paths.application/problem+json, or a success body that doesn't match the operation's schema
becomes OEG's 502. Anything that passes is still relayed byte-for-byte.Relay behaviour
X-Correlator is always forwarded to FM, including the one OEG generates when the
caller sends none, so FM's logs and the caller's response share one id.Schema fixes against OPG.04 v1.4.0 and FM
ZoneSubscribe: availZoneNotifLink is optional. v1.4.0 only requires
acceptedAvailabilityZones, and FM fills in its own notification link.partnerOpId must be a UUID. FM assigns partner ids as UUIDs and its /internal routes accept
nothing else, so a slug used to pass OEG and then fail at FM as a confusing 502; it's now an
immediate 400 naming partnerOpId.Chore
uv.lock relocked for the sqlalchemy[asyncio] dependency change (pulls in greenlet).tests/unit/test_federation_manager_endpoints.py extended: ProblemDetails shape for every OEG
error case, framework-level errors on federation paths, the FM-contract 502 gate,
X-Correlator forwarding, ZoneSubscribe without availZoneNotifLink, and non-UUID partnerOpId.operator role check on these routes: waits for feat/keycloak to land in develop.File changed.
Preview size limit exceeded, changes collapsed.