RESTful API Specification ยท Playground Interaktif

Daftar Lengkap Endpoint API ChiliVision

Seluruh endpoint didefinisikan di routes/api.php (dengan prefix /api) serta kompatibilitas root di routes/web.php, ditangani oleh ChiliVisionApiController bersama service layer modular (LeafInferenceService, PesticideScheduleService, GeminiChatService). Klik โšก Uji Endpoint pada baris mana pun untuk mengetes request secara langsung.

๐Ÿ”— Base Endpoint URL
/api
https://chilivision.me/api
๐Ÿ—‚๏ธ Total Kategori & Rute
9 Grup ยท 24 Endpoint
42 rute aktif (termasuk alias bahasa Indonesia & root)
๐Ÿ—„๏ธ Koneksi Database & Service
TiDB Cloud (chilivision_db)
Service: LeafInferenceService, PesticideScheduleService, GeminiChatService
๐Ÿง  Engine AI & Layanan
4 Model ยท FastAPI Warm (8001)
Model: yolov8n-chili, yolov10n-chili, yolov11n-chili, cnn-6ch-chili ยท Gemini: gemini-3.5-flash-lite

0. Info, Health & Ringkasan Dashboard

7 Endpoint

Endpoint utilitas untuk memeriksa status server, ketersediaan model AI ONNX, daftar kamera, serta ringkasan real-time seluruh state sistem.

Method Endpoint & Alias Handler Deskripsi & Parameter / Body Aksi
GET /api
Alias: /api?format=json
ChiliVisionApiController@apiInfo
Menampilkan halaman dokumentasi interaktif REST API (di browser) atau spesifikasi JSON lengkap (?format=json).
Query opsional: format=json (untuk paksa output raw JSON).
๐Ÿ“„ Buka JSON โ†—
GET /api/health
Alias: /health
ChiliVisionApiController@health
Status server Laravel, koneksi database TiDB Cloud, daftar model AI aktif, dan ringkasan system_services (FastAPI warm worker / CLI fallback, Gemini AI, Telegram Bot, Scheduler).
Tidak ada parameter.
๐Ÿ“„ Buka JSON โ†—
GET /api/models
Alias: /models
ChiliVisionApiController@models (via LeafInferenceService)
Daftar model AI Computer Vision (yolov8n-chili, yolov10n-chili, yolov11n-chili, cnn-6ch-chili) beserta status file model.
Tidak ada parameter.
๐Ÿ“„ Buka JSON โ†—
GET /api/telegram/model ChiliVisionApiController@getTelegramModel
Mengambil model AI Computer Vision yang sedang dipilih secara persisten untuk Telegram Bot & Web.
Tidak ada parameter.
๐Ÿ“„ Buka JSON โ†—
POST /api/telegram/model ChiliVisionApiController@setTelegramModel
Mengubah model AI aktif untuk deteksi foto daun (yolov8n-chili, yolov10n-chili, yolov11n-chili, atau cnn-6ch-chili).
JSON / Form: โ€ข model_id (wajib): ID model dari /api/models
GET /api/cameras
Alias: /cameras
ChiliVisionApiController@cameras
Daftar sumber kamera default yang terdaftar.
Tidak ada parameter.
๐Ÿ“„ Buka JSON โ†—
GET /api/dashboard/state ChiliVisionApiController@dashboardState
Mengambil seluruh state real-time sekaligus (deteksi daun, soil moisture, DHT11, histori semprot, jadwal pestisida, status ESP32, system_services, dan pesan chatbot).
Tidak ada parameter.
๐Ÿ“„ Buka JSON โ†—

1. API Gambar Daun & Deteksi Penyakit (Computer Vision)

2 Endpoint

Inferensi berjalan melalui LeafInferenceService (FastAPI warm worker port 8001 dengan circuit breaker + fallback otomatis ke CLI Python). Jika visual daun tidak berubah, gambar tidak diduplikasi ke TiDB Cloud kecuali force_save=true.

Method Endpoint & Alias Handler Deskripsi & Parameter / Body Aksi
GET /api/leaf-image
Alias: /api/gambar-daun
ChiliVisionApiController@getLatestLeafImage
Mengambil deteksi daun terakhir beserta 10 riwayat deteksi terbaru dari tabel leaf_detections.
Tidak ada parameter.
๐Ÿ“„ Buka JSON โ†—
POST /api/leaf-image
Alias: /api/gambar-daun, /api/predict, /predict
ChiliVisionApiController@predictAndStoreLeaf -> LeafInferenceService
Menjalankan inferensi AI (mengembalikan field inference_backend: fastapi|cli) pada foto daun cabai & menyimpan ke database jika kondisi daun berubah.
multipart/form-data: โ€ข file atau image (wajib, file gambar JPG/PNG/WEBP) โ€ข model_id (opsional, default: model terpilih / 'yolov8n-chili') โ€ข threshold (opsional, 0.10โ€“0.95; default: 0.45 untuk YOLO, 0.50 untuk CNN 6-Channel) โ€ข force_save (opsional, boolean)

2. API Sensor Soil Moisture (Kelembapan Tanah)

2 Endpoint

Alur: web > chatbot > database. Jika kelembapan tanah < 30% (Kering), sistem otomatis menjadwalkan penyemprotan air selama 5 detik.

Method Endpoint & Alias Handler Deskripsi & Parameter / Body Aksi
GET /api/sensor/soil-moisture
Alias: /api/soil-moisture
ChiliVisionApiController@getLatestSoilMoisture
Mengambil pembacaan kelembapan tanah terakhir & 15 riwayat terbaru dari tabel soil_moisture_readings.
Tidak ada parameter.
๐Ÿ“„ Buka JSON โ†—
POST /api/sensor/soil-moisture
Alias: /api/soil-moisture
ChiliVisionApiController@storeSoilMoisture
Mengirim pembacaan kelembapan tanah baru ke Web, meneruskan notifikasi ke Chatbot/Telegram, dan menyimpan ke TiDB Cloud.
JSON / Form: โ€ข moisture_percent (atau moisture / value): 0โ€“100 (wajib) โ€ข adc_value (opsional, integer) โ€ข source (opsional, default: 'api'; isi 'esp32' untuk mencatat heartbeat hardware)

3. API Sensor DHT11 (Suhu & Kelembapan Udara)

2 Endpoint

Alur: web > chatbot > database. Menghitung heat index otomatis dan memberikan rekomendasi kondisi mikroklimat cabai.

Method Endpoint & Alias Handler Deskripsi & Parameter / Body Aksi
GET /api/sensor/dht11
Alias: /api/dht11
ChiliVisionApiController@getLatestDht11
Mengambil pembacaan suhu & kelembapan udara terakhir beserta 15 riwayat terbaru dari tabel dht11_readings.
Tidak ada parameter.
๐Ÿ“„ Buka JSON โ†—
POST /api/sensor/dht11
Alias: /api/dht11
ChiliVisionApiController@storeDht11
Mengirim pembacaan suhu & kelembapan udara baru ke Web, meneruskan notifikasi ke Chatbot/Telegram, dan menyimpan ke TiDB Cloud.
JSON / Form: โ€ข temperature (atau suhu): -10 s/d 80 (wajib) โ€ข humidity (atau kelembapan_udara): 0โ€“100 (wajib) โ€ข source (opsional, default: 'api'; isi 'esp32' untuk mencatat heartbeat hardware)

4. API Histori & Jadwal Penyemprotan Pestisida

2 Endpoint

Dikelola oleh PesticideScheduleService: menyimpan histori semprot serta mengevaluasi interval fleksibel dan jadwal target tanggal/jam spesifik (dipicu otomatis oleh scheduler background).

Method Endpoint & Alias Handler Deskripsi & Parameter / Body Aksi
GET /api/spray/pesticide/history
Alias: /api/histori-pestisida
ChiliVisionApiController@getPesticideSprayHistory -> PesticideScheduleService
Mengambil waktu terakhir pestisida disemprot, info interval/jadwal target tanggal spesifik, dan 20 riwayat terakhir.
Tidak ada parameter.
๐Ÿ“„ Buka JSON โ†—
POST /api/spray/pesticide/history
Alias: /api/histori-pestisida
ChiliVisionApiController@storePesticideSprayHistory
Mencatat log histori waktu penyemprotan pestisida ke tabel spray_histories.
JSON / Form (opsional semua): โ€ข trigger_mode, triggered_by, duration_seconds, leaf_condition, notes, sprayed_at

5. API Histori Penyemprotan Air

2 Endpoint

Menyimpan dan menampilkan waktu terakhir penyemprotan air dari tabel spray_histories.

Method Endpoint & Alias Handler Deskripsi & Parameter / Body Aksi
GET /api/spray/water/history
Alias: /api/histori-air
ChiliVisionApiController@getWaterSprayHistory
Mengambil waktu terakhir air disemprot dan 20 riwayat penyemprotan air terakhir.
Tidak ada parameter.
๐Ÿ“„ Buka JSON โ†—
POST /api/spray/water/history
Alias: /api/histori-air
ChiliVisionApiController@storeWaterSprayHistory
Mencatat log histori waktu penyemprotan air ke tabel spray_histories.
JSON / Form (opsional semua): โ€ข trigger_mode, triggered_by, duration_seconds, soil_moisture, notes, sprayed_at

6. API Penyemprotan Manual (Air & Pestisida)

1 Endpoint

Digunakan oleh tombol di Web Dashboard maupun perintah manual untuk menyalakan pompa air/pestisida dan memasukkannya ke antrean ESP32.

Method Endpoint & Alias Handler Deskripsi & Parameter / Body Aksi
POST /api/spray/manual
Alias: /api/penyemprotan-manual
ChiliVisionApiController@triggerManualSpray
Memicu penyemprotan manual air atau pestisida, mencatat ke histori, dan memberi tahu Chatbot/Telegram.
JSON / Form: โ€ข type (atau jenis): 'water' / 'air' atau 'pesticide' / 'pestisida' โ€ข duration_seconds (opsional, 1โ€“60 detik, default: 5) โ€ข triggered_by / source (opsional, default: 'web') โ€ข notes (opsional)

7. API Chatbot AI (Gemini), Telegram Bot & Hardware ESP32

5 Endpoint

Sinkronisasi 2 arah antara Chatbot Website (GeminiChatService + fast-path command), Bot Telegram, monitoring heartbeat ESP32, dan antrean polling perintah pompa.

Method Endpoint & Alias Handler Deskripsi & Parameter / Body Aksi
GET /api/chatbot/messages ChiliVisionApiController@getChatbotMessages
Mengambil 40 pesan percakapan chatbot terakhir dari tabel chatbot_messages.
Tidak ada parameter.
๐Ÿ“„ Buka JSON โ†—
POST /api/chatbot/message ChiliVisionApiController@sendChatbotMessage -> GeminiChatService
Mengirim pesan atau perintah ke chatbot. Mendukung /status, /semprot_air, /semprot_pestisida, ubah jadwal interval atau tanggal/jam spesifik, ganti model AI, serta tanya jawab bebas via Gemini AI.
JSON / Form: โ€ข message (wajib, string maks 1000 karakter) โ€ข source (opsional, 'web' atau 'telegram')
GET /api/esp32/poll
Alias: /api/spray/pending
ChiliVisionApiController@esp32PollCommands
Di-polling oleh mikrokontroler ESP32 untuk mencatat heartbeat online, mengecek antrean perintah nyala pompa (spray_water, spray_pesticide beserta durasinya), dan menandainya completed.
Tidak ada parameter.
๐Ÿ“„ Buka JSON โ†—
GET /api/hardware/esp32-status ChiliVisionApiController@getHardwareStatus
Memeriksa status koneksi heartbeat ESP32 terbaru (never_connected, online, offline beserta selisih detik terakhir aktif).
Tidak ada parameter.
๐Ÿ“„ Buka JSON โ†—
POST /api/telegram/webhook ChiliVisionApiController@telegramWebhook
Endpoint webhook untuk menerima pesan masuk dari Bot Telegram dan membalasnya secara otomatis.
Payload JSON standar Telegram Update: โ€ข message.chat.id โ€ข message.text

8. API Laporan & Ekspor Data CSV

1 Endpoint

Menyediakan unduhan laporan data historis siap buka di Excel/Spreadsheet (UTF-8 BOM CSV).

Method Endpoint & Alias Handler Deskripsi & Parameter / Body Aksi
GET /api/reports/export/{type} ChiliVisionApiController@exportCsvReport
Mengekspor data historis ke format CSV berdasarkan tipe laporan.
Path parameter {type} wajib salah satu dari: โ€ข soil (kelembapan tanah) โ€ข dht11 (suhu & kelembapan udara) โ€ข leaf (riwayat deteksi daun) โ€ข spray (riwayat penyemprotan air & pestisida)
๐Ÿ“ฅ Unduh CSV โ†—

โšก Uji Endpoint API Secara Langsung

GET
Klik "Kirim Request" untuk mengeksekusi endpoint.
// Respons JSON dari server akan tampil di sini...