Skip to content

feat(business-unit): interface entitlement control (Phase 1 platform)#39

Merged
samutpra merged 1 commit into
mainfrom
feat/interface-entitlement
Jul 16, 2026
Merged

feat(business-unit): interface entitlement control (Phase 1 platform)#39
samutpra merged 1 commit into
mainfrom
feat/interface-entitlement

Conversation

@samutpra

Copy link
Copy Markdown
Contributor

Platform half of Interface Brands + Platform Visibility — Phase 1 (spans 3 repos).

What

Super-admin control for which external-system interface brands a business unit is licensed
for. A self-contained card on BusinessUnitEdit (advanced slot, existing BUs only) loads and
saves the BU's entitlement via the gateway's super-admin-gated endpoints.

  • interfaceCatalog.ts — interface brand keys (<category>_<brand>) grouped by category,
    mirroring the inventory frontend's registry
  • interfaceEntitlementService.ts — GET/PUT
    /api-system/platform/business-units/:bu_code/interface-entitlement
  • InterfaceEntitlementCard.tsx — grouped checkbox selector with per-category All/None and its
    own save; an empty selection means "not restricted" (BU sees every interface), matching
    the gateway's show-all default
  • wired into BusinessUnitEdit, gated on isSuperAdmin

Depends on

The gateway PR (endpoints + PlatformSuperAdminGuard). The platform app-id must allowlist
platform-bu-interface.list / .set.

Verification

tsc --noEmit clean · 3 component tests passing · new files lint clean.

🤖 Generated with Claude Code

Super-admin control for which external-system interface brands a business unit is
licensed for. Adds a self-contained card on the BusinessUnitEdit advanced slot that loads
and saves the BU's entitlement via the gateway's super-admin-gated endpoints.

- interfaceCatalog.ts — interface brand keys (`<category>_<brand>`) grouped by category,
  mirroring the inventory frontend's registry
- interfaceEntitlementService.ts — GET/PUT
  `/api-system/platform/business-units/:bu_code/interface-entitlement`
- InterfaceEntitlementCard.tsx — grouped checkbox selector with per-category All/None and
  its own save; an empty selection means "not restricted" (BU sees every interface),
  matching the gateway's show-all default
- wired into BusinessUnitEdit (existing-BU only), gated on isSuperAdmin

tsc clean; 3 component tests pass; new files lint clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@samutpra
samutpra merged commit ccb0754 into main Jul 16, 2026
5 checks passed
@samutpra
samutpra deleted the feat/interface-entitlement branch July 16, 2026 11:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant