सामग्री पर जाएँ
CADCAMFUN
दस्तावेज़

दस्तावेज़

कैप्चर की गई प्रतिक्रियाओं के साथ एपीआई वॉकथ्रू

एक पृथक डेटाबेस से वास्तविक हैंडलर प्रतिक्रियाओं के साथ व्यायाम स्वास्थ्य, प्राधिकरण, परियोजना निर्माण और प्राथमिकता दृढ़ता।

अंग्रेज़ी से स्वचालित रूप से अनुवादित। अंग्रेज़ी मूल देखें

पर्यावरण और कैप्चर की गई प्रतिक्रियाएँ

इस पृष्ठ पर प्रतिक्रियाएँ 15 अक्टूबर 2026 को वास्तविक साइडकार मार्गों से ली गई थीं। apps/sidecar/test/helpers.ts. वह हार्नेस एक माइग्रेटेड इन-मेमोरी SQLite डेटाबेस, एक डिस्पोजेबल फ़ाइल निर्देशिका, प्रत्यक्ष AI होस्ट और कोई प्रदाता कॉल के साथ एप्लिकेशन हैंडलर बनाता है। अनुरोध प्रक्रिया के दौरान HTTP राउटर से गुजरते हैं; यह रन टॉरी लॉन्चर, नेटवर्क सॉकेट, टीएलएस या युग्मित फोन का उपयोग नहीं करता है।

नीचे दिए गए प्रतिक्रिया निकाय असंपादित हैं। इसलिए पहचानकर्ता और टाइमस्टैम्प उस डिस्पोजेबल रन से संबंधित हैं। आपका उदाहरण अपने स्वयं के मान लौटाता है। कैप्चर किए गए पहचानकर्ता का पुन: उपयोग करने के बजाय आपके निर्माण अनुरोध द्वारा लौटाए गए प्रोजेक्ट पहचानकर्ता का उपयोग करें।

रिपॉजिटरी रूट से एक डिस्पोजेबल वास्तविक HTTP इंस्टेंस प्रारंभ करें
CADCAMFUN_TOKEN=local-development-token \
CADCAMFUN_DATA_DIR=/tmp/cadcamfun-api-walkthrough \
CADCAMFUN_MIGRATIONS_DIR="$PWD/packages/db/drizzle" \
CADCAMFUN_AI_HOST=direct \
CADCAMFUN_AI_OFFLINE=1 \
bun --no-env-file apps/sidecar/src/main.ts

यह उदाहरण टोकन केवल एक पृथक विकास प्रक्रिया के लिए है। अपना स्वयं का मान चुनें, टर्मिनल खुला रखें, और JSON तैयार इवेंट से पोर्ट पढ़ें। दूसरे टर्मिनल में, बदलने के बाद कनेक्शन वेरिएबल को नीचे सेट करें READY_PORT. साइडकार दूसरे लॉन्च पर एक नया पोर्ट चुनता है।

दूसरे टर्मिनल में कनेक्शन चर
export CADCAMFUN_URL="http://127.0.0.1:READY_PORT"
export CADCAMFUN_TOKEN="local-development-token"

ऑन-डिस्क डेवलपमेंट डेटाबेस कैप्चर के इन-मेमोरी डेटाबेस से भिन्न होता है। यदि आप उस डेटा निर्देशिका का पुन: उपयोग करते हैं, तो पहले से बनाए गए प्रोजेक्ट और प्राथमिकताएँ बनी रहती हैं। नए सिरे से चलाने के लिए एक अलग डिस्पोजेबल निर्देशिका का उपयोग करें। पैकेज्ड डेस्कटॉप इसके बजाय अपनी मूल एप्लिकेशन डेटा निर्देशिका का उपयोग करता है।

स्वास्थ्य की जाँच करें

/api/health सार्वजनिक जांच है. यह पुष्टि करता है कि यह मार्ग उत्तर देता है; यह साख, मॉडल प्रदाता या विनिर्माण संसाधनों का परीक्षण नहीं करता है।

दे घुमा के
curl --silent --show-error "$CADCAMFUN_URL/api/health"
HTTP 200 कैप्चर किया गया
{
  "status": "ok",
  "timestamp": "2026-10-15T02:43:50.682Z"
}

देसी /health और /version संचालन के लिए एप्लिकेशन बियरर टोकन की आवश्यकता होती है। में उनके सटीक अनुबंध पढ़ें सिस्टम संदर्भ.

प्राधिकरण को समझें

बिना बियरर टोकन वाले प्रोजेक्ट अनुरोध को प्रोजेक्ट डेटा लौटाने से पहले अस्वीकार कर दिया जाता है।

दे घुमा के
curl --silent --show-error --include "$CADCAMFUN_URL/api/projects"
HTTP 401 कैप्चर किया गया
{
  "_tag": "Unauthorized",
  "message": "Unauthorized"
}

त्रुटि में इसका टैग किया गया त्रुटि नाम और एक पढ़ने योग्य संदेश शामिल है। संदेश को स्थिर त्रुटि कोड के रूप में पार्स न करें। HTTP स्थिति, समापन बिंदु की स्कीमा और इसका घोषित टैग मिलकर विफलता का वर्णन करते हैं।

उपयोग Authorization: Bearer … स्वीकृत आवेदन कॉल के लिए। एक वैकल्पिक x-session-token वाहक प्रवेश के बाद एक खाता सत्र का चयन करता है। एआई ब्रिज टोकन केवल दो एक्शन ब्रिज मार्गों को कॉल कर सकते हैं; वे इस वॉकथ्रू में एप्लिकेशन टोकन का स्थानापन्न नहीं कर सकते। सहयोगी टोकन युग्मित गेटवे द्वारा अपनी रूट नीति के साथ स्वीकार किए जाते हैं।

पढ़ें और एक प्रोजेक्ट बनाएं

दे घुमा के
curl --silent --show-error "$CADCAMFUN_URL/api/projects" \
  --header "Authorization: Bearer $CADCAMFUN_TOKEN"
एक खाली कार्यशील प्रतिलिपि पर HTTP 200 कैप्चर किया गया
[]

प्रतिक्रिया एक सादा सरणी है, बिना a के data या success रैपर. संरचनात्मक रूप से वैध लेकिन अपूर्ण निर्माण अनुरोध को व्यवसाय सत्यापन द्वारा अस्वीकार कर दिया जाता है:

दे घुमा के
curl --silent --show-error --request POST "$CADCAMFUN_URL/api/projects" \
  --header "Authorization: Bearer $CADCAMFUN_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{}'
HTTP 400 कैप्चर किया गया
{
  "_tag": "BadRequest",
  "message": "Project name is required"
}

परिवहन स्कीम बनाता है name वैकल्पिक, लेकिन हैंडलर को एक गैर-रिक्त मान की आवश्यकता होती है। प्रोजेक्ट बनाने के लिए:

दे घुमा के
curl --silent --show-error --request POST "$CADCAMFUN_URL/api/projects" \
  --header "Authorization: Bearer $CADCAMFUN_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"name":"API walkthrough","description":"Disposable documentation example"}'
HTTP 201 कैप्चर किया गया
{
  "id": "ccaff34c-49f3-4a23-a6b6-427745f9641a",
  "name": "API walkthrough",
  "description": "Disposable documentation example",
  "createdAt": "2026-10-15T02:43:50.741Z",
  "updatedAt": "2026-10-15T02:43:50.741Z",
  "ownerId": "894c5064-576e-4e43-b7f0-79c6120e8345",
  "organizationId": null,
  "isPublic": false
}

निर्माण परिणाम नई परियोजना पंक्ति है। लोप isPublic इस दौड़ में झूठा हो जाता है; किसी संगठन का चयन नहीं किया गया है. स्वामी कार्यकारी स्थानीय प्रोफ़ाइल है. किसी संगठन को नियुक्त करने के लिए सदस्यता की आवश्यकता होती है; किसी मौजूदा प्रोजेक्ट को अपडेट करने से उसके मालिक या संगठन की भूमिका की भी जाँच होती है।

संबंधित डेटा वापस पढ़ें

आपके निर्माण अनुरोध द्वारा लौटाए गए पहचानकर्ता को कॉपी करें PROJECT_ID, फिर विस्तृत मार्ग पढ़ें:

दे घुमा के
export PROJECT_ID="your-returned-project-id"
curl --silent --show-error "$CADCAMFUN_URL/api/projects/$PROJECT_ID" \
  --header "Authorization: Bearer $CADCAMFUN_TOKEN"
HTTP 200 कैप्चर किया गया
{
  "id": "ccaff34c-49f3-4a23-a6b6-427745f9641a",
  "name": "API walkthrough",
  "description": "Disposable documentation example",
  "createdAt": "2026-10-15T02:43:50.741Z",
  "updatedAt": "2026-10-15T02:43:50.741Z",
  "ownerId": "894c5064-576e-4e43-b7f0-79c6120e8345",
  "organizationId": null,
  "isPublic": false,
  "owner": {
    "id": "894c5064-576e-4e43-b7f0-79c6120e8345",
    "name": "Local user",
    "email": "local@cadcamfun.local"
  },
  "organization": null,
  "_count": {
    "drawings": 0,
    "components": 0
  }
}

विवरण में स्वामी, अशक्त संगठन और ड्राइंग/घटक गणना शामिल हैं। निर्माण और पुनर्प्राप्ति में संबंधित लेकिन अलग-अलग प्रतिक्रिया स्कीमा हैं। एक गुम या अप्राप्य प्रोजेक्ट 404 के साथ वापस आता है Project not found or access denied; कॉल करने वालों को उस परिणाम से किसी निजी परियोजना के अस्तित्व का अनुमान नहीं लगाना चाहिए।

प्रोजेक्ट एपीआई दस्तावेज़ अद्यतन और विलोपन भी। अद्यतन करने के लिए एक गैर-रिक्त नाम की आवश्यकता होती है; हटाने के लिए स्वामी या संगठन प्रशासक की आवश्यकता होती है। पेलोड अनुबंध का पालन किए बिना अपडेट को मनमाने JSON पैच के रूप में लागू न करें।

मशीन कॉन्फ़िगरेशन जैसी पृष्ठांकित सूचियाँ स्वीकार करती हैं page (डिफ़ॉल्ट 1) और limit (डिफ़ॉल्ट 20, अधिकतम 100) और रिटर्न ए pagination के साथ आपत्ति total और totalPages. बढ़ाने के बजाय अगले पृष्ठ का अनुरोध करें limit टोपी से परे; बड़े मानों को 100 पर क्लैंप किया गया है।

प्राथमिकता कायम रखें

कुंजी-मूल्य एपीआई दूसरी प्रतिक्रिया आकृति और लापता-संसाधन व्यवहार को प्रदर्शित करता है। एक कुंजी जिसे सहेजा नहीं गया है वह 404 लौटाती है:

दे घुमा के
curl --silent --show-error "$CADCAMFUN_URL/api/kv/docs.walkthrough.units" \
  --header "Authorization: Bearer $CADCAMFUN_TOKEN"
HTTP 404 कैप्चर किया गया
{
  "_tag": "NotFound",
  "message": "Key not found"
}

PUT के साथ JSON-संगत मान सहेजें। यह एक प्राथमिकता उदाहरण है; यह विश्व स्तर पर ज्यामिति कर्नेल की इकाइयों को नहीं बदलता है।

दे घुमा के
curl --silent --show-error --request PUT "$CADCAMFUN_URL/api/kv/docs.walkthrough.units" \
  --header "Authorization: Bearer $CADCAMFUN_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"value":"mm"}'
HTTP 200 कैप्चर किया गया
{
  "key": "docs.walkthrough.units",
  "value": "mm",
  "updatedAt": "2026-10-15T02:43:50.755Z"
}

उसी कुंजी को पढ़ने से अद्यतन टाइमस्टैम्प सहित संग्रहीत प्रविष्टि वापस आ जाती है। प्रतिक्रिया किसी प्रोजेक्ट रिकॉर्ड या सफलता लिफाफे में मूल्य को लपेटती नहीं है।

बाद में कैप्चर किया गया GET, HTTP 200
{
  "key": "docs.walkthrough.units",
  "value": "mm",
  "updatedAt": "2026-10-15T02:43:50.755Z"
}

उपयोग GET /api/kv?prefix=docs.walkthrough. मेल खाने वाली प्रविष्टियों को सूचीबद्ध करने के लिए, या इसे हटाने के लिए एन्कोडेड कुंजी को हटा दें। स्टोर अपने JSON-संगत डोमेन के बाहर रिक्त कुंजियों, अधिक लंबी कुंजियों और मानों को अस्वीकार करता है। यह कोई क्रेडेंशियल वॉल्ट नहीं है.

विफलताओं को संभालें और पुनः प्रयास करें

परिणामअगला कदम
संरक्षित कॉल पर 401वर्तमान लॉन्च टोकन और उसके प्रकार को सत्यापित करें; पुनरारंभ के बाद नव घोषित यूआरएल का उपयोग करें।
400 प्रोजेक्ट निर्माण परव्यावसायिक त्रुटि पढ़ें और अनुरोध ठीक करें; उसी लुप्त नाम को दोबारा भेजना विफल हो जाएगा।
किसी प्रोजेक्ट या प्राथमिकता पर 404पहचानकर्ता/कुंजी और अभिनय खाते की जाँच करें; संसाधन की अनुपलब्ध/पहुँच नीति लागू करें।
लिखने के दौरान कनेक्शन टूटनालिखने को दोहराने से पहले परिणामी संसाधन या स्थिति को दोबारा पढ़ें। ये निर्माण समापनबिंदु एक निष्क्रियता-कुंजी अनुबंध की घोषणा नहीं करते हैं।
5xxसाइडकार लॉग और विफल सेवा का निरीक्षण करें। यह मत मानिए कि प्रतिक्रिया त्रुटि यह साबित करती है कि पहले का कोई सतत ऑपरेशन प्रभावी नहीं हुआ।

उत्पादन ग्राहकों में, जाँच करें response.ok और उचित सफलता या त्रुटि निकाय को डिकोड करें। एक समान लिफाफे पर भरोसा करने से बचें: अकेले इस वॉकथ्रू में एक सरणी, सादे रिकॉर्ड और टैग की गई विफलताएं शामिल हैं।

अगले एकीकरण चरण

उपयोग पूर्ण संदर्भ एक संसाधन का चयन करने के लिए. मशीनिंग समापनबिंदु टूलपाथ को सहेजने से गणना को अलग कर सकेंगे; इतिहास समापन बिंदु वर्किंग-कॉपी परिवर्तनों को कमिट और रिमोट सिंक्रोनाइज़ेशन से अलग करें। एआई संसाधन सत्र पहचानकर्ता और स्ट्रीमिंग नियंत्रण शामिल हैं।

चल रही साइडकार पढ़ें /api/openapi.json एक अलग बिल्ड को एकीकृत करते समय। डाउनलोड करने योग्य दस्तावेज़ स्नैपशॉट चेक-आउट अनुबंध का वर्णन करता है; यह स्थापित नहीं कर सकता कि कौन सी बाइनरी दूसरी मशीन चल रही है।

सभी प्रतिक्रियाएँ एक नज़र में कैप्चर की गईं

इस पृष्ठ पर प्रतिक्रियाएँ एक ताज़ा डेटाबेस के साथ एक वास्तविक साइडकार से ली गई थीं। आपकी मशीन पर पहचानकर्ता और टाइमस्टैम्प अलग-अलग होंगे; आकार और स्थितियाँ नहीं होंगी।

कदमपथस्थितिशरीर (छोटा)
सार्वजनिक स्वास्थ्य/api/health200{"status": "ok", "timestamp": "2026-10-15T02:43:50.682Z"}
लापता वाहक/api/projects401{"_tag": "Unauthorized", "message": "Unauthorized"}
खाली परियोजनाएँ/api/projects200[]
प्रोजेक्ट का नाम गुम है/api/projects400{"_tag": "BadRequest", "message": "Project name is required"}
प्रोजेक्ट बनाएं/api/projects201{"id": "ccaff34c-49f3-4a23-a6b6-427745f9641a", "name": "API walkthrough", "description": "Disposable documenta…
प्रोजेक्ट पढ़ें/api/projects/ccaff34c-49f3-4a23-a6b6-427745f9641a200{"id": "ccaff34c-49f3-4a23-a6b6-427745f9641a", "name": "API walkthrough", "description": "Disposable documenta…
गुम प्राथमिकता/api/kv/docs.walkthrough.units404{"_tag": "NotFound", "message": "Key not found"}
प्राथमिकता सहेजें/api/kv/docs.walkthrough.units200{"key": "docs.walkthrough.units", "value": "mm", "updatedAt": "2026-10-15T02:43:50.755Z"}
प्राथमिकता पढ़ें/api/kv/docs.walkthrough.units200{"key": "docs.walkthrough.units", "value": "mm", "updatedAt": "2026-10-15T02:43:50.755Z"}

पूरा दौरा एक स्क्रिप्ट के रूप में

tour.sh
#!/usr/bin/env bash
set -euo pipefail
: "${CADCAMFUN_URL:?set to the sidecar URL}" "${CADCAMFUN_TOKEN:?set to the launch token}"
auth=(--header "Authorization: Bearer $CADCAMFUN_TOKEN")
json=(--header "Content-Type: application/json")

curl -sS "$CADCAMFUN_URL/api/health"; echo
curl -sS -o /dev/null -w "no token -> %{http_code}\n" "$CADCAMFUN_URL/api/projects"
curl -sS "${auth[@]}" "$CADCAMFUN_URL/api/projects"; echo
curl -sS "${auth[@]}" "${json[@]}" -d '{}' "$CADCAMFUN_URL/api/projects"; echo   # 400

id=$(curl -sS "${auth[@]}" "${json[@]}" \
  -d '{"name":"API walkthrough","description":"Disposable documentation example"}' \
  "$CADCAMFUN_URL/api/projects" | sed -E 's/.*"id":"([^"]+)".*/\1/')
curl -sS "${auth[@]}" "$CADCAMFUN_URL/api/projects/$id"; echo

key=docs.walkthrough.units
curl -sS -w " %{http_code}\n" "${auth[@]}" "$CADCAMFUN_URL/api/kv/$key"   # 404 first time
curl -sS -X PUT "${auth[@]}" "${json[@]}" -d '{"value":{"units":"mm"}}' "$CADCAMFUN_URL/api/kv/$key"; echo
curl -sS "${auth[@]}" "$CADCAMFUN_URL/api/kv/$key"; echo

स्क्रिप्ट का उपयोग करता है sed आईडी निकालने के लिए ताकि उस पर कोई निर्भरता न रहे; साथ jq स्थापित, पसंद करें jq -r .id. इसे डिस्पोजेबल डेटा निर्देशिका के विरुद्ध चलाएँ: यह एक वास्तविक प्रोजेक्ट बनाता है।

दौरे के बाद सफाई करें

दौरे ने जो बनाया उसे हटा दें
curl -sS -X DELETE --header "Authorization: Bearer $CADCAMFUN_TOKEN" "$CADCAMFUN_URL/api/projects/$id"
curl -sS -X DELETE --header "Authorization: Bearer $CADCAMFUN_TOKEN" "$CADCAMFUN_URL/api/kv/docs.walkthrough.units"

प्रोजेक्ट को हटाना उसके चित्र, घटकों, टूलपाथ, इतिहास और वर्कफ़्लो रन में कैस्केड करता है। कुंजी-मान प्रविष्टि स्वतंत्र है और इसे अलग से हटाया जाना चाहिए।

3डी में

टूर जिस एपीआई सतह से होकर गुजरता है कक्षा में खींचें · ज़ूम करने के लिए स्क्रॉल करें · पैन करने के लिए दाईं ओर खींचें
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.