TEMS TEMS dataspace
EBU
dev home.dndm.ch

TEMS β€” three-participants topology

Local Trusted European Media data Space staging stack: a governance authority, three participants (EBU matchmaker, News-Agg consumer, AFP media provider), and the consuming apps (dashboards, Source Explorer, gateway, local indexer). Everything below runs on a single Docker Swarm node and is reachable on the public internet through Let's Encrypt-fronted nginx.

Governance Matchmaker Consumer Media Provider Internal service

πŸ“š Developer documentation for adopting these services lives at tems-docs.home.dndm.ch β€” API references (Source Explorer ingestion, Local Indexer indexing) plus the integration guide (basePath-aware SPA, edge nginx, DID:web JWT validator).

Topology

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ EBU corporate Keycloak (external, prod identity) β”‚ β”‚ keycloak.idp-ebu.ch Β· realm: tems β”‚ β”‚ Manages real EBU users β€” single SSO across TEMS appsβ”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ federated SSO + broker target for `ebu` β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Governance (Authority) β”‚ β”‚ β€’ Keycloak local (realm: common) β”‚ β”‚ β€’ Federated Catalogue Β· DID resolverβ”‚ β”‚ β€’ Brokers : ebuβ†’corp KC, afp+news- β”‚ β”‚ aggβ†’local KCs (containers) β”‚ β””β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”˜ β”‚ broker β”‚ broker β”‚ broker β”‚ (afp) β”‚ (news-agg) β”‚ (ebu) β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ └─────────┐ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ AFP β€” Media Provider β”‚ β”‚ β”‚ β”‚ EDC β€’ IdH β€’ KC local β€’ Dash. β”‚ β”‚ β”‚ β”‚ TEMSAcquisitionService β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β–Ό β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ EBU β€” Matchmaker β”‚ β”‚ News-Agg β€” Consumer β”‚ β”‚ EDC β€’ IdH (no local KC) β”‚ β”‚ EDC β€’ IdH β€’ KC local β”‚ β”‚ Dashboard β”‚ β”‚ Dashboard β€’ Gateway β”‚ β”‚ Source Explorer (BFF + SPA) │◄─ingest── (SE proxy via signed_claimβ”‚ β”‚ (auth β†’ EBU corporate KC) β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β–² β”‚ push (OAuth2 internal) β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Local Indexer (EBU) β”‚ β”‚ RQ pipeline: chunk β†’ embed β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Endpoints

Governance

Federated Authority
DID
did:web:tems-gov.home.dndm.ch
DID doc
/.well-known/did.json
Keycloak
/auth/admin (realm common)
Catalogue UI
/catalogue/
FC server
/fc/

EBU

Matchmaker
DID
did:web:ebu.home.dndm.ch
Connector
ebu.home.dndm.ch
Identity
EBU corp KC Β· realm tems (external)
Dashboard
dashboard-ebu.home.dndm.ch
Catalogue UI
/catalogue/
Source Explorer
se-ebu.home.dndm.ch
Local Indexer
local-indexer-ebu.home.dndm.ch

News-Agg

Consumer
DID
did:web:news-agg.home.dndm.ch
Connector
news-agg.home.dndm.ch
Keycloak
/auth/admin (realm edc)
Dashboard
dashboard-news-agg.home.dndm.ch
Catalogue UI
/catalogue/
Gateway
gateway-news-agg.home.dndm.ch

AFP

Media Provider
DID
did:web:afp.home.dndm.ch
Connector
afp.home.dndm.ch
Keycloak
/auth/admin (realm edc)
Dashboard
dashboard-afp.home.dndm.ch
Catalogue UI
/catalogue/
Acquisition
/acquire-offering
Each Catalogue UI uses federated SSO via Governance: click Login β†’ governance broker β†’ your participant's Keycloak β†’ back. Tokens issued by each Keycloak include aud=<participant> via the tems-audience mapper.

Operational entry points

Keycloak β€” DID resolution & OIDC

Issuers
ebu / tems (external corp KC)
news-agg / edc
afp / edc
tems-gov / common

Identity Hubs β€” Credentials

DID docs
ebu
news-agg
afp
tems-gov

Gateway JWKS β€” signed_claim

JWKS
gateway-news-agg
Health
/health
Adoption
tems-docs / gateway integration

Developer documentation

Portal
tems-docs.home.dndm.ch
Source Explorer β€” Ingestion API
/docs/source-explorer/ingestion
Local Indexer β€” Indexing API
/docs/local-indexer/index
Gateway β€” Integration guide
/docs/gateway/integration