Возможно ли использовать системный API-ключ для получения «горячих» и «новых» тем для конкретного пользователя?

Вот мой сценарий использования: я хочу отображать 5 самых свежих и популярных тем на главной странице форума. Мне нужна фильтрация с учётом того, что подходит конкретному пользователю Discourse — например, у некоторых моих пользователей есть доступ к приватной категории (в которой темы должны попадать в списки «последние» или «популярные»), а у других — нет.

В настоящее время, когда я вызываю API Discourse для получения нужных данных, я использую системный API-ключ. Это даёт результаты, которые включают не только скрытые категории, но и всегда добавляют все глобально закреплённые темы в начало списка (даже если пользователь давно открепил их).

Так что, думаю, вы понимаете, почему мне нужны данные «последние/популярные» для конкретного пользователя, а не для всего форума в целом.

Если такая функциональность возможна при вызове с пользовательским API-ключом, то это уже другая проблема — кажется очень неуклюжим необходимость программно создавать пользовательский API-ключ каждый раз, когда нужно получить эти данные для пользователя. (И, presumably, уничтожать ключ сразу после этого, поскольку он больше ни для чего не нужен.) Это единственный способ?

Я предлагаю решение: если вы вызываете latest.json или top.json с системным API-ключом, эти конечные точки могли бы принимать необязательный параметр user ID для ограничения результатов.

Если вы создадите API-ключ для всех пользователей, вы сможете указать пользователя, от имени которого он будет работать. В этом случае ключ будет имитировать этого пользователя.

Привет, @sam, отлично! Тогда какой endpoint? У меня есть API-ключ для системы «все пользователи».

Обычный endpoint, который возвращает мне всё самое свежее без фильтрации:

/latest.json

Специфичные для пользователя endpoint’ы, которые я пробовал, но они не работают (где username — имя пользователя на моём форуме):

/username/latest.json
/latest/username.json
/username/latest
/latest/username
/latest/4.json (используя ID пользователя вместо имени)
и т. д.

Не могу его найти :-\

Вам следует указать имя пользователя в заголовке Api-Username, как показано в примере выше.

Ага, спасибо. Теперь я понял.