box.com アカウントに 60 日以上アクティビティを行っていない、またはログインしていないユーザーの詳細をすべて取得する必要があります。それを行うAPIまたは方法はありますか?
2 に答える
上記のソリューションのステップ 2 では、LOGIN イベントのみを取得する方法があると思います。そうしないと、イベントのリストがかなり大きくなる可能性があります。
あなたが Box エンタープライズの管理者であると仮定すると、API を使用してこれを行うことができます。ただし、3 つのステップで行う必要があり、クライアント側の作業が少し必要になります。
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.
この時点で、エンタープライズユーザーオブジェクトのリストとエンタープライズイベントオブジェクトのリストができています。Event オブジェクトにはcreated_by
、アクションを実行したユーザーに対応するプロパティがあります。created_by.id
過去 N 日間にアクティブだったすべてのユーザーの ID は、個別の値のセットによって提供されます。これを list と呼びますactive_user_ids
。次に、このリストに表示されないID のユーザー オブジェクトをフィルター処理できます。それらはあなたの非アクティブなユーザーです。擬似コードとして:
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
クエリ文字列パラメーターを使用して、イベントの種類を本当に関心のあるものだけに制限することを検討してください。