Não é possível atualizar o corpo de um tópico via API

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)
  });

}

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

@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.

  1. PUT no tópico

  2. 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 :sparkling_heart:

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 :innocent:

3 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.