Commit 9ba403a5 authored by Sergio Gimenez's avatar Sergio Gimenez
Browse files

Merge branch 'docs/fm-internal-federation-statuses' into 'fix/outbound-stores-context-id'

docs(fm,oeg): pin FM's status set on the OEG-proxied federation routes

See merge request !7
parents f7e3bed5 ef422d59
Loading
Loading
Loading
Loading
+10 −0
Changes for fm/requirements-and-design.md: 10 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -597,6 +597,15 @@ use only (REQ-FED-19).
  not CAMARA `ErrorInfo` (OEG interface-contract §K.6a, ADR-0050): `400` (operator body fails
  schema), `401`/`403` (operator JWT/role), `503` (FM unreachable or times out), `502` (FM
  answered with something OEG cannot use). `X-Correlator` is set on all of them.
- **FM's status set on `/internal/partners/{partnerOpId}/federations/...`:** only the statuses
  OPG.04 v1.4.0 declares for these operations (`200`, `400`, `401`, `404`, `409`, `422`, `500`,
  `503`, `520`), every error as `application/problem+json` `ProblemDetails`; OEG turns anything
  else into its `502`. FM maps its EWBI-side statuses here, keeping the cause in `type`: partner
  unreachable → `503`, partner response invalid → `520`, `partner-not-active` and
  `agreement-expired` → `409`, `agreement-violation` → `422`, request validation → `400` with
  `invalidParams`. A partner rejection is relayed only as `400`/`404`/`409`/`422` (always
  `problem+json`); any other partner status becomes `520` `partner-rejected`, so a partner's
  `401` or `5xx` never reads as the operator's or FM's own.

### L.4 FM → SRM Internal HTTP

@@ -746,3 +755,4 @@ A locally connected App Provider queries device location for a subscriber on a p
| 2.0 | 2026-09-08 | §L.3b Errors bullet expanded: OEG's own faults on the proxy path (`400`/`401`/`403`/`502`/`503`, incl. the previously undeclared FM-unreachable `503`) use OPG.04 `application/problem+json` `ProblemDetails`, not CAMARA `ErrorInfo` — matches FM's relayed error shape (OEG interface-contract §K.6a, ADR-0050). FM's own EWBI error model (REQ-FED-14, §L.5) is unchanged. |
| 2.0 | 2026-09-08 | ADR-0051 corrects ADR-0046's scope/payload/namespace for the OEG-proxied surface (transport unchanged). §L.3b retitled "Federation-Lifecycle Proxy": now seven canonical OPG.04 operations (create/read/update/delete federation, `GetFederationContextId`, zone subscribe/unsubscribe) served by OEG on `/operatorplatform/federation/v1/*` for the operator-triggered *outbound* direction, with the raw GSMA payload forwarded byte-for-byte (no reshaping, no §L.2 admin shape) and a no-log/no-persist rule for the credential-bearing body. Inbound partner traffic on the same paths still terminates at FM — the two directions split at the ingress. REQ-FED-19/20 and the L.2 note rewritten; priority federation-management table note updated. |
| 2.0 | 2026-09-16 | ADR-0051 amended after FM-side review, reversing this file's own previous entry above: OEG's federation-lifecycle proxy goes back onto its own `/platform/v1/federation/partners/{partnerOpId}/federations/...` namespace, not the canonical OPG.04 prefix — the canonical URL loses partner addressing once there's an OEG hop in front of FM. §L.3b, the priority federation-management table, and REQ-FED-19/20 rewritten: eight operations now (`GetZoneData` added, `UpdateFederation` out of scope), query string forwarded, spec pinned to GSMA OPG.04 v6.0 / artifact v1.4.0, `partnerCallbackCredentials` dropped (not a v1.4.0 field), partner resolution tied to FM's not-yet-built partner registration (federation-manager#20). The "FM authenticates OEG's platform service credential (ADR-0042)" auth claim is corrected everywhere it appeared: this hop has no dedicated credential, only cluster-internal network-policy reachability; ADR-0042 is EWBI partner-facing auth only. ADR-0047/0048 renumbered to ADR-0050/0051. |
| 2.0 | 2026-09-29 | §L.3b: FM's status set on the `/internal` federation-lifecycle routes pinned to OPG.04 v1.4.0's declared statuses, with the mapping for FM's EWBI-side `403`/`502` and for partner rejections (REQ-FED-14; OEG §K.6a's `502` gate relies on it). |
+2 −2
Changes for oeg/interface-contract.md: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -272,7 +272,7 @@ is the sole exception to §K.6 — it does not extend to any other OEG endpoint.
| Operator request body fails schema validation | `400` | OEG-authored `ProblemDetails` |
| FM returns an OPG.04 error | passed through unchanged | FM's `ProblemDetails` |
| FM unreachable / connection timeout | `503` | OEG-authored `ProblemDetails` |
| FM answered but the response is unusable (unparseable, or a status/shape not in FM's contract) | `502` | OEG-authored `ProblemDetails` |
| FM answered but the response is unusable (unparseable, or a status/shape not in FM's contract — FM RD §L.3b) | `502` | OEG-authored `ProblemDetails` |

OEG relays FM's error bodies **byte-for-byte** — no rewrite, re-key, or re-wrap, and no
translation to `ErrorInfo`. OEG's own `ProblemDetails` follow §L.5's field meanings (`type`,
@@ -816,4 +816,4 @@ from startup configuration (ADR-0043).
| 2.0 | 2026-09-08 | K.0 gains an explicit note that the inbound EWBI prefix `/operatorplatform/federation/v1/*` is FM's, outside OEG's mount scheme and the `/api/*` rewrite; its public ingress (Nginx → `fm:8082`) is not deployed today, so there is no partner-facing EWBI ingress and inbound federation is a future release. N.7's inbound-EWBI note updated to match. Clarification of ADR-0046 / ADR-0020; no behaviour change. |
| 2.0 | 2026-09-08 | ADR-0051 corrects ADR-0046's scope/payload/namespace (transport kept). N.7 retitled "Federation-Lifecycle Proxy": now the seven canonical OPG.04 operations under `/operatorplatform/federation/v1/*` (create/read/update/delete federation, `GetFederationContextId`, zone subscribe/unsubscribe) for the operator-triggered *outbound* direction — not three under an OEG `/platform/v1/` namespace. Request/response bodies are the raw GSMA schemas (`FederationRequestData` / `FederationResponseData`) forwarded byte-for-byte; OEG does no reshaping and does not log/persist the credential-bearing body. K.0 rewritten to describe the two-component ingress split on the shared prefix; K.6/K.6a repointed to the seven canonical operations. |
| 2.0 | 2026-09-10 | `command.srm.service.deploy` field list no longer includes `federation_partner_ref` — OEG never populated it and, with federation decoupled from OEG (ADR-0051), never will. The field stays in SRM's `CommandEnvelopeV1` (set by FM); a note records that OEG omits it. |
| 2.0 | 2026-09-16 | ADR-0051 amended after FM-side review (its own status now reflects this): N.7 rewritten for OEG's own `/platform/v1/federation/partners/{partnerOpId}/federations/...` namespace, not the canonical OPG.04 prefix — eight operations (`GetZoneData` added), every path scoped by a registered `partnerOpId`, query string forwarded on every call, spec pinned to GSMA OPG.04 v6.0 / artifact v1.4.0 (`partnerCallbackCredentials` removed — not a v1.4.0 field), and the OEG→FM auth step corrected to cluster-internal network-policy reachability only (no dedicated Keycloak client was built; ADR-0042 covers EWBI partner-facing auth, not this hop). K.0 and K.6a updated to match; the two directions no longer share a URL split at the ingress. ADR-0047/0048 renumbered to ADR-0050/0051 to clear a collision with `develop` and `docs/platform-roles`. |
 No newline at end of file
| 2.0 | 2026-09-16 | ADR-0051 amended after FM-side review (its own status now reflects this): N.7 rewritten for OEG's own `/platform/v1/federation/partners/{partnerOpId}/federations/...` namespace, not the canonical OPG.04 prefix — eight operations (`GetZoneData` added), every path scoped by a registered `partnerOpId`, query string forwarded on every call, spec pinned to GSMA OPG.04 v6.0 / artifact v1.4.0 (`partnerCallbackCredentials` removed — not a v1.4.0 field), and the OEG→FM auth step corrected to cluster-internal network-policy reachability only (no dedicated Keycloak client was built; ADR-0042 covers EWBI partner-facing auth, not this hop). K.0 and K.6a updated to match; the two directions no longer share a URL split at the ingress. ADR-0047/0048 renumbered to ADR-0050/0051 to clear a collision with `develop` and `docs/platform-roles`. || 2.0 | 2026-09-29 | §K.6a: "FM's contract" for the `502` row now points at FM RD §L.3b, which pins the status set FM answers with on the federation-lifecycle routes. |