Eu segui a documentação , no entanto, ela apenas atualiza o título do tópico, sem atualizar o corpo.
Meu código (Javascript):
async function updateDiscourseTopic(topic_id) {
const Discourse_API_Key = "Discourse_API_Key";
const url = `https://discourse.mysite.com/t/-/${topic_id}.json`;
const payload = {
title: 'session_1',
raw: "novo corpo(não se aplica)"
}
const response = await fetch(url, {
method: 'PUT',
headers: {
"Api-Key": Discourse_API_Key,
"Api-Username": "system",
"Content-Type": "application/json",
},
body: JSON.stringify(payload)
});
}
Lilly
(Lillian Louis)
Maio 11, 2023, 1:01pm
2
Apenas um palpite, olhando o código, mas talvez seja porque você está usando topic_id em vez de post_id? porque o primeiro post é o tópico no Discourse, mais ou menos?
3 curtidas
Canapin
(Coin-coin le Canapin)
Maio 11, 2023, 3:31pm
3
@Lilly está certa.
Um tópico é definido por atributos como título, categoria, tags, etc.
Mas o conteúdo pertence a uma postagem .
Se você quiser atualizar o título e o conteúdo, você precisa de 2 requisições.
PUT no tópico
PUT na primeira postagem. Você pode encontrar o ID da postagem no código HTML da página. Procure pelo atributo data-post-id em <article>.
Exemplo:
<article id="post_2" aria-label="post #2 by @Lilly" role="region" data-post-id="1288311" data-
topic-id="264640" data-user-id="127856" class="boxed onscreen-post">
3 curtidas
Uau, você está certo, funciona
E eu descobri como recuperar o ID da primeira postagem em um tópico usando a API do Discourse:
async function getFirstPostIdFromOnetopic(topic_id) {
const Discourse_API_Key = "Discourse_API_Key";
const url = `https://discourse.mysite.com/t/${topic_id}/posts.json`;
const response = await fetch(url, {
method: 'GET',
headers: {
"Api-Key": Discourse_API_Key,
"Api-Username": "system",
"Content-Type": "application/json",
}
});
const data = await response.json();
const firstPostId = data.post_stream.posts[0].id;
return firstPostId;
}
Obrigado e @Lilly
3 curtidas
system
(system)
Fechado
Junho 10, 2023, 4:12pm
5
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.