Получить всех пользователей, которые не заходили на box.com более 60 дней.

Мне нужно получить все данные о пользователях, которые не совершали никаких действий или не входили в учетную запись box.com более 60 дней. Есть ли какой-либо API или способ сделать это?


person user25879    schedule 07.07.2014    source источник
comment
Пожалуйста, добавьте то, что вы когда-либо пробовали для этого.   -  person Amogh    schedule 07.07.2014
comment
Я пытаюсь сделать это через api.box.com/2.0/users -H Авторизация: Bearer ACCESS_TOKEN , но не возвращает дату последнего действия, выполненного пользователем. Я все еще нахожу способ сделать это.   -  person user25879    schedule 07.07.2014


Ответы (2)


Предполагая, что вы являетесь администратором своего предприятия Box, это возможно с помощью API. Однако вы должны сделать это в три шага, и это потребует некоторой работы на стороне клиента.

1. Сначала получить список всех корпоративных пользователей, как вы уже делаете сейчас:

curl https://api.box.com/2.0/users
-H "Authorization: Bearer ACCESS_TOKEN"

В зависимости от количества пользователей на вашем предприятии вам нужно будет повторить этот вызов с увеличением параметра offset, чтобы получить их всех. См. документы для более подробной информации.

2. Затем получите список все корпоративные события, произошедшие за последние 60 дней:

curl https://api.box.com/2.0/events?stream_type=admin_logs
                                   &created_after=2014-05-07T00:00:00-08:00 
-H "Authorization: Bearer ACCESS_TOKEN"

Как и в случае со списком пользователей, этот список событий потенциально может быть довольно длинным. Скорее всего, вам придется повторить этот вызов несколько раз с увеличением stream_position. Опять же, документы объясняют это более подробно.

3. На этом этапе у вас есть список корпоративных User и список корпоративных объектов Event. Объект Event имеет свойство created_by, которое соответствует пользователю, выполнившему действие. Отдельный набор значений created_by.id предоставит вам идентификатор каждого пользователя, который был активен за последние N дней — мы назовем этот список active_user_ids. Затем вы можете отфильтровать объекты User для любого идентификатора, который не отображается в этом списке. Это ваши неактивные пользователи. Как псевдокод:

foreach user in users
  if active_user_ids does not contain user.id
     print "user.name has been not been active for at least 60 days"
  else
     print "user.name has been active within the last 60 days"

Примечание. В зависимости от количества и активности пользователей на вашем предприятии сбор списка событий займет значительное время. Рассмотрите возможность использования параметра строки запроса event_type, чтобы ограничить типы событий только теми, которые вам действительно интересны.

person John Hoerr    schedule 08.07.2014
comment
Спасибо, Джон, это было довольно понятно. Я дам ему попробовать. - person user25879; 11.07.2014

На шаге 2 приведенного выше решения я считаю, что есть способ получить только события LOGIN. В противном случае список событий может быть довольно большим!

person cfrench    schedule 14.01.2015
comment
Я рекомендую добавить это как комментарий. - person Paul Bastide; 14.01.2015