Repository navigation
Add management operations for agents, groups, roles and users - #41
Merged
Merged
Conversation
🔀 Cross-SDK feature parity, ports raisedThis pull request is labelled Ports (DO NOT EDIT)
3 of 3 sibling SDKs accounted for. Every sibling SDK is accounted for. The contract is in the SDK development specification. |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
brionmario
force-pushed
the
feat-cp-dp-separation
branch
from
October 22, 2026 11:33
e9568c9 to
704e1c7
Compare
This was referenced Oct 22, 2026
brionmario
force-pushed
the
feat-cp-dp-separation
branch
from
October 26, 2026 11:51
57a7a15 to
a7cf716
Compare
brionmario
force-pushed
the
feat-cp-dp-separation
branch
2 times, most recently
from
October 26, 2026 12:42
e7eaaa9 to
515684e
Compare
DonOmalVindula
previously approved these changes
Oct 27, 2026
Adds group and role management to the Android SDK alongside the existing user and agent operations: list, get, create, update and delete, group members and role assignments, agent and user groups and roles, agent types and user types, each with its own endpoint setting. Helpers read the permissions an access token grants and match them the way the server does, and the granted permissions are exposed through the SDK state. Compose admin components cover users, groups, roles and agents (list, create, details, members, permissions and assignments), each with a Base variant and an optional trailing content lambda that replaces the built-in UI. UserList and AgentList search on the server, and RoleAssignments filters by assignee type. Admin table cells render in the theme's content color. The Compose components are now grouped by function instead of by kind: auth (with buttons, flow and guards), account, admin and common. BREAKING CHANGE: the components shipped in v1.5.0 (unchanged since v1.4.0) move to new packages under dev.thunderid.compose.components: actions -> auth.buttons, actions.adapters -> auth.buttons.adapters, flow -> auth, guards -> auth.guards, presentation.auth -> auth (FlowErrorBanner -> auth.flow), presentation.user -> account, presentation.organization -> common. Apps update their imports; nothing else changes. The playground exercises the new operations and components, including custom rendering through the content lambda. The PR builder can build the quickstart and run the E2E suite against a samples pull request: a "Samples-Ref:" line in the pull request body names the thunder-id/samples ref to fetch instead of main, so a change that breaks the quickstart can be tested with the sample fix it ships with. Refs thunder-id/thunderid#5162 Signed-off-by: Brion <info@brionmario.com>
brionmario
force-pushed
the
feat-cp-dp-separation
branch
from
October 27, 2026 05:09
515684e to
36c2cd8
Compare
DonOmalVindula
approved these changes
Oct 27, 2026
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.
Purpose
Adds agent, group, role and user management to the Android SDK: the management operations and Compose admin components for each. Roles carry their permissions, and the SDK can read the permissions an access token grants to decide what to show. This brings it in line with the equivalent JavaScript change (thunder-id/javascript-sdks#130).
Approach
Endpoints: groups, roles, agent types and user types join the existing management endpoint settings. Each collection defaults to
{baseUrl}/{collection}.Management APIs:
Permissions: helpers that read the permissions an access token grants and match them the way the server does (
system:usercoverssystem:user:view), and granted permissions exposed through the SDK state.UI: Compose admin components for users, groups, roles and agents (list, create, details, members, permissions and assignments), each with a
Base*variant, with their strings.Custom rendering: every admin component,
Base*and connected, takes an optional trailingcontentlambda, the same pattern asBaseSignIn, and renders it in place of its own UI. It receives the component's state: rows, paging and selection for a list; values, setters,submitand validity for a form; the record and the allowed actions for details, members, assignments and permissions.Search and filters:
UserListandAgentListsearch on the server (users by username or email, agents by name), andRoleAssignmentsfilters by assignee type. The server matches one attribute exactly, so the search applies on submit. The agents API gainsfilter, andManagementFilter.equalitybuilds the expression. Groups, roles and group members have no server filter, so they stay unfiltered.Layout: the Compose components are grouped by function instead of by kind:
auth/(withbuttons/,flow/andguards/),account/,admin/andcommon/. The data layer stays inmanagement/. See Breaking Changes.Related Issues
Related PRs
Samples-Ref: refs/pull/14/head
Playground
The playground exercises the new APIs:
UserList,GroupCreateandUserDetailswith Compose views through the trailingcontentlambdaTHUNDERID_ENDPOINT_<KEY>overrides one management collection's URL. The SDK gaps the playground hit are listed in its README.Screenshots
From the playground on the Android emulator.
Admin components
Custom rendering through the
contentlambdaVerified locally:
./gradlew ktlintCheck assembleDebugin the playground, which builds the SDK as an included build, and./gradlew testDebugUnitTest ktlintCheckfor the SDK. The Custom rendering stories were not run on an emulator. The live management checks have only run signed out so far.