怎么使用Jira api 一下查出某个指定的project下面的所有用户

经常会有人问到这个问题,让我们先解一下题,什么叫一个project下的所有用户?

你会发现,项目下的所有用户,这个定义本身就不太明确,就有很多种,因为Jira非常灵活,其实没有project下的所有用户这个定义的。通常有以下几种理解方式

  • 项目设置中,各个角色下的所有用户
  • 有浏览项目权限的用户
  • 可以作为经办人被分配Issue的用户

查询项目中各个角色下的用户

  1. 首先查出project下有哪些role  

    GET /rest/project/{projectIdOrKey}/role
    CODE
  2. 查询role下面那些内容  

    GET /rest/role/{id}/actors
    CODE
  3.  你会发现上一步的查询结果中除了单个的用户还有group组, 有组的话还要去查这个组里的用户  

    GET /rest/group/member
    CODE
  4. 这些用户都得到之后需要把这些用户再放在一起去重


可以看到,这么操作是比较麻烦的,还有没有其他更简便的方式? 这就需要来直击问题的灵魂了,到底想查什么,如果项目不是给系统中所有人可见的或可操作的,我们是不是按照某个特定的权限(比如, 浏览、被分配、可执行工作流)更合适,下面就介绍如何使用 api 来获取项目中有某个特定权限的用户


查询项目中指定权限的用户

可以使用 Find users with all permissions  直接查找到

GET /rest/user/permission/search
CODE

这个 api  接受 的三叔有

参数类型描述
permissionsstringpermission以英文逗号分隔, 详见具体的 Permissions 
projectKeystring项目的Key
startAtint默认是0, 如果一次获取全,就可以不指定 
maxResultsint默认是50, 最大1000

权限可接受如下权限

ADMINISTER      
ASSIGNABLE_USER      
ASSIGN_ISSUE      
ATTACHMENT_DELETE_ALL      
ATTACHMENT_DELETE_OWN      
BROWSE      
BULK_CHANGE      
CLOSE_ISSUE      
COMMENT_DELETE_ALL      
COMMENT_DELETE_OWN      
COMMENT_EDIT_ALL      
COMMENT_EDIT_OWN      
COMMENT_ISSUE      

CREATE_ATTACHMENT      
CREATE_ISSUE      
CREATE_SHARED_OBJECTS      
DELETE_ISSUE      
EDIT_ISSUE      
LINK_ISSUE      
MANAGE_GROUP_FILTER_SUBSCRIPTIONS      
MANAGE_WATCHER_LIST      
MODIFY_REPORTER      
MOVE_ISSUE      
PROJECT_ADMIN      
RESOLVE_ISSUE      
SCHEDULE_ISSUE      

SET_ISSUE_SECURITY      
SYSTEM_ADMIN      
USE      
USER_PICKER      
VIEW_VERSION_CONTROL      
VIEW_VOTERS_AND_WATCHERS      
VIEW_WORKFLOW_READONLY      
WORKLOG_DELETE_ALL      
WORKLOG_DELETE_OWN      
WORKLOG_EDIT_ALL      
WORKLOG_EDIT_OWN      
WORK_ISSUE 

这个api 很有用

不幸的是这个接口有性能问题,在Jira 9.0之后将被移除