أرسل إشعارات إلى الموظفين من أنظمة أخرى — سكربتات، مهام كرون على خوادم أخرى، n8n، ويب هوك، بوتات واتساب.
المالك: اذهب إلى إدارة ← 🔑 مفتاح API، أعطه اسمًا، اضغط إنشاء مفتاح.
jss_ + 64 حرفًا، ويُعرض مرة واحدة فقط. الخادم يخزّن بصمته فقط، فإذا فقدته لن يستطيع أحد إظهاره لك مجددًا — ولا نحن أيضًا. ألغِ القديم وأنشئ واحدًا جديدًا. أحد هذين الترويستين — اختر ما هو أسهل لأداتك:
Authorization: Bearer jss_xxxxxxxx...
X-API-Key: jss_xxxxxxxx...
المفتاح يحدّد الشركة. لا توجد معلمة مستأجر (tenant) في أي نقطة نهاية — لو وُجدت، لكفى مفتاح واحد مسرَّب لإرسال رسائل إلى جميع الشركات على هذه المنصة.
يرسل الإشعارات فقط إلى موظفي الشركة المالكة، بالإضافة إلى قراءة قائمة أسماء الموظفين ومعرّفاتهم (حتى تحصل على user_id دون تخمين).
لا يستطيع قراءة راتب أو حضور أو بريد أو حساب بنكي أو إشعارات أي شخص؛ ولا يستطيع تغيير أي شيء؛ ولا يستطيع لمس شركات أخرى. ضيّق النطاق عمدًا — فالبيانات المخزَّنة على خادم آخر ستتسرّب عاجلًا أم آجلًا، ومدى الضرر يعتمد على مدى قلة ما يمكنها فعله.
GET/api/v1/notif.php?aksi=ping
curl "https://staff.jidanshoppu.com/api/v1/notif.php?aksi=ping" \ -H "Authorization: Bearer jss_xxx"
{ "ok": true, "key": "n8n produksi", "perusahaan": "Perusahaan Kamu" }
GET/api/v1/notif.php?aksi=karyawan
— للحصول على user_id.
curl "https://staff.jidanshoppu.com/api/v1/notif.php?aksi=karyawan" \ -H "Authorization: Bearer jss_xxx"
{
"ok": true,
"karyawan": [
{ "user_id": 3, "nama": "Sela", "peran": "staff" },
{ "user_id": 5, "nama": "Syauqi", "peran": "staff" }
]
}
فقط المعرّف والاسم والدور. لا بريد إلكتروني/أجر/حساب بنكي — هذا المفتاح لإرسال الإشعارات، وليس لقراءة بيانات الأشخاص.
POST/api/v1/notif.php — يقبل JSON أو بيانات النموذج.
| الحقل | مطلوب | الوصف |
|---|---|---|
judul | نعم | الحد الأقصى 120 حرفًا |
isi | نعم | الحد الأقصى 255 حرفًا |
user_id | لا | معرّف الموظف. 0 أو عدم الإرسال = جميع الموظفين النشطين |
jenis | لا | info (افتراضي)، kasbon (سلفة)، gaji (راتب)، bonus (مكافأة)، timer (مؤقّت)، absen (حضور). يحدّد الأيقونة فقط؛ القيم غير المعروفة تؤول إلى info |
url | لا | يجب أن يكون مسارًا داخليًا يبدأ بـ / |
curl -X POST https://staff.jidanshoppu.com/api/v1/notif.php \
-H "Authorization: Bearer jss_xxx" \
-H "Content-Type: application/json" \
-d '{
"judul": "Besok libur",
"isi": "Tanggal 17 libur, timer tidak perlu dinyalakan."
}'
{ "ok": true, "terkirim": 5 }
curl -X POST https://staff.jidanshoppu.com/api/v1/notif.php \ -H "X-API-Key: jss_xxx" \ -d "user_id=3" \ -d "judul=Cek transaksi kamu" \ -d "isi=Ada penyesuaian baru bulan ini." \ -d "jenis=gaji" \ -d "url=/staff/transaksi.php"
url مسارًا داخليًا. يُرفض https://… و //evil.com برمز 400. //evil.com، رغم أنه يبدأ بشرطة مائلة: تقرأه المتصفحات كعنوان لمضيف آخر. الموظفون الذين لديهم البوابة مفتوحة يسمعون صوتًا ويرون نافذة منبثقة خلال ≤20 ثانية. من ليست البوابة مفتوحة لديه سيُستقبَل في المرة القادمة التي يسجّل فيها الدخول. كل شيء يصل إلى صفحة إشعاراتهم، وكل إرسال عبر API يُسجَّل في سجل التدقيق باسم المفتاح.
60 طلبًا في الدقيقة لكل مفتاح. كل استجابة تحمل:
X-RateLimit-Limit: 60 X-RateLimit-Remaining: 57
عند تجاوز الحد ← 429 + Retry-After: 60.
| الرمز | المعنى |
|---|---|
200 | نجاح |
400 | معلمة خاطئة، أو جسم JSON تالف، أو url ليس مسارًا داخليًا |
401 | المفتاح غير مُرسَل، أو خاطئ، أو تم إلغاؤه بالفعل |
404 | user_id ليس موظفًا في هذه الشركة |
405 | طريقة خاطئة |
429 | تم تجاوز حد المعدل |
| العرض | السبب غالبًا |
|---|---|
401 رغم أن المفتاح صحيح |
بعض الخوادم تُسقِط ترويسة Authorization قبل وصولها إلى PHP. جرّب X-API-Key — وهي ترويسة عادية لا يلمسها الخادم أبدًا. إن نجحت تلك ولم ينجح Bearer، أخبرنا. |
401 فجأة رغم أنه كان يعمل من قبل |
قام المالك بإلغاء المفتاح. تحقّق في صفحة مفتاح API. |
400 "يجب أن يكون url مسارًا داخليًا" |
أرسلت https://…. استخدم بدلًا منه /staff/transaksi.php. |
200 لكن "terkirim": 0 |
الموظف غير نشط، أو أن الشركة ليس لديها موظفون نشطون بعد. |
هل تحتاج أن يسجّل الموظفون الدخول إلى تطبيقك بحساب JS Staff الخاص بهم (وليس فقط تلقّي الإشعارات)؟ هذا هو SSO — دليل الإعداد هنا.