Ejecuta consultas de Data Explorer con la API de Discourse

:bookmark: Esta guía explica cómo usar la API de Discourse para crear, ejecutar y administrar consultas con el plugin Data Explorer.

:person_raising_hand: Nivel de usuario requerido: Administrador

Prácticamente cualquier acción que se pueda realizar a través de la interfaz de usuario de Discourse también se puede activar con la API de Discourse.

Este documento proporciona una descripción general completa para utilizar la API específicamente en conjunto con el plugin Data Explorer.

Para una descripción general de cómo encontrar la solicitud de API correcta para una acción, consulte: Reverse engineer the Discourse API .

Ejecutar una consulta de Data Explorer

Para ejecutar una consulta de Data Explorer a través de la API, realice una solicitud POST a /admin/plugins/explorer/queries/<query-id>/run. Puede encontrar el ID de la consulta visitándola a través de su sitio de Discourse y verificando el parámetro id en la barra de direcciones.

A continuación se muestra una consulta de ejemplo con un ID de 20 que devuelve temas por vistas en una fecha especificada:

--[params]
-- date :viewed_at

SELECT
topic_id,
COUNT(1) AS views_for_date
FROM topic_views
WHERE viewed_at = :viewed_at
GROUP BY topic_id
ORDER BY views_for_date DESC

Esta consulta se puede ejecutar desde una terminal con:

curl -X POST "https://your-site-url/admin/plugins/explorer/queries/20/run" \
-H "Content-Type: multipart/form-data;" \
-H "Api-Key: <api-key>" \
-H "Api-Username: system" \
-F 'params={"viewed_at":"2019-06-10"}'

Tenga en cuenta que deberá reemplazar <api-key> y <your-site-url> con su clave de API y dominio.

Manejo de grandes conjuntos de datos

El plugin Data Explorer limita los resultados a 1000 filas por defecto. Para paginar a través de conjuntos de datos más grandes, puede usar la consulta de ejemplo a continuación:

--[params]
-- integer :limit = 100
-- integer :page = 0
SELECT * 
FROM generate_series(1, 10000)
OFFSET :page * :limit 
LIMIT :limit

Para obtener los resultados página por página, incremente el parámetro page en la solicitud:

curl -X POST "https://your-site-url/admin/plugins/explorer/queries/27/run" \
-H "Content-Type: multipart/form-data;" \
-H "Api-Key: <api-key>" \
-H "Api-Username: system" \
-F 'params={"page":"0"}'

Deténgase cuando result_count sea cero.

Para obtener información adicional sobre el manejo de grandes conjuntos de datos, consulte: Result Limits and Exporting Queries

Eliminación de datos de relations de los resultados

Cuando las consultas de Data Explorer se ejecutan a través de la interfaz de usuario, se agrega un objeto relations a los resultados. Estos datos se utilizan para representar al usuario en los resultados de la interfaz de usuario, pero es poco probable que los necesite al ejecutar consultas a través de la API.

Para eliminar esos datos de los resultados, agregue un parámetro download=true con su solicitud:

curl -X POST "https://your-site-url/admin/plugins/explorer/queries/27/run" \
-H "Content-Type: multipart/form-data;" \
-H "Api-Key: <api-key>" \
-H "Api-Username: system" \
-F 'params={"page":"0"}' \
-F "download=true"

Autenticación de API

Los detalles sobre cómo generar una clave de API para las solicitudes se pueden encontrar aquí: Create and configure an API key .

Si la clave de API solo se va a utilizar para ejecutar consultas de Data Explorer, puede seleccionar “Granular” en el menú desplegable Scope, y luego seleccionar el ámbito “run queries”.

Preguntas frecuentes

¿Hay algún endpoint de api que pueda usar para obtener la lista de informes y los números de ID? Quiero crear un menú desplegable con la lista.

Sí, puede realizar una solicitud GET autenticada a /admin/plugins/explorer/queries.json para obtener una lista de todas las consultas en el sitio.

¿Es posible crear consultas a través de la api?

Sí. La documentación sobre cómo hacerlo se encuentra en Create a Data Explorer query using the API

¿Es posible enviar parámetros con la solicitud post?

Sí, incluya parámetros SQL usando la opción -F, como se muestra en los ejemplos.

¿La exportación a CSV es compatible con la API para las consultas?

Aunque la salida JSON es estándar, puede convertir manualmente los resultados a CSV. La exportación nativa a CSV ya no es compatible.

Recursos adicionales

39 Me gusta
Watching API
"DataExplorer::ValidationError: Missing parameter end_date of type string
Get total list of topics and their view counts from Discourse API
Best API for All First Posts in a Category
Category API request downloads all topics
Get Latest topic for Current user
TimeStamp of Tag
How can I get the list of Discourse Topic IDs dynamically
Passing params to Data Explorer using API requires enclosing a value
Reports by Discourse
API rate limits
Getting recently updated posts using the REST API
`DataExplorer::ValidationError: Missing parameter` when running Data Explorer queries with [params] via API
`DataExplorer::ValidationError: Missing parameter` when running Data Explorer queries with [params] via API
Backend data retrieve for analytics
Discourse-user-notes API
Admin dashboard report reference guide
How to query the topics_with_no_response.json API with filters
Use API to get topics for a period using js
Access Discourse database with n8n
Why getUserById doesn't return the user's email?
Grant a custom badge through the API
Is there an API endpoint for recently edited posts
How to query gamification score via the API?
1.5X cheers on specific TL's or groups
Page Publishing
Validation error even when parameter passed while running data explorer API with Curl
How to fetch posts/topics by multiple usernames
How to change the response default_limit in data explorer?
How to change the response default_limit in data explorer?
Order/Filter searched topics by latest update to First Post
API Filter users by emails, including secondary emails
Ability to have granular scope for data explorer?
Daily, weekly, or total stats by user over a specified time range
Looking for help posting automating data explorer reports to my forum
How to get all topics from a specific category using offset/page param in the API query?
Discourse 有哪个接口能直接获取某个帖子的最后一条评论信息
想得到活跃的用户——通过api
API endpoint to create invite links has moved to /invites.json
How to get a password from database?
Can I send an external URL to the Discourse API for it to return topics linking to that URL?
Identifying users in multiple groups using AND rather than OR?
Restrict moderator access to only the stats panel on the admin dashboard?
How to get all the deleted posts for a specific topic
Discourse forum traffic query data
Download a user's posting history via Discourse API?
Discourse Data Explorer Query Response to Slack
Filter topics in category containing file attachments
Discord Integration with Webhooks
Download result of queries into Google Spreadsheet
Who's online "API"?
Is there any endpoint that would provide a user's external account IDs from their Discourse ID?
API post request without an Accept header returns 406
Best way to get (via API) a list of users from a group, and their bios
Create a Data Explorer query using the API
Automate the syncing of Discourse queries to Google Sheets
How to get a full list of badges of all users