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-media-admin-media

Admin Media

Mengupload dan mengelola file media (gambar, video, dokumen) melalui Admin API.


Upload Media

Mengupload file media ke storage (lokal atau Cloudflare R2).

Endpoint

POST /api/media/upload

Authentication

Bearer Token (JWT) + X-Workspace-ID header · Role: author+

Request

Gunakan multipart/form-data.

FieldTypeRequiredDescription
filefileyaFile yang akan diupload.

Response

{
  "status": 201,
  "message": "Media uploaded successfully",
  "data": {
    "id": "m1n2o3p4-9999-8888-7777-666655554444",
    "url": "https://cdn.tulis.app/media/gambar-blog.jpg",
    "filename": "gambar-blog.jpg",
    "mime_type": "image/jpeg",
    "size": 245760,
    "width": 1200,
    "height": 800,
    "created_at": "2026-01-17T10:00:00Z"
  }
}

cURL Example

curl -X POST "https://YOUR_HOST/api/media/upload" \
  -H "Authorization: Bearer <token>" \
  -H "X-Workspace-ID: YOUR_WORKSPACE_ID" \
  -F "file=@/path/to/gambar.jpg"

Upload via URL

Mengupload media dari URL eksternal.

Endpoint

POST /api/media/upload-via-url

Authentication

Bearer Token (JWT) + X-Workspace-ID header · Role: author+

Request Body

FieldTypeRequiredDescription
urlstringyaURL file sumber.
{
  "url": "https://example.com/gambar.jpg"
}

List Media (Admin)

Mendapatkan daftar media di workspace.

Endpoint

GET /api/media

Authentication

Bearer Token (JWT) + X-Workspace-ID header · Role: author+

Query Parameters

ParameterTypeDefaultDescription
pageint1Nomor halaman.
per_pageint20Jumlah per halaman.
typestring(all)Filter: image, video, document.

Get Media

Mendapatkan detail satu media.

Endpoint

GET /api/media/:id


Update Media

Memperbarui metadata media (alt text, caption).

Endpoint

PUT /api/media/:id

Authentication · Role: editor+

FieldTypeRequiredDescription
altstringtidakAlt text gambar.
captionstringtidakCaption / deskripsi.

Delete Media

Menghapus media dari storage.

Endpoint

DELETE /api/media/:id

Authentication · Role: editor+

Response

{
  "status": 200,
  "message": "Media deleted"
}

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.