Запрос API категории загружает все темы

Я собираю аналитику по использованию нашего форума и загружаю информацию о темах в каждой категории.

Однако запрос не всегда возвращает все темы. Я заметил это только потому, что ранее в отчёте были некоторые темы, которые теперь исчезли из нашего последнего отчёта.

Пример:

Тема отображается, когда я открываю страницу категории в браузере.

Код, который я использую:

from dotenv import load_dotenv
import os
import requests

load_dotenv()

headers = {
    "Content-Type": "application/json",
    "Api-Username": os.environ["USERNAME"],
    "Api-Key": os.environ["API_KEY"],
}

method = "GET"
url = "https://forum.aragon.org/c/proposals-for-main-dao/50.json"

response = requests.request(method, url, headers=headers)
topics = response.json()["topic_list"]["topics"]

found_topics = list()
for topic in topics:
    found_topics.append(topic["id"])

print(sorted(found_topics))

{topic: topic in found_topics for topic in [3519, 3528]}
>>> 
[3075, 3224, 3299, 3312, 3449, 3472, 3474, 3526, 3554, 3555, 3557, 3583, 3586, 3592, 3613, 3624, 3626, 3659, 3674, 3677, 3680, 3694, 3695, 3699, 3702, 3710, 3716, 3720, 3725, 3737]

{3519: False, 3528: False}

Почему это происходит и как это исправить?

Тогда вам следует использовать плагин Data Explorer.

Смотрите Discourse Data Explorer и Как выполнять запросы Data Explorer через API Discourse.

Спасибо, но в данный момент мы не можем установить этот плагин. Можно ли что-то сделать, чтобы исправить API?

Это официальный, стабильный и хорошо поддерживаемый плагин. Что мешает вам его установить?

Интерфейс использует систему пагинации для загрузки каждой порции тем. Вероятно, именно поэтому вы не видите их все.

Проверьте запрос, который отправляет ваш браузер, чтобы увидеть примеры каждого вызова (см. вкладку Network).

Однако, как верно заметил @pfaffman, это не самый подходящий способ получения данных для аналитики, так как он оптимизирован для интерфейса.