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-workspace-manage

Workspace

Workspace adalah unit tenant dalam Tulis CMS — setiap workspace memiliki konten, media, pengguna, dan pengaturan sendiri. Satu pengguna bisa menjadi anggota beberapa workspace.

Semua endpoint di bawah memerlukan Bearer Token (JWT).


Create Workspace

Membuat workspace baru. Pengguna yang membuat otomatis menjadi owner.

Endpoint

POST /api/workspaces

Request Body

FieldTypeRequiredDescription
namestringyaNama workspace (contoh: "Blog Pribadi").
slugstringyaSlug unik untuk subdomain/URL.
{
  "name": "Blog Pribadi",
  "slug": "blog-pribadi"
}

Response

{
  "status": 201,
  "message": "Workspace created successfully",
  "data": {
    "id": "a1b2c3d4-1111-2222-3333-444455556666",
    "name": "Blog Pribadi",
    "slug": "blog-pribadi",
    "owner_id": "c3d4e5f6-3333-4444-5555-666677778888",
    "created_at": "2026-01-15T08:00:00Z"
  }
}

cURL Example

curl -X POST "https://YOUR_HOST/api/workspaces" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name": "Blog Pribadi", "slug": "blog-pribadi"}'

List My Workspaces

Mendapatkan daftar workspace tempat pengguna menjadi anggota.

Endpoint

GET /api/workspaces

Response

{
  "status": 200,
  "message": "Workspaces retrieved",
  "data": [
    {
      "id": "a1b2c3d4-1111-2222-3333-444455556666",
      "name": "Blog Pribadi",
      "slug": "blog-pribadi",
      "role": "owner"
    },
    {
      "id": "b2c3d4e5-2222-3333-4444-555566667777",
      "name": "Tim Redaksi",
      "slug": "tim-redaksi",
      "role": "editor"
    }
  ]
}

cURL Example

curl "https://YOUR_HOST/api/workspaces" \
  -H "Authorization: Bearer <token>"

Get Workspace

Mendapatkan detail satu workspace.

Endpoint

GET /api/workspaces/:id

Response

{
  "status": 200,
  "message": "Workspace retrieved",
  "data": {
    "id": "a1b2c3d4-1111-2222-3333-444455556666",
    "name": "Blog Pribadi",
    "slug": "blog-pribadi",
    "owner_id": "c3d4e5f6-3333-4444-5555-666677778888",
    "created_at": "2026-01-15T08:00:00Z",
    "updated_at": "2026-01-20T10:00:00Z"
  }
}

Update Workspace

Memperbarui nama/slug workspace. Hanya owner yang bisa.

Endpoint

PUT /api/workspaces/:id

Request Body

FieldTypeRequiredDescription
namestringtidakNama baru workspace.
slugstringtidakSlug baru.

Response

{
  "status": 200,
  "message": "Workspace updated",
  "data": {
    "id": "a1b2c3d4-1111-2222-3333-444455556666",
    "name": "Blog Pribadi (Updated)",
    "slug": "blog-pribadi-2"
  }
}

Delete Workspace

Menghapus workspace. Hanya owner yang bisa. Data konten, media, dan anggota akan ikut terhapus.

Endpoint

DELETE /api/workspaces/:id

Response

{
  "status": 200,
  "message": "Workspace 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.