TEDY.09 — Ecosystems
State: Proposed (built: list + add/edit)
Template: tool-feature. Prefix: TEDY.
Feature grouping
Root spec for the Ecosystems family (a “Management” section resource). Depends on TEDY.08 Servers for its server pick-list.
Overview
An Ecosystem is a named, coded collection that groups terminology servers and is exposed publicly as an ecosystem.json document (FHIR TX ecosystem format) for an external router. Many-to-many with servers. Served off /ecosystems (NOT /ts/*); numeric id. Not a versioned resource — a plain list + form CRUD.
Data model (libs/tedy/src/lib/types/ecosystem.ts)
Ecosystem: id:number, code, names:LocalizedName, formatVersion (server-defaulted "1", read-only), description, active, serverIds:number[].
EcosystemSearchParams: textContains?, ids?, codes? (+ base paging).
REST API (base /ecosystems)
GET /ecosystems?{params}→SearchResult<Ecosystem>(Space.read).GET /ecosystems/{id}→Ecosystem(Space.read).POST /ecosystems/PUT /ecosystems/{id}→ upsert (Space.write; duplicatecode→ error).- Public, unauthenticated:
GET /public/ecosystems/{code}→ theecosystem.jsondocument (linked/downloaded by the UI, never parsed).
Screens (built)
- List — Code (→ edit) · Name · Servers (tags resolved to server codes) · Active · a
View ecosystem.jsonlink; search →textContains;Add ecosystemgated on*.Space.write. - Add / Edit — one card:
code(immutable on edit), multi-languagename(required), read-onlyformatVersion,description,active,serverIdsmulti-select. Save viaPOST/PUT, then back to the list.
Routes & nav
/ecosystems (list), /ecosystems/new, /ecosystems/:id/edit. Nav: Management → Ecosystems (ClusterOutlined).
Privileges
*.Space.read (view/list), *.Space.write (add), {id}.Space.write (edit).
Built artefacts
- Data layer:
types/ecosystem.ts,client/ecosystemClient.ts(searchEcosystems,loadEcosystem,saveEcosystem,ecosystemJsonUrl),hooks/useEcosystems.ts(useEcosystems,useEcosystem,ecosystemKeys). - Screens:
pages/EcosystemList.tsx,pages/ecosystem/EcosystemForm.tsx. Routes +Managementnav entry.
See open questions in TEDY-new-modules-open-questions.md.