2012-07-24 2 views
3

Как я могу получить список всех пользователей, использующих Jira Rest Apis.Jira Rest Api для получения полного списка пользователей

Я попытался: -

/rest/api/latest/user/search?username= 

Здесь я попытался с пустой строкой имени пользователя, но не возвращает полный список пользователей. Мы получаем только некоторые результаты, когда имя пользователя имеет длину не менее 1.

Как получить полный список пользователей из API Jira rest API?

ответ

2

Я не думаю, что у Rest API есть эта способность. Насколько я знаю, вам придется выбирать по-другому, например, вы можете использовать Soap API, чтобы сделать это, как показано в этом вопросе JIRA SOAP API : get the list of users. Другой способ может быть querying the DB directly.

+0

SOAP API является ** «Поддерживается, но нет будущего развития» ** также не рекомендуется Jira. https://developer.atlassian.com/display/JIRADEV/Creating+a+JIRA+SOAP+Client –

+0

Да, они прекратили разработку SOAP API и сосредоточились на разработке REST API, но пока API REST не является полным, следовательно, можно использовать только для простых задач. SOAP API не будет разрабатываться в будущем, но будет поддерживаться и в будущих выпусках. – Kuf

0

Я когда-нибудь использовал метод SOAP getGroup для пользователей jira, чтобы получить пользователей jira-пользователей, но, кажется, пропустил некоторых пользователей примерно в 5K, и вам нужно запустить его как пользователь admin JIRA. Лучше всего обратиться к AD напрямую, если сможете.

+0

SOAP API ** «Поддерживается, но не будущее развитие» ** также не рекомендуется Jira. https://developer.atlassian.com/display/JIRADEV/Creating+a+JIRA+SOAP+Client –

1

Вы можете создать цикл, в котором вы пройдете все буквы и другой цикл, чтобы показать результат для каждого пользователя, имя которого начинается с этой буквы. что-то вроде этого:

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); 
    } 
+0

Это отличный взлом! Позволяет ли JIRA разрешать пользователям только 26 символов? Я знаю, что видел числовые идентификаторы пользователя и, возможно, символы с подчеркиванием в качестве первого символа. – mdoar

+0

Да, вы правы, это позволяет использовать числа в userid ... Итак, в основном вы должны добавить цифры от 0 до 9 в списке и попробовать их слишком. – Kirill

0

Это пример, который я использую в 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 и посмотреть, есть ли там поддержка какого-либо пейджинга.

-1

Я хотел бы получить всех пользователей в моем домене электронной почты. Поскольку JIRA ищет имя пользователя, displayName и emailAddress с параметром имени пользователя, мне нужно было указать имя пользователя = mydomain.com в качестве параметра, и я получил полный список пользователей в моем домене электронной почты. Если вы хотите расширить поиск по нескольким доменам, попробуйте username = .com. Hth.

-1

/rest/api/2/user/search?username=% работает.

+0

Хотя этот код может решить проблему, всегда следует рассмотреть возможность добавления объяснения к нему. – BDL

0

You can use/rest/api/2/group/member?groupname= если вы пользователь admin. В противном случае это невозможно.

Смежные вопросы