الوثائق
مرجع واجهة برمجة التطبيقات
مرجع موارد HTTP الكامل، والوصول المحلي المعتمد، وعقود البث، والعملاء الذين تم إنشاؤهم من المخططات المشتركة.
مترجم تلقائيًا من الإنجليزية. عرض الأصل بالإنجليزية
ملخص
السايدكار هي تأثير واحد HttpApi. كل نقطة نهاية مكتوبة HttpApiEndpoint مع أجسام الطلب والاستجابة التي تم التحقق منها في المخطط، لذلك يأتي هذا المرجع ومجموعة SDK التي تم إنشاؤها والخادم قيد التشغيل من نفس الإعلان في packages/api.
عبر 232 مسارات و35 مجموعة موارد.
أشكال الطلب والاستجابة والخطأ، كل منها مرتبط بالعمليات التي تستخدمه.
المنبعثة من السايدكار في /api/openapi.json; اللقطة في packages/web يتم التحقق من قبل bun run check:api-reference.
يستدعي عرض الويب لسطح المكتب، والرفيق المحمول، وجسر الذكاء الاصطناعي، والبرامج النصية هذه المسارات نفسها.
عنوان URL الأساسي
لا توجد واجهة برمجة تطبيقات CADCAMFUN مستضافة. السايدكار تعمل على جهازك، وتربط 127.0.0.1 على منفذ يختاره نظام التشغيل (يستمع إلى المنفذ 0)، ويتحقق من المنفذ الخاص به /api/health، وعندها فقط يطبع سطر JSON واحدًا على stdout. عنوان URL الأساسي هو http://127.0.0.1:<port> من ذلك الخط.
export CADCAMFUN_TOKEN=dev-token
CADCAMFUN_DATA_DIR=$(mktemp -d) \
CADCAMFUN_MIGRATIONS_DIR=$PWD/packages/db/drizzle \
CADCAMFUN_AI_OFFLINE=true \
bun --no-env-file apps/sidecar/src/main.ts
# stdout: {"event":"ready","port":46709}
export CADCAMFUN_URL=http://127.0.0.1:46709 يتغير المنفذ في كل عملية إطلاق
ready line (يقوم غلاف سطح المكتب بذلك بالضبط) بدلاً من افتراض رقم ثابت. تنتقل السجلات إلى stderr، لذا فإن stdout يحمل فقط حدث الاستعداد أو حدث الخطأ. المصادقة
يعلن العقد عن مخطط أمني واحد، bearer (HTTP Bearer). 324 من 325 من العمليات تتطلب ذلك؛ فقط GET /api/health عام.
| بيانات الاعتماد | أرسلت كما | يستخدم من قبل |
|---|---|---|
| إطلاق الرمز المميز | Authorization: Bearer <token> | عرض الويب لسطح المكتب والنصوص المحلية؛ قيمة CADCAMFUN_TOKEN. |
| رمز مصاحب | Authorization: Bearer <token> | هاتف مقترن؛ وصول أضيق، انظر الاقتران رفيق. |
| جلسة الحساب | x-session-token | تحديد الحساب القائم أعلى الرمز المميز لحامله؛ يرى هوية أقل. |
curl -s "$CADCAMFUN_URL/api/health"
curl -s "$CADCAMFUN_URL/api/projects" -H "Authorization: Bearer $CADCAMFUN_TOKEN" الاتفاقيات
- JSON داخل، JSON خارج. الهيئات هي
application/jsonما لم تنص البطاقة على خلاف ذلك: تحميلان متعددا الأجزاء، وخطاف ويب واحد بثماني بتات، وتمهيد JavaScript، وتنزيل مضغوط، وملف مكون إضافي ثنائي، وتدفقين للأحداث. - معرفات العملية منقطة.
projects.get,vcs.commit: علامة المجموعة، النقطة، اسم الطريقة المستخدمة من قبل العملاء الذين تم إنشاؤهم. - يتم كتابة الأخطاء. يتم الإعلان عن حالات الفشل لكل نقطة نهاية وتحمل أ
_tag; قم بتشغيله بدلاً من تحليل الرسائل. عبر العقد، تم الإعلان عن 401 في العمليات 269، و500 في 264 و400 في 206. - مراسي التشغيل مستقرة. كل بطاقة قابلة للربط كما
#op-<method>-<path>، على سبيل المثال/docs/api/projects#op-get-api-projects-id.
جاري
| طريق | شكل | يحمل |
|---|---|---|
GET /api/projects/{id}/events | SSE | تغيير الأحداث لمشروع واحد. |
POST /api/ai/chat/stream | SSE | مساعد الإخراج كما يتم إنتاجه، بالإضافة إلى نبضات القلب؛ يرى تدفق الذكاء الاصطناعي. |
curl -N "$CADCAMFUN_URL/api/projects/$PROJECT_ID/events" \
-H "Authorization: Bearer $CADCAMFUN_TOKEN" العملاء
@cadcamfun/api/sdk يتم إنشاؤه من نفس العقد: كل معرف عملية أدناه هو طريقة مكتوبة CadCam.make(...)، مع أخذ إدخال ثابت واحد لمعلمات المسار وحقول النص. يتم إنشاء 259 من العمليات 325؛ تظهر كل بطاقة مكالمتها بالضبط.
import { CadCam } from "@cadcamfun/api/sdk"
const client = CadCam.make({
baseUrl: process.env.CADCAMFUN_URL!,
headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
const projects = await client.projects.list()
const created = await client.projects.create({ name: "Bracket" }) موارد
عمليات 325 في مجموعات 35، مرتبة حسب ما تخدمه.
جوهر
1 endpointsالتحقيق في صحة العملية العامة مع الحالة والطابع الزمني.
2 endpointsالجاهزية الموثقة وإصدار التطبيق المستخدم من قبل العملاء الأصليين.
2 endpointsالأحداث المرسلة من الخادم على نطاق المشروع للعملاء المباشرين.
4 endpointsالتفضيلات وإدخالات السياق المتوافقة مع JSON مع قائمة البادئات والعمليات لكل مفتاح.
2 endpointsعمليات التحميل والتنزيل باستخدام الحمولة الخاصة بنقطة النهاية وترميز الاستجابة.
تصميم
5 endpointsقم بإنشاء المشاريع وإدراجها وقراءتها وتحديثها وإزالتها من خلال عمليات التحقق من وصول المالك والمؤسسة.
8 endpointsرسومات المشروع والمكونات ومسارات الأدوات وموارد المكتبة والمعاينات المحدودة للعملاء المرافقين للقراءة فقط.
7 endpointsرسومات المشروع وهندستها المحفوظة وبياناتها التعريفية وعمليات التحديث.
5 endpointsمكونات المشروع القابلة لإعادة الاستخدام وبيانات التصميم المستمرة الخاصة بها.
5 endpointsقم بتحليل الشكل الهندسي الدقيق، وتصدير STEP، وفحص علاقات التجميع من لقطات المشهد أو الرسومات المحفوظة.
8 endpointsسجلات المكتبة المشتركة ومجموعات البحث عن المكونات والمواد والأدوات.
تصنيع
9 endpointsبرامج المعالجة المحفوظة، وجمعيات الرسم، ومستندات التصنيع المحمولة المعتمدة.
2 endpointsسرد مسار الأدوات على مستوى المشروع وإنشائه باستخدام مظاريف الاستجابة الخاصة بنقطة النهاية.
5 endpointsالتصنيع الأصلي، وإنشاء كود G المعتمد على الإعدادات، والاقتراحات، والتحليل، والتحقق من إعادة التشغيل.
8 endpointsإصدارات مسار الأدوات، والاستعادة، واكتشاف المكتبة، وتعليقات البرنامج المترابطة.
21 endpointsالتقديرات وطلبات الحساب وتكاليف المواد وتكاليف التشغيل وسجلات استخدام الأدوات.
موارد
5 endpointsسجلات المواد، وخصائص تشغيل التطبيقات، والوصول إلى الموارد.
5 endpointsمرفقات تخزين المواد واستيراد/تصدير JSON لتبادل المكتبة.
5 endpointsسجلات القطع والأبعاد المستخدمة في سير عمل تصنيع التطبيقات.
7 endpointsبيانات تخزين الأداة وجمعها أو استيرادها/تصديرها لكل أداة.
7 endpointsسجلات تكوين الجهاز والتحديثات والإزالة والاستنساخ.
5 endpointsمرفقات تخزين الجهاز واستيراد/تصدير التكوين.
ملحقات
52 endpointsالموفرون، وبيانات الاعتماد، والمحادثات، ودورات البث، واستدعاء الإجراء، ورموز الجسر، والمهارات، واسترداد الجلسة.
22 endpointsالالتزامات والفروع والاستعادة والمراجعات المتوافقة مع Project Git، ونسخ GitHub، وإرسال سير العمل.
16 endpointsتسجيل البرنامج المساعد، وتثبيت الحزمة، والتكوين، وتمكين/تعطيل، وأصول البرنامج المساعد المقدمة.
8 endpointsتكوين اتصال MCP CRUD وطلبات معلومات الخادم.
5 endpointsحالة بوابة سطح المكتب، والتمكين/التعطيل، وإقران الجهاز، وإلغاء الجهاز.
الحسابات
15 endpointsتسجيل الدخول إلى الحساب، والتسجيل، والاسترداد، والتحقق، والروابط السحرية، والبحث عن الجلسة، وتسجيل مفتاح المرور.
18 endpointsالملفات الشخصية وموارد الحساب ومفاتيح واجهة برمجة التطبيقات وسجلات الرموز المميزة وكلمات المرور وإزالة الحساب.
5 endpointsقوائم المنظمة وسجلات المنظمة المدارة.
4 endpointsقائمة الإشعارات، وتحديثات حالة القراءة، والحذف، ووضع علامة للقراءة للكل.
15 endpointsمعلومات الاشتراك، والخروج من الشريط/تكامل البوابة، والصيانة التجريبية، واستيعاب الويب هوك الموقع.
10 endpointsمقاييس التطبيق والنشاط الأخير واستعلامات الاستخدام وطلبات التتبع.
10 endpointsمسارات تكامل سطح المكتب وعمليات المشروع المتعقبة والإشعارات وسجلات الاشتراك الفوري.
1 endpointsإرسال تسجيل قائمة الانتظار من خلال واجهة برمجة تطبيقات التطبيق المحلي.
مستند OpenAPI
تحميل /docs/api/openapi.json (اللقطة التي تم تسجيل الوصول إليها والتي يعرضها هذا الموقع) أو قم بإحضار المستند المباشر من سايدكار قيد التشغيل في /api/openapi.json. إعادة إنشاء اللقطة باستخدام bun run generate:api-reference في packages/web بعد تغيير نقطة النهاية.
العقد والخادم
@cadcamfun/api يحدد مخططات الطلب والاستجابة باستخدام Effect HttpApi. يقوم بتصدير الجذر Apiوسجلات المجال والأخطاء ذات العلامات والعملاء. يتم تشغيل معالجات الطلب وقرارات الترخيص واستعلامات قاعدة البيانات واستدعاءات الموفر في السايدكار. لا يؤدي استيراد المخطط إلى بدء تشغيل الخادم.
تنشر السايدكار عقدها المقدم في GET /api/openapi.json. استخدم هذا المستند قيد التشغيل لفحص الأساليب ومعلمات المسار والحمولات ورموز الحالة للتطبيق الذي تتصل به. يقوم الخادم بتجميع مجموعاته في apps/sidecar/src/layers.ts; يتم تجميع العقد المشترك في packages/api/src/index.ts.
عائلات الموارد
- تصميم: المشاريع والرسومات والمكونات وإصدارات الرسم واستيراد/تصدير الكيان وتحليل CAD الدقيق وتصدير STEP وتحليل التجميع.
- تصنيع: مسارات الأدوات والإصدارات، والتعليقات، واقتراحات المولد، والتحليل، والتحقق من إعادة التشغيل، ووظائف التصنيع الأصلية، والمواد، والأدوات، وتكوينات الآلة، وعناصر المكتبة، وتكاليف الإنتاج.
- مساعد: مقدمو الخدمة، وبيانات الاعتماد، والنماذج، والجلسات، ودورات البث، وضوابط الجلسة، والإجراءات، وذاكرة المشروع، وسياق مساحة العمل، والنصائح عديمة الحالة.
- تعاون: الفروع، والالتزامات، والاختلافات، وطلبات السحب، والمراجعات، ومرايا GitHub، وملفات سير العمل وعمليات التشغيل، والأحداث المباشرة، والاقتران المصاحب.
- خدمات التطبيق: المستخدمون، والمصادقة، والمؤسسات، والإشعارات، والملفات، والمكونات الإضافية، والفوترة، والتحليلات، وقائمة الانتظار، وتكوين MCP، وتخزين قيمة المفتاح المحلي.
تحتفظ مجموعات العقد بأشكال الاستجابة الخاصة بنقطة النهاية. يجب على العميل فك تشفير مخطط العملية التي يستدعيها بدلاً من افتراض مظروف JSON واحد على مستوى التطبيق.
ردود الفعل والإخفاقات
يتم تعيين الأخطاء الشائعة ذات العلامات إلى HTTP 400 (BadRequest), 401 (Unauthorized), 403 (Forbidden), 404 (NotFound), 405 (MethodNotAllowed), 409 (Conflict)، و 500 (InternalError). تحمل مخططاتهم المعلنة مخططًا يمكن قراءته بواسطة الإنسان message. تستخدم بعض المجموعات مظروفًا به success: false, message، و errors; عدد صغير يستخدم error مجال.
يمكن أن تكون استجابات النجاح عبارة عن سجل أو مصفوفة أو قيمة فارغة أو مظروف. Envelope يشمل success, message، و data; EnvelopeOpt يجعل الرسالة اختيارية. تعلن نقاط نهاية الإنشاء بوضوح عن 201 حيثما كان ذلك مناسبًا. لا تستنتج النجاح من حقل JSON فقط دون التحقق من حالة HTTP ومخطط نقطة النهاية.
يتحقق فك تشفير المخطط من صحة إدخال النقل قبل تنفيذ المعالج. لا يزال التحقق من صحة الأعمال قيد التشغيل في الخدمة: قد يشير الطلب الصحيح هيكليًا إلى رسم لا يمكن الوصول إليه، أو يحتوي على قطعة أثرية قديمة للتصنيع، أو يطلب عملية فرعية متعارضة.
استخدم العميل المشترك
ApiClient.layer يأخذ أ baseUrl والتطبيق token. فهو يوفر وسيلة نقل الجلب والبرمجيات الوسيطة لترخيص العميل. وأساليبها مستمدة مباشرة من Api، لذلك يغطي هذا العميل أيضًا العمليات المحذوفة عن طريق إنشاء التعليمات البرمجية.
import { ApiClient } from "@cadcamfun/api"
import { Effect } from "effect"
const projects = Effect.gen(function* () {
const api = yield* ApiClient
return yield* api.projects.list()
}).pipe(Effect.provide(ApiClient.layer({ baseUrl, token }))) عنوان URL الأساسي هو عنوان الاسترجاع الخاص بالسايدكار والمنفذ المخصص. قم بحلها من اتصال سطح المكتب، بدلاً من الاحتفاظ بالمنفذ عبر عمليات التشغيل. احتفظ بالرموز المميزة بعيدًا عن عناوين URL والسجلات.
طلبات التصميم والتصنيع
استخدام عمليات المشروع /api/projects; تحتوي الرسومات ومسارات الأدوات على مجموعاتها الخاصة ومسارات التفاصيل. POST /api/toolpaths/generate ينتج G-code وبيانات البرنامج التي تم تحليلها والتحذيرات والإحصائيات من إعدادات المولد والهندسة. /suggest, /parse، و /verify كشف نصيحة المعلمة، وتفسير G-code، وإعادة عرض المخزون. لا تقوم هذه الحسابات بإنشاء مسار أدوات محفوظ.
POST /api/toolpaths/manufacture يقبل لقطة CAD تم إصدارها ويعيد نتيجة kernel مع NC، وتعيينات الأدوات، وقطع البيانات، والمطالبات، والمشكلات، ومستوى الإصدار. احفظ المستند الناتج بشكل منفصل من خلال عملية إنشاء مسار الأدوات أو تحديثه. يرى الاجهزة للتحقق من صحة الأدلة أثناء الثبات.
POST /api/cad/exact/analyze, /step، و /assembly قبول العناصر الصريحة أو معرف الرسم المخزن. تؤدي قراءة الرسم المخزن إلى تطبيق عمليات التحقق العادية من الوصول إلى الرسم للمتصل.
الجري والانتعاش
يحمل تدفق الذكاء الاصطناعي أحداثًا مكتوبة للنص، والاستدلال، واستدعاءات الأدوات والنتائج، وطلبات الأذونات والأسئلة، وإعادة المحاولة، وحالة الدوران، والسياق، والإكمال. يجب على العملاء استهلاك الأحداث بشكل متزايد والاحتفاظ بمعرف الجلسة. لا تعد نهاية اتصال HTTP دليلاً كافيًا على انتهاء تشغيل النموذج: يمكن قراءة حالة الجلسة مرة أخرى بعد إعادة الاتصال.
مخططات أحداث الذكاء الاصطناعي موجودة packages/api/src/ai-events.ts و packages/ai/src/events.ts. تستخدم الأحداث المباشرة العامة مجموعة الأحداث. تتطلب التنزيلات الثنائية واستجابات تمهيد مكون JavaScript الإضافي ونصوص خطاف الويب الأولية الموقعة معالجة النقل الخاصة بها.
قم بإدراج المسارات التي تستخدمها الصفحة التي تستخدم نتائجها page و limit معلمات الاستعلام. بالنسبة لتكوينات الجهاز page الإعدادات الافتراضية هي 1، limit الافتراضي هو 20 ويتم تثبيته على 1–100، وتحمل الاستجابة pagination مع page, limit, total، و totalPages (apps/sidecar/src/http/machine-configs.ts). تحقق من الصفحة المرجعية لكل مجموعة لمعرفة المعلمات التي تعلن عنها بالفعل.
حزم SDK التي تم إنشاؤها
@cadcamfun/httpapi-codegen يعكس مجموعات HttpApi في بيانات تعريف العملية والعملاء الذين تم إنشاؤها. يكتب منشئ واجهة برمجة التطبيقات Promise SDK إلى packages/api/src/sdk/generated وتأثير العملاء على packages/api/src/client/generated. يتم تصدير Promise SDK العام بتنسيق @cadcamfun/api/sdk.
bun run --filter @cadcamfun/api generate
bun run --filter @cadcamfun/api generate:check كلا الهدفين اللذين تم إنشاؤهما يحذفان التحميل متعدد الأجزاء للملف الشخصي، وتثبيت البرنامج المساعد متعدد الأجزاء، وإنشاء MCP بمخططات نجاح متعددة، وتحديث MCP بمعرفات متصادمة، وإنشاء مسار أدوات المشروع بأسماء إدخال مكررة، وملف البرنامج المساعد الذي يعمل مع رؤوس الدفق. يحذف هدف Promise أيضًا خطافات الويب الأولية لـ Stripe، وJavaScript bootstrap الإضافي، وتنزيل الملفات الثنائية، وطلبات الإنشاء/الاقتراح الخاصة بالمولد. وهذه الإغفالات واضحة في packages/api/scripts/generate-clients.ts; استخدام العميل المتعاقد أو وسيلة النقل الخام المناسبة لتلك العمليات.
منظمة المصدر
groups/ يحتوي على عقود الموارد. تأتي الهندسة المشتركة ومخططات CAM من @cadcamfun/core; cad-exact.ts, cam-kernel.ts، و cam-program.ts وصف نتائج CAD/CAM الغنية والمستندات المحمولة. client.ts يبني عميل العقد، في حين يمتلك البرنامج النصي للجيل الأهداف التي تم إنشاؤها وقوائم الإغفال.
قواعد التكامل
أعد استخدام مخططات العقد عند حدود النقل واحتفظ بتبعيات قاعدة البيانات في السايدكار. قم بتقديم نقطة النهاية من خلال العقد أو المعالج أو الخدمة أو المستودع الخاص بها، وتغطية HTTP المركزة معًا. الملفات التي تم إنشاؤها هي مخرجات: قم بتحرير العقد أو المولد الخاص بها وأعد إنشائها. يصف إصدار مخطط API وإصدار الملف المحمول وإصدار API الإضافي عقودًا منفصلة.
مرجع الموارد
325 عمليات عير 232 مسارات و 35 مجموعات الموارد، مع 56 مخططات مسماة. تسرد كل صفحة مورد عملياتها وتظهر معلمات المسار/الاستعلام/الرأس المعلنة، والحقول المطلوبة والاختيارية، والقيم الخالية، وأنواع المحتوى، وحالات النجاح والخطأ، والمخططات الكاملة.
يتم إصدار البيانات من packages/api/src/index.ts، وهو نفس عقد HttpApi المؤلف الذي يستخدمه العملاء والسايدكار. تصف الصفحات العقد المفحوص؛ فحص الخادم قيد التشغيل /api/openapi.json إذا قمت بالاتصال بإصدار آخر.
موارد HTTP
صحة
التحقيق في صحة العملية العامة مع الحالة والطابع الزمني.
موارد HTTP
نظام
الجاهزية الموثقة وإصدار التطبيق المستخدم من قبل العملاء الأصليين.
موارد HTTP
المشاريع
قم بإنشاء المشاريع وإدراجها وقراءتها وتحديثها وإزالتها من خلال عمليات التحقق من وصول المالك والمؤسسة.
موارد HTTP
مساحة العمل
رسومات المشروع والمكونات ومسارات الأدوات وموارد المكتبة والمعاينات المحدودة للعملاء المرافقين للقراءة فقط.
موارد HTTP
الرسومات
رسومات المشروع وهندستها المحفوظة وبياناتها التعريفية وعمليات التحديث.
موارد HTTP
عناصر
مكونات المشروع القابلة لإعادة الاستخدام وبيانات التصميم المستمرة الخاصة بها.
موارد HTTP
بالضبط CAD
قم بتحليل الشكل الهندسي الدقيق، وتصدير STEP، وفحص علاقات التجميع من لقطات المشهد أو الرسومات المحفوظة.
موارد HTTP
مسارات الأدوات
برامج المعالجة المحفوظة، وجمعيات الرسم، ومستندات التصنيع المحمولة المعتمدة.
موارد HTTP
مسارات أدوات المشروع
سرد مسار الأدوات على مستوى المشروع وإنشائه باستخدام مظاريف الاستجابة الخاصة بنقطة النهاية.
موارد HTTP
بالقطع
التصنيع الأصلي، وإنشاء كود G المعتمد على الإعدادات، والاقتراحات، والتحليل، والتحقق من إعادة التشغيل.
موارد HTTP
تاريخ مسار الأدوات
إصدارات مسار الأدوات، والاستعادة، واكتشاف المكتبة، وتعليقات البرنامج المترابطة.
موارد HTTP
مواد
سجلات المواد، وخصائص تشغيل التطبيقات، والوصول إلى الموارد.
موارد HTTP
تخزين المواد
مرفقات تخزين المواد واستيراد/تصدير JSON لتبادل المكتبة.
موارد HTTP
أدوات
سجلات القطع والأبعاد المستخدمة في سير عمل تصنيع التطبيقات.
موارد HTTP
تخزين الأدوات
بيانات تخزين الأداة وجمعها أو استيرادها/تصديرها لكل أداة.
موارد HTTP
آلات
سجلات تكوين الجهاز والتحديثات والإزالة والاستنساخ.
موارد HTTP
تخزين الآلة
مرفقات تخزين الجهاز واستيراد/تصدير التكوين.
موارد HTTP
مكتبة
سجلات المكتبة المشتركة ومجموعات البحث عن المكونات والمواد والأدوات.
موارد HTTP
تكاليف الإنتاج
التقديرات وطلبات الحساب وتكاليف المواد وتكاليف التشغيل وسجلات استخدام الأدوات.
موارد HTTP
جلسات وإجراءات الذكاء الاصطناعي
الموفرون، وبيانات الاعتماد، والمحادثات، ودورات البث، واستدعاء الإجراء، ورموز الجسر، والمهارات، واسترداد الجلسة.
موارد HTTP
التاريخ وسير العمل
الالتزامات والفروع والاستعادة والمراجعات المتوافقة مع Project Git، ونسخ GitHub، وإرسال سير العمل.
موارد HTTP
أحداث المشروع
الأحداث المرسلة من الخادم على نطاق المشروع للعملاء المباشرين.
موارد HTTP
الاقتران رفيق
حالة بوابة سطح المكتب، والتمكين/التعطيل، وإقران الجهاز، وإلغاء الجهاز.
موارد HTTP
الإضافات
تسجيل البرنامج المساعد، وتثبيت الحزمة، والتكوين، وتمكين/تعطيل، وأصول البرنامج المساعد المقدمة.
موارد HTTP
تكوين MCP
تكوين اتصال MCP CRUD وطلبات معلومات الخادم.
موارد HTTP
ملفات
عمليات التحميل والتنزيل باستخدام الحمولة الخاصة بنقطة النهاية وترميز الاستجابة.
موارد HTTP
تخزين القيمة الرئيسية
التفضيلات وإدخالات السياق المتوافقة مع JSON مع قائمة البادئات والعمليات لكل مفتاح.
موارد HTTP
المنظمات
قوائم المنظمة وسجلات المنظمة المدارة.
موارد HTTP
إشعارات
قائمة الإشعارات، وتحديثات حالة القراءة، والحذف، ووضع علامة للقراءة للكل.
موارد HTTP
المصادقة
تسجيل الدخول إلى الحساب، والتسجيل، والاسترداد، والتحقق، والروابط السحرية، والبحث عن الجلسة، وتسجيل مفتاح المرور.
موارد HTTP
المستخدمين
الملفات الشخصية وموارد الحساب ومفاتيح واجهة برمجة التطبيقات وسجلات الرموز المميزة وكلمات المرور وإزالة الحساب.
موارد HTTP
الفواتير
معلومات الاشتراك، والخروج من الشريط/تكامل البوابة، والصيانة التجريبية، واستيعاب الويب هوك الموقع.
موارد HTTP
التحليلات
مقاييس التطبيق والنشاط الأخير واستعلامات الاستخدام وطلبات التتبع.
موارد HTTP
خدمات التطبيقات
مسارات تكامل سطح المكتب وعمليات المشروع المتعقبة والإشعارات وسجلات الاشتراك الفوري.
موارد HTTP
قائمة الانتظار
إرسال تسجيل قائمة الانتظار من خلال واجهة برمجة تطبيقات التطبيق المحلي.
اصطلاحات الاتصال والطلب
يتم توفير واجهة برمجة التطبيقات (API) بواسطة السايدكار المحلية بدلاً من نقطة نهاية مستضافة ثابتة. تحصل Tauri على عنوان URL للاسترجاع المحدد ديناميكيًا ورمز الإطلاق المميز. تعلن السايدكار التي تم تشغيلها يدويًا عن منفذها في حدث جاهز لـ JSON. يتصل عميل الهاتف المحمول المقترن عبر بوابة HTTPS التي تم تكوينها بدلاً من ذلك.
curl --silent --show-error "$CADCAMFUN_URL/api/projects" \
--header "Authorization: Bearer $CADCAMFUN_TOKEN" قم بتعيين كلا المتغيرين من الاتصال الفعلي. تستخدم قوالب الطلب على صفحات الموارد عن عمد العناصر النائبة وملفات الحمولة. لا تعد حقول النقل الاختيارية وعودًا بإمكانية حذفها في كل عملية تجارية: على سبيل المثال، يرفض إنشاء المشروع اسمًا مفقودًا في معالجه.
| مؤتمر | سلوك العميل |
|---|---|
| معلمات المسار | استبدل المقطع المحدد وقم بتشفير عنوان URL لقيمته. تعامل مع المعرف كقطعة واحدة. |
| معلمات الاستعلام | ترميز القيم المعلنة. يعتبر ترقيم الصفحات والتصفية لكل نقطة نهاية؛ لا يوجد عقد عالمي لحجم الصفحة. |
| حمولة JSON | إرسال الكائن المعلن مع Content-Type: application/json. الحضور المطلوب وقبول القيمة الفارغة مستقلان. |
| حمولة متعددة الأجزاء | إنشاء أجزاء النموذج باستخدام عميل التحميل أو FormData؛ دع النقل يختار حدوده. |
| الاستجابة الثنائية أو JavaScript أو الدفق | تستهلك نوع الوسائط المعلنة. لا تتصل response.json() دون قيد أو شرط. |
| أخطاء | تحقق من حالة HTTP وقم بفك تشفير شكل الفشل المعلن لنقطة النهاية. تختلف مظاريف الأخطاء عبر عائلات الموارد. |
| إعادة محاولة الكتابة | قراءة الحالة بعد العملية المتقطعة قبل إعادة إرسال الطفرة. لا يوفر العقد آلية عالمية لمفتاح العجز. |
الصيانة المرجعية التي تم إنشاؤها
packages/web/script/generate-api-reference.mjs يقرأ العقد المؤلف باستخدام تطبيق Effect المثبت لحزمة API ويكتب المرجع JSON. يستهلك عامل التوثيق المحتوى الذي تم إنشاؤه؛ ولا يقوم بتهيئة خادم التطبيق للرد على طلبات التوثيق.
bun run generate:api-reference
bun run check:api-reference
bun run check:docs-index يتم فحص تغطية الموارد مقابل كل عملية معلنة. يجب أن تتلقى المجموعة المضافة حديثًا بيانات التعريف والتنقل التي تواجه القارئ، ويجب إعادة إنشاء طلب أو استجابة تم تغييرها. لا تزال الأدلة المكتوبة بخط اليد تشرح قواعد التفويض، والآثار الجانبية، وتكوين الخدمة، والحدود التي لا يستطيع مخطط HTTP وحده التعبير عنها.
وصفات التكامل
ابدأ بـ طلبات HTTP التي تم التقاطها لنرى كيف يستجيب إنشاء المشروع، والتحقق من صحة الأعمال، ورفض حامله، والسجلات ذات الصلة، واستمرارية القيمة الأساسية. يستخدم تكامل العميل المكتوب لإعادة إنتاج تلك العمليات باستخدام Promise SDK أو عميل Effect والتعامل مع قنوات الفشل المميزة الخاصة بها.
| اندماج | إجراء | الحالة الرئيسية للاحتفاظ بها |
|---|---|---|
| محرر المشروع | إنشاء العمل وحفظه وإعادة فتحه | هوية المشروع/المورد، البيانات المحفوظة، دلالات التحديث الفعلي. |
| خط أنابيب التصنيع | إنشاء واستمرار وظيفة أصلية | طلب تم التقاطه، NC/البرنامج الدقيق، مطالبات الإصدار، مطابقة المستند المحمول. |
| واجهة المستخدم المساعدة | استهلاك الأحداث واستعادة الجلسات | هوية المشروع/الجلسة، الأذونات/الأسئلة المعلقة، حالة تشغيل المحطة الطرفية. |
| القدرة الخارجية | تأليف مكون إضافي مدعوم | البيان، صادرات الوحدة، منح القدرة، التحقق من صحة الوسيطة ونتائج الأداة. |
| مراجعة الأتمتة | إصدار ومراجعة عمل المشروع | الالتزام/المرجع، الفرق الهيكلي، المراجعات، سير العمل الملتزم، مخرجات الفحص الفردي. |
| العميل المقترن | تمكين وإدارة الوصول إلى الجهاز | عنوان البوابة، وبصمة الشهادة، والرمز المميز للجهاز القابل للإلغاء بشكل فردي. |
تربط هذه الوصفات عقود HTTP بسلوك الخدمة الحقيقي. يمكن للمخطط أن يصف الحضور المطلوب، والتشفير، والشكل الذي تم إرجاعه؛ يشرح الدليل المرتبط به قواعد الوصول وتأثيرات الاستمرارية والاسترداد المدعوم والحدود التي لا يمكن استنتاجها من تلك الأنواع وحدها.
العمليات لكل مجموعة موارد
يعلن العقد حاليًا عن 270 عمليات في 34 مجموعات، كلها تحت مجموعة واحدة bearer نظام أمان HTTP. العملية الوحيدة التي لا يوجد فيها ضمان لحاملها هي مسبار الصحة العامة. يتم حساب الجدول من مستند OpenAPI الذي تم إنشاؤه: العمليات لكل مجموعة، وطرق HTTP المستخدمة، وعدد المسارات المميزة، ومسار تمثيلي واحد.
| مجموعة | علامة | العمليات | طُرق | المسارات | مسار المثال |
|---|---|---|---|---|---|
| صحة | health | 1 | احصل على 1 | 1 | /api/health |
| نظام | system | 2 | احصل على 2 | 2 | /health |
| المشاريع | projects | 5 | حذف 1، الحصول على 2، نشر 1، وضع 1 | 2 | /api/projects |
| الرسومات | drawings | 5 | حذف 1، الحصول على 2، نشر 1، وضع 1 | 2 | /api/drawings/{id} |
| عناصر | components | 5 | حذف 1، الحصول على 2، نشر 1، وضع 1 | 2 | /api/components/{id} |
| بالضبط CAD | cadExact | 3 | مشاركة 3 | 3 | /api/cad/exact/analyze |
| مسارات الأدوات | toolpaths | 7 | حذف 1، الحصول على 3، نشر 2، وضع 1 | 3 | /api/drawings/{id}/toolpaths |
| مسارات أدوات المشروع | projectToolpaths | 2 | احصل على 1، أرسل 1 | 1 | /api/projects/{id}/toolpaths |
| بالقطع | toolpathGenerator | 5 | مشاركة 5 | 5 | /api/toolpaths/generate |
| تاريخ مسار الأدوات | toolpathExtras | 8 | حذف 1، الحصول على 3، نشر 3، وضع 1 | 5 | /api/toolpaths/library |
| مواد | materials | 5 | حذف 1، الحصول على 2، نشر 1، وضع 1 | 2 | /api/materials |
| تخزين المواد | materialsStorage | 5 | حذف 1، الحصول على 2، نشر 2 | 2 | /api/materials/export-import |
| أدوات | tools | 5 | حذف 1، الحصول على 2، نشر 1، وضع 1 | 2 | /api/tools |
| تخزين الأدوات | toolsStorage | 7 | حذف 1، الحصول على 3، نشر 3 | 3 | /api/tools/export-import |
| آلات | machineConfigs | 6 | حذف 1، الحصول على 2، نشر 2، وضع 1 | 3 | /api/machine-configs |
| تخزين الآلة | machineConfigsStorage | 5 | حذف 1، الحصول على 2، نشر 2 | 2 | /api/machine-configs/export-import |
| مكتبة | library | 8 | حذف 1، الحصول على 5، نشر 1، وضع 1 | 5 | /api/library |
| تكاليف الإنتاج | production-costs | 21 | حذف 4، الحصول على 8، نشر 5، وضع 4 | 9 | /api/production-costs/estimates |
| جلسات وإجراءات الذكاء الاصطناعي | ai | 34 | حذف 3، الحصول على 8، نشر 21، وضع 2 | 32 | /api/ai/actions |
| التاريخ وسير العمل | vcs | 22 | احصل على 10، نشر 11، ضع 1 | 19 | /api/projects/{id}/actions/dispatch |
| أحداث المشروع | events | 1 | احصل على 1 | 1 | /api/projects/{id}/events |
| الاقتران رفيق | companion | 5 | حذف 1، الحصول على 1، نشر 3 | 5 | /api/companion |
| الإضافات | plugins | 16 | حذف 1، الحصول على 8، التصحيح 1، نشر 4، وضع 2 | 12 | /api/plugins |
| تكوين MCP | mcp | 8 | حذف 2، الحصول على 2، نشر 2، وضع 2 | 3 | /api/mcp/config |
| ملفات | files | 2 | احصل على 1، أرسل 1 | 2 | /api/download |
| تخزين القيمة الرئيسية | kv | 4 | احذف 1، احصل على 2، ضع 1 | 2 | /api/kv |
| المنظمات | organizations | 5 | حذف 1، الحصول على 2، نشر 1، وضع 1 | 2 | /api/organizations |
| إشعارات | notifications | 4 | حذف 1، الحصول على 1، نشر 1، وضع 1 | 3 | /api/notifications |
| المصادقة | auth | 12 | احصل على 1، أرسل 11 | 12 | /api/auth/forgot-password |
| المستخدمين | user | 16 | حذف 2، الحصول على 10، نشر 2، وضع 2 | 12 | /api/user/api-keys |
| الفواتير | billing | 15 | حذف 1، الحصول على 5، نشر 8، وضع 1 | 10 | /api/better-auth-stripe/billing-portal |
| التحليلات | analytics | 10 | حذف 1، الحصول على 7، نشر 2 | 9 | /api/analytics |
| خدمات التطبيقات | misc | 10 | حذف 2، الحصول على 3، نشر 4، وضع 1 | 6 | /api/app-control/notify |
| قائمة الانتظار | waitlist | 1 | مشاركة 1 | 1 | /api/waitlist |
رموز الحالة عبر العقد
إن حساب كل استجابة معلنة مرة واحدة لكل عملية يعطي هذه الصورة لما يجب أن يكون العميل جاهزًا لفك تشفيره:
| حالة | أعلن على | جسم نموذجي |
|---|---|---|
| 200 | 242 عمليات | المورد أو الصفيف أو القيمة الفارغة أو Envelope |
| 201 | 28 عمليات | السجل الذي تم إنشاؤه (على سبيل المثال POST /api/projects) |
| 204 | عملية 1. | لا يوجد جسد |
| 400 | 206 عمليات | BadRequest, EnvBadRequest والمتغيرات الخاصة بالعائلة |
| 401 | 269 عمليات | Unauthorized (الوسيطة الحاملة) |
| 403 | 101 عمليات | Forbidden / EnvForbidden |
| 404 | 149 عمليات | NotFound / EnvNotFound |
| 405 | 30 عمليات | EnvMethodNotAllowed / KeyedMethodNotAllowed |
| 409 | 29 عمليات | Conflict / EnvConflict |
| 500 | 264 عمليات | InternalError, EnvInternal, KeyedInternal والمتغيرات العائلية |
| 501, 503 | 1 عملية لكل منهما | نقطة النهاية محددة |
كل خطأ هو خطأ ذو علامة تأثير، لذلك يحتوي نص JSON الخاص به دائمًا على ملف _tag المميز بجوار حقولها. هناك ثلاث عائلات جسدية، موروثة من المعالجات القديمة حتى يستمر العملاء الحاليون في العمل:
{ "_tag": "NotFound", "message": "Project not found" } { "_tag": "EnvNotFound", "success": false, "message": "Material not found", "errors": null } { "_tag": "KeyedInternal", "error": "Failed to load components" } مظاريف النجاح تعكس مظروف الخطأ: { success: true, message, data }، أين data ربما null. ال EnvelopeOpt يتجاهل البديل message عندما لم يقدم المعالج واحدة. قم بالتشغيل _tag وليس على حضور message أو error.
كيف تتم معالجة الطلب
- يطابق جهاز التوجيه الطريقة والمسار. الطرق غير المعروفة لا تصل أبدًا إلى المعالج.
- تقوم البرمجيات الوسيطة لحاملها بمقارنة الرمز المميز في وقت ثابت. يؤدي الرمز المفقود أو الخاطئ إلى إيقاف الطلب باستخدام 401 قبل أي فك تشفير.
- يتم فك تشفير المسار والاستعلام والرؤوس والنص وفقًا لمخططات العملية. تصبح المشاكل الهيكلية 400 بدون تشغيل كود العمل.
- يقوم المعالج بحل الحساب النشط، والتحقق من الملكية أو عضوية المؤسسة (403/404) وتشغيل الخدمة.
- يتم ترميز النتيجة بمخطط النجاح المعلن، أو الفشل بمخطط الخطأ الموسوم وحالته.
الاستجابات التي ليست JSON
| عملية | نوع الوسائط | كيف تستهلك |
|---|---|---|
POST /api/ai/chat/stream | text/event-stream | اقرأ بشكل تدريجي؛ كل data: الخط هو حدث مساعد واحد مكتوب. |
GET /api/projects/{id}/events | text/event-stream | أحداث المشروع الحية. أعد الاتصال وأعد قراءة الحالة بعد السقوط. |
GET /api/plugins/bootstrap.js | application/javascript | تم تحميله بواسطة مضيف البرنامج المساعد، ولم يتم تحليله كـ JSON. |
GET /api/plugins/serve | application/octet-stream | بايت ملف البرنامج المساعد. |
GET /api/download | application/zip | حفظ كملف. يستخدم response.blob() أو الدفق إلى القرص. |
يرفض Promise SDK الذي تم إنشاؤه استجابة البث التي لا يكون نوع محتواها كذلك text/event-stream مع ClientError("UnsupportedContentType")، وحدث SSE واحد أكبر من 16 MiB مع SseEventTooLarge.
استدعاء API بدون عميل
type TaggedError = { _tag: string; message?: string; error?: string }
async function call<T>(base: string, token: string, method: string, path: string, body?: unknown): Promise<T> {
const response = await fetch(new URL(path, base), {
method,
headers: {
authorization: `Bearer ${token}`,
...(body === undefined ? {} : { "content-type": "application/json" }),
},
body: body === undefined ? undefined : JSON.stringify(body),
})
if (response.status === 204) return undefined as T
const payload = await response.json()
if (!response.ok) {
const failure = payload as TaggedError
throw new Error(`${response.status} ${failure._tag}: ${failure.message ?? failure.error}`)
}
return payload as T
}
const project = await call<{ id: string; name: string }>(
process.env.CADCAMFUN_URL!, process.env.CADCAMFUN_TOKEN!,
"POST", "/api/projects", { name: "Bracket" },
) تفضيل العملاء الذين تم إنشاؤهم في TypeScript: فهم يعرفون حالة نجاح كل عملية وحالات الخطأ المعلنة، ويتعاملون مع أي شيء آخر على أنه UnexpectedStatus بدلا من التخمين.