Ekstensi Custom Endpoint
Menambahkan endpoint identity-bound pada namespace Sejoli API dari snippet atau plugin lain.
Sejoli API dapat menjadi lapisan autentikasi dan session untuk endpoint tambahan milik snippet, custom module, atau plugin lain. Karena itu, tidak semua endpoint di bawah /wp-json/sejoli/v1/me/* harus berasal dari plugin Sejoli API.
Pembagian Tanggung Jawab
Aktifnya Sejoli API tidak menjamin semua custom route tersedia. Deployment frontend harus memiliki daftar dependency module yang jelas atau menangani response 404 rest_no_route sebagai fitur yang tidak tersedia.
Hook Registrasi Route
Gunakan action berikut agar route didaftarkan setelah namespace utama Sejoli API siap:
Nilai $namespace saat ini adalah:
Gunakan nilai yang diberikan hook, bukan menulis namespace secara hardcoded, agar ekstensi mengikuti kontrak registrasi Sejoli API.
Helper Autentikasi
User-session biasa
Gunakan:
Di dalam callback, ambil user kanonis melalui:
Helper tersebut:
- memverifikasi Bearer JWT;
- mengambil WordPress user ID dari claim
sub; - memastikan user masih tersedia;
- menjalankan
wp_set_current_user()untuk user efektif.
Jangan menerima user_id atau affiliate_id dari frontend sebagai identitas utama. Identitas harus berasal dari JWT.
Direct administrator
Untuk operasi sensitif yang hanya boleh dijalankan administrator asli, gunakan:
Helper ini menolak:
- user tanpa capability
manage_options; - session hasil user switching;
- session impersonation.
Jika custom module memiliki capability khusus, buat permission callback sendiri yang terlebih dahulu memanggil sejoli_api_require_authenticated_user(), kemudian periksa capability dengan user_can().
Contoh Capability Khusus
Kontrak yang Harus Dimiliki Custom Module
Setiap custom module sebaiknya mendokumentasikan:
- plugin/module pemilik route;
- method dan path;
- dependency dan versi minimum;
- role atau capability yang diperlukan;
- parameter, pagination, dan filter;
- format response sukses;
- daftar error;
- side effect dan idempotency untuk operasi tulis.
Disarankan menggunakan pola response yang konsisten:
Keamanan
- Jangan menerbitkan API key ke browser atau Telegram Mini App.
- Gunakan user-session JWT untuk
/me/*. - Jangan mempercayai role gating pada frontend.
- Periksa ownership resource di server, bukan hanya capability umum.
- Sanitasi parameter melalui
argsroute dan validasi ulang aturan bisnis di callback. - Untuk endpoint admin, pertimbangkan apakah impersonated session harus ditolak.
Integrasi Frontend
Frontend dapat memanggil custom endpoint dengan token yang sama:
Jika module opsional tidak aktif, WordPress biasanya mengembalikan 404 dengan code rest_no_route. Perlakukan kondisi tersebut sebagai fitur/module tidak tersedia, bukan sebagai session yang kedaluwarsa.
Last updated Aug 15, 2026