커뮤니티 건강 데이터 내보내기/추출

사전 계산된 커뮤니티 헬스 데이터를 프로그래매틱하게(예: API 등) 쉽게 접근할 수 있을까요? 커뮤니티 헬스 페이지에서 각 지표를 계산하는 데 사용된 방법론을 직접 재현할 필요 없이 데이터를 활용할 수 있으면 좋겠습니다. 그렇게 하면 커뮤니티 헬스 페이지와 결과가 일치하지 않는 문제를 방지할 수 있을 것 같습니다. 감사합니다!

안녕하세요 @oneonetwothree :slight_smile:

보고서 데이터를 JSON 형식으로 출력할 수 있습니다.

예를 들어, 1월 1일부터 5월 1일까지의 게시물 데이터:

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

이렇게 출력됩니다:

{
  "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
  }
}

이것이 찾고 있는 내용인가요?

정말 좋습니다! 해당 엔드포인트에 대한 문서가 있나요? https://docs.discourse.org/ 에서 찾을 수 없습니다.

가입(Signups), 주제(Topics), 게시글(Posts) 엔드포인트는 추측해서 찾았지만, DAU/MAU, 일일 활성 사용자(Daily Engaged Users), 신규 기여자(New Contributors), 통합 페이지뷰(Consolidated Pageviews)도 가져오고 싶었습니다. 이 항목들도 존재하는지 아시나요? 감사합니다!

대부분의 경우 URL 끝에 .json을 추가하면 Rails가 보내는 데이터를 확인할 수 있습니다.

Discourse API 역설계하기