अध्याय: API: बुनियादी बातें

डेवलपर

API: बुनियादी बातें

VentionDesk API वही है जिसका इस्तेमाल इंटरफ़ेस करता है। ऑटोमेशन के लिए — Claude, आपकी अपनी स्क्रिप्ट, CI — आप एक API कुंजी से साइन इन करते हैं। सभी URL https://api.ventiondesk.com से शुरू होते हैं; सभी बॉडी और जवाब UTF-8 में JSON होते हैं।

API कुंजी से साइन इन करना (Signing in with an API key)

मालिक सेटिंग्स › API कुंजियाँ › “नई कुंजी” में कुंजी बनाता है। यह ठीक एक बार सादे टेक्स्ट में दिखती है।

हर अनुरोध इसे बेयरर टोकन के रूप में भेजता है:

curl https://api.ventiondesk.com/v1/tasks?status=todo \
  -H "Authorization: Bearer vd_live_…"

इसे बदलने के लिए कोई अलग एंडपॉइंट नहीं है: VentionDesk कुंजी को उसके प्रीफ़िक्स से पहचानता है, हर अनुरोध पर उसे जाँचता है (वापस ली गई? समाप्त?) और फिर कुंजी के खाते के सेशन के साथ काम करता है। इसलिए कुंजी पर वही डेटाबेस नियम लागू होते हैं जो किसी व्यक्ति पर — वह केवल वही देखती है जो उसका स्कोप अनुमति देता है।

प्रीफ़िक्सप्रकारकिसके लिए
vd_live_एजेंटटास्क लेना और रिपोर्ट करना, प्रोजेक्ट पढ़ना, नोट लिखना, MCP
vd_intake_इनटेककेवल टिकट भेजना (POST /v1/intake/tickets), देखें टिकट इनटेक
vd_pub_सार्वजनिक प्रोजेक्ट कुंजीसाइन इन कुंजी नहीं: यह फ़ॉर्म और वेब ऐप में होती है और केवल एक प्रोजेक्ट को रिपोर्ट भेज सकती है

कुंजी की जगह OAuth से जुड़े किसी AI ऐप का साइन इन भी बेयरर टोकन के रूप में आ सकता है। यह एक एजेंट कुंजी की तरह गिना जाता है, उन अनुमतियों और प्रोजेक्ट के साथ जो व्यक्ति ने सहमति के समय चुने थे — कभी उस व्यक्ति की अपनी अनुमतियों के साथ नहीं — और डिस्कनेक्ट करते ही तुरंत ख़त्म हो जाता है।

एजेंट कुंजी एजेंट भूमिका वाला एक अलग खाता है। यह उन एंडपॉइंट के लिए है जिन पर API रेफ़रेंस में स्कोप दिखता है, साथ ही GET /v1/me और एजेंट रन के लिए। जिन एंडपॉइंट के लिए “मालिक” या “मालिक और स्टाफ़ सदस्य” चाहिए, उन्हें वेब इंटरफ़ेस साइन इन किए हुए व्यक्ति के सेशन से चलाता है; API कुंजी को वे 403 से जवाब देते हैं।

स्कोप (Scopes)

एजेंट कुंजी क्या कर सकती है, यह उसके स्कोप तय करते हैं:

स्कोपअर्थकिसके लिए उपलब्ध
projects:readप्रोजेक्ट पढ़ेंएजेंट कुंजियाँ
tasks:readटास्क पढ़ेंएजेंट कुंजियाँ
tasks:writeटास्क बनाएँ और रिपोर्ट करेंएजेंट कुंजियाँ
tickets:readटिकट पढ़ेंएजेंट कुंजियाँ, केवल तब जब वर्कस्पेस इसे स्पष्ट रूप से चालू करे
tickets:writeटिकट बनाएँ, आंतरिक नोट और ड्राफ़्ट लिखेंएजेंट कुंजियाँ, केवल तब जब वर्कस्पेस इसे स्पष्ट रूप से चालू करे
tickets:replyटिकट पर ग्राहकों को ईमेल से जवाब देंएजेंट कुंजियाँ, केवल तब जब वर्कस्पेस इसे स्पष्ट रूप से चालू करे
notes:writeनोट लिखेंएजेंट कुंजियाँ
deployments:readकमिट, पुल रिक्वेस्ट और डिप्लॉयमेंट पढ़ेंएजेंट कुंजियाँ
agent:runरन शुरू और ख़त्म करेंएजेंट कुंजियाँ
intake:writeइनटेक से टिकट भेजेंकेवल इनटेक कुंजियाँ
invoices:writeइनवॉइस ड्राफ़्ट बनाएँ और लाइन आइटम बदलेंएजेंट कुंजियाँ, केवल तब जब वर्कस्पेस इसे स्पष्ट रूप से चालू करे
errors:readप्रोजेक्ट्स की त्रुटियाँ पढ़ेंएजेंट कुंजियाँ, केवल तब जब वर्कस्पेस इसे स्पष्ट रूप से चालू करे
errors:writeत्रुटियों को हल के रूप में चिह्नित करेंएजेंट कुंजियाँ, केवल तब जब वर्कस्पेस इसे स्पष्ट रूप से चालू करे
time:readप्रोजेक्ट्स की टाइम एंट्री पढ़ें (दरों और राशियों के बिना)एजेंट कुंजियाँ, केवल तब जब वर्कस्पेस इसे स्पष्ट रूप से चालू करे
stats:readरिपोर्ट के लिए प्रोजेक्ट्स के मुख्य आँकड़े पढ़ें (पैसे के बिना)एजेंट कुंजियाँ, केवल तब जब वर्कस्पेस इसे स्पष्ट रूप से चालू करे
quotes:writeकोटेशन ड्राफ़्ट बनाएँ और बदलेंएजेंट कुंजियाँ, केवल तब जब वर्कस्पेस इसे स्पष्ट रूप से चालू करे
roadmap:writeरोडमैप चरण बनाएँ, बदलें और क्रम में लगाएँएजेंट कुंजियाँ, केवल तब जब वर्कस्पेस इसे स्पष्ट रूप से चालू करे
ideas:writeआइडिया बनाएँएजेंट कुंजियाँ, केवल तब जब वर्कस्पेस इसे स्पष्ट रूप से चालू करे

कोई स्कोप ठीक उन्हीं एंडपॉइंट पर दिखता है जो उसे मानते हैं — API रेफ़रेंस हर एंडपॉइंट के साथ उसका नाम बताता है। deployments:read किसी एंडपॉइंट पर नहीं दिखता: यह मिरर किए गए कमिट, पुल रिक्वेस्ट और डिप्लॉयमेंट के डेटाबेस नियमों के ज़रिए लागू होता है।

प्रोजेक्ट बाइंडिंग (Project binding)

एक कुंजी सभी प्रोजेक्ट या एक चयन पर लागू होती है। बंधी हुई कुंजी केवल अपने प्रोजेक्ट का डेटा देखती है — और जान-बूझकर बिना प्रोजेक्ट वाला कुछ भी नहीं, जैसे वे टिकट जो अभी किसी प्रोजेक्ट को नहीं सौंपे गए। अपने प्रोजेक्ट से बाहर की पंक्ति पर API 404 या 403 से जवाब देता है। इनटेक कुंजी हमेशा ठीक एक प्रोजेक्ट से बंधी होती है।

दायरा बदलने के लिए नई कुंजी ज़रूरी नहीं। स्कोप और प्रोजेक्ट मालिक कुंजी सूची में “अनुमतियाँ” के तहत बदलता है; अगला अनुरोध पहले से नए दायरे के साथ काम करता है। वापस ली गई या समाप्त कुंजी अगले अनुरोध पर अस्वीकार कर दी जाती है।

त्रुटियाँ (Errors)

हर त्रुटि जवाब का आकार एक जैसा होता है:

{ "ok": false, "error": "Diese Aufgabe gibt es nicht.", "code": "not_found" }

error लोगों के लिए एक जर्मन वाक्य है, code प्रोग्राम के लिए एक स्थिर अंग्रेज़ी मान। आम जवाब:

स्थितिcodeमतलब
400validation_errorक्वेरी या पाथ पैरामीटर अमान्य
401unauthorizedकोई कुंजी नहीं या अमान्य कुंजी
403forbiddenभूमिका, स्कोप या प्रोजेक्ट पर्याप्त नहीं
404not_foundमौजूद नहीं — या इस कुंजी के लिए नहीं
409conflictस्थिति मेल नहीं खाती, जैसे टास्क पहले ही लिया जा चुका है
413payload_too_largeबॉडी 1 MB से ज़्यादा
422validation_errorबॉडी अमान्य; error आपत्ति वाले पहले फ़ील्ड को field: message के रूप में बताता है
423betrieb_gesperrtवर्कस्पेस निलंबित है, जैसे क्योंकि कोई पेड सब्सक्रिप्शन नहीं चल रहा
429rate_limitedबहुत ज़्यादा अनुरोध, थोड़ा इंतज़ार करें
500internal_errorVentionDesk में त्रुटि

हर जवाब x-request-id हेडर में एक ID देता है। अगर आप ख़ुद एक भेजते हैं (128 अक्षरों तक), तो उसी का इस्तेमाल होता है। कुछ गड़बड़ होने पर इसे सपोर्ट को दें।

रेट लिमिट (Rate limits)

प्रति मिनट गिना जाता है, प्रति कुंजी या प्रति IP पता:

क्षेत्रप्रति मिनट अनुरोध
सभी /v1 एंडपॉइंट मिलाकर300
POST /mcp60
टिकट इनटेक (फ़ॉर्म, ब्राउज़र, सर्वर)प्रति IP 10
भुगतान लिंक /pay/…प्रति IP 20

सीमा से ऊपर API 429 और rate_limited से जवाब देता है; RateLimit और RateLimit-Policy हेडर मौजूदा गिनती और सीमा बताते हैं।

सूचियाँ और फ़िल्टर (Lists and filters)

सूची वाले एंडपॉइंट क्वेरी पैरामीटर से फ़िल्टर करते हैं और limit से सीमित करते हैं; कर्सर या ऑफ़सेट वाले पेज नहीं हैं। उदाहरण:

  • GET /v1/tasks?projectSlug=shop&status=todo&claimable=true&limit=20 — वे टास्क जो अभी लिए जा सकते हैं।
  • GET /v1/projects?status=active — सक्रिय प्रोजेक्ट।

कौन-सा एंडपॉइंट कौन-से पैरामीटर जानता है और कौन-से फ़ील्ड लौटाता है, यह API रेफ़रेंस में दिया गया है — उसी कॉन्ट्रैक्ट से पढ़ा गया, जिससे VentionDesk अनुरोध जाँचता है।

एजेंट का सामान्य राउंड (The typical round of an agent)

  1. GET /v1/tasks?claimable=true — क्या करना है?
  2. POST /v1/tasks/:id/claim — टास्क को एटॉमिक रूप से लें। दो रन को कभी एक ही टास्क नहीं मिलता।
  3. काम करें; बीच में POST /v1/tasks/:id/result के साथ "state": "arbeitet", जीवित होने के संकेत के रूप में।
  4. POST /v1/tasks/:id/result के साथ kontrolle, frage, master, blockiert या erledigt — kontrolle और erledigt के साथ evidence में सबूत भी दें।

अगर आप इसे ख़ुद नहीं बनाना चाहते, तो Claude और MCP इस्तेमाल करें।

API: बुनियादी बातें | VentionDesk Docs