feat(project): add a team group for project access and roles #136
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/YT-83-project-team"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
yt projectcovered list / show / states / vcs, and nothing reproduced the Settings > People screen:project showsurfaces only the project leader anduser listis instance-wide, so "who has access to this project" had no answer from the CLI. YouTrack 2026.1 moved the project-team and role surface out of Hub into the REST API, which makes a single code path possible.Adds
yt project team list/add/remove/grant/revoke.listprints one row per holder (each direct member user, each member group, and the team group itself when it holds a role, which is how a role reaches every member at once) with that holder's project-scoped roles;--alladds the Other People with Access section, and--jsonemits the whole structure including the team entity and the raw role assignments.add/removechange membership andgrant/revokechange project-scoped role assignments, for a user (--user <login>) or a group (--group <name>).Client work lands in
youtrack-client:get_project_team,list_project_team_users,list_project_assigned_roles,add_project_team_member,remove_project_team_member,grant_project_role,revoke_project_role, plus theProjectTeam,UserGroup,Role,RoleHolder,RoleScope, andAssignedRolemodels. Every collection reads through its own pageable subresource (team/ownUsers,team/groups,team/users,/api/assignedRoles,/api/groups,/api/roles) because an entity read cannot page its nested collections (users($top:2;id)is rejected as invalid query syntax), so nothing is capped at the server's 42-row default. Membership writes go throughPOST /api/admin/projects/<id>/teamsinceteam/usersis GET-only, and re-read the team afterwards so a write the server ignored is reported instead of falsely confirmed./api/assignedRolestakes no project filter (query=project:<X>is rejected as an unknown field), so assignments are paged and filtered onscope.project.id.The endpoint shapes were probed against the live 2026.2 instance and are recorded as comments next to each client function, the way the vcsIntegrationSettings functions already are. The four write verbs honour the process-wide
--dry-run, and a 403 is reported as the permission the account is missing (Read Project for reads, Update Project for writes) rather than a raw HTTP error.#YT-83