Getting who liked a post from the API

So, when we get a post like so:

GET /posts/13.json

We can see in the json actions_summary which contains the number of likes the post has. And you can deduce if the user I am logged in as has liked if “acted” or “can_act” is present.

"actions_summary": [
          {
            "id": 2,
            "count": 2,
            "acted": true
          },

But, how do I lookup which users liked the post? We have 2 likes here, one is mine since “acted” is true. But there is one other like. How do I find out which user that is through the API? It is fine if we have to use an admin account to check.

As explained at How to reverse engineer the Discourse API

curl 'https://meta.discourse.org/post_action_users?id=507029&post_action_type_id=2'

Your link does not work.

This works for me though:

GET /post_action_users?id=13&post_action_type_id=2

This outputs

{
  "post_action_users": [
    {
      "id": 1,
      "username": "ausername",
      "name": null,
      "avatar_template": "/letter_avatar_proxy/v2/letter/i/{size}.png",
      "post_url": null,
      "username_lower": "ausername"
    },
    {
      "id": 10,
      "username": "anotherusername",
      "name": null,
      "avatar_template": "/letter_avatar_proxy/v2/letter/{size}.png",
      "post_url": null,
      "username_lower": "anotherusername"
    }
  ]
}

Which is a list of users who liked the post with id 13

It was missing the accept header:

curl 'https://meta.discourse.org/post_action_users?id=507033&post_action_type_id=2' -H 'Accept: application/json'

вам нужно передать

/post_action_users.json?id=507033&post_action_type_id=2

Привет!

Я пытаюсь выяснить аналогичный вопрос для форума Discourse, который использует наша компания: https://discuss.blues.io

У меня есть учётные данные уровня staff, однако при просмотре JSON-нагрузки для постов, которые получили лайки, я не вижу никаких указаний на это ни в actions_summary, ни в post_action_users.

Например, этот пост имеет множество ответов и лайков, но при запросе к нему в браузере по адресу https://discuss.blues.io/post_action_users.json?id=31&post_action_type_id=2 я получаю {"post_action_users":[]}.

Возможно, API изменился? Или я запрашиваю не то. Любая помощь будет очень кстати.

И ещё один вопрос: есть ли вебхук, который можно настроить для получения уведомления, когда пользователь лайкает пост, с указанием пользователя и поста? Мы хотели бы собирать эту информацию для аналитики.

Спасибо!

Привет, Пейдж!

Пост с ID 31 — это небольшое действие поста для глобального закрепления темы (то есть Post.find(31).action_code == 'pinned_globally.enabled'), и с такими постами нельзя взаимодействовать как с обычными, поэтому у них не может быть лайков.

В этой теме есть только один обычный пост, но и у него тоже нет лайков.

Попробуйте пост 33 — у него есть лайки, и вы можете увидеть их в сериализованном виде здесь:

https://discuss.blues.io/post_action_users.json?id=33&post_action_type_id=2

Привет, Леонардо,

Большое спасибо за информацию о различных типах постов — это очень полезная информация.

Оцениваю твой ответ.

С уважением,
Пейдж