Exportando / Extraindo dados de saúde da comunidade

É possível acessar facilmente os dados pré-calculados de Saúde da Comunidade de forma programática (API, etc.)? Gostaria de poder utilizar os dados sem ter que derivar a metodologia usada para calcular cada um e arriscar resultados inconsistentes com a página de Saúde da Comunidade. Obrigado!

Olá @oneonetwothree :slight_smile:

Você pode exportar os dados de relatórios como JSON.

Por exemplo, os dados de posts de 1º de janeiro a 1º de maio:

https://your-discourse.com/admin/reports/posts.json?end_date=2023-05-01&mode=table&start_date=2023-01-01

Isso gerará o seguinte:

{
  "report": {
    "type": "posts",
    "title": "Posts",
    "xaxis": "Day",
    "yaxis": "Number of new posts",
    "description": "New posts created during this period",
    "description_link": null,
    "data": [
      {
        "x": "2023-01-22",
        "y": 1
      },
      {
        "x": "2023-01-27",
        "y": 1
      },
      {
        "x": "2023-01-31",
        "y": 1
      },
      {
        "x": "2023-02-01",
        "y": 1
      },
      {
        "x": "2023-02-02",
        "y": 1
      },
      {
        "x": "2023-02-06",
        "y": 22
      },
      {
        "x": "2023-02-07",
        "y": 2
      },
      {
        "x": "2023-02-10",
        "y": 3
      },
      {
        "x": "2023-02-11",
        "y": 5
      },
      {
        "x": "2023-02-13",
        "y": 1
      },
      {
        "x": "2023-02-14",
        "y": 1
      },
      {
        "x": "2023-02-17",
        "y": 5
      },
      {
        "x": "2023-02-20",
        "y": 6
      },
      {
        "x": "2023-02-21",
        "y": 1
      },
      {
        "x": "2023-02-22",
        "y": 1
      },
      {
        "x": "2023-02-23",
        "y": 1
      },
      {
        "x": "2023-02-24",
        "y": 2
      },
      {
        "x": "2023-02-25",
        "y": 1
      },
      {
        "x": "2023-03-01",
        "y": 1
      },
      {
        "x": "2023-03-02",
        "y": 4
      },
      {
        "x": "2023-03-03",
        "y": 1
      },
      {
        "x": "2023-03-05",
        "y": 2
      },
      {
        "x": "2023-03-06",
        "y": 1
      },
      {
        "x": "2023-03-08",
        "y": 1
      },
      {
        "x": "2023-03-09",
        "y": 2
      },
      {
        "x": "2023-03-13",
        "y": 1
      },
      {
        "x": "2023-03-16",
        "y": 1
      },
      {
        "x": "2023-03-17",
        "y": 9
      },
      {
        "x": "2023-03-20",
        "y": 1
      },
      {
        "x": "2023-03-22",
        "y": 1
      },
      {
        "x": "2023-03-23",
        "y": 2
      },
      {
        "x": "2023-03-25",
        "y": 1
      },
      {
        "x": "2023-03-31",
        "y": 1
      },
      {
        "x": "2023-04-01",
        "y": 1
      },
      {
        "x": "2023-04-03",
        "y": 1
      },
      {
        "x": "2023-04-04",
        "y": 9
      },
      {
        "x": "2023-04-07",
        "y": 1
      },
      {
        "x": "2023-04-08",
        "y": 1
      },
      {
        "x": "2023-04-12",
        "y": 3
      },
      {
        "x": "2023-04-13",
        "y": 4
      },
      {
        "x": "2023-04-14",
        "y": 6
      },
      {
        "x": "2023-04-19",
        "y": 1
      },
      {
        "x": "2023-04-23",
        "y": 1
      },
      {
        "x": "2023-04-24",
        "y": 2
      },
      {
        "x": "2023-04-25",
        "y": 6
      }
    ],
    "start_date": "2023-01-01T00:00:00Z",
    "end_date": "2023-05-01T23:59:59Z",
    "prev_data": null,
    "prev_start_date": "2022-09-02T00:00:00Z",
    "prev_end_date": "2023-01-01T00:00:00Z",
    "prev30Days": 10,
    "dates_filtering": true,
    "report_key": "reports:posts:20230101:20230501:[:total, :prev30Days]:4",
    "primary_color": "rgba(0,136,204,1)",
    "secondary_color": "rgba(0,136,204,0.1)",
    "available_filters": [
      {
        "id": "category",
        "type": "category",
        "default": null
      }
    ],
    "labels": [
      {
        "type": "date",
        "property": "x",
        "title": "Day"
      },
      {
        "type": "number",
        "property": "y",
        "title": "Count"
      }
    ],
    "average": false,
    "percent": false,
    "higher_is_better": true,
    "modes": [
      "table",
      "chart"
    ],
    "total": 167
  }
}

É isso que você está procurando?

3 curtidas

Ótimo! Existem documentações para esses endpoints? Não estou encontrando no https://docs.discourse.org/

Consegui adivinhar os endpoints para Inscrições (Signups), Tópicos (Topics) e Posts; mas também esperava obter DAU/MAU, Usuários Engajados Diários (Daily Engaged Users), Novos Contribuintes (New Contributors) e Visualizações de Página Consolidadas (Consolidated Pageviews). Você sabe se eles também existem? Obrigado!

1 curtida

Na maioria das vezes, você pode adicionar .json ao final de qualquer URL para obter o que o Rails está enviando.

Engenharia reversa da API do Discourse

2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.