Is it possible to easily access the pre-computed Community Health data in a programmatic way (API, etc.)? Would love to be able to utilize the data without deriving the methodology used to calculate each and risking inconsistent results with the Community Health page. Thanks!
Hello @oneonetwothree
You can output reports data as JSON.
For example, the posts data from January 1st to May 1st:
https://your-discourse.com/admin/reports/posts.json?end_date=2023-05-01&mode=table&start_date=2023-01-01
Will output this:
{
"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
}
}
Is that what you’re looking for?
3 Likes
That’s great! Are there docs for those endpoints? I’m not seeing them on the https://docs.discourse.org/
I managed to guess the endpoints for Signups, Topics and Posts; but was also hoping to grab DAU/MAU, Daily Engaged Users, New Contributors, and Consolidated Pageviews. Do you know if those exist as well? Thanks!
1 Like
Mostly you can add .json
to the end of any url to get what rails is sending.
2 Likes