واجهة SahlSign API هي REST + JSON. يمكنك إرسال المستندات، الاستعلام عن الحالة، قائمة أحداث التدقيق، و(قادم) استقبال Webhooks عندما تتغير حالة المستندات — كل ذلك برمجيًا.
البدء
١. افتح الإعدادات ← مفاتيح API (تتطلب خطة Pro)
٢. انقر إنشاء مفتاح جديد. أعطِه اسمًا (مثل "تكامل HRIS للإنتاج"). يُعرَض المفتاح الكامل مرة واحدة — انسخه فورًا
٣. صادق على كل طلب بـ Authorization: Bearer sahl_live_xxxxx
النقاط النهائية الرئيسية
POST /api/v1/documents تحميل + إنشاء مستند
POST /api/v1/documents/:id/send إرسال للتوقيع
GET /api/v1/documents/:id حالة المستند + سجل التدقيق
POST /api/v1/templates/:id/send إرسال باستخدام قالب محفوظ
POST /api/v1/bulk-sends إرسال جماعي عبر CSV
GET /api/v1/bulk-sends/:id حالة الدفعة
POST /api/v1/webhooks تسجيل webhook
كل طلب يتضمن سياق المستأجر المستمد من مفتاح API — المفاتيح محددة بنطاق المستأجر بحيث يؤثر المفتاح المُسرَّب على مؤسسته فقط.
Webhooks
عند تسجيل عنوان webhook، نُرسل حمولة JSON بطلب POST عند هذه الأحداث:
document.sentdocument.vieweddocument.signeddocument.completeddocument.declineddocument.voidedbulk_send.completed
كل حمولة موقّعة بـ HMAC-SHA256 باستخدام سر webhook الخاص بك. تحقق من رأس X-SahlSign-Signature لتأكيد أن الطلب منا:
const expectedSignature = crypto
.createHmac('sha256', webhookSecret)
.update(rawBody)
.digest('hex');
if (request.headers['x-sahlsign-signature'] !== expectedSignature) {
return reply.status(401).send('Invalid signature');
}
نعيد محاولة عمليات التسليم الفاشلة بتراجع أسّي (حتى ٢٤ ساعة). سجل تسليم webhooks مرئي تحت الإعدادات ← مفاتيح API ← عمليات تسليم webhook.
حدود المعدّل
- ١٠٠ طلب / دقيقة / مستأجر على خطة Pro القياسية
- حدود أعلى متاحة على Enterprise (تواصل معنا)
الطلبات المحدودة المعدّل تُرجع 429 Too Many Requests مع رأس Retry-After يشير إلى متى يجب إعادة المحاولة.
SDKs
لا نشحن SDKs رسمية بعد. الواجهة هي REST عادي، لذا يعمل أي عميل HTTP. مساعدات TypeScript / Python / Ruby المُصانة من المجتمع مرتبطة من وثائق المطوّرين.
الحالة
هذه الميزة مستوى Pro فقط. صفحة مفاتيح API على حساب الطبقة المجانية تُظهر بوابة الترقية.
(ملاحظة: مسارات webhooks قيد التطوير النشط. المخطط وبنية القائمة في مكانهما، نقطة النهاية العامة POST ومُرسل الأحداث لم تُشحن بعد وقت كتابة هذا. تحقق من صفحة الحالة أو تواصل معنا للتوفر الحالي.)