Dokumentasi Resmi
|tulis.org

Arsitektur Dokumentasi

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

TULIS CMS/DEVELOPER HUB
/api-reference-post-admin-crud

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

FieldTypeRequiredDescription
titlestringyaJudul post.
contentstringtidakKonten post (HTML/TipTap JSON).
slugstringtidakSlug URL (auto-generated dari title jika kosong).
statusstringtidakdraft, published, scheduled (default: draft).
post_typestringtidakPost type slug (default: post type bawaan).
excerptstringtidakRingkasan post.
feature_imagestringtidakURL gambar utama.
seo_titlestringtidakJudul SEO (meta title).
seo_descstringtidakDeskripsi SEO (meta description).
languagestringtidakKode bahasa ISO 639-1 (id, en, dll).
published_atstringtidakTanggal publish (untuk scheduled post).
taxonomiesarraytidakArray 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

ParameterTypeDefaultDescription
statusstring(semua)Filter: draft, published, scheduled.
typestring(semua)Post type slug.
pageint1Nomor halaman.
per_pageint20Jumlah 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

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.