Arsitektur Dokumentasi
Peta jalan panduan, SDK integration, dan API reference lengkap yang disiapkan secara terstruktur.
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_idharus berupa UUID posting (id), bukan slug-nya. Komentar yang dikirimkan mulai dalam statuspendingdan muncul hanya setelah disetujui.
Lini Masa Peluncuran Fitur
Docker Compose, pengaturan file environment, dan panduan setup lokal telah lengkap dibuat.
Dokumentasi route endpoint publik, otentikasi JWT, dan kontrol hak akses telah selesai disusun.
Mempersiapkan boilerplate untuk Next.js client, manajemen revisi konten, dan optimasi query.