API
अपने टूल से स्टडीज़, नतीजे, मशीनें और कैटलॉग पढ़ें, या रन डेटा भेजें, प्रति इंटीग्रेशन एक कुंजी के साथ।
API उस पल के लिए है जब कोई कोटिंग टूल किसी के रिपोर्ट से आँकड़े नकल किए बिना स्टडी का थ्रूपुट और पेबैक चाहता है, या बेड़ा प्रबंधक स्प्रेडशीट के बिना दैनिक रन डेटा भेजना चाहता है। यह Team और Enterprise पर, auddomate.com और स्व-होस्टेड इंस्टॉलेशन दोनों पर उपलब्ध है। यह जो भी लौटाता है वही है जो आप ऐप में देखते हैं: वही बेड़ा, वही धारणाएँ, वही गणित।
कुंजियाँ
स्वामी सेटिंग्स → API कुंजियाँ में कुंजियाँ बनाते हैं। हर एक को उस तंत्र का नाम दें जो उसे उपयोग करेगा, टिक करें वह क्या कर सकती है, और दिखते ही कुंजी कॉपी करें — यह एक बार दिखती है और हैश करके रखी जाती है। कुंजी के एक या अधिक स्कोप होते हैं:
- read
- स्टडीज़, नतीजे, मशीनें और कैटलॉग। हर कुंजी के पास यह है।
- telemetry
- स्टडी में टेलीमेट्री पंक्तियाँ लिखना।
- audit
- ऑडिट लॉग पढ़ना।
उसी पेज से कुंजी निरस्त करें; जो कुछ उसे अब भी उपयोग करता है उसे उस क्षण से 401 मिलता है। कुंजियाँ बनाना और निरस्त करना खुद ऑडिट लॉग में लिखा जाता है। प्रति संगठन बीस तक सक्रिय कुंजियाँ।
कॉल करना
हर अनुरोध कुंजी को बेयरर टोकन के रूप में ले जाता है। बेस पता आपका Auddomate पता है जिसके बाद /api/v1।
curl -H "Authorization: Bearer aud_…" https://auddomate.com/api/v1/meअगर आपके और सर्वर के बीच कुछ Authorization हेडर हटा देता है, तो उसे इसके बजाय X-Api-Key: aud_… के रूप में भेजें। जवाब स्थिर आकार के JSON हैं:
{ "ok": true, "data": …, "meta": { "page": 1, "per_page": 50, "total": 132, "pages": 3 } }
{ "ok": false, "error": "not_found", "message": "No study ST-9999 in this organisation." }सूचियाँ ?page= और ?per_page= (200 तक) से पृष्ठबद्ध होती हैं। समय सर्वर का स्थानीय समय YYYY-MM-DD HH:MM:SS में है; लंबाइयाँ मिलीमीटर, दूरियाँ मीटर, दरें प्रति घंटा या प्रति दिन, ठीक ऐप की तरह। हर कुंजी प्रति मिनट 300 अनुरोध कर सकती है; उससे आगे आपको Retry-After हेडर के साथ 429 मिलता है।
एंडपॉइंट
- GET /api/v1/me
- संगठन, कुंजी का नाम और स्कोप, संस्करण और दर सीमा। यह जाँचने के लिए कि कुंजी काम करती है।
- GET /api/v1/studies
- हर स्टडी: संदर्भ, नाम, साइट, क्लाइंट, स्थिति, वर्तमान परिदृश्य का थ्रूपुट फ़ैसला और गुंजाइश, और उसके बेड़े की इकाइयों की संख्या।
?status=,?client=या?updated_since=2026-09-01से फ़िल्टर करें। - GET /api/v1/studies/{ref}
- एक स्टडी पूरी, संदर्भ (
ST-1001) या id से: प्लान (फ़ाइल, स्केल, विस्तार, कितने रैक, गलियारे, डॉक और अवरोध), और हर परिदृश्य अपनी बेड़ा पंक्तियों, धारणाओं, पंक्ति दर पंक्ति थ्रूपुट नतीजे, सबसे माँग वाली मशीन के मुकाबले गलियारा जाँच, और वह मशीन कौन-सी थी। - GET /api/v1/studies/{ref}/telemetry
- स्टडी का रन डेटा, प्रति मशीन प्रति दिन एक पंक्ति।
- GET /api/v1/studies/{ref}/pdf
- रिपोर्ट PDF फ़ाइल के रूप में, सर्वर पर बनी।
?lang=और?units=imperialभाषा और इकाइयाँ चुनते हैं। सहेजे संस्करण के लिए/versions/{n}/pdf। - GET /api/v1/studies/{ref}/versions
- स्टडी के सहेजे संस्करण, नया पहले;
/versions/{n}एक को स्टडी के ही आकार में पूरा लौटाता है, और?diff=1जोड़ता है कि तब से क्या बदला। - POST /api/v1/studies/{ref}/telemetry
- रन डेटा लिखें।
telemetryस्कोप चाहिए।{"rows": [...]}भेजें, 5 000 पंक्तियों तक; हर पंक्ति मशीन कोmachine_idयाmachine(उसका सटीक नाम) से नामित करती है, एकday, औरmoves,run_minutes,idle_minutes,distance_km,faultsमें से कोई भी। पहले से मौजूद मशीन और दिन की पंक्ति बदल दी जाती है। जवाब बताता है कितनी लिखी गईं और पहली पचास छोड़ी गई पंक्तियाँ और क्यों, सूचीबद्ध करता है। - GET /api/v1/machines
- आपकी मशीन लाइब्रेरी, हर प्रोफ़ाइल अपने आँकड़ों के साथ और, कैटलॉग मॉडलों के लिए, वह डेटाशीट जिससे वह आई। एक के लिए
/machines/{id}। - GET /api/v1/catalogue
- असली ब्रांडों और मॉडलों का कैटलॉग उनकी स्रोत डेटाशीटों के साथ।
?vendor=या?class=से फ़िल्टर करें। - GET /api/v1/audit
- ऑडिट लॉग, नया पहले।
auditस्कोप चाहिए।?group=,?from=,?to=,?q=से फ़िल्टर करें।
स्टडी कैसी दिखती है
{
"ref": "ST-1002", "name": "Cold store aisle audit", "status": "review",
"plan": { "file": "cold-store.dxf", "scale": { "mm_per_unit": 1, "source": "dxf" },
"extent_mm": { "width": 61000, "height": 45000 },
"shapes": { "rack": 6, "aisle": 5, "dock": 1, "block": 3 } },
"scenarios": [ {
"name": "Base", "current": true,
"fleet": [ { "machine": "VNA turret, 1.0 t", "class": "vna", "qty": 3, "shifts": 2 } ],
"assumptions": { "moves_required": 2110, "hours_per_shift": 8, "days_per_year": 300,
"distance_m": 14, "distance_source": "plan", "handling_s": 55 },
"throughput": { "verdict": "meets", "moves_per_day": 3024.6, "required_per_day": 2110,
"headroom_per_day": 914.6, "utilisation_pct": 69.8, "lines": [ … ] },
"aisles": { "verdict": "fail", "aisle_min_mm": 2100, "narrowest_mm": 1800, "aisles": 5, "below": 5 },
"checked_against": { "machine": "Pallet truck, pedestrian 1.6 t", "aisle_min_mm": 2100 }
} ]
}throughput.verdict इनमें से एक है: meets, short, nofleet, nodistance या notarget; aisles.verdict इनमें से एक: pass, fail, noplan, noscale, noaisles या none। distance_source बताता है यात्रा दूरी टाइप की गई थी या प्लान से निकाली गई, जैसा सिमुलेशन पेज करता है।
रन डेटा भेजना
curl -X POST https://auddomate.com/api/v1/studies/ST-1002/telemetry \
-H "Authorization: Bearer aud_…" -H "Content-Type: application/json" \
-d '{"rows": [
{"machine": "VNA turret, 1.0 t", "day": "2026-09-01", "moves": 412, "run_minutes": 480, "idle_minutes": 60, "distance_km": 18.4, "faults": 1},
{"machine_id": 327, "day": "2026-09-02", "moves": 390}
]}'{ "ok": true, "data": { "written": 2, "skipped": 0, "errors": [] } }त्रुटियाँ
- 401 unauthorised
- कोई कुंजी नहीं, या ऐसी जिसे हम नहीं पहचानते।
- 401 revoked
- कुंजी निरस्त कर दी गई; संदेश बताता है कब।
- 403 plan
- संगठन मुफ़्त या Studio पर है।
- 403 scope
- कुंजी में वह स्कोप नहीं जो एंडपॉइंट को चाहिए।
- 404 not_found
- ऐसी कोई स्टडी, मशीन या एंडपॉइंट नहीं।
- 400 json / empty
- बॉडी JSON ऑब्जेक्ट नहीं थी, या उसमें पंक्तियाँ नहीं थीं।
- 413 too_many
- एक टेलीमेट्री अनुरोध में 5 000 से अधिक पंक्तियाँ।
- 429 rate_limited
- एक मिनट में 300 से अधिक अनुरोध।
Retry-Afterसेकंड प्रतीक्षा करें।
संस्करणीकरण
पथ संस्करण ले जाता है। फ़ील्ड समय के साथ v1 में जुड़ते हैं पर कभी नाम नहीं बदले या हटाए जाते; जो कुछ क्लाइंट तोड़ेगा वह v2 बनता है, और v1 कम से कम एक साल साथ चलता रहता है। बदलाव बाकी सबकी तरह चेंजलॉग में सूचीबद्ध हैं।
API उसी संगठन को पढ़ता-लिखता है जिसकी कुंजी है, और कुछ नहीं — किसी भी कुंजी से दूसरे संगठन की स्टडीज़ तक पहुँचने का कोई रास्ता नहीं। कुंजी को पासवर्ड की तरह मानें: प्रति तंत्र एक, तंत्र हटने पर निरस्त।