Чтобы выполнить наши юридические обязательства, нам необходимо обеспечить возможность для пользователей скачивать полную историю своих публикаций (не выдержки) через API Discourse, чтобы эти данные могли быть включены при подаче пользователем запроса на доступ к личным данным (DSAR) напрямую в наш веб-сайт или юридический отдел (чтобы они получили полную запись как своих данных Last.fm, так и данных публикаций на Discourse). Возможно ли это в настоящее время? И если да, то какой правильный способ это сделать?
Мы пытались сделать это с помощью получения действий пользователя (Discourse API Docs), но, похоже, это возвращает только частичную запись с выдержками, а не полные публикации.
Я знаю, что пользователи уже могут скачивать свои данные напрямую со страницы настроек активности на Discourse, но, боюсь, этого будет недостаточно для удовлетворения требований нашего юридического отдела () — они настаивают на том, чтобы данные скачивались с нашего веб-сайта. Есть какие-то идеи? Я беспокоюсь, что нам, возможно, придется отказаться от нашего плана хостинга, если мы не решим эту проблему.
Ну, теоретически это можно сделать с помощью API (см. Как провести реверс-инжиниринг API Discourse), но нет простого способа обойти требование, чтобы они нажали на ссылку подтверждения электронной почты, которая защищает их от того, что кто-то другой скачает их данные.
Как отметил Джей, аутентифицированный POST-запрос к /export_csv/export_entity.json можно использовать для создания архива. Для этого необходимо использовать глобальный API-ключ для всех пользователей. Установите имя пользователя API в запросе равным имени пользователя, для которого нужно создать архив. В запросе необходимо указать параметр entity. Значение параметра entity должно быть user_archive. При таком подходе для пользователя будет создана уведомление. Для большинства пользователей это также отправит им электронное письмо со ссылкой для скачивания, но я не думаю, что на это можно положиться — это зависит от того, как пользователь настроил свои предпочтения в отношении электронной почты.
Пример запроса curl для создания архива. В запросе я заменил $api_key на глобальный API-ключ для всех пользователей:
Не уверен, существует ли способ создать архив так, чтобы его можно было поделиться без необходимости для пользователя открывать уведомление и нажимать на ссылку для скачивания. Возможно, можно разработать запрос к Data Explorer, который возвращает нужную информацию. Затем этот запрос к Data Explorer можно выполнить через API. Недостаток такого подхода заключается в том, что если запрос возвращает более 10 000 строк данных, потребуется выполнить несколько запросов для получения всех данных. Подробнее о подходе с использованием Data Explorer см.: Как выполнять запросы к Data Explorer с помощью API Discourse.