게시물 번호에서 게시물 ID로

여러분 안녕하세요!
https://myweb.site/t/<topic_id>/<post_number>와 같은 정본(canonical) 게시글 URL에서 게시글 ID를 가져올 수 있는 Discourse API 방식이 있는지 궁금합니다. 여기서 TN은 주제 ID/번호, PN은 게시글 번호를 의미합니다.

https://myweb.site/t/<topic_id>.json에서 가져온 게시글 스트림 데이터를 이용해 몇 가지 시도를 해보았는데요, 예를 들어 post_number N이 호출 결과로 반환되는 post_stream->stream 데이터의 n번째 게시글 ID일 것이라고 생각했습니다. 하지만 주제 내 게시글 흐름에서 게시글이 삭제되거나 분할(split)이 이루어진 경우, post_number는 stream 내의 n번째 위치와 일치하지 않습니다.

무언가 명백한 것을 놓치고 있는 걸까요?

/t/<topic_id>/posts.json을 시도해 보셨나요? 이 요청은 게시글 20개를 반환하며, 이 중 post_number번째 게시글을 선택하면 게시글 ID를 얻을 수 있습니다.

하지만 20개 이상의 게시글을 가져오려면 페이지네이션이 필요하며, 현재로서는 이를 어떻게 수행해야 하는지 알지 못합니다.

2년 전에도 이 기능이 정말 필요했었습니다. 여전히 (더) 적절한 방법을 찾지 못했습니다. 제가 쓴 해킹 코드(hack)는 다음과 같습니다:

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 "Could not find post #{topic_id}/#{post_num}."
    end
end

이 코드는 언급된 문제들을 우회합니다. {print: true}는 페이지네이션 문제를 해결하고, find는 모더레이션으로 인해 배열 인덱스와 게시물 번호 사이에 불일치가 생길 수 있기 때문에 필요합니다.

제가 다루는 크기의 토픽에서는 잘 동작합니다. 다만, API를 통해 더 직접적인 방식이 있다면 훨씬 만족스러울 것 같습니다.