Невозможно обновить тело темы через API

Я следовал документации, однако обновляется только заголовок темы, а тело темы не меняется.

Мой код (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: "новое тело (не применяется)"
  }

  const response = await fetch(url, {
    method: 'PUT',
    headers: {
      "Api-Key": Discourse_API_Key,
      "Api-Username": "system",
      "Content-Type": "application/json",
    },
    body: JSON.stringify(payload)
  });

}

Просто предположение, основанное на просмотре кода, но, возможно, это связано с тем, что вы используете topic_id вместо post_id? Ведь в Discourse первый пост — это, по сути, тема.

@Lilly права.

Тема определяется такими атрибутами, как заголовок, категория, теги и т. д.

Но контент принадлежит сообщению.

Если вы хотите обновить заголовок и контент, вам потребуется 2 запроса.

  1. PUT для темы

  2. PUT для первого сообщения. ID сообщения можно найти в HTML-коде страницы. Ищите атрибут data-post-id в теге <article>.
    Пример:

    <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">
    

Вау, вы правы, это работает :sparkling_heart:

К тому же я разобрался, как получить ID первого сообщения в теме с помощью API 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;
}

Спасибо вам и @Lilly :innocent: