feat(datasource): Setup-app "Datasources" nav entry → metadata-admin engine#2091
Merged
Conversation
datasource is administered through the generic metadata-admin engine (it's a metadata type). Surface it from the Setup app like other capabilities: the datasource-admin plugin registers a navigation contribution into the `group_integrations` slot (ADR-0029 D7 — capability plugins own their slots; core setup-nav must not fill them, enforced by the platform-objects nav test). The entry is `type:'url'` → the metadata-admin engine route (`/apps/setup/component/metadata/resource?type=datasource`) rather than an object view, since a datasource is a definition, not business data. Verified live: the Setup app left menu shows "Datasources" under Integrations and opens the engine-hosted manager. platform-objects 55 + service-datasource 63 tests green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
📓 Docs Drift CheckThis PR changes 1 package(s): 5 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:
|
xuyushun441-sys
added a commit
that referenced
this pull request
Jun 21, 2026
…tion (#2112) The README mentioned "REST routes under /api/v1/datasources" but didn't enumerate them, and predated the Studio integration. Add: - a REST routes section (lifecycle + drivers catalog + by-name test + GET :name detail + introspection/sync routes), with the credential-split note; - a Studio integration section: datasource is managed through the metadata-admin engine (Setup → Integrations → Datasources), runtime records persist to sys_metadata and rehydrate on restart. Reflects #2083 (drivers), #2085 (remote-tables/object-draft/by-name test), #2086 (GET :name), #2091 (Setup nav), #2096 (persistence). Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds a Datasources entry to the Setup app's left menu (Integrations group). It opens the generic metadata-admin engine route for the
datasourcetype — datasource is a metadata type, so it's administered by the same engine as every other type, not a bespoke page.The
datasource-adminplugin registers the navigation contribution itself (into the capability-ownedgroup_integrationsslot), per ADR-0029 D7 — coresetup-nav.contributions.tsmust not fill capability-plugin slots (enforced by the platform-objects nav invariant test). Entry istype:'url'→/apps/setup/component/metadata/resource?type=datasource(a datasource is a definition, not business data, so not an object view).Pairs with
objectui PR (datasource registered as a metadata-admin engine resource: list/create/edit/test/sync + bespoke page removed).
Verification
platform-objects55/55 +service-datasource63/63 tests green.🤖 Generated with Claude Code