Referensi API Inti

Bagian ini menjelaskan secara rinci endpoint yang tersedia dalam Manjo Core API. Semua request harus menggunakan protokol HTTPS dan menyertakan header otentikasi.

Otentikasi

Sebelum melakukan request, Anda harus mendapatkan API_KEY dari dashboard developer. Key ini harus dikirimkan di setiap header request.

Header Name Tipe Data Wajib (Required) Deskripsi Contoh Value
Authorization String ✅ Ya Token Bearer untuk otentikasi sesi pengguna. Bearer eyJhbGciOi...
X-API-Key String ✅ Ya Kunci API publik untuk identifikasi aplikasi client. manjo_live_sk_12345
Content-Type String ✅ Ya Menentukan format payload yang dikirim. application/json
Accept String ❌ Tidak Versi API yang diinginkan (default ke versi terbaru). application/vnd.manjo.v2+json
X-Correlation-ID UUID ❌ Tidak ID unik untuk melacak request di log sistem (tracing). 550e8400-e29b-41d4...

Endpoint: Membuat Dokumen Baru

Membuat dokumen Markdown baru ke dalam repositori secara terprogram.

URL: POST /v1/documents/create

Parameter Body (JSON)

Tabel berikut menjelaskan semua properti yang dapat Anda kirimkan dalam JSON payload.

Properti Tipe Wajib Default Deskripsi Lengkap Validasi
title string - Judul dokumen yang akan ditampilkan sebagai H1 atau meta title. Max 120 karakter. Tidak boleh mengandung emoji.
slug string - URL path yang unik untuk dokumen ini. Hanya huruf kecil, angka, dan tanda hubung (-).
content string - Isi dokumen dalam format Markdown mentah atau MDX. Minimal 50 karakter.
category_id integer - ID kategori tempat dokumen akan dikelompokkan. Harus ID kategori yang valid di sistem.
tags array [] Daftar kata kunci untuk keperluan SEO dan pencarian internal. Maksimal 10 tags per dokumen.
is_published boolean false Status visibilitas dokumen. Jika false, dokumen menjadi draft. -
author.name string system Nama penulis yang akan ditampilkan di metadata. -
author.email string - Email penulis untuk notifikasi perubahan (gravatar support). Format email valid.
meta_data object {} Objek JSON bebas untuk menyimpan data kustom tambahan. Max size 2KB.

Contoh Request

curl -X POST [https://api.manjo.docs/v1/documents/create](https://api.manjo.docs/v1/documents/create) \
  -H "Authorization: Bearer <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Cara Integrasi Payment",
    "slug": "cara-integrasi-payment",
    "category_id": 105,
    "content": "# Panduan Payment\n\nIni adalah isi dokumen...",
    "tags": ["finance", "tutorial"],
    "is_published": true
  }'

Daftar Kode Error (Standard Response)

Manjo API menggunakan kode status HTTP standar untuk menunjukkan keberhasilan atau kegagalan request API.

Kode HTTP Kode Internal Pesan Error Deskripsi & Solusi
200 SUCCESS OK Request berhasil diproses. Payload data tersedia di respon.
201 RESOURCE_CREATED Created Resource baru (dokumen/kategori) berhasil dibuat.
400 INVALID_PARAMS Bad Request Parameter yang dikirim tidak valid atau format JSON salah. Periksa kembali tabel parameter di atas.
400 SLUG_EXISTS Duplicate Slug Slug dokumen sudah digunakan oleh dokumen lain. Gunakan slug yang unik.
401 AUTH_MISSING Unauthorized Header Authorization tidak ditemukan atau kosong.
401 TOKEN_EXPIRED Token Expired Token akses sudah kadaluwarsa. Silakan refresh token Anda.
403 ACCESS_DENIED Forbidden API Key valid, tetapi Anda tidak memiliki izin (scope) untuk melakukan aksi ini. Hubungi admin.
404 RSRC_NOT_FOUND Not Found Endpoint atau Resource ID yang diminta tidak ditemukan di database.
429 RATE_LIMIT Too Many Requests Anda telah melebihi batas request (1000 req/menit). Tunggu beberapa saat.
500 SERVER_ERR Internal Server Error Kesalahan di sisi server kami. Silakan coba lagi nanti atau hubungi support.
503 MAINTENANCE Service Unavailable API sedang dalam mode maintenance atau overload.

Matriks Kompatibilitas Fitur

Tabel ini menunjukkan fitur Markdown yang didukung oleh berbagai renderer yang tersedia di Manjo Docs (Standard vs Pro).

Fitur Markdown Manjo Standard (Free) Manjo Pro (Paid) Catatan Tambahan
Basic Formatting (Bold, Italic) ✅ Supported ✅ Supported Sesuai spesifikasi CommonMark.
Tables (Standar) ✅ Supported ✅ Supported -
Tables (Alignment & Merging) ❌ Tidak ✅ Supported Membutuhkan plugin remark-gfm-advanced.
Code Highlighting ✅ PrismJS ✅ Shiki (Twoslash) Shiki memberikan akurasi warna VS Code.
Mathematical Formulas (KaTeX) ❌ Tidak ✅ Supported Menggunakan sintaks LaTeX $E=mc^2$.
Diagrams (Mermaid.js) ❌ Tidak ✅ Supported Render chart flow/sequence langsung dari kode.
Admonitions (Alerts/Callouts) ✅ Basic ✅ Custom Icons Tipe: Note, Tip, Info, Warning, Danger.
Interactive Components (React) ❌ Tidak ✅ MDX v2 Import komponen .jsx langsung ke markdown.
Global Search ✅ Local Index ✅ Algolia/Elastic Pro mendukung pencarian fuzzy dan typo-tolerance.

Variabel Lingkungan (Environment Variables)

Konfigurasi server dapat diatur melalui file .env. Berikut adalah daftar lengkap variabel yang didukung.

Variabel Tipe Default Deskripsi
NODE_ENV String development Mode lingkungan (development, production, test).
PORT Number 3000 Port tempat server berjalan.
DB_HOST String localhost Host database PostgreSQL/MySQL.
DB_USER String root Username database.
REDIS_URL String - URL koneksi Redis untuk caching (Wajib untuk Production).
SEARCH_PROVIDER Enum local Provider pencarian: local, algolia, atau elasticsearch.
ELASTIC_NODE String - URL node Elasticsearch (jika provider = elasticsearch).
LOG_LEVEL String info Tingkat detail log: debug, info, warn, error.

Peringatan: Jangan pernah menyimpan kredensial (seperti API_KEY atau DB_PASSWORD) langsung di dalam kode atau repository git. Gunakan file .env yang di-exclude oleh .gitignore.


Dokumen ini diperbarui secara otomatis pada 29 Desember 2024.