Skip to content

docs: add ARCHITECTURE.md (current state); remove docs/service-api-architecture.md#63

Draft
emsearcy wants to merge 1 commit into
mainfrom
arch-389-architecture-md
Draft

docs: add ARCHITECTURE.md (current state); remove docs/service-api-architecture.md#63
emsearcy wants to merge 1 commit into
mainfrom
arch-389-architecture-md

Conversation

@emsearcy
Copy link
Copy Markdown
Contributor

@emsearcy emsearcy commented Apr 14, 2026

Summary

What's in the doc

§1 Overview — intro, transport modes, high-level elk flowchart showing all actors and data paths (clients, Auth0, MCP server internals, upstream APIs).

§2 Client Authentication & Authorization — stateless HTTP mode and per-request newServer() tool-gating; end-user OAuth2 JWT (PRM discovery, JWKS verify, scope/claim extraction); M2M client credentials; static API key stop-gap (prose note only, no diagram).

§3 Upstream Authentication & Authorization — CTE (RFC 8693) for end-user callers; MCP-server M2M V2 token for M2M/API-key callers; native LFX V2 pass-through vs. MCP-brokered service APIs (OpenFGA gate using the V2 token, then a separate per-service M2M client credentials token).

§4 End-to-End Flows — four sequence diagrams covering every caller/upstream combination:

  • Flow 1: End-user → V2 native pass-through (get_committee)
  • Flow 2: End-user → MCP-brokered service API (query_lfx_lens)
  • Flow 3: M2M client → V2 native pass-through (search_projects)
  • Flow 4: M2M client → MCP-brokered service API (onboarding_list_memberships)

Jira

ARCH-389

🤖 Generated with GitHub Copilot (via OpenCode)

Replace the internal working doc docs/service-api-architecture.md (committed
unintentionally in the implementation PR #39) with a canonical ARCHITECTURE.md
at the repo root describing the current state of the system.

Covers:
- Overview with high-level elk flowchart
- Client authn/authz: end-user OAuth2 JWT (PRM discovery, JWKS verify, scope
  gating), M2M client credentials, static API key stop-gap; stateless HTTP
  mode and per-request newServer() factory
- Upstream authn/authz: CTE (RFC 8693) for end-user callers; MCP-server M2M
  V2 token for M2M/API-key callers; native V2 pass-through vs. MCP-brokered
  service APIs (OpenFGA gate + per-service M2M token)
- Four end-to-end sequence diagrams covering all caller/upstream combinations

Closes #27 (superseded by PR #39 / commit 8de2df8).

🤖 Generated with [GitHub Copilot](https://github.com/features/copilot) (via OpenCode)

Signed-off-by: Eric Searcy <eric@linuxfoundation.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant