feat(BA-6922): AppConfig fragment search REST v2 API (admin + scoped)#13020
Draft
jopemachine wants to merge 5 commits into
Draft
feat(BA-6922): AppConfig fragment search REST v2 API (admin + scoped)#13020jopemachine wants to merge 5 commits into
jopemachine wants to merge 5 commits into
Conversation
This was referenced Jul 22, 2026
jopemachine
force-pushed
the
feat/BA-6922-app-config-fragment-search-rest-v2
branch
from
July 22, 2026 05:54
41c78f9 to
b0c69a1
Compare
jopemachine
marked this pull request as draft
July 22, 2026 05:55
jopemachine
force-pushed
the
feat/BA-6922-app-config-fragment-search-rest-v2
branch
from
July 22, 2026 05:59
b0c69a1 to
a124140
Compare
jopemachine
force-pushed
the
feat/BA-6921-app-config-fragment-rest-v2
branch
from
July 22, 2026 06:04
40c2ce9 to
2ff4f12
Compare
jopemachine
force-pushed
the
feat/BA-6922-app-config-fragment-search-rest-v2
branch
from
July 22, 2026 06:06
a124140 to
ffcf516
Compare
Base automatically changed from
feat/BA-6921-app-config-fragment-rest-v2
to
main
July 22, 2026 06:13
jopemachine
force-pushed
the
feat/BA-6922-app-config-fragment-search-rest-v2
branch
from
July 22, 2026 06:20
ffcf516 to
2962495
Compare
Fragment search surface, split out of the write PR (BA-6921, #12928): system-wide admin search (superadmin) and principal-scoped search (auth), with the filter/order/scope DTOs and the filter/order query converters. Stacks on BA-6921 and reuses its AppConfigFragmentNode DTO. The scoped search is the REST surface of the visible-fragments query (BA-6810).
jopemachine
force-pushed
the
feat/BA-6922-app-config-fragment-search-rest-v2
branch
from
July 22, 2026 06:22
2962495 to
4d0bce1
Compare
This was referenced Jul 22, 2026
`POST /scoped-search` matches neither documented form: the current
`/{entity}/{scope_type}/{scope_id}/search` nor the forward
`/{entity}/scoped/search`. `scheduling-history` already ships the latter as
`/kernels/scoped/search`, so follow it.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This reverts commit 03e4e08.
2 tasks
…nts" This reverts commit 9f5a619.
Pair the system-wide search with the scoped one: `/admin/search` alongside `/scoped/search`, so the audience is in the path for both instead of being implied by the bare `/search`. Co-Authored-By: Claude Opus 4.8 (1M context) <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.
📚 Stacked PRs
Part of the AppConfigFragment / AppConfig stack under BEP-1052 (epic BA-5781). This branch is on
mainand waits on nothing — everything below it has merged. What it does have is downstream PRs that rewrite the very actions this adapter calls, so the order still matters.Merged below this PR
refactor(BA-6948): storeapp_config_fragments.scope_idas a nullable UUIDfeat(BA-6921): AppConfig fragment write REST v2 API (CRUD)AppConfigFragmentNode, the adapter, and theapp-config-fragmentssub-app this PR extends👉 This PR —
feat(BA-6922): fragment search REST v2 (admin + scoped). One net commit onmain; mergeable on its own.Must merge after this PR — both currently branch off
main, and both change the action API this PR's adapter calls, so if either lands first this PR stops compiling:refactor(BA-6922): model the fragment scoped search as a scope actionScopedSearchAppConfigFragmentActiongoes fromBaseBulkActionwithitems: list[SearchableActionTarget]to aBaseScopeActionwith a singlescope: AppConfigFragmentSearchScope;DomainAppConfigFragmentTarget/UserAppConfigFragmentTargetare deleteditems=targets; theAppConfigFragmentScopeDTO (lists of domain/user ids) collapses to one scoperefactor(BA-6922): base the app config admin searches on the global actiondata→items;admin_searchmoves toGlobalActionProcessoraction_result.datainadmin_searchandscoped_search; the processor swap is transparent at the call siteNeither is blocked by review here — they are blocked by the fact that their rebase target is this diff. #13032 and #13037 also overlap each other (
app_config_fragment/actions/base.py,processors.py— both introduceAppConfigFragmentGlobalAction), so whichever of the two lands second takes a small merge as well.Sibling, not a dependency
feat(BA-6556): merged AppConfig REST v2 read API. Also descends from feat(BA-6921): AppConfig fragment write REST v2 API (CRUD) #12928, but shares no file or symbol with this PR. Either order.Related — may rename the routes added here
doc: require an audience qualifier segment in REST v2 URLs. fix(BA-6922): use the scoped search route shape the convention documents #13035 applied that shape (POST /scoped/search, asscheduling-historyalready ships) to this branch and was reverted in-branch (03e4e08 → 9f5a619) until the convention is settled. This PR therefore shipsPOST /search+POST /scoped-search; any rename follows doc: require an audience qualifier segment in REST v2 URLs #12990, not this PR.Summary
Fragment search REST v2 surface, split out of the write PR (BA-6921, #12928). Two variants:
POST /v2/app-config-fragments/search— system-wide paginated search (superadmin).POST /v2/app-config-fragments/scoped-search— principal-visible search (auth), the REST surface of the visible-fragments query (BA-6810, feat(BA-6810): AppConfigFragment visible-fragments query (repository layer) #12706).What's included
AppConfigFragmentFilter,AppConfigFragmentOrder,AdminSearchAppConfigFragmentInput,AppConfigFragmentScope,ScopedSearchAppConfigFragmentInput, plustypes.py(order field + scope-type filter) andSearchAppConfigFragmentPayload.admin_search/scoped_search+ the filter / order / scope-type query converters.app-config-fragmentssub-app.Reuses
AppConfigFragmentNodefrom #12928. No processor change — theadmin_search/scoped_searchservice processors already exist; this PR only adds the API surface.Open item carried from #12930
AppConfigFragmentScope(scoped-search) takesdomain/userid lists but has no way to name the public scope. Whether a scoped search should be able to target public fragments is a design decision left open on the original PR — not resolved here. #13032 answers it downstream by replacing the lists with a singlescope_type+scope_id, wherepublicis expressible; this PR keeps the shape it was reviewed with.🤖 Generated with Claude Code
📚 Documentation preview 📚: https://sorna--13020.org.readthedocs.build/en/13020/
📚 Documentation preview 📚: https://sorna-ko--13020.org.readthedocs.build/ko/13020/
📚 Documentation preview 📚: https://sorna--13020.org.readthedocs.build/en/13020/
📚 Documentation preview 📚: https://sorna-ko--13020.org.readthedocs.build/ko/13020/