Le point de terminaison de l'API /posts.json ne liste pas plus de 4 publications

Je pense qu’il s’agit d’un bug récent qui est apparu. Mon client utilise Discourse en tant que service hébergé par l’équipe formidable de Discourse. Nous utilisons le point de terminaison de l’API /posts.json pour lister les 5 publications les plus récentes du forum sur le site web (https://forum.bonsaimirai.com/posts.json). Nous effectuons cette requête côté serveur en utilisant curl.

Récemment, nous avons remarqué que nous ne voyions que 3 ou 4 des publications les plus récentes sur notre site. Il semble que lorsque la requête est effectuée sans clé API, nous obtenons cette liste très courte de publications récentes. Mais lorsque nous utilisons une clé API avec un nom d’utilisateur API, nous voyons un plus grand nombre de publications.

Nous souhaitons que le point de terminaison /posts.json se comporte comme auparavant. Nous devrions pouvoir obtenir n’importe quel nombre de publications précédentes, comme cela était délivré auparavant. Si nous utilisons la clé API + nom d’utilisateur, nous finissons par récupérer des publications que nous ne souhaitons pas afficher à tous les utilisateurs (provenant de catégories avec des restrictions de niveau utilisateur / groupe).

Y a-t-il de nouveaux paramètres disponibles pour la requête posts.json que nous pouvons utiliser pour spécifier le nombre souhaité de résultats ? S’agit-il d’un bug unique à la version de Discourse utilisée pour le service hébergé ? Je remarque que meta.discourse.org ne présente pas ce problème.

That implies you may have special security that keeps some of the posts from being visible to anonymous users?

1 « J'aime »

@codinghorror I think I just realized why this is happening. We do have a category on our forum that is restricted to a special group of paying users on our main site. Anonymous / “normal” logged in users can’t access this category.

I’m going to guess that if a single topic in that special category contains some large number of the most recent posts to the site, then they’re simply omitted from the posts.json endpoint for anonymous users. And thus, we exceed whatever the behind-the-scenes limit is for that endpoint. So we end up getting the truncated list that I’m seeing in this specific moment in time when requesting that feed anonymously.

Am I on to something here?

This is probably an edge case. But does it make sense to make a feature request for that endpoint so that it always returns the X number of most recent posts, relevant to whatever level of permissions the request is being made from?

2 « J'aime »

That feature already exists, include the API key of a user with the desired permissions.

2 « J'aime »

Thanks @codinghorror.

This is exactly what I’ve done. I make a request for the /posts.json using my API key with a “dummy” user possessing the desired permissions since not all members of our website have created accounts on the forum yet.

Everything is working as expected.

3 « J'aime »