אספקלריה

ליווי רוחני נבואי

API Documentation
Instructions for interacting with the AlertSync API.

AlertSync Webhook API: מדריך למפתחי base44



מסמך זה מסביר כיצד לשלב את אפליקציית base44 עם שירות AlertSync לצורך שליחת התראות Push למשתמשים באמצעות OneSignal.

⚙️ זרימת העבודה החדשה



הארכיטקטורה החדשה מפרידה באופן ברור בין האחריויות:

1. **רישום מכשיר (באחריות AlertSync):**
* אפליקציית base44 מפנה את המשתמש לדף ייעודי ב-AlertSync לצורך רישום לקבלת התראות.
* **כתובת ההפניה:** https://your-alertsync-domain.com/register?userId=USER_ID_FROM_YOUR_SYSTEM&returnUrl=URL_TO_RETURN_TO
* בדף זה, AlertSync משתמש ב-SDK של OneSignal וגם ב-SDK של Firebase כדי לבקש הרשאה מהמשתמש ולקבל מזהי מכשיר.
* לאחר אישור, AlertSync שומר את המזהים (playerId ו-fcmToken) בבסיס הנתונים שלו, משויכים ל-userId שקיבל.

2. **תזמון התראה (באחריות base44):**
* כאשר מערכת base44 רוצה לשלוח התראה למשתמש, היא שולחת בקשת POST ל-Webhook של AlertSync.
* הבקשה מכילה את ה-userId של המשתמש (לא את ה-playerId) ויכולה לציין אם להשתמש ב-onesignal או firebase.

3. **שליחה על ידי AlertSync:**
* שירות AlertSync מקבל את הבקשה.
* בזמן השליחה, המערכת מחפשת בבסיס הנתונים שלה איזה מזהה מכשיר (playerId או fcmToken) משויך ל-userId שהתקבל, בהתאם לספק שנבחר.
* AlertSync שולח את ההתראה למשתמש דרך ה-API של הספק המתאים.

---

🚀 שלב 1: הפניית משתמש לרישום



כדי לרשום משתמש לקבלת התראות, הפנה אותו מהמערכת שלך לכתובת הבאה. החלף את USER_ID_FROM_YOUR_SYSTEM במזהה הייחודי של המשתמש במערכת base44, והוסף returnUrl (מקודד) כדי להחזיר את המשתמש לאפליקציה שלך לאחר הצלחה.

https://studio--alertsync-g4usl.us-central1.hosted.app/register?userId=USER_ID_FROM_YOUR_SYSTEM&returnUrl=URL_ENCODED_RETURN_URL

**דוגמה:** עבור משתמש עם המזהה client-54321, שצריך לחזור לדף https://my.base44.com/settings:
https://studio--alertsync-g4usl.us-central1.hosted.app/register?userId=client-54321&returnUrl=https%3A%2F%2Fmy.base44.com%2Fsettings

בדף זה, המשתמש יתבקש לאשר קבלת התראות. AlertSync יטפל בכל תהליך הרישום מול OneSignal ו-Firebase, שמירת הנתונים, והפניית המשתמש בחזרה בסיום.

---

🧐 שלב 1.5 (אופציונלי): בדיקת סטטוס רישום



לפני תזמון התראה, ניתן לבדוק האם למשתמש מסוים יש לפחות מכשיר אחד רשום במערכת.

### Endpoint

- **URL**: https://studio--alertsync-g4usl.us-central1.hosted.app/api/devices/status/[userId]
- **Method**: GET
- **URL Params**:
- userId (string, required): The unique user ID from your base44 system.

### Authentication

הנקודה מוגנת באמצעות מפתח API. יש לכלול את המפתח בהידר x-api-key.

- **Header Name**: x-api-key
- **Value**: AIzaSyC0n-Rfy4FtI4_S_D6inv1qsayoE8U8gM4

### תגובה (Response)

גוף התגובה יכיל אובייקט JSON עם המידע הבא:

FieldTypeDescription
isRegisteredbooleantrue אם למשתמש יש לפחות מכשיר אחד רשום, אחרת false.
deviceCountnumberמספר המכשירים הרשומים עבור המשתמש.

#### דוגמת תגובה (משתמש רשום)

{
"isRegistered": true,
"deviceCount": 2
}

#### דוגמת פקודת curl

# Replace user_101 with the actual User ID you want to check
curl -X GET \
-H "x-api-key: AIzaSyC0n-Rfy4FtI4_S_D6inv1qsayoE8U8gM4" \
https://studio--alertsync-g4usl.us-central1.hosted.app/api/devices/status/user_101

---


📬 שלב 2: תזמון התראה (Webhook)



לאחר שהמשתמש נרשם, תוכל לשלוח בקשה ל-Webhook של AlertSync כדי לתזמן עבורו התראה, **תוך שימוש ב-userId שלו**.

### Endpoint

- **URL**: https://studio--alertsync-g4usl.us-central1.hosted.app/api/webhook
- **Method**: POST

### Authentication

הנקודה מוגנת באמצעות מפתח API. יש לכלול את המפתח בהידר x-api-key.

- **Header Name**: x-api-key
- **Value**: AIzaSyC0n-Rfy4FtI4_S_D6inv1qsayoE8U8gM4 (ניתן לשנות ב-.env של פרויקט AlertSync).

### Headers

- Content-Type: application/json
- x-api-key: AIzaSyC0n-Rfy4FtI4_S_D6inv1qsayoE8U8gM4

### Request Body Schema

FieldTypeRequiredDescription
userIdstringYesThe unique user ID from your base44 system.
alertTypestringYesThe type of the alert (e.g., "High Temperature", "Security Breach").
sendAtstringYesAn ISO 8601 formatted date-time string indicating when the alert should be sent.
providerstringNoThe notification provider. Can be 'onesignal' or 'firebase'. Defaults to 'onesignal' if not provided.
alertDetailsstringNoOptional detailed information about the alert.
appNamestringNoOptional name of the application sending the alert. This will be used as the push notification title. Defaults to "Base44 Alert" if not provided.
webUrlstringNoOptional URL to open when the notification is clicked. Defaults to https://aspaklaria.base44.app/ if not provided.
timestampstringNoAn ISO 8601 formatted date-time string for when the event occurred. If not provided, the server will use the current time.

#### דוגמת בקשה (Request Body)

{
"userId": "user_101",
"alertType": "Security Breach",
"alertDetails": "Unauthorized access attempt detected from IP 192.168.1.100.",
"sendAt": "2024-08-15T10:35:00Z",
"timestamp": "2024-08-15T10:30:00Z",
"appName": "Base44 Security",
"provider": "onesignal",
"webUrl": "https://aspaklaria.base44.app/dashboard/security"
}

### דוגמת פקודת curl

# Replace user_101 with the actual User ID from your system
# This example will send the notification via the 'onesignal' provider with a default URL
curl -X POST \
-H "Content-Type: application/json" \
-H "x-api-key: AIzaSyC0n-Rfy4FtI4_S_D6inv1qsayoE8U8gM4" \
-d '{
"userId": "user_101",
"alertType": "High Temperature",
"alertDetails": "CPU temperature has exceeded 90°C.",
"sendAt": "'$(date -u -v+1M +'%Y-%m-%dT%H:%M:%SZ')'",
"appName": "Base44",
"provider": "onesignal"
}' \
https://studio--alertsync-g4usl.us-central1.hosted.app/api/webhook

---

### תגובות (Responses)

- **201 Created:** הבקשה התקבלה בהצלחה וההתראה תוזמנה.
- **400 Bad Request:** גוף הבקשה אינו תקין או שחסרים שדות חובה.
- **401 Unauthorized:** המפתח x-api-key חסר או שגוי.
- **500 Internal Server Error:** שגיאה פנימית בשרת.