Dokumentasi Resmi
|tulis.org

Arsitektur Dokumentasi

Peta jalan panduan, SDK integration, dan API reference lengkap yang disiapkan secara terstruktur.

TULIS CMS/DEVELOPER HUB
/guides-comments

Menyematkan Komentar dengan Public API Tulis

Panduan ini menunjukkan cara menampilkan komentar berantai (threaded) di halaman posting dan mengizinkan tamu mengirimkan komentar baru. Komentar yang dikirimkan oleh tamu masuk ke status pending moderasi dan hanya muncul setelah disetujui.

1. Cari UUID posting

Untuk bekerja dengan komentar, Anda memerlukan UUID internal posting, yaitu bidang id pada objek posting — bukan slug. Akses posting terlebih dahulu jika Anda hanya memiliki slug:

curl "https://YOUR_HOST/v1/posts/my-first-post" \
  -H "Authorization: Bearer ***" \
  -H "X-Workspace-ID: <WORKSPACE_ID>"

data.id dalam respons adalah UUID yang akan digunakan sebagai post_id di bawah ini.

2. Render komentar yang disetujui

Lihat komentar berantai yang disetujui untuk sebuah posting dengan GET /v1/posts/:post_id/comments:

curl "https://YOUR_HOST/v1/posts/<POST_UUID>/comments" \
  -H "Authorization: Bearer ***" \
  -H "X-Workspace-ID: <WORKSPACE_ID>"
const postId = "<POST_UUID>";
const res = await fetch(
  `https://YOUR_HOST/v1/posts/${postId}/comments`,
  {
    headers: {
      Authorization: "Bearer <API_KEY>",
      "X-Workspace-ID": "<WORKSPACE_ID>",
    },
  }
);
const { data } = await res.json();
// data contains approved nested thread comments
renderComments(data);

3. Kirim komentar tamu

Kirim komentar baru dengan POST /v1/comments. Tamu memberikan name, email, content, dan post_id (UUID dari langkah 1). Komentar baru dibuat dengan status pending dan tidak ditampilkan sampai moderator menyetujuinya.

<form id="comment-form">
  <label for="name">Nama</label>
  <input id="name" name="name" type="text" required />

  <label for="email">Email</label>
  <input id="email" name="email" type="email" required />

  <label for="content">Komentar</label>
  <textarea id="content" name="content" required></textarea>

  <button type="submit">Kirim komentar</button>
</form>
document.getElementById("comment-form").addEventListener("submit", async (e) => {
  e.preventDefault();
  const form = e.target;
  const res = await fetch("https://YOUR_HOST/v1/comments", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Authorization: "Bearer <API_KEY>",
      "X-Workspace-ID": "<WORKSPACE_ID>",
    },
    body: JSON.stringify({
      name: form.name.value,
      email: form.email.value,
      content: form.content.value,
      post_id: "<POST_UUID>",
    }),
  });

  if (res.ok) {
    alert("Terima kasih! Komentar Anda menunggu moderasi.");
    form.reset();
  }
});

post_id harus berupa UUID posting (id), bukan slug-nya. Komentar yang dikirimkan mulai dalam status pending dan muncul hanya setelah disetujui.

Lini Masa Peluncuran Fitur

Fase 1: Setup Awal & KonfigurasiSELESAI

Docker Compose, pengaturan file environment, dan panduan setup lokal telah lengkap dibuat.

Fase 2: Referensi RESTful APISELESAI

Dokumentasi route endpoint publik, otentikasi JWT, dan kontrol hak akses telah selesai disusun.

Fase 3: Integrasi Frontend & Fitur LanjutSEDANG BERJALAN

Mempersiapkan boilerplate untuk Next.js client, manajemen revisi konten, dan optimasi query.