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_KEYatauDB_PASSWORD) langsung di dalam kode atau repository git. Gunakan file.envyang di-exclude oleh.gitignore.
Dokumen ini diperbarui secara otomatis pada 29 Desember 2024.