تخطَّ إلى المحتوى
CADCAMFUN
الوثائق

الوثائق

مرجع واجهة برمجة التطبيقات

مرجع موارد HTTP الكامل، والوصول المحلي المعتمد، وعقود البث، والعملاء الذين تم إنشاؤهم من المخططات المشتركة.

مترجم تلقائيًا من الإنجليزية. عرض الأصل بالإنجليزية

ملخص

السايدكار هي تأثير واحد HttpApi. كل نقطة نهاية مكتوبة HttpApiEndpoint مع أجسام الطلب والاستجابة التي تم التحقق منها في المخطط، لذلك يأتي هذا المرجع ومجموعة SDK التي تم إنشاؤها والخادم قيد التشغيل من نفس الإعلان في packages/api.

سطح
325 عمليات

عبر 232 مسارات و35 مجموعة موارد.

أنواع
56 المخططات

أشكال الطلب والاستجابة والخطأ، كل منها مرتبط بالعمليات التي تستخدمه.

عقد
OpenAPI 3.1.0

المنبعثة من السايدكار في /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}/eventsSSEتغيير الأحداث لمشروع واحد.
POST /api/ai/chat/streamSSEمساعد الإخراج كما يتم إنتاجه، بالإضافة إلى نبضات القلب؛ يرى تدفق الذكاء الاصطناعي.
متابعة أحداث المشروع
curl -N "$CADCAMFUN_URL/api/projects/$PROJECT_ID/events" \
  -H "Authorization: Bearer $CADCAMFUN_TOKEN"

العملاء

@cadcamfun/api/sdk يتم إنشاؤه من نفس العقد: كل معرف عملية أدناه هو طريقة مكتوبة CadCam.make(...)، مع أخذ إدخال ثابت واحد لمعلمات المسار وحقول النص. يتم إنشاء 259 من العمليات 325؛ تظهر كل بطاقة مكالمتها بالضبط.

@cadcamfun/api/sdk
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، مرتبة حسب ما تخدمه.

جوهر

تصميم

تصنيع

موارد

ملحقات

الحسابات

مستند 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.

المصادقة والهوية

تتطلب الطرق المحمية Authorization: Bearer <token>. يتلقى سطح المكتب رمزًا مميزًا جديدًا للتطبيق عند بدء تشغيل السايدكار. GET /api/health هو مسبار الصحة العامة؛ محلي /health و /version محمية. تتم مقارنة الرموز المميزة لحامل التطبيق بمقارنة آمنة للتوقيت.

اختياري x-session-token يحمل جلسة حساب JWT. يقبل الرمز المميز لحامله التطبيق المحلي؛ تختار الجلسة حساب التمثيل الخاص بها. تعود الجلسة الغائبة أو منتهية الصلاحية أو غير الصالحة أو المعزولة إلى ملف التعريف المحلي للتثبيت. يقوم معالجو الموارد بعد ذلك بالتحقق من الملكية أو الوصول إلى المؤسسة من خلال مساعدي ترخيص المستودع.

يعترف رمز الجسر ذو النطاق فقط GET /api/ai/actions و POST /api/ai/actions/invoke. ولا يمنح الوصول إلى مشروع CRUD أو إعدادات بيانات الاعتماد أو مسارات HTTP الأخرى. يتم فحص مشروعه ونطاق القراءة/الكتابة مرة أخرى بواسطة جسر الإجراء.

عائلات الموارد

  • تصميم: المشاريع والرسومات والمكونات وإصدارات الرسم واستيراد/تصدير الكيان وتحليل 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، لذلك يغطي هذا العميل أيضًا العمليات المحذوفة عن طريق إنشاء التعليمات البرمجية.

قراءة المشاريع مع عميل Effect
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

قائمة الانتظار

إرسال تسجيل قائمة الانتظار من خلال واجهة برمجة تطبيقات التطبيق المحلي.

تنزيل OpenAPI JSON · متابعة الطلبات مع الاستجابات الملتقطة

اصطلاحات الاتصال والطلب

يتم توفير واجهة برمجة التطبيقات (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 المستخدمة، وعدد المسارات المميزة، ومسار تمثيلي واحد.

مجموعةعلامةالعملياتطُرقالمساراتمسار المثال
صحةhealth1احصل على 11/api/health
نظامsystem2احصل على 22/health
المشاريعprojects5حذف 1، الحصول على 2، نشر 1، وضع 12/api/projects
الرسوماتdrawings5حذف 1، الحصول على 2، نشر 1، وضع 12/api/drawings/{id}
عناصرcomponents5حذف 1، الحصول على 2، نشر 1، وضع 12/api/components/{id}
بالضبط CADcadExact3مشاركة 33/api/cad/exact/analyze
مسارات الأدواتtoolpaths7حذف 1، الحصول على 3، نشر 2، وضع 13/api/drawings/{id}/toolpaths
مسارات أدوات المشروعprojectToolpaths2احصل على 1، أرسل 11/api/projects/{id}/toolpaths
بالقطعtoolpathGenerator5مشاركة 55/api/toolpaths/generate
تاريخ مسار الأدواتtoolpathExtras8حذف 1، الحصول على 3، نشر 3، وضع 15/api/toolpaths/library
موادmaterials5حذف 1، الحصول على 2، نشر 1، وضع 12/api/materials
تخزين الموادmaterialsStorage5حذف 1، الحصول على 2، نشر 22/api/materials/export-import
أدواتtools5حذف 1، الحصول على 2، نشر 1، وضع 12/api/tools
تخزين الأدواتtoolsStorage7حذف 1، الحصول على 3، نشر 33/api/tools/export-import
آلاتmachineConfigs6حذف 1، الحصول على 2، نشر 2، وضع 13/api/machine-configs
تخزين الآلةmachineConfigsStorage5حذف 1، الحصول على 2، نشر 22/api/machine-configs/export-import
مكتبةlibrary8حذف 1، الحصول على 5، نشر 1، وضع 15/api/library
تكاليف الإنتاجproduction-costs21حذف 4، الحصول على 8، نشر 5، وضع 49/api/production-costs/estimates
جلسات وإجراءات الذكاء الاصطناعيai34حذف 3، الحصول على 8، نشر 21، وضع 232/api/ai/actions
التاريخ وسير العملvcs22احصل على 10، نشر 11، ضع 119/api/projects/{id}/actions/dispatch
أحداث المشروعevents1احصل على 11/api/projects/{id}/events
الاقتران رفيقcompanion5حذف 1، الحصول على 1، نشر 35/api/companion
الإضافاتplugins16حذف 1، الحصول على 8، التصحيح 1، نشر 4، وضع 212/api/plugins
تكوين MCPmcp8حذف 2، الحصول على 2، نشر 2، وضع 23/api/mcp/config
ملفاتfiles2احصل على 1، أرسل 12/api/download
تخزين القيمة الرئيسيةkv4احذف 1، احصل على 2، ضع 12/api/kv
المنظماتorganizations5حذف 1، الحصول على 2، نشر 1، وضع 12/api/organizations
إشعاراتnotifications4حذف 1، الحصول على 1، نشر 1، وضع 13/api/notifications
المصادقةauth12احصل على 1، أرسل 1112/api/auth/forgot-password
المستخدمينuser16حذف 2، الحصول على 10، نشر 2، وضع 212/api/user/api-keys
الفواتيرbilling15حذف 1، الحصول على 5، نشر 8، وضع 110/api/better-auth-stripe/billing-portal
التحليلاتanalytics10حذف 1، الحصول على 7، نشر 29/api/analytics
خدمات التطبيقاتmisc10حذف 2، الحصول على 3، نشر 4، وضع 16/api/app-control/notify
قائمة الانتظارwaitlist1مشاركة 11/api/waitlist

رموز الحالة عبر العقد

إن حساب كل استجابة معلنة مرة واحدة لكل عملية يعطي هذه الصورة لما يجب أن يكون العميل جاهزًا لفك تشفيره:

حالةأعلن علىجسم نموذجي
200242 عملياتالمورد أو الصفيف أو القيمة الفارغة أو Envelope
20128 عملياتالسجل الذي تم إنشاؤه (على سبيل المثال POST /api/projects)
204عملية 1.لا يوجد جسد
400206 عملياتBadRequest, EnvBadRequest والمتغيرات الخاصة بالعائلة
401269 عملياتUnauthorized (الوسيطة الحاملة)
403101 عملياتForbidden / EnvForbidden
404149 عملياتNotFound / EnvNotFound
40530 عملياتEnvMethodNotAllowed / KeyedMethodNotAllowed
40929 عملياتConflict / EnvConflict
500264 عملياتInternalError, EnvInternal, KeyedInternal والمتغيرات العائلية
501, 5031 عملية لكل منهمانقطة النهاية محددة

كل خطأ هو خطأ ذو علامة تأثير، لذلك يحتوي نص 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.

كيف تتم معالجة الطلب

عميلجلب / SDK مباراة الطريقالطريقة + المسار الاختيار لحاملها401 غير مصرح به فك تشفير المخطط400 عند الإدخال السيئ معالجالوصول + المنطق ترميزالنجاح / _tag يختار x-session-token الحساب التمثيلي؛ غائبة أو غير صالحة يعود إلى التشكيل الجانبي المحلي
  1. يطابق جهاز التوجيه الطريقة والمسار. الطرق غير المعروفة لا تصل أبدًا إلى المعالج.
  2. تقوم البرمجيات الوسيطة لحاملها بمقارنة الرمز المميز في وقت ثابت. يؤدي الرمز المفقود أو الخاطئ إلى إيقاف الطلب باستخدام 401 قبل أي فك تشفير.
  3. يتم فك تشفير المسار والاستعلام والرؤوس والنص وفقًا لمخططات العملية. تصبح المشاكل الهيكلية 400 بدون تشغيل كود العمل.
  4. يقوم المعالج بحل الحساب النشط، والتحقق من الملكية أو عضوية المؤسسة (403/404) وتشغيل الخدمة.
  5. يتم ترميز النتيجة بمخطط النجاح المعلن، أو الفشل بمخطط الخطأ الموسوم وحالته.

الاستجابات التي ليست JSON

عمليةنوع الوسائطكيف تستهلك
POST /api/ai/chat/streamtext/event-streamاقرأ بشكل تدريجي؛ كل data: الخط هو حدث مساعد واحد مكتوب.
GET /api/projects/{id}/eventstext/event-streamأحداث المشروع الحية. أعد الاتصال وأعد قراءة الحالة بعد السقوط.
GET /api/plugins/bootstrap.jsapplication/javascriptتم تحميله بواسطة مضيف البرنامج المساعد، ولم يتم تحليله كـ JSON.
GET /api/plugins/serveapplication/octet-streamبايت ملف البرنامج المساعد.
GET /api/downloadapplication/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 بدلا من التخمين.

في 3د

مجموعات API حسب الحجم اسحب إلى المدار · قم بالتمرير للتكبير · اسحب بزر الماوس الأيمن للتحريك
Every API group as a column, height = operations counted from the generated OpenAPI document (270 in total). Rows are the six sidebar categories; ai (34), history (22) and costs (21) are the largest groups.