Como os IDs de post são atribuídos? (e outras perguntas sobre /posts.json)

Estou trabalhando no https://mentionme.app e quero reunir o conteúdo mais recente de fóruns Discourse publicamente disponíveis. Para isso, selecionei o endpoint de API /posts.json.

Percebi que esse endpoint retorna um número aparentemente aleatório de elementos. A documentação afirma que ele retornará as 50 postagens mais recentes, mas, ao inspecionar mais de perto (por exemplo, https://meta.discourse.org/posts.json), vemos que, em vez das 50 postagens mais recentes, temos postagens com IDs variando de max-50 a max, e algumas estão faltando.

Suponho que o fato de não haver 50 postagens nesse endpoint seja uma imperfeição da API — estou correto?
Suponho também que os IDs de postagem sejam atribuídos a partir de um conjunto maior de IDs que inclui outras coisas (IDs de usuário?) e que eu não deva me preocupar com isso.

Alguém poderia, por favor, esclarecer minhas preocupações?

Em particular, para alguns valores, a lista está vazia, por exemplo: https://meta.discourse.org/posts.json?before=1234 - o que devo fazer se uma lista sem o parâmetro “before” (“posts.json”) retornar uma lista vazia e eu não conseguir descobrir o ID máximo da postagem para começar?

Alguns posts estarão dentro de categorias protegidas que você não pode ver, e outros estarão dentro de mensagens privadas e não listados no endpoint, que lista os últimos posts nos tópicos que você pode ler.

Por exemplo, agora mesmo este post aqui é o 621820 e o próximo é o 621818 de @gerhard. O que está faltando é o 621819, que é uma MP, e é por isso que você não consegue vê-lo.

Obrigado pela explicação, agora está claro. Estou escaneando vários fóruns do Discourse agora e, até agora, encontrei o problema em produção uma vez (posts.json sem o parâmetro “before” retorna uma lista vazia). Não é o fim do mundo, mas algo a ter em mente.