Não é possível recuperar posts com a API

Estou tentando usar a API do Discourse para criar uma lista de todas as postagens (apenas as primeiras postagens) com uma tag específica. Até agora, só consegui obter as postagens mais recentes, que recuperam cerca de 40 postagens, incluindo comentários. Quando tentei recuperar um ID de postagem específico, algumas funcionaram, mas para outras recebi a resposta
{'errors': ['You are not permitted to view the requested resource.'],'error_type': 'invalid_access'}
mesmo que a chave de API que estou usando tenha acesso de administrador a todas as postagens em nosso Discourse. Alguém já encontrou esse problema antes?

1 curtida

Você pode postar seu trecho de código? (Sem incluir a chave da API)
Você vê algum padrão aqui em que funciona e em que não funciona?

1 curtida

Olá @RGJ, notei que consigo recuperar posts individuais se eles estiverem na lista recuperada originalmente por posts.json. Usei o trecho de código abaixo

url = "https://forum.algovera.ai/posts.json"

username = "algovera"

params = {'Api-Key': api_key, "Api-Username": username}

r = requests.get(url = url, params = params)

data = r.json()

Então tentei mudar essa chamada para https://forum.algovera.ai/posts/{id}.json", onde o ID foi retirado do URL do post específico que eu estava olhando.

O número no URL não é o ID, esse é o número da postagem, que é relativo ao ID do tópico.
Se você quiser obter o ID da postagem, pode recuperá-lo do JSON do tópico como post_stream.posts[].id

Portanto, as postagens neste tópico têm

ID do tópico número da postagem ID
255455 1 1241013
255455 2 1241026
255455 3 1241056

e sua postagem mais recente neste tópico é https://meta.discourse.org/posts/1241056.json

1 curtida

Ah, certo, obrigado. Funcionou, então o que eu precisaria chamar se quisesse recuperar os tópicos mais recentes e, em seguida, o texto bruto da primeira postagem em cada tópico? Eu vi a chamada List Topics na documentação, mas não tenho certeza de qual deve ser o slug.