Para cumplir con nuestras obligaciones legales, necesitamos una forma de permitir que los usuarios descarguen su historial completo de publicaciones (no fragmentos) a través de la API de Discourse, para que estos datos puedan incluirse cuando un usuario realice una solicitud de acceso a datos personales (DSAR) directamente a nuestro sitio web o equipo legal (de modo que obtengan un registro completo tanto de sus datos de Last.fm como de sus publicaciones en Discourse). ¿Es esto posible actualmente? Y si es así, ¿cuál es la forma correcta de hacerlo?
Hemos estado intentando hacerlo mediante la obtención de las acciones del usuario (Discourse API Docs), pero parece que esto solo devuelve un registro parcial con fragmentos, no las publicaciones completas.
Sé que los usuarios ya pueden descargar sus datos directamente desde la página de configuración de su actividad en Discourse, pero temo que esto no sea suficiente para satisfacer a nuestro equipo legal () — insisten en que los datos se descarguen desde nuestro sitio web. ¿Alguna idea? Me preocupa que podamos verse obligados a cancelar nuestro plan de alojamiento si no resolvemos esto.
Bueno, podrías hacerlo con la API (consulta Cómo ingeniería inversa de la API de Discourse), pero no hay una forma sencilla de eludir el requisito de que hagan clic en el enlace de validación por correo electrónico, que los protege de que alguien más descargue sus datos.
Como señaló Jay, una solicitud POST autenticada a /export_csv/export_entity.json se puede utilizar para generar el archivo comprimido. Para ello, necesitas usar una clave de API global de «Todos los usuarios». Establece el nombre de usuario de la API en la solicitud con el nombre de usuario del usuario para el cual deseas crear el archivo. Debes proporcionar un parámetro entity en la solicitud. El parámetro entity debe establecerse en user_archive. Con este enfoque, se generará una notificación para el usuario. Para la mayoría de los usuarios, esto también les enviará un correo electrónico que contiene un enlace de descarga, pero no creo que se pueda confiar en ello; depende de cómo el usuario haya configurado sus preferencias de correo electrónico.
Un ejemplo de solicitud curl para generar el archivo. He sustituido $api_key por una clave de API global de «Todos los usuarios» en la solicitud:
No estoy seguro de si existe alguna manera de generar el archivo de forma que permita compartirlo sin que el usuario tenga que acceder a la notificación y hacer clic en su enlace de descarga. Posiblemente se podría desarrollar una consulta de Data Explorer que devuelva la información. Luego, podrías ejecutar la consulta de Data Explorer mediante la API. La desventaja de este enfoque es que si la consulta devuelve más de 10 000 filas de datos, necesitarías realizar múltiples solicitudes para obtener los datos. Para más detalles sobre el enfoque de Data Explorer, consulta: Cómo ejecutar consultas de Data Explorer con la API de Discourse.