Arsitektur Dokumentasi
Peta jalan panduan, SDK integration, dan API reference lengkap yang disiapkan secara terstruktur.
Admin Post CRUD
Membuat, membaca, memperbarui, dan menghapus post melalui Admin API. Memerlukan Bearer Token (JWT) + Tenant Scoping + role minimal author.
Create Post
Membuat post baru.
Endpoint
POST /api/posts
Authentication
Bearer Token (JWT) + X-Workspace-ID header · Role: author+
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
title | string | ya | Judul post. |
content | string | tidak | Konten post (HTML/TipTap JSON). |
slug | string | tidak | Slug URL (auto-generated dari title jika kosong). |
status | string | tidak | draft, published, scheduled (default: draft). |
post_type | string | tidak | Post type slug (default: post type bawaan). |
excerpt | string | tidak | Ringkasan post. |
feature_image | string | tidak | URL gambar utama. |
seo_title | string | tidak | Judul SEO (meta title). |
seo_desc | string | tidak | Deskripsi SEO (meta description). |
language | string | tidak | Kode bahasa ISO 639-1 (id, en, dll). |
published_at | string | tidak | Tanggal publish (untuk scheduled post). |
taxonomies | array | tidak | Array UUID taxonomy yang dikaitkan. |
{
"title": "Cara Memulai Blog dengan Tulis CMS",
"content": "<h2>Pendahuluan</h2><p>Tulis CMS adalah...</p>",
"status": "draft",
"post_type": "article",
"excerpt": "Panduan lengkap memulai blog.",
"language": "id",
"taxonomies": ["a1b2c3d4-1111-2222-3333-444455556666"]
}Response
{
"status": 201,
"message": "Post created successfully",
"data": {
"id": "3f1a2b9c-7e4d-4c8a-9b21-0c5d6e7f8a90",
"title": "Cara Memulai Blog dengan Tulis CMS",
"slug": "cara-memulai-blog-dengan-tulis-cms",
"status": "draft",
"author": {
"id": "c3d4e5f6-3333-4444-5555-666677778888",
"name": "Ahmad Fulan"
},
"created_at": "2026-01-17T10:00:00Z"
}
}List Posts (Admin)
Mendapatkan daftar post (termasuk draft). Author hanya melihat post miliknya sendiri.
Endpoint
GET /api/posts
Authentication
Bearer Token (JWT) + X-Workspace-ID header · Role: author+
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
status | string | (semua) | Filter: draft, published, scheduled. |
type | string | (semua) | Post type slug. |
page | int | 1 | Nomor halaman. |
per_page | int | 20 | Jumlah per halaman. |
cURL Example
curl "https://YOUR_HOST/api/posts?status=draft&page=1&per_page=20" \
-H "Authorization: Bearer <token>" \
-H "X-Workspace-ID: YOUR_WORKSPACE_ID"Get Post by ID
Mendapatkan detail satu post.
Endpoint
GET /api/posts/:id
Response
{
"status": 200,
"data": {
"id": "3f1a2b9c-7e4d-4c8a-9b21-0c5d6e7f8a90",
"title": "Cara Memulai Blog dengan Tulis CMS",
"slug": "cara-memulai-blog-dengan-tulis-cms",
"content": "<h2>Pendahuluan</h2><p>...</p>",
"status": "published",
"post_type": "article",
"language": "id",
"taxonomies": [...],
"author": {...},
"published_at": "2026-01-17T10:00:00Z"
}
}Update Post
Memperbarui post yang sudah ada.
Endpoint
PUT /api/posts/:id
Authentication
Bearer Token (JWT) + X-Workspace-ID header · Role: author+
Semua field pada request body bersifat opsional — hanya field yang dikirim yang akan diperbarui.
Request Body
{
"title": "Cara Memulai Blog dengan Tulis CMS (Revisi)",
"status": "published"
}Response
{
"status": 200,
"message": "Post updated successfully",
"data": {
"id": "3f1a2b9c-7e4d-4c8a-9b21-0c5d6e7f8a90",
"title": "Cara Memulai Blog dengan Tulis CMS (Revisi)",
"status": "published"
}
}Delete Post
Menghapus post secara permanen.
Endpoint
DELETE /api/posts/:id
Authentication
Bearer Token (JWT) + X-Workspace-ID header · Role: author+
Response
{
"status": 200,
"message": "Post deleted successfully"
}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.