Data Enrichment Page
Bind enricher functions to content repositories — the page where you decide which BAPIs auto-fire on which sources.
The Data Enrichment page (/data-enrichment) is the bindings view. It shows one card (or row) per content repository in the workspace, with its currently-bound enricher functions and the controls to add / activate / unbind them.
It is the counterpart to the RFC Console:
| Page | What it owns |
|---|---|
| RFC Console | The library of saved functions — build, test, save, rename, duplicate, delete. |
| Data Enrichment | The bindings between functions and repositories — which functions auto-fire on which sources. |
Repository cards
Each repository in the workspace is rendered once. The card shows:
- The repository's name +
repo_id(e.g.A1) - Its protocol type (ArchiveLink / OData / CMIS)
- The functions currently bound to it, with status pills
If a repository has no bound functions, the card displays a "No enrichers attached" empty state with an inline Add functions CTA.
Layout toggle
Top-right of the page: grid / list view toggle. The toggle applies to the repository layout — not to the functions inside each repo. Preference is persisted in localStorage under view:data-enrichment.
Per-function row actions
Within a repository card, each bound function is a row with three actions:
- Power — toggle active / inactive. Inactive functions stay bound but stop firing on new documents. Existing
document_enrichmentsrows are untouched. - Unbind — return the function to the workspace orphan pool (the library still owns it; the binding is dropped). This is the only "remove" affordance — there's no separate delete here; deletion lives in the RFC Console.
Add functions modal
Each repository card has an Add functions button. It opens a modal listing the workspace's orphan functions (those not yet bound to any repo) plus the ones currently bound to this repository.
Cross-repo poaching is prevented by design: you cannot bind a function that is already bound to a different repository. To move a function from repo A to repo B:
- Open Data Enrichment for repo A.
- Unbind the function. It returns to the orphan pool.
- Open Data Enrichment for repo B.
- Add it from the modal.
This keeps the (function, repository) relationship one-to-one for now — the same function cannot fire on two different repos simultaneously. Use Duplicate in the RFC Console if you need an independent copy for a second repo (credentials carry over).
Orphan summary
At the bottom of the page you'll see a small counter:
N functions in library not bound to any repository. They'll show up in the "Add functions" dialog above when you bind one.
That counter is the orphan pool — newly-created or recently-unbound functions live here until you bind them.
Once bound, what happens
The instant a function is bound + active, it auto-fires on every new document for that repository — see Data Enrichment Overview for the ingest-time flow. Existing documents in the repo are not backfilled (a manual per-document Fetch button on the document detail page lets you run it on an existing doc one at a time).
Where to manage the function itself
Anything that's a property of the function (not the binding) lives in the RFC Console:
- Rename / re-tag → Pencil icon in the library list, or the saved function's detail URL
/rfc-console/<slug> - Edit BAPI / params / connection → load the function from the library list, edit the form, click Update
- Whitelist / blacklist → on the function's detail page
- Delete → Trash icon in the library list
See RFC Console for the full list.