المصادقة
كل طلب يحتاج مفتاح API خاص بجهتكم، يُرسل كـ Bearer Token. المفتاح يُصدره فريق جسر لكم مرة واحدة — احفظوه بمكان آمن، لا يمكن استرجاعه لاحقًا (بس يمكن توليد مفتاح جديد يلغي القديم).
- قدّموا طلب شراكة عبر jisr.lifepulse.bh/partners/apply — يطلع لكم مفتاحكم فورًا، بس يبقى غير مُفعّل لين نراجع الطلب.
- يصلكم مفتاح بالشكل
jisr_partner_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - أرفقوه بترويسة
Authorizationبكل طلب.
Authorization: Bearer jisr_partner_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
شارة "بدعم من جسر" — شرط أساسي للشراكة
أي جهة تستخدم هالـ API لازم تعرض شارة جسر بموقعها — بفوتر الموقع تحديدًا، نفس مكان شارات "trusted site" المعتادة. الشارة كود مستقل عن مفتاح الـ API — مايكشف أي بيانات حساسة، بس يربط زوّاركم بجسر ويأكد الشراكة.
- يوصلكم رمز شارة خاص بجهتكم من فريق جسر (شكله
jisr-xxxxxxxxxxxxxxxx— مختلف عن مفتاح الـ API). - الصقوا السطر التالي داخل فوتر الموقع (Footer) — نفس الفوتر يظهر بكل صفحات موقعكم، مو بس صفحة الإحالة.
- الشارة تظهر تلقائيًا مكان الكود بالضبط (الشعار + رابط لجسر)، وترسل إشارة بسيطة تأكد لفريقنا إنها فعلاً معروضة — بدون أي تتبع لزوّار موقعكم.
<script src="https://jisr.lifepulse.bh/js/partner-badge.js"
data-jisr-partner="jisr-xxxxxxxxxxxxxxxx" async></script>
مهم: الشارة عنصر ثابت بالصفحة (inline) وليست عنصر عائم (floating) — لا تضيفوا لها أي تنسيق يخليها ثابتة فوق المحتوى أو زاوية الشاشة. مكانها الوحيد المعتمد هو فوتر الموقع.
فريق جسر يقدر يشوف حالة الشارة (ظاهرة / متوقفة / ما رُكّبت) لكل جهة من لوحة التحكم — استمرار الشراكة مشروط باستمرار ظهورها بالفوتر.
استعراض المزودين
قائمة مزودي الدعم النفسي الأولي النشطين حاليًا، مع التخصص والفئة المقبولة (ذكور/إناث/الكل).
يرجّع كل المزودين النشطين. استخدموا id الناتج لجلب فتراتهم المتاحة بالخطوة التالية.
# الطلب
curl https://jisr.lifepulse.bh/api/v1/providers \
-H "Authorization: Bearer $TOKEN"
{
"data": [
{
"id": 25,
"name": "Fatema Matrook",
"specialty": "طبيبة عامة",
"bio": "...",
"accepted_gender": "all"
}
]
}
الفترات المتاحة لمزود معيّن — غير محجوزة بعد، ضمن أفق زمني تحددونه.
| الاسم | النوع | الوصف |
|---|---|---|
id | مسار | معرّف المزود من GET /providers |
days | اختياري | عدد الأيام القادمة للبحث فيها (افتراضي 14، أقصى 30) |
curl "https://jisr.lifepulse.bh/api/v1/providers/25/slots?days=7" \
-H "Authorization: Bearer $TOKEN"
{
"data": [
{
"id": 1534,
"start_at": "2026-09-04T10:00:00+03:00",
"end_at": "2026-09-04T10:30:00+03:00"
}
]
}
الإحالات
إنشاء إحالة يعني حجز الموعد فعليًا للمستفيد على الفترة المختارة — يصل إشعار للمزود فورًا بنفس آلية أي حجز عادي.
ينشئ إحالة/حجز جديد باسم المستفيد على فترة محددة.
| الاسم | النوع | الوصف |
|---|---|---|
name | مطلوب | اسم المستفيد |
phone | مطلوب | بصيغة دولية كاملة، مثل +97300000000 |
provider_id | مطلوب | من GET /providers |
slot_id | مطلوب | من GET /providers/{id}/slots |
email | اختياري | — |
gender | اختياري | male أو female — يُرفض لو ما يطابق فئة المزود المقبولة |
reason_category | اختياري | نص حر يصف سبب الإحالة |
curl -X POST https://jisr.lifepulse.bh/api/v1/referrals \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "رانيا",
"phone": "+97339003940",
"gender": "female",
"provider_id": 25,
"slot_id": 1534,
"reason_category": "قلق"
}'
// 201 Created
{
"data": {
"referral_id": 142,
"status": "pending",
"provider": "Fatema Matrook",
"start_at": "2026-09-04T10:00:00+03:00"
}
}
متابعة حالة إحالة سبق إنشاؤها. يرجّع الحالة العامة فقط — بدون أي تفاصيل سريرية أو محتوى الجلسة.
curl https://jisr.lifepulse.bh/api/v1/referrals/142 \
-H "Authorization: Bearer $TOKEN"
{
"data": {
"referral_id": 142,
"status": "confirmed",
"provider": "Fatema Matrook",
"start_at": "2026-09-04T10:00:00+03:00",
"created_at": "2026-08-28T09:12:00+03:00"
}
}
pending | بانتظار تأكيد المزود |
confirmed | مؤكد |
completed | تمت الجلسة |
rejected | رفضها المزود |
cancelled | أُلغيت |
no_show | لم يحضر المستفيد |
الأخطاء
كل خطأ يرجع بصيغة {"error": "..."} مع رمز حالة HTTP مناسب.
| الرمز | السبب |
|---|---|
| 401 | مفتاح API مفقود، غير صحيح، أو غير مُفعّل |
| 404 | المزود أو الإحالة غير موجودة (أو تعود لجهة أخرى) |
| 409 | الفترة المطلوبة انحجزت للتو من طرف ثاني |
| 422 | بيانات ناقصة أو غير صالحة — التفاصيل بجسم الرد |
| 429 | تجاوزتم الحد المسموح من الطلبات |
حدود الاستخدام
افتراضيًا 60 طلب بالدقيقة لكل جهة، قابلة للتعديل حسب حجم استخدامكم — تواصلوا معنا لو احتجتوا رفعها.
ملاحظة مهمة حول السلامة والخصوصية
الإحالات عبر الـ API لا تمر بفحص الأزمات النفسية (تقييم مخاطر الانتحار/إيذاء النفس) اللي يمر فيه الحجز المباشر من موقع جسر.
يعني مسؤوليتكم كجهة محيلة التأكد إن حالة المستفيد مو طارئة قبل الإحالة. لو في أي مؤشر خطر، تواصلوا مباشرة مع فريق جسر أو الطوارئ بدل الإحالة العادية.