Endpoint identity-bound untuk dashboard dan aplikasi user-facing menggunakan user-session JWT.
Endpoint /me mengakses data sesuai identitas pengguna pada user-session JWT. Backend menerbitkan token melalui POST /sessions, kemudian aplikasi user-facing mengirim token tersebut ke endpoint /me/*. Pada Telegram Mini App, Sejoli Telegram memverifikasi initData dan meminta Sejoli API menerbitkan token yang sama melalui flow /tma/session.
| Endpoint API biasa | Endpoint /me |
|---|
| Menggunakan API key dan scope. | Menggunakan user-session JWT. |
| Untuk integrasi server/admin. | Untuk dashboard atau aplikasi pengguna. |
| Parameter identitas mengikuti kontrak endpoint. | Identitas selalu ditentukan dari JWT. |
Autentikasi
- Backend memanggil
POST /wp-json/sejoli/v1/sessions memakai API key dengan scope sessions:write.
- API menerbitkan JWT dengan
token_type: Bearer dan waktu kedaluwarsa.
- Client mengirim token pada setiap request
/me:
Daftar Endpoint
Umum dan affiliate
GET /me
GET /me/home-summary
POST/PATCH /me/profile
GET /me/commission-summary
GET /me/commissions
GET /me/products
GET /me/links
GET /me/creatives
GET /me/rank
GET /me/leaderboard
GET /me/subscriptions
GET /me/access
GET/POST /me/affiliate-coupons
POST /me/media/upload-image
Order identity-bound
GET /me/orders
GET /me/orders/{id}
POST/PATCH /me/orders/{id}/status
Member hanya dapat membaca order ketika menjadi buyer atau affiliate pada order tersebut. Perubahan status order memerlukan akses admin.
Parameter GET /me/orders:
| Parameter | Tipe | Keterangan |
|---|
scope | string | Sudut pandang order sesuai role pengguna. |
role | string | Alias kompatibilitas untuk scope. |
status | string | Filter satu status order. |
status_group | string | Filter kelompok status. |
search | string | Pencarian order. |
date_start | string | Tanggal awal. |
date_end | string | Tanggal akhir. |
page | integer | Halaman, default 1. |
per_page | integer | Jumlah item, default 25. |
Khusus admin
Endpoint berikut memerlukan user-session milik pengguna dengan capability manage_options:
GET /me/admin-summary
GET /me/users
GET /me/users/{id}
GET/POST /me/coupons
GET /me/licenses
GET /me/coupon-products
POST /me/switch-user
POST /me/switch-back
Beberapa endpoint admin langsung diblokir ketika token sedang berada dalam konteks user switching. POST /me/switch-user hanya dapat menargetkan akun non-admin.
Profile
GET /wp-json/sejoli/v1/me
Response menyertakan identitas efektif, informasi kontak, kemampuan affiliate, status admin, dan konteks session. Contoh ringkas:
{
"success": true,
"data": {
"id": 35,
"effective_user_id": 35,
"display_name": "User Name",
"email": "user@example.com",
"phone": "",
"bank": "",
"can_affiliate": true,
"can_affiliate_coupon": false,
"is_admin": false
}
}
Update profile:
PATCH /wp-json/sejoli/v1/me/profile
Field yang didukung: first_name, phone, dan bank_info.
Affiliate
Ringkasan dan daftar komisi
GET /wp-json/sejoli/v1/me/commission-summary?date_start=2026-08-01&date_end=2026-08-31
GET /wp-json/sejoli/v1/me/commissions
affiliate_id selalu ditentukan dari JWT.
Produk, link, dan materi kreatif
GET /wp-json/sejoli/v1/me/products
GET /wp-json/sejoli/v1/me/links?product_id=123
GET /wp-json/sejoli/v1/me/creatives?product_id=123
/me/links menerima product_id atau alias id; /me/creatives mewajibkan product_id.
Kupon affiliate
GET /wp-json/sejoli/v1/me/affiliate-coupons
POST /wp-json/sejoli/v1/me/affiliate-coupons
Body pembuatan:
{
"code": "PROMO-AFFILIATE",
"coupon_parent_id": 42
}
Affiliate hanya dapat menyalin template kupon admin yang eligible. Identitas affiliate, diskon, aturan, status, dan limit ditentukan server.
Upload Gambar
POST /wp-json/sejoli/v1/me/media/upload-image
Gunakan endpoint ini untuk kebutuhan upload gambar pada aplikasi user-facing. Validasi tipe, ukuran, dan capability tetap dilakukan server.
Error Umum
| Status | Code | Keterangan |
|---|
| 400 | rest_missing_callback_param | Parameter wajib tidak dikirim. |
| 401 | sejoli_session_no_token | Bearer token tidak dikirim. |
| 401 | sejoli_session_invalid_token | Token salah, kedaluwarsa, atau payload tidak valid. |
| 401 | sejoli_session_user_gone | User pada token sudah tidak ada. |
| 403 | rest_forbidden | Role/capability pengguna tidak memenuhi syarat. |
| 404 | rest_not_found | Resource tidak ditemukan atau tidak dapat diakses pengguna. |
| 404 | rest_no_route | Endpoint custom/module opsional tidak terdaftar. |
Perubahan Fase 6
Endpoint lama berikut sudah dihapus dan tidak boleh digunakan:
POST /wp-json/sejoli/v1/me/send-report
Pengiriman report merupakan tanggung jawab Sejoli Telegram. Konsumen eksternal yang masih memerlukannya harus bermigrasi ke:
POST /wp-json/sejoli-telegram/v1/admin/send-report
Endpoint tersebut bukan bagian kontrak namespace Sejoli API dan memerlukan plugin Sejoli Telegram yang aktif serta terkonfigurasi.