المطوّرون
مكتبك
كله،
على
واجهة
API
واحدة.
كل اللي يديره مكتبك على شركتي — الخدمات والطلبات والباقات والعملاء والفوترة — توصله من واجهة REST واحدة. اربط الـ ERP، وزامن الـ CRM، وشغّل تطبيق عميل بعلامتك عبر خادمك، أو أنشئ الطلبات مباشرة من أنظمتك. نفس المحرّك، ونفس سجل التدقيق… وكودك أنت.
- البروتوكول
- REST + JSON عبر
/api/v1 - المفاتيح
- مفاتيح محدودة الصلاحيات وقابلة للتقييد بعناوين IP
- إعادة المحاولة
- إعادة محاولات آمنة دون تكرار
curl https://api.shrkity.com/api/v1/orders \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: order-7f3a" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "X-Shirkty-Require-Subject: 1" \ -d '{ "service_definition_id": 18 }' # 201 · X-Shirkty-Mode: subject { "mode": "subject", "data": { "request": { "id": 1208, "status": "pending" }, "steps": [ … ] } }
طلب عميل حقيقي عبر المحرّك نفسه الذي يستخدمه تطبيق سطح المكتب، بخطواته وعدّادات SLA وسجل التدقيق.
الدليل
من مفتاح API إلى أول طلب في دقائق.
الوصول عبر API جزء من باقتَي التوسّع والمؤسسات. يُنشئ مالك المنشأة مفاتيح API من تطبيق سطح المكتب، بصلاحيات محددة لما يحتاجه تكاملك بالضبط، ويظهر المفتاح مرة واحدة فقط. ودليل BFF الأعمق منشور أيضًا كنص Markdown عبر https://api.shrkity.com/api/v1/docs/integrator.md (بلا مصادقة).
أنشئ مفتاحًا
في تطبيق شركتي للأعمال افتح الإعدادات · المنشأة · الوصول عبر API وأنشئ مفتاحًا. اختر صلاحياته (قالب BFF أو قالب العمليات)، وقيّده بعناوين IP لخوادمك عندما يحمل صلاحيات التنفيذ، وانسخ السر — يظهر مرة واحدة فقط.
صادِق طلباتك
أرسل المفتاح مع كل طلب في الترويسة Authorization: Bearer shk_live_… أو في X-Api-Key. من خادم إلى خادم فقط — لا من متصفح أو تطبيق جوال أبدًا.
نفّذ أول استدعاء
اعرض الخدمات المنشورة عبر GET /services (ترويسات الموضوع تفرّق كتالوج الأفراد عن الشركات) ثم أنشئ طلبًا. كل استجابة تطابق ما يراه فريقك على سطح المكتب.
انطلق بأمان
أرسل Idempotency-Key مع عمليات الكتابة، وفضّل X-Shirkty-Require-Subject: 1 عند إنشاء طلب العميل، وتحقق من X-Shirkty-Mode: subject في الاختبارات، وبدّل المفاتيح بإنشاء مفتاح جديد وإلغاء القديم.
https://api.shrkity.com/api/v1
رابطك الأساسي الدقيق يظهر في تبويب الوصول عبر API.
إنشاء طلب: عمليات مقابل موضوع
POST /orders وضع مزدوج. نفس المسار يخدم أتمتة الموظفين وخلفيات تطبيقات العملاء ذات العلامة — والفرق هو ترويسات الموضوع. الاستجابات الناجحة تضع X-Shirkty-Mode: subject|operator. وإنشاء العمليات يرسل أيضًا X-Shirkty-Mode-Warning حتى تفشل اختبارات واجهة BFF إن نُسيت ترويسة العميل.
عمليات (بلا ترويسات موضوع)
يُنشأ الطلب كحساب الجهاز لمساحة العمل. اختياريًا عيّن created_by_user_id / client_user_id لتثبيت مالك العميل، وcompany_id عندما تحتاج الخدمة منشأة. شكل الاستجابة يبقى شكل العمليات الكلاسيكي.
موضوع / BFF
أرسل X-Shirkty-Client-User-Id (مطلوب) وX-Shirkty-Company-Id اختياريًا. يُنشأ الطلب باسم ذلك العميل. يجب أن تطابق معرّفات الجسم الترويسات وإلا تحصل على subject_mismatch. تُعاد فحص العضوية تحت منشأتك.
سكة أمان للعلامة البيضاء: أرسل X-Shirkty-Require-Subject: 1 (أو ?require_subject=1) مع POST /orders حتى يعيد غياب ترويسة العميل 422 subject_required بدل إنشاء عمليات صامت.
رحلة العميل بعد الإنشاء (بدء خطوة، إكمال نموذج، رفع مستند، دفع/توقيع دون اتصال) تحتاج orders:execute وattachments:write وغالباً attachments:read — انظر واجهة BFF للمزوّد.
كتالوج الخدمات: أفراد مقابل شركة
في وضع الموضوع، GET /services يطابق تطبيق شركتي للعملاء: الظهور يُحكَم بـ requires_company لا بـ applies_to في سير العمل.
شخصي (ترويسة العميل فقط)
يعرض الخدمات ذات requires_company = false. إنشاء الطلب لا يرسل شركة.
شركة (+ ترويسة الشركة)
يعرض الخدمات ذات requires_company = true. لطلبات الشركة / الموظف؛ وrequires_employee يحتاج أيضًا company_employee_id.
applies_to (company · employee · individual) تُعاد لشارات الواجهة فقط. وضع العمليات (بلا موضوع) يعيد القائمة المنشورة كاملة ويقبل اختياريًا ?requires_company= / ?audience=. كل صف يتضمن order_context: { personal_ok, company_ok, employee_ok }.
المصادقة
مفتاح API بيانات اعتماد،
لا كلمة مرور تُعاد استخدامها.
يعمل مفتاح API باسم منشأتك كاملة ضمن الصلاحيات التي تمنحها له. شركتي تخزّن بصمته فقط — إن فُقد فألغِه وأنشئ غيره.
صلاحيات بحسب المورد. orders:write ينشئ الطلبات ولا يلمس الكوبونات. لا يوجد invoices:write — الفواتير تصدرها المنظومة؛ استخدم invoices:read وملف PDF. امنح ما يحتاجه التكامل فقط.
قائمة IP إلزامية للتنفيذ. المفاتيح التي تتضمن orders:execute أو attachments:write أو documents:write يجب تقييدها بعناوين خوادم أو نطاقات CIDR عند الإنشاء/التحديث (422 بدونه). ويُنصح به بقوة على كل مفتاح إنتاج.
مرتبط بالباقة وقابل للإلغاء فورًا. يُتحقق من الوصول مع كل طلب (بما في ذلك غياب الاشتراك → plan_required)، والمفتاح الملغى يتوقف خلال دقيقة في كل مكان.
# bearer token (recommended) curl https://api.shrkity.com/api/v1/services \ -H "Authorization: Bearer shk_live_…" # or the X-Api-Key header curl https://api.shrkity.com/api/v1/services \ -H "X-Api-Key: shk_live_…"
يبدأ المفتاح بـ shk_live_ يليه 40 حرفًا. أي شكل آخر يُرفض قبل أن يلمس بياناتك.
الأخطاء
كل خطأ يأتي بصيغة JSON مع رسالة مفهومة، وعند الحاجة رمز آلي تتفرّع عليه برمجيتك. إخفاقات المصادقة والتفويض تسمّي سببها دائمًا.
invalid_api_keyالمفتاح غير معروف أو غير صالح أو ملغى (revoked_api_key) أو منتهٍ (expired_api_key).
plan_requiredباقة المنشأة الحالية لا تتضمن الوصول عبر API (أو الاشتراك مفقود).
ip_not_allowedالمفتاح مقيّد بعناوين مصدر محددة وجاء هذا الاستدعاء من غيرها.
insufficient_scopeالمفتاح يفتقد الصلاحية المطلوبة؛ تسمّيها الاستجابة في required_scope.
subject_forbiddenترويسات الموضوع تسمّي عميلًا ليس عضوًا في هذه المنشأة (لا يوجد access context مطابق).
company_not_verifiedالشركة في حالة انتظار التحقق أو مرفوضة ولا تصلح لعمليات الكتابة.
subject_required · subject_mismatch · subject_invalidمسارات BFF تحتاج X-Shirkty-Client-User-Id، أو اختلف حقل في الجسم عن ترويسات الموضوع، أو لم يكن معرّف الموضوع عددًا صحيحًا موجبًا.
payment_method_not_supportedاستُدعي دفع خطوة الطلب دون اتصال بمحفظة إلكترونية (دفع اشتراك الباقات يدعم المحافظ الإلكترونية على مسار منفصل).
422جسم الطلب لم يجتز التحقق؛ تخبرك الرسالة بما يجب إصلاحه بالضبط.
429طلبات كثيرة جدًا؛ انتظر عدد الثواني في Retry-After.
{
"message": "The API key does not have the required scope.",
"code": "insufficient_scope",
"required_scope": "orders:write"
}
تقسيم الصفحات
كل قائمة تقبل page (الافتراضي 1) وper_page (الافتراضي 10 وبحد أقصى 200) وتعيد كائن meta إلى جانب البيانات. تابع الصفحات حتى تصبح has_next خاطئة.
{
"data": [ … ],
"meta": {
"total": 412,
"per_page": 50,
"current_page": 2,
"last_page": 9,
"has_next": true,
"has_previous": true
}
}
أمان إعادة المحاولة
الشبكات تنقطع في منتصف الطلب. أرسل ترويسة Idempotency-Key مع أي POST فتُحفظ أول استجابة ناجحة لمدة 24 ساعة؛ وإعادة المحاولة المطابقة تستلم الاستجابة المحفوظة نفسها — معلَّمة بـ Idempotency-Replayed: true — بدل إنشاء نسخة مكررة. لاستدعاءات موضوع BFF يدخل مفتاح التخزين أيضًا ترويسات الموضوع حتى لا يعيد مفتاح واحد يخدم عملاء كُثر تشغيل استجابة عميل آخر.
استخدم قيمة ثابتة لكل إجراء منطقي، مثل مرجع الطلب في نظامك. إجراء جديد يعني مفتاحًا جديدًا.
curl https://api.shrkity.com/api/v1/orders \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "Idempotency-Key: erp-po-10422" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "X-Shirkty-Require-Subject: 1" \ -d '{ "service_definition_id": 18 }' # run it twice — one order exists.
حدود المعدّل
لكل مفتاح 180 طلبًا في الدقيقة. كل استجابة تحمل رصيدك المتبقي، واستجابة 429 تخبرك كم تنتظر بالضبط. إنشاء الطلبات يخضع إضافيًا لحصة الطلبات الشهرية في باقتك. وتتوفر ملخصات استخدام يومية في درج الوصول عبر API على سطح المكتب.
X-RateLimit-Limit: 180 X-RateLimit-Remaining: 177 # on 429 only: Retry-After: 21
الإصدارات
العقد هو الرابط. الاستجابات تحت /api/v1 لا تتغير إلا بالإضافة؛ لا يُعاد تسمية حقل ولا يُحذف ضمن v1. التغيير الكاسر يعني /api/v2 موازيًا مع فترة إيقاف تدريجي، لا تعديلًا صامتًا. ابنِ على الحقول التي تستخدمها وتجاهل الباقي. وثيقة OpenAPI حاليًا 1.1.1 (واجهة BFF للمزوّد، سكك الوضع المزدوج، دفع الباقات، فصل صلاحيات المرفقات، النظرة العامة ومهام العميل الغنية).
واجهة BFF للمزوّد
ابنِ تطبيق عميل بعلامتك على خادمك.
واجهات الويب والجوال التي تملكها يجب ألا تحتفظ بمفتاح API. خادمك يصادق بالمفتاح، ويربط المستخدم المسجّل بعميل في شركتي، ويستدعي /api/v1 بترويسات الموضوع. شركتي تعيد التحقق من العضوية والملكية تحت منشأتك.
وضع العمليات (Ops)
مفتاح API فقط — قوائم على مستوى المنشأة وأتمتة الموظفين (ERP، CRM، المالية). بلا ترويسات موضوع. استخدم مفتاحًا بلا orders:execute / attachments:* / documents:write إن احتجت العمليات فقط. يوفّر سطح المكتب قالب عمليات لهذا الغرض.
وضع الموضوع (BFF)
أرسل X-Shirkty-Client-User-Id (مطلوب) وX-Shirkty-Company-Id اختياريًا. تُقيَّد القوائم بذلك العميل؛ تنفيذ الخطوات والمرفقات وقبول عروض الأسعار والنظرة العامة وclient-tasks ودفع اشتراك الباقات تتطلب الموضوع دائمًا.
صلاحيات BFF الموصى بها
services:read · packages:read · subscriptions:read · subscriptions:write · orders:read · orders:write · orders:execute · clients:read · companies:read · documents:read · documents:write · attachments:read · attachments:write · invoices:read · quotations:read · quotations:write
GET /tenant/api-keys/scopes (جلسة سطح المكتب) يعيد كتالوج الصلاحيات وbff_recommended_scopes. قائمة IP إلزامية عندما يتضمن المفتاح صلاحيات التنفيذ / كتابة المرفقات / كتابة المستندات.
مسارات الموضوع دائمًا (غياب الترويسة → 422 subject_required): /client-tasks، /overview، تنفيذ/توقيع/دفع الخطوات، /attachments*، قبول/رفض عروض الأسعار، دفع/معاينة كوبون اشتراك الباقات.
الصفحة الرئيسية وصندوق الوارد. GET /overview يعيد عدّادات الصفحة الرئيسية (طلبات نشطة، مهام قابلة للتنفيذ، مستندات قاربت الانتهاء). GET /client-tasks يعيد بطاقات صندوق وارد مُقسَّمة (اسم الخدمة، مرجع الطلب، تسميات الخطوة، SLA، links إلى الطلب/الخطوة) مع فلاتر: status، step_type، service_definition_id، subject_kind. حمّل إعداد النموذج/الدفع/التوقيع الكامل عبر GET …/steps/{key}.
المرفقات. POST /attachments يحتاج attachments:write؛ وGET /attachments/{id}/download يحتاج attachments:read (أو الكتابة القديمة). ملفات التجهيز خاصة في تخزين كائنات مع تسليم موقّع قصير العمر — لا مسارات قرص عامة.
الويب هوكس ترسل طلبات POST موقّعة (منها step.client_action_required) ليدفع خادمك «إجراء مطلوب» دون استطلاع مستمر. دفع خطوة الطلب يقبل المحافظ دون اتصال فقط؛ أما دفع اشتراك الباقات فيدعم إثباتًا دون اتصال و روابط دفع مستضافة إلكترونيًا.
المستخدم النهائي لا يصادق على شركتي بمفتاح API. جلستك وعلامتك؛ شركتي هي مصدر الحقيقة للعمل.
curl https://api.shrkity.com/api/v1/client-tasks \ -H "Authorization: Bearer shk_live_…" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "X-Shirkty-Company-Id: 42" # X-Shirkty-Mode: subject
curl https://api.shrkity.com/api/v1/overview \ -H "Authorization: Bearer shk_live_…" \ -H "X-Shirkty-Client-User-Id: 1001"
قائمة تحقق الوضع المزدوج (علامة بيضاء)
- افصل مفاتيح العمليات عن BFF (BFF يحمل التنفيذ + المرفقات؛ قائمة IP إلزامية).
- لا تضع المفتاح في تطبيق الجوال — خادمك فقط.
- كل استدعاء موجّه للعميل:
Authorization+X-Shirkty-Client-User-Id(+ الشركة عند الحاجة). - إنشاء طلب العميل: ترويسات الموضوع ومعها تفضيل
X-Shirkty-Require-Subject: 1. - تحقق من
X-Shirkty-Mode: subjectفي اختبارات التكامل لمسارات العميل. - اربط مستخدم الجوال بمعرّف عميل شركتي فقط بعد صلاحية العضوية (
access_contexts).
خدمة ذاتية للعميل
الباقات والاشتراكات على واجهة BFF.
بترويسات الموضوع وصلاحيات packages:read + subscriptions:read + subscriptions:write يستطيع تطبيقك ذو العلامة تصفّح الباقات وإتمام الدفع دون سطح المكتب. بلا ترويسات موضوع تبقى نفس المسارات بسلوك العمليات/الموظفين (الكتالوج الكامل، التعيين، الإيقاف، الاستئناف، التجديد).
GET /packagesالموضوع → كتالوج العميل لهذه المنشأة. تفاصيل الباقة عبر GET /packages/{id}.
GET /subscriptionsالموضوع → قائمة/عرض اشتراكات صاحب الحساب فقط.
POST /subscriptionsالجسم { package_id, linked_company_id? }. الباقات المجانية تُفعَّل؛ والمدفوعة تعيد needs_payment مع المحافظ.
POST /subscriptions/preview-couponموضوع دائمًا. معاينة الرمز قبل الدفع.
POST /subscriptions/checkoutموضوع دائمًا. إنشاء الاشتراك + الدفع في خطوة واحدة: إثبات دون اتصال أو محفظة إلكترونية قابلة للشحن wallet_id (رابط payment_url مستضاف لـ WebView).
…/payment-options · …/pay · …/payment/cancelموضوع دائمًا. متابعة الدفع لاشتراك معلّق/فترة سماح؛ الإلكتروني يعيد رابطًا مستضافًا؛ والإلغاء يتيح البدء من جديد.
…/apply-coupon · …/remove-coupon · …/link-company · …/cancelتعديل الكوبون على دفع معلّق، وربط الشركة، والإلغاء بنهاية الفترة — ضمن نطاق الموضوع.
مدفوع · إلكتروني
معاينة الكوبون → الدفع بمحفظة إلكترونية قابلة للشحن → افتح payment_url في WebView → ويب هوك البوابة يفعّل الاشتراك.
مدفوع · دون اتصال
الدفع بمحفظة دون اتصال + مرفق إثبات → يتحقق الموظفون على سطح المكتب → نشط. دفع خطوة الطلب يبقى دون اتصال فقط؛ دفع اشتراك الباقات هو السطح الذي يدعم القناتين.
curl https://api.shrkity.com/api/v1/subscriptions/checkout \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "Idempotency-Key: sub-checkout-9c2e" \ -d '{ "package_id": 12, "wallet_id": 3 }'
المرجع
كل نقطة وصول، بحسب المورد.
يُولَّد هذا المرجع من وثيقة OpenAPI نفسها التي تقدّمها المنصة عبر /api/v1/openapi.json (حاليًا 1.1.1) — فما تقرؤه هنا هو ما يفرضه الخادم. ودليل BFF الطويل أيضًا عبر /api/v1/docs/integrator.md. وتبقى المسارات وأسماء الحقول والأنواع بالإنجليزية كما يفرضها العقد.
الخدمات
كتالوج الخدمات المنشورة (للقراءة فقط).
عرض الخدمات المنشورة
المعاملات
search
يطابق الاسم أو الاسم العربي أو الرمز
curl https://api.shrkity.com/api/v1/services \ -H "Authorization: Bearer shk_live_…"
حقول القائمة إضافةً إلى starts_at_price (هل يعتمد السعر على خيارات تُحدَّد وقت التنفيذ) وفحوصات الأهلية التي ستحكم إنشاء طلب لهذه الخدمة.
المعاملات
id
curl https://api.shrkity.com/api/v1/services/{id} \ -H "Authorization: Bearer shk_live_…"
مجمّعة عبر خطوات المستندات في سير العمل، وفق ترتيب التنفيذ. استخدمها لتجميع الملفات من جانبك قبل تنفيذ الطلب أو أثناءه.
المعاملات
id
curl https://api.shrkity.com/api/v1/services/{id}/required-documents \ -H "Authorization: Bearer shk_live_…"
الطلبات
طلبات الخدمة.
عرض الطلبات
المعاملات
status
company_id
service_definition_id
priority
search
created_from
created_to
curl https://api.shrkity.com/api/v1/orders \ -H "Authorization: Bearer shk_live_…"
ينشئ طلب خدمة لخدمة منشورة. يخضع للحد الشهري للطلبات في الباقة (يُعاد 422 عند بلوغه). يدعم Idempotency-Key.
حقول الطلب
service_definition_id
خدمة منشورة (راجع GET /services)
client_user_id
بديل لـ created_by_user_id؛ يجب أن يطابق X-Shirkty-Client-User-Id عند وجود ترويسة الموضوع
created_by_user_id
مسار العمليات: تثبيت منشئ الطلب؛ مسار الموضوع يجب أن يطابق الترويسة أو يُحذف
company_id
مطلوب عندما تتطلب الخدمة سياق منشأة؛ ويجب أن يطابق X-Shirkty-Company-Id عند تعيين كليهما
company_employee_id
الموظف المقصود بالطلب، عندما تتطلب الخدمة موظفًا
priority
curl https://api.shrkity.com/api/v1/orders \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "Content-Type: application/json" \ -d '{ "service_definition_id": 42, "client_user_id": 42, "created_by_user_id": 42, "company_id": 42, "company_employee_id": 42 }'
عرض طلب مع خطواته وتفصيل سعره
المعاملات
id
curl https://api.shrkity.com/api/v1/orders/{id} \ -H "Authorization: Bearer shk_live_…"
تعديل طلب
المعاملات
id
حقول الطلب
priority
curl https://api.shrkity.com/api/v1/orders/{id} \ -X PATCH \ -H "Authorization: Bearer shk_live_…" \ -H "Content-Type: application/json" \ -d '{ "priority": "low" }'
عرض خطوة واحدة من الطلب
المعاملات
id
step_key
curl https://api.shrkity.com/api/v1/orders/{id}/steps/{step_key} \ -H "Authorization: Bearer shk_live_…"
إلغاء طلب
المعاملات
id
curl https://api.shrkity.com/api/v1/orders/{id}/cancel \ -X POST \ -H "Authorization: Bearer shk_live_…"
تطبيق كوبون على الطلب
المعاملات
id
حقول الطلب
code
curl https://api.shrkity.com/api/v1/orders/{id}/apply-coupon \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "Content-Type: application/json" \ -d '{ "code": "WELCOME10" }'
إزالة الكوبون المطبّق من الطلب
المعاملات
id
curl https://api.shrkity.com/api/v1/orders/{id}/coupon \ -X DELETE \ -H "Authorization: Bearer shk_live_…"
الصلاحية: orders:execute. يتطلب موضوعًا دائمًا.
المعاملات
id
step_key
X-Shirkty-Client-User-Id
BFF subject: Shirkty client user id
X-Shirkty-Company-Id
سياق منشأة اختياري للموضوع
curl https://api.shrkity.com/api/v1/orders/{id}/steps/{step_key}/start \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "X-Shirkty-Company-Id: 42"
الصلاحية: orders:execute.
المعاملات
id
step_key
X-Shirkty-Client-User-Id
BFF subject: Shirkty client user id
X-Shirkty-Company-Id
سياق منشأة اختياري للموضوع
حقول الطلب
response_data
notes
curl https://api.shrkity.com/api/v1/orders/{id}/steps/{step_key}/complete \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "X-Shirkty-Company-Id: 42" \ -H "Content-Type: application/json" \ -d '{ "response_data": "…", "notes": "…" }'
إكمال خطوة manual_task باسم الموضوع
المعاملات
id
step_key
X-Shirkty-Client-User-Id
BFF subject: Shirkty client user id
X-Shirkty-Company-Id
سياق منشأة اختياري للموضوع
curl https://api.shrkity.com/api/v1/orders/{id}/steps/{step_key}/complete-manual \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "X-Shirkty-Company-Id: 42"
الصلاحية: orders:execute. ارفع الملفات عبر POST /attachments أولًا.
المعاملات
id
step_key
X-Shirkty-Client-User-Id
BFF subject: Shirkty client user id
X-Shirkty-Company-Id
سياق منشأة اختياري للموضوع
حقول الطلب
document_records
curl https://api.shrkity.com/api/v1/orders/{id}/steps/{step_key}/complete-document \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "X-Shirkty-Company-Id: 42" \ -H "Content-Type: application/json" \ -d '{ "document_records": [] }'
تنزيل مستند التوقيع دون اتصال المصدر
المعاملات
id
step_key
X-Shirkty-Client-User-Id
BFF subject: Shirkty client user id
X-Shirkty-Company-Id
سياق منشأة اختياري للموضوع
curl https://api.shrkity.com/api/v1/orders/{id}/steps/{step_key}/signature/document \ -H "Authorization: Bearer shk_live_…" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "X-Shirkty-Company-Id: 42"
الصلاحية: orders:execute. قناة دون اتصال فقط.
المعاملات
id
step_key
X-Shirkty-Client-User-Id
BFF subject: Shirkty client user id
X-Shirkty-Company-Id
سياق منشأة اختياري للموضوع
حقول الطلب
attachment_id
curl https://api.shrkity.com/api/v1/orders/{id}/steps/{step_key}/signature/sign \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "X-Shirkty-Company-Id: 42" \ -H "Content-Type: application/json" \ -d '{ "attachment_id": 42 }'
الصلاحية: orders:read. لا تُدرج المحافظ الإلكترونية (BFF دون اتصال فقط).
المعاملات
id
step_key
X-Shirkty-Client-User-Id
BFF subject: Shirkty client user id
X-Shirkty-Company-Id
سياق منشأة اختياري للموضوع
curl https://api.shrkity.com/api/v1/orders/{id}/steps/{step_key}/payment-options \ -H "Authorization: Bearer shk_live_…" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "X-Shirkty-Company-Id: 42"
الصلاحية: orders:execute. محافظ دون اتصال فقط؛ الإلكتروني → payment_method_not_supported.
المعاملات
id
step_key
X-Shirkty-Client-User-Id
BFF subject: Shirkty client user id
X-Shirkty-Company-Id
سياق منشأة اختياري للموضوع
حقول الطلب
wallet_id
proof_attachment_id
proof_reference
proof_notes
curl https://api.shrkity.com/api/v1/orders/{id}/steps/{step_key}/pay \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "X-Shirkty-Company-Id: 42" \ -H "Content-Type: application/json" \ -d '{ "wallet_id": 42, "proof_attachment_id": 42, "proof_reference": "…", "proof_notes": "…" }'
مهام العميل
صندوق وارد للخطوات التي تتطلب إجراءً من عميل موضوع BFF.
Always requires X-Shirkty-Client-User-Id. Scope: orders:read. Returns paginated inbox cards (service name, order reference, step definition labels, SLA, links) with filters status, step_type, service_definition_id, subject_kind.
المعاملات
X-Shirkty-Client-User-Id
BFF subject: Shirkty client user id
X-Shirkty-Company-Id
سياق منشأة اختياري للموضوع
curl https://api.shrkity.com/api/v1/client-tasks \ -H "Authorization: Bearer shk_live_…" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "X-Shirkty-Company-Id: 42"
Always requires X-Shirkty-Client-User-Id. Scope: orders:read. Returns paginated inbox cards (service name, order reference, step definition labels, SLA, links) with filters status, step_type, service_definition_id, subject_kind. Returns counts (active_orders, actionable_tasks, expiring_documents) and recent_orders for the subject under this tenant.
المعاملات
X-Shirkty-Client-User-Id
BFF subject: Shirkty client user id
X-Shirkty-Company-Id
سياق منشأة اختياري للموضوع
curl https://api.shrkity.com/api/v1/overview \ -H "Authorization: Bearer shk_live_…" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "X-Shirkty-Company-Id: 42"
المرفقات
Staged file upload/download for BFF subjects. POST requires attachments:write; GET download requires attachments:read (or legacy attachments:write). Always requires subject headers. Invoices are read-only (invoices:read).
Scope: attachments:write. Supports Idempotency-Key. Use returned attachment_id for document/payment/signature steps. Download uses attachments:read.
المعاملات
X-Shirkty-Client-User-Id
BFF subject: Shirkty client user id
X-Shirkty-Company-Id
سياق منشأة اختياري للموضوع
curl https://api.shrkity.com/api/v1/attachments \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "X-Shirkty-Company-Id: 42" \ -F "file=@/path/to/document.pdf"
Scope: attachments:read (preferred) or attachments:write (legacy). Always subject.
المعاملات
id
X-Shirkty-Client-User-Id
BFF subject: Shirkty client user id
X-Shirkty-Company-Id
سياق منشأة اختياري للموضوع
curl https://api.shrkity.com/api/v1/attachments/{id}/download \ -H "Authorization: Bearer shk_live_…" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "X-Shirkty-Company-Id: 42"
العملاء
عملاء المنشأة.
عرض العملاء
curl https://api.shrkity.com/api/v1/clients \ -H "Authorization: Bearer shk_live_…"
إنشاء عميل
حقول الطلب
name
email
phone_number
curl https://api.shrkity.com/api/v1/clients \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "Content-Type: application/json" \ -d '{ "name": "Acme Trading Co.", "email": "[email protected]", "phone_number": "…" }'
عرض عميل واحد إن وُجد له access_context تحت هذه المنشأة
المعاملات
client_id
curl https://api.shrkity.com/api/v1/clients/{client_id} \ -H "Authorization: Bearer shk_live_…"
الشركات
منشآت العملاء وموظفوها.
عرض المنشآت
curl https://api.shrkity.com/api/v1/companies \ -H "Authorization: Bearer shk_live_…"
إنشاء منشأة
حقول الطلب
حمولة المنشأة — legal_name وtype وحقول السجل؛ راجع نموذج «إضافة منشأة» في البوابة لمعرفة مجموعة الحقول.
curl https://api.shrkity.com/api/v1/companies \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "Content-Type: application/json" \ -d '{ …see field reference… }'
تعديل منشأة
المعاملات
id
curl https://api.shrkity.com/api/v1/companies/{id} \ -X PUT \ -H "Authorization: Bearer shk_live_…" \ -H "Content-Type: application/json" \ -d '{ …see field reference… }'
عرض موظفي المنشأة
المعاملات
company_id
curl https://api.shrkity.com/api/v1/companies/{company_id}/workers \ -H "Authorization: Bearer shk_live_…"
ينشئ موظف منشأة — وهو الشخص المقصود بالطلب المرتبط بموظف. مجموعة الحقول تطابق نموذج «إضافة موظف» في البوابة.
المعاملات
company_id
curl https://api.shrkity.com/api/v1/companies/{company_id}/workers \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "Content-Type: application/json" \ -d '{ …see field reference… }'
تعديل موظف
المعاملات
company_id
id
curl https://api.shrkity.com/api/v1/companies/{company_id}/workers/{id} \ -X PATCH \ -H "Authorization: Bearer shk_live_…" \ -H "Content-Type: application/json" \ -d '{ …see field reference… }'
إزالة موظف
المعاملات
company_id
id
curl https://api.shrkity.com/api/v1/companies/{company_id}/workers/{id} \ -X DELETE \ -H "Authorization: Bearer shk_live_…"
الباقات
الباقات التي تنشئها المنشأة (للقراءة فقط).
عرض الباقات
curl https://api.shrkity.com/api/v1/packages \ -H "Authorization: Bearer shk_live_…"
عرض باقة
المعاملات
id
curl https://api.shrkity.com/api/v1/packages/{id} \ -H "Authorization: Bearer shk_live_…"
الاشتراكات
اشتراكات الباقات.
Always requires X-Shirkty-Client-User-Id. Scope: subscriptions:write. Body: package_id, wallet_id (offline or chargeable online), optional coupon_code, linked_company_id, proof_*. Online wallets return payment_url.
المعاملات
X-Shirkty-Client-User-Id
BFF subject: Shirkty client user id
X-Shirkty-Company-Id
سياق منشأة اختياري للموضوع
curl https://api.shrkity.com/api/v1/subscriptions/checkout \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "X-Shirkty-Company-Id: 42"
Always subject. Scope: subscriptions:write.
curl https://api.shrkity.com/api/v1/subscriptions/preview-coupon \ -X POST \ -H "Authorization: Bearer shk_live_…"
عرض اشتراكات الباقات
curl https://api.shrkity.com/api/v1/subscriptions \ -H "Authorization: Bearer shk_live_…"
إسناد اشتراك باقة
حقول الطلب
package_id إضافةً إلى المالك (company_id أو مستخدم العميل)، بما يطابق مسار «الإسناد» في البوابة.
curl https://api.shrkity.com/api/v1/subscriptions \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "Content-Type: application/json" \ -d '{ …see field reference… }'
عرض اشتراك مع مخصصاته
المعاملات
id
curl https://api.shrkity.com/api/v1/subscriptions/{id} \ -H "Authorization: Bearer shk_live_…"
إيقاف اشتراك نشط مؤقتًا
المعاملات
id
curl https://api.shrkity.com/api/v1/subscriptions/{id}/pause \ -X POST \ -H "Authorization: Bearer shk_live_…"
استئناف اشتراك موقوف
المعاملات
id
curl https://api.shrkity.com/api/v1/subscriptions/{id}/resume \ -X POST \ -H "Authorization: Bearer shk_live_…"
إلغاء اشتراك
المعاملات
id
curl https://api.shrkity.com/api/v1/subscriptions/{id}/cancel \ -X POST \ -H "Authorization: Bearer shk_live_…"
تجديد اشتراك منتهٍ قابل للتجديد
المعاملات
id
curl https://api.shrkity.com/api/v1/subscriptions/{id}/renew \ -X POST \ -H "Authorization: Bearer shk_live_…"
الكوبونات
كوبونات الخصم.
عرض الكوبونات
curl https://api.shrkity.com/api/v1/coupons \ -H "Authorization: Bearer shk_live_…"
إنشاء كوبون
حقول الطلب
code
name
description
discount_type
discount_value
max_discount_amount
min_order_amount
valid_from
valid_until
usage_limit_total
usage_limit_per_subject
is_active
curl https://api.shrkity.com/api/v1/coupons \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "Content-Type: application/json" \ -d '{ "code": "WELCOME10", "name": "Acme Trading Co.", "discount_type": "fixed", "discount_value": 250, "description": "…" }'
عرض كوبون
المعاملات
id
curl https://api.shrkity.com/api/v1/coupons/{id} \ -H "Authorization: Bearer shk_live_…"
تعديل كوبون
المعاملات
id
حقول الطلب
code
name
description
discount_type
discount_value
max_discount_amount
min_order_amount
valid_from
valid_until
usage_limit_total
usage_limit_per_subject
is_active
curl https://api.shrkity.com/api/v1/coupons/{id} \ -X PATCH \ -H "Authorization: Bearer shk_live_…" \ -H "Content-Type: application/json" \ -d '{ "code": "WELCOME10", "name": "Acme Trading Co.", "discount_type": "fixed", "discount_value": 250, "description": "…" }'
حذف كوبون
المعاملات
id
curl https://api.shrkity.com/api/v1/coupons/{id} \ -X DELETE \ -H "Authorization: Bearer shk_live_…"
عرض عمليات استخدام الكوبون
المعاملات
id
curl https://api.shrkity.com/api/v1/coupons/{id}/redemptions \ -H "Authorization: Bearer shk_live_…"
عروض الأسعار
عروض أسعار مخصّصة.
عرض عروض الأسعار
curl https://api.shrkity.com/api/v1/quotations \ -H "Authorization: Bearer shk_live_…"
إنشاء عرض سعر
حقول الطلب
المستلم + بنود العرض، بما يطابق نموذج «عرض سعر جديد» في البوابة.
curl https://api.shrkity.com/api/v1/quotations \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "Content-Type: application/json" \ -d '{ …see field reference… }'
استعراض عرض السعر
المعاملات
id
curl https://api.shrkity.com/api/v1/quotations/{id} \ -H "Authorization: Bearer shk_live_…"
إرسال عرض السعر إلى المستلم
المعاملات
id
curl https://api.shrkity.com/api/v1/quotations/{id}/send \ -X POST \ -H "Authorization: Bearer shk_live_…"
سحب عرض سعر مُرسَل
المعاملات
id
curl https://api.shrkity.com/api/v1/quotations/{id}/withdraw \ -X POST \ -H "Authorization: Bearer shk_live_…"
الصلاحية: quotations:write. يتطلب موضوعًا دائمًا.
المعاملات
id
X-Shirkty-Client-User-Id
BFF subject: Shirkty client user id
X-Shirkty-Company-Id
سياق منشأة اختياري للموضوع
حقول الطلب
linked_company_id
مطلوب عندما يحتاج عرض السعر ربط منشأة (موضوع شخصي)
curl https://api.shrkity.com/api/v1/quotations/{id}/accept \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "X-Shirkty-Company-Id: 42" \ -H "Content-Type: application/json" \ -d '{ "linked_company_id": 42 }'
رفض عرض سعر كعميل الموضوع
المعاملات
id
X-Shirkty-Client-User-Id
BFF subject: Shirkty client user id
X-Shirkty-Company-Id
سياق منشأة اختياري للموضوع
حقول الطلب
reason
curl https://api.shrkity.com/api/v1/quotations/{id}/reject \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "X-Shirkty-Client-User-Id: 1001" \ -H "X-Shirkty-Company-Id: 42" \ -H "Content-Type: application/json" \ -d '{ "reason": "…" }'
الفواتير
فواتير صادرة عن النظام (للقراءة فقط).
عرض الفواتير
curl https://api.shrkity.com/api/v1/invoices \ -H "Authorization: Bearer shk_live_…"
عرض فاتورة
المعاملات
id
curl https://api.shrkity.com/api/v1/invoices/{id} \ -H "Authorization: Bearer shk_live_…"
عرض ملف الفاتورة PDF (تحويل 302 إلى الملف)
المعاملات
id
curl https://api.shrkity.com/api/v1/invoices/{id}/pdf \ -H "Authorization: Bearer shk_live_…"
الاتصالات
طلبات الاتصال من العميل إلى المنشأة.
عرض طلبات الاتصال والاتصالات النشطة
المعاملات
status
مثل pending، active، rejected، revoked
curl https://api.shrkity.com/api/v1/connections \ -H "Authorization: Bearer shk_live_…"
يحصل العميل على صلاحية الوصول إلى السجل المشترك، وتبدأ الطلبات والمستندات بالتدفّق.
المعاملات
id
curl https://api.shrkity.com/api/v1/connections/{id}/approve \ -X POST \ -H "Authorization: Bearer shk_live_…"
يمكن اختياريًا تمرير {"reason": "…"}.
المعاملات
id
curl https://api.shrkity.com/api/v1/connections/{id}/reject \ -X POST \ -H "Authorization: Bearer shk_live_…"
ينهي العلاقة، ويمكن اختياريًا تمرير {"reason": "…"}.
المعاملات
id
curl https://api.shrkity.com/api/v1/connections/{id}/revoke \ -X POST \ -H "Authorization: Bearer shk_live_…"
المستندات
سجلات مستندات التزام العملاء.
سجلات المستندات عبر المنشآت التي تخدمها: السجل التجاري والتراخيص والإقامة وغيرها من عناصر الالتزام، مع الحالة وتاريخ الانتهاء. اجمع company_id مع expiring_soon=true (أو expires_from/expires_to) لتغذية مسار التجديد.
المعاملات
company_id
company_employee_id
document_type_id
status
expiring_soon
المستندات داخل نافذة التجديد فقط
expires_from
expires_to
search
curl https://api.shrkity.com/api/v1/documents \ -H "Authorization: Bearer shk_live_…"
عرض سجل مستند
المعاملات
id
curl https://api.shrkity.com/api/v1/documents/{id} \ -H "Authorization: Bearer shk_live_…"
عرض أنواع مستندات المنشأة
curl https://api.shrkity.com/api/v1/document-types \ -H "Authorization: Bearer shk_live_…"
الويب هوكس
اشتراكات الأحداث الصادرة: طلبات POST موقّعة لأحداث التدقيق التي تشترك بها.
عرض الويب هوكس (لا تُضمَّن الأسرار أبدًا — أعد التدوير للحصول على سر جديد)
curl https://api.shrkity.com/api/v1/webhooks \ -H "Authorization: Bearer shk_live_…"
عمليات التسليم عبارة عن طلبات POST موقّعة باستخدام X-Shirkty-Signature: t=<unix>,v1=<hex hmac-sha256(secret, t + '.' + body)>. يُعرض سر التوقيع مرة واحدة هنا ومرة عند كل تدوير. تتباعد إعادات المحاولة 1m/5m/30m/2h/8h، ثم يُعلَّم التسليم بأنه ميّت؛ ولا تُتَّبع عمليات إعادة التوجيه أبدًا. يجب أن تكون عناوين URL نقاط نهاية https عامة — وتُرفض النطاقات الشبكية الخاصة والمحجوزة. أزل التكرار اعتمادًا على delivery_id. بحد أقصى 5 ويب هوكس لكل مساحة عمل.
حقول الطلب
name
url
https مطلوب (يُسمح بـ http على localhost أثناء التطوير)
events
معرّفات إجراءات التدقيق، أو أحرف بدل بادئة (order.*) أو * — مثل ["order.*", "quotation.accepted"]
is_active
curl https://api.shrkity.com/api/v1/webhooks \ -X POST \ -H "Authorization: Bearer shk_live_…" \ -H "Content-Type: application/json" \ -d '{ "name": "Acme Trading Co.", "url": "…", "events": [], "is_active": true }'
تعديل ويب هوك (name، url، events، is_active)
المعاملات
id
حقول الطلب
name
url
https مطلوب (يُسمح بـ http على localhost أثناء التطوير)
events
معرّفات إجراءات التدقيق، أو أحرف بدل بادئة (order.*) أو * — مثل ["order.*", "quotation.accepted"]
is_active
curl https://api.shrkity.com/api/v1/webhooks/{id} \ -X PATCH \ -H "Authorization: Bearer shk_live_…" \ -H "Content-Type: application/json" \ -d '{ "name": "Acme Trading Co.", "url": "…", "events": [], "is_active": true }'
حذف ويب هوك
المعاملات
id
curl https://api.shrkity.com/api/v1/webhooks/{id} \ -X DELETE \ -H "Authorization: Bearer shk_live_…"
يرسل حدث webhook.test تجريبيًا بشكل متزامن ويبلّغ بنتيجة مبدئية: {ok, category} حيث تكون category إحدى ok | non_2xx | connect_failed | invalid_url. خاضع لتحديد معدّل صارم.
المعاملات
id
curl https://api.shrkity.com/api/v1/webhooks/{id}/test \ -X POST \ -H "Authorization: Bearer shk_live_…"
عرض عمليات التسليم الأخيرة مع الحالة والمحاولات
المعاملات
id
curl https://api.shrkity.com/api/v1/webhooks/{id}/deliveries \ -H "Authorization: Bearer shk_live_…"
تدوير سر التوقيع (يُعرض مرة واحدة)
المعاملات
id
curl https://api.shrkity.com/api/v1/webhooks/{id}/rotate-secret \ -X POST \ -H "Authorization: Bearer shk_live_…"
جاهز للبناء على شركتي؟
الوصول عبر API يأتي مع باقتَي التوسّع والمؤسسات. أنشئ أول مفتاح API لك من تطبيق سطح المكتب وستتحدث أنظمتك مع مكتبك الخلفي اليوم.