Del número de post al ID de post

¡Hola a todos!

Me pregunto si existe una forma, a través de la API de Discourse, de obtener el ID de un post a partir de una URL canónica de ese post, como https://myweb.site/t/<topic_id>/<post_number>, donde, por supuesto, TN es el ID/número del tema y PN es el número del post.

He realizado algunos intentos utilizando los datos del flujo de publicaciones (post stream) de https://myweb.site/t/<topic_id>.json, pensando que, por ejemplo, el post número N sería el ID del n-ésimo post en los datos post_stream->stream devueltos por la llamada. Sin embargo, si se han eliminado posts o se han realizado divisiones en el flujo de publicaciones del tema, el número del post no corresponde a la posición n-ésima en el stream.

¿Estoy pasando por alto algo obvio?

¿Has probado /t/<topic_id>/posts.json? Eso obtendrá 20 publicaciones y podrás tomar la de número post_number, que contendrá un ID de publicación.

Pero para obtener más de 20, necesitarás paginación, y por el momento no veo cómo hacerlo.

Necesitaba desesperadamente la misma función hace dos años. Todavía no he descubierto cómo hacerlo de manera (más) adecuada. Este es mi truco:

def get_topic_post(topic_id, post_num)
    topic = @api.topic(topic_id, {print: true})
    post_obj = topic['post_stream']['posts'].find { |p| p['post_number'] == post_num }
    if post_obj
        post_obj['id']
    else
        throw "No se pudo encontrar la publicación #{topic_id}/#{post_num}."
    end
end

Esto evita los problemas mencionados: {print: true} aborda el problema de la paginación. El find es necesario porque la moderación puede crear una discrepancia entre los índices del array y los números de publicación.

Funciona para los temas del tamaño con el que estoy trabajando. Sin embargo, una forma más directa a través de la API se sentiría más satisfactoria.