Come vengono assegnati gli ID dei post? (e altre domande su /posts.json)

Sto lavorando su https://mentionme.app e voglio raccogliere i contenuti più recenti dai forum Discourse disponibili pubblicamente. Per questo ho scelto l’endpoint API /posts.json.

Ho notato che questo endpoint restituisce un numero apparentemente casuale di elementi. La documentazione afferma che verranno restituiti gli ultimi 50 post, ma a un’analisi più attenta (ad esempio https://meta.discourse.org/posts.json) si vede che, invece dei 50 post più recenti, otteniamo post con ID compresi tra max-50 e max, e alcuni sono mancanti.

Suppongo che il fatto che non ci siano 50 post in quell’endpoint sia un’imperfezione dell’API: ho ragione?
Suppongo anche che gli ID dei post siano assegnati da un pool più ampio di ID che include altre cose (ID utente?) e che non dovrei preoccuparmene.

Qualcuno potrebbe per favore chiarire le mie preoccupazioni?

In particolare, per alcuni valori, l’elenco è vuoto, ad esempio: https://meta.discourse.org/posts.json?before=1234. Cosa devo fare se una chiamata senza il parametro “before” (“posts.json”) restituisce un elenco vuoto e non riesco a conoscere l’ID del post massimo per iniziare?

Alcuni post si trovano in categorie protette che non puoi vedere, mentre altri sono in messaggi personali e non sono elencati nell’endpoint, che elenca gli ultimi post nei topic che puoi leggere.

Ad esempio, in questo momento questo post qui è il 621820 e il successivo è il 621818 di @gerhard. Quello mancante è il 621819, che è un messaggio privato, ed è per questo che non puoi vederlo.

Grazie per la spiegazione, ora è tutto chiaro. Sto esaminando diversi forum Discourse e finora ho riscontrato il problema in produzione una volta sola (posts.json senza il parametro “before” restituisce una lista vuota). Non è la fine del mondo, ma è qualcosa di cui essere consapevoli.