如何获取使用 Jira Rest APIs 的所有用户的列表。
我试过了:-
/rest/api/latest/user/search?username=
在这里,我尝试使用空白用户名字符串,但它没有返回完整的用户列表。只有当用户名的长度至少为 1 时,我们才会得到一些结果。
如何从 Jira rest API 获取完整的用户列表?
我不认为 Rest API 有这种能力。据我所知,您必须选择不同的方式,例如,您可以使用Soap API来执行此操作,如问题JIRA SOAP API : get the list of users中所示。另一种方法可能是直接查询数据库。
您可以创建一个循环,在其中您将遍历所有字母和另一个循环以显示每个名称以该字母开头的用户的结果。像这样的东西:
char[] ch = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int j = ch.length;
for (int i = 0; i < ch.length; i++)
{
System.out.print(Character.toString(Character.toUpperCase(ch[i])));
--j;
String projects = invokeGetMethod(auth, BASE_URL+"/rest/api/2/user/search?username="+Character.toString(ch[i]));
System.out.println(projects);
JSONArray projectArray = new JSONArray(projects);
for (int k = 0; k < projectArray.length(); k++) {
JSONObject proj = projectArray.getJSONObject(k);
System.out.println("Key:"+proj.getString("key"));
}
}
private static String invokeGetMethod(String auth, String url) throws AuthenticationException, ClientHandlerException {
Client client = Client.create();
WebResource webResource = client.resource(url);
ClientResponse response = webResource.header("Authorization", "Basic " + auth).type("application/json")
.accept("application/json").get(ClientResponse.class);
int statusCode = response.getStatus();
if (statusCode == 401) {
throw new AuthenticationException("Invalid Username or Password");
}
return response.getEntity(String.class);
}
/rest/api/2/user/search?username=%
作品。
/rest/api/2/group/member?groupname=
如果您是管理员用户,则可以使用。否则,这是不可用的。
我有时在 jira-users 上使用 SOAP getGroup 方法来获取 jira-users 的成员,但它似乎在 5K 左右错过了一些用户,你必须以 JIRA 管理员用户身份运行它。如果可以的话,更好的方法是直接访问 AD。
这是我在 perl 中使用的示例。我相信它可以改进,但它对我有用。只需相应地更改“用户”和“密码”。
#!/usr/bin/env perl
use strict;
use warnings;
use 5.10.0;
use Data::Dumper;
use JIRA::REST;
$Data::Dumper::Sortkeys = 1;
my $jira='http://jira:8080';
my $jirarest = JIRA::REST->new($jira, 'user', 'password');
my %users;
for my $c ( 'a' .. 'z', '0'..'9' ,'_') {
say "Scanning '$c'";
my @u = @{$jirarest->GET("/user/search?username=$c&includeInactive=1&maxResults=1000")};
say scalar (keys @u);
@users{ map {$_->{name}} @u } = @u;
}
say Dumper(\%users);
say scalar (keys %users);
主要假设是没有一个字符有超过 1000 个条目。我将调查 startAt 参数,看看它是否支持某种分页。
我想获取我的电子邮件域中的所有用户。因为 JIRA 使用 username 参数搜索 username、displayName 和 emailAddress,所以我需要做的就是指定 username=mydomain.com 作为参数,然后我就得到了我的电子邮件域中的完整用户列表。如果您想将搜索范围扩大到多个域,请尝试 username=.com。嗯。