Brána a registr služeb api.onhost.cz (návrh, 2026-11-08)
Stav: NÁVRH, nic nenasazeno. DNS a deploy jen po Adrianově „ano“.
Cíl
Jeden vstup pro partnery a AI klienty: objevování služeb ekosystému, jednotné klíče a kvóty, jeden MCP vstup. Projekty zůstávají samostatné – brána je volitelná fasáda, ne povinný průchod.
Stavíme na existujícím
- P8 partnerské API v onhost-hosting (
/v1/partner/*,docs/runbooks/ecosystem-partner-api.md): aplikace ONhost ID, scope, sandbox/ostrý provoz se čtyřma očima, odběry s EgressGuard, limit 120/min/app. → brána nepřidává druhý registr aplikací, používá tento. packages/saas-kit(Bus Envelope, SignatureVerifier, OnhostIdClient) → migrace na CloudEvents/Standard Webhooks přesecosystem-kit(přechod s oběma hlavičkami).
Komponenty
1. Registr služeb – periodicky (15 min) stahuje /.well-known/onhost-service.json z allowlistu domén (konfig, ne uživatelský vstup), validuje proti schématu, ukládá poslední platnou verzi. GET https://api.onhost.cz/v1/services vrací souhrn (veřejné).
2. API fasáda – https://api.onhost.cz/v1/<služba>/… → reverse proxy na base_url služby po ověření tokenu OnPass (client credentials, aud). Rate limit per app (FixedWindowLimiter + Redis), problem+json, RateLimit-*. Žádné cachování odpovědí s osobními údaji.
3. Agregovaný MCP – https://api.onhost.cz/mcp vystaví nástroje všech služeb s prefixem <služba>. jen pro scope, které klient má; volání předá MCP serveru služby. Jen read-only. Za ONHOST_ECOSYSTEM_GATEWAY_MCP=false.
4. Katalog událostí – sjednocený seznam events z manifestů = co si partner může v P8 odebírat.
Umístění
Nová doména domains/EcosystemGateway v onhost-hosting (tamní vlákno je vlastník hot souborů routes/*, config/onhost.php). Tohle vlákno dodá: kontrakt (tento dokument + schémata), kit a testy; implementaci v onhost-hosting provede vlákno hostingu nebo toto vlákno v samostatné větvi po domluvě. Příznaky: ONHOST_ECOSYSTEM_GATEWAY_ENABLED=false, …_GATEWAY_MCP=false.
Bezpečnost
- Registr stahuje jen z allowlistu, https, EgressGuard, limit velikosti 64 kB, timeout 5 s.
- Proxy nepřeposílá
Cookie,Authorizationklienta; ke službě jde nový krátký token brány (token exchange). - Audit: app, služba, cesta (bez query), status, latence.
- Fáze: 1) registr +
/v1/services(read-only), 2) MCP agregace read-only, 3) API fasáda. Každá fáze za vlastním příznakem.