Discourse API を介してユーザーの投稿履歴をダウンロードするには?

こんにちは、

法的義務を遵守するため、Discourse API を通じてユーザーが投稿履歴全体(抜粋ではなく完全な履歴)をダウンロードできる仕組みが必要です。これにより、ユーザーが当社のウェブサイトまたは法務チームに対して直接 DSAR(データ主体アクセスリクエスト)を行う際に、Last.fm のデータと Discourse の投稿データの両方の完全な記録を提供できます。現在、これは可能でしょうか?可能であれば、正しい手順はどのようなものですか?

以前は「get user actions」(Discourse API Docs) を使用してこれを実現しようとしていましたが、このエンドポイントは抜粋のみの部分的な記録しか返さないようです。

Discourse のアクティビティ設定ページからユーザーが直接データをダウンロードできることは承知していますが、残念ながらこれでは当社の法務チームの要件を満たせないかもしれません(苦笑)。彼らは、データが当社のウェブサイトからダウンロードされることを強く要求しています。何かアイデアはありますか?この問題が解決しない場合、ホスティングプランからの撤退を余儀なくされるのではないかと心配しています。

ご協力をいただき、ありがとうございます。:pensive:

「いいね!」 1

API を使用すれば理論的には可能ですが(Discourse API のリバースエンジニアリング方法を参照)、第三者によるデータダウンロードを防ぐためにユーザーがメール認証リンクをクリックするという要件を回避する簡単な方法はありません。

「いいね!」 1

Jay が指摘した通り、/export_csv/export_entity.json への認証済みの POST リクエストを使用することで、アーカイブを生成できます。これを行うには、全ユーザー向けグローバル API キーを使用する必要があります。リクエストの API ユーザー名には、アーカイブを作成したいユーザーのユーザー名を設定してください。また、リクエストには entity パラメータを必須として提供する必要があります。この entity パラメータは user_archive に設定します。この方法では、対象ユーザーに対して通知が生成されます。ほとんどのユーザーの場合、ダウンロードリンクを含むメールも送信されますが、これはユーザーのメール設定に依存するため、確実な手段とは言えません。

アーカイブを生成する例として、以下に curl リクエストを示します。ここでは、全ユーザー向けグローバル API キーを $api_key に置き換えています。

curl -X POST "http://localhost:3000/export_csv/export_entity.json" -H "Api-Username: Ben" -H "Api-Key: $api_key" -F "entity=user_archive"

ユーザーが通知にアクセスしてダウンロードリンクをクリックしなくても、アーカイブを生成して共有できる方法があるかどうかは現時点では不明です。もしかすると、必要な情報を返す Data Explorer クエリを開発し、それを API 経由で実行する手法が考えられるかもしれません。ただし、この方法の欠点として、クエリで返されるデータが 10,000 行を超える場合、データを取得するために複数のリクエストを行う必要がある点が挙げられます。Data Explorer 手法の詳細については、「Discourse API を使用した Data Explorer クエリの実行方法」を参照してください:How to run Data Explorer queries with the Discourse API

「いいね!」 3

ありがとうございます。この情報を開発チームに共有いたします。問題なく解決できることを願っています。:crossed_fingers:

「いいね!」 1