Odoo REST and XML-RPC API Integration Tutorial: Connect Any System

Step-by-step tutorial for integrating with Odoo APIs using REST, XML-RPC, and JSON-RPC. Covers authentication, CRUD operations, and real-world integration patterns.

E
ECOSIRE Research and Development Team
|16 मार्च 20269 मिनट पढ़ें2.0k शब्द|

ओडू रेस्ट और एक्सएमएल-आरपीसी एपीआई इंटीग्रेशन ट्यूटोरियल: किसी भी सिस्टम को कनेक्ट करें

ओडू बाहरी एपीआई के माध्यम से अपने संपूर्ण डेटा मॉडल को उजागर करता है, जिससे इसे वस्तुतः किसी भी सिस्टम-ईकॉमर्स प्लेटफॉर्म, सीआरएम टूल, बिजनेस इंटेलिजेंस सॉफ्टवेयर, मोबाइल ऐप और कस्टम एप्लिकेशन के साथ एकीकृत करना संभव हो जाता है। यह ट्यूटोरियल कोड उदाहरणों और सर्वोत्तम प्रथाओं के साथ सभी तीन एपीआई प्रोटोकॉल (एक्सएमएल-आरपीसी, जेएसओएन-आरपीसी और आरईएसटी), प्रमाणीकरण विधियों, सीआरयूडी संचालन और वास्तविक दुनिया एकीकरण पैटर्न को कवर करता है।

मुख्य बातें

  • Odoo तीन API प्रोटोकॉल प्रदान करता है: XML-RPC (सबसे परिपक्व), JSON-RPC (ब्राउज़र-अनुकूल), और REST (Odoo 19, OpenAPI-अनुपालक)
  • सभी एपीआई को डेटाबेस नाम, उपयोगकर्ता नाम और पासवर्ड या एपीआई कुंजी का उपयोग करके प्रमाणीकरण की आवश्यकता होती है
  • सीआरयूडी ऑपरेशन सभी प्रोटोकॉल में एक सुसंगत पैटर्न का पालन करते हैं: खोजें, पढ़ें, बनाएं, लिखें, अनलिंक करें
  • डोमेन फ़िल्टर जटिल प्रश्नों के लिए पोलिश नोटेशन सिंटैक्स का उपयोग करते हैं
  • पेजिनेशन, फ़ील्ड चयन और बैच संचालन बड़े डेटासेट के लिए प्रदर्शन को अनुकूलित करते हैं

एपीआई प्रोटोकॉल तुलना

फ़ीचरएक्सएमएल-आरपीसीJSON-आरपीसीबाकी (ओडू 19)
परिपक्वताओडू 8 से स्थिरओडू 10 से स्थिरओडू 19 में नया
प्रमाणीकरणउपयोक्तानाम/पासवर्डसत्र आधारितएपीआई कुंजी या OAuth 2.0
दस्तावेज़ीकरणमैनुअलमैनुअलस्वतः उत्पन्न OpenAPI
प्रतिक्रिया प्रारूपएक्सएमएलजेएसओएनजेएसओएन
बैच संचालनहाँहाँहाँ
वेबहुकनहीं (कस्टम मॉड्यूल की आवश्यकता है)नहींहाँ (कॉन्फ़िगर करने योग्य)
भाषा समर्थनकोई भी (XML-RPC सार्वभौमिक है)जावास्क्रिप्ट-अनुकूलकोई भी (HTTP मानक)

प्रमाणीकरण

एक्सएमएल-आरपीसी प्रमाणीकरण

XML-RPC प्रमाणीकरण दो-चरणीय प्रक्रिया का उपयोग करता है: उपयोगकर्ता आईडी (यूआईडी) प्राप्त करने के लिए प्रमाणित करें, फिर बाद की कॉल के लिए उस यूआईडी का उपयोग करें।

प्रमाणीकरण कॉल डेटाबेस नाम, उपयोगकर्ता नाम, पासवर्ड और एक खाली ऑब्जेक्ट को पास करते हुए authenticate विधि के साथ /xmlrpc/2/common एंडपॉइंट पर हिट करता है। प्रतिक्रिया संख्यात्मक उपयोगकर्ता आईडी है। बाद के सभी डेटा कॉल डेटाबेस, यूआईडी, पासवर्ड, मॉडल नाम, विधि नाम और तर्कों को पास करते हुए execute_kw विधि के साथ /xmlrpc/2/object का उपयोग करते हैं।

JSON-RPC प्रमाणीकरण

JSON-RPC /web/session/authenticate समापन बिंदु के माध्यम से सत्र-आधारित प्रमाणीकरण का उपयोग करता है। अनुरोध निकाय एक JSON ऑब्जेक्ट है जिसमें jsonrpc: "2.0", call की एक विधि और db, login और password वाले पैरामीटर हैं। प्रतिक्रिया में कुकी में एक सत्र आईडी शामिल है जो बाद के अनुरोधों को प्रमाणित करती है।

रेस्ट एपीआई प्रमाणीकरण (ओडू 19)

REST API, Odoo बैकएंड में उत्पन्न API कुंजियों का समर्थन करता है:

  1. सेटिंग्स > उपयोगकर्ता > एपीआई कुंजी पर नेविगेट करें
  2. निर्दिष्ट अनुमतियों के साथ एक नई कुंजी उत्पन्न करें
  3. कुंजी को Authorization: Bearer हेडर में शामिल करें

REST समापन बिंदु संग्रह के लिए /api/{model} और व्यक्तिगत रिकॉर्ड के लिए /api/{model}/{id} पैटर्न का पालन करते हैं।

सीआरयूडी संचालन

खोजें और पढ़ें

सबसे आम ऑपरेशन विशिष्ट मानदंडों के साथ रिकॉर्ड की खोज करना और उनके फ़ील्ड मानों को पढ़ना है।

डोमेन फ़िल्टर ऑपरेटरों के साथ पोलिश नोटेशन (उपसर्ग नोटेशन) का उपयोग करते हैं:

ऑपरेटरविवरणउदाहरण
=बराबर['state', '=', 'sale']
!=बराबर नहीं['state', '!=', 'draft']
>से भी बड़ा['amount_total', '>', 1000]
&lt;से कम['date_order', '<', '2026-01-01']
&gt;=बड़ा या बराबर['qty_available', '>=', 10]
inसूची में['state', 'in', ['sale', 'done']]
likeपैटर्न मिलान['name', 'like', 'ECOSIRE']
ilikeकेस-असंवेदनशील पैटर्न['email', 'ilike', '@gmail.com']

संयोजन स्थितियाँ: उपसर्ग ऑपरेटरों के रूप में & (AND), | (OR), और ! (NOT) का उपयोग करें:

  • और: ['&', ['state', '=', 'sale'], ['amount_total', '>', 1000]] 1000 से अधिक बिक्री ऑर्डर से मेल खाता है
  • या: ['|', ['state', '=', 'sale'], ['state', '=', 'done']] किसी भी राज्य से मेल खाता है
  • जटिल: ['&', ['state', '=', 'sale'], '|', ['partner_id', '=', 5], ['partner_id', '=', 10]]

फ़ील्ड चयन: केवल उन्हीं फ़ील्ड का अनुरोध करें जिनकी आपको पेलोड आकार कम करने और प्रदर्शन में सुधार करने के लिए आवश्यकता है। फ़ील्ड नामों की सूची के साथ fields पैरामीटर पास करें। यदि छोड़ दिया जाता है, तो सभी फ़ील्ड लौटा दी जाती हैं।

पृष्ठांकन: परिणामों को पृष्ठांकित करने के लिए offset और limit पैरामीटर का उपयोग करें। उदाहरण: offset: 20, limit: 20 रिकॉर्ड 21-40 लौटाता है।

रिकॉर्ड बनाएं

फ़ील्ड मानों के शब्दकोश के साथ create विधि को कॉल करके रिकॉर्ड बनाएं। आवश्यक फ़ील्ड शामिल किए जाने चाहिए. प्रतिक्रिया नए बनाए गए रिकॉर्ड की आईडी (या बैच निर्माण के लिए आईडी की एक सरणी) लौटाती है।

उदाहरण: संपर्क बनाने के लिए कम से कम name फ़ील्ड की आवश्यकता होती है। वैकल्पिक फ़ील्ड में email, phone, company_id, street, city, state_id, country_id और कस्टम फ़ील्ड शामिल हैं।

संबंधित रिकॉर्ड (one2many या multiple2many) के लिए, विशेष कमांड टुपल्स का उपयोग करें:

आदेशसिंटैक्सविवरण
बनाएं[0, 0, {values}]एक नया संबंधित रिकॉर्ड बनाएं
अद्यतन[1, id, {values}]किसी मौजूदा संबंधित रिकॉर्ड को अपडेट करें
हटाएं[2, id, 0]संबंधित रिकॉर्ड हटाएं
अनलिंक करें[3, id, 0]लिंक हटाएं (हटाएं नहीं)
लिंक[4, id, 0]मौजूदा रिकॉर्ड में एक लिंक जोड़ें
बदलें[6, 0, [ids]]सभी लिंक को प्रदत्त आईडी से बदलें

रिकार्ड अद्यतन करें

रिकॉर्ड आईडी और परिवर्तित फ़ील्ड के शब्दकोश के साथ write विधि को कॉल करके रिकॉर्ड अपडेट करें। केवल वे फ़ील्ड शामिल करें जिन्हें बदलने की आवश्यकता है---छोड़े गए फ़ील्ड अपने वर्तमान मान बनाए रखते हैं।

बैच अपडेट समर्थित हैं: एक ही कॉल में समान मानों के साथ एकाधिक रिकॉर्ड अपडेट करने के लिए आईडी की एक सूची पास करें।

रिकॉर्ड हटाएं

रिकॉर्ड आईडी के साथ unlink विधि को कॉल करके रिकॉर्ड हटाएं। विधि सफल होने पर True लौटाती है।

हटाए जाने से सावधान रहें---कई ओडू रिकॉर्ड व्यावसायिक नियमों द्वारा संरक्षित हैं। उदाहरण के लिए, पोस्ट किए गए इनवॉइस को हटाने का प्रयास करने पर एक त्रुटि उत्पन्न होगी। इसके बजाय उपयुक्त व्यावसायिक पद्धति का उपयोग करें (उदाहरण के लिए, हटाने से पहले button_cancel)।

वास्तविक-विश्व एकीकरण पैटर्न

ईकॉमर्स ऑर्डर सिंक

बाहरी ईकॉमर्स प्लेटफॉर्म से ऑर्डर को Odoo में सिंक्रोनाइज़ करें:

  1. नए ऑर्डर के लिए मतदान: अंतिम सिंक टाइमस्टैम्प के बाद से ऑर्डर के लिए ईकॉमर्स एपीआई को क्वेरी करें
  2. ग्राहकों से मिलान करें: ईमेल द्वारा ओडू संपर्क खोजें; यदि नहीं मिला तो बनाएं
  3. बिक्री ऑर्डर बनाएं: ग्राहक, लाइन, शिपिंग और भुगतान जानकारी के साथ ऑर्डर बनाएं
  4. ऑर्डर की पुष्टि करें: वर्कफ़्लो के माध्यम से ऑर्डर को संसाधित करने के लिए action_confirm पर कॉल करें
  5. ईकॉमर्स अपडेट करें: ओडू ऑर्डर संदर्भ को ईकॉमर्स प्लेटफॉर्म पर वापस भेजें

इन्वेंटरी सिंक

ओडू और बाहरी चैनल के बीच इन्वेंट्री स्तर को सिंक्रनाइज़ रखें:

  1. स्टॉक स्तर पढ़ें: स्थान फ़िल्टर के साथ stock.quant पर search_read पर कॉल करें
  2. पुश अपडेट: बाहरी चैनल पर मात्रा परिवर्तन भेजें
  3. आरक्षण संभालें: आरक्षित स्टॉक के लिए खाता (लंबित आदेशों के लिए प्रतिबद्ध)
  4. शेड्यूल सिंक: सटीकता बनाए रखने के लिए हर 15-30 मिनट में चलाएं

सीआरएम लीड आयात

मार्केटिंग प्लेटफ़ॉर्म से Odoo CRM में आयात लीड:

  1. लीड प्राप्त करें: मार्केटिंग प्लेटफ़ॉर्म एपीआई से नई लीड खींचें
  2. डीडुप्लिकेट: ईमेल या फोन द्वारा मौजूदा संपर्कों के लिए ओडू खोजें
  3. लीड बनाएं: सोर्स ट्रैकिंग के साथ crm.lead में रिकॉर्ड बनाएं
  4. असाइन करें: ओडू के लीड असाइनमेंट नियमों का उपयोग करें या कस्टम तर्क के आधार पर असाइन करें

वित्तीय डेटा निर्यात

बिजनेस इंटेलिजेंस प्लेटफॉर्म पर वित्तीय डेटा निर्यात करें:

  1. खातों का निर्यात चार्ट: खाता संरचना के लिए account.account पढ़ें
  2. जर्नल प्रविष्टियाँ निर्यात करें: दिनांक फ़िल्टर के साथ account.move.line पढ़ें
  3. निर्यात शेष: खाते और अवधि के अनुसार शेष राशि एकत्रित करने के लिए read_group का उपयोग करें
  4. शेड्यूल: अकाउंटिंग विंडो बंद होने के बाद रोजाना चलाएं

त्रुटि प्रबंधन

सामान्य एपीआई त्रुटियाँ

| त्रुटि | कारण | संकल्प | |------|------|------|| | प्रवेश अस्वीकृत | अमान्य क्रेडेंशियल या अनुमतियाँ | उपयोगकर्ता नाम, पासवर्ड और पहुंच अधिकार सत्यापित करें | | रिकार्ड नहीं मिला | पढ़ने/लिखने/अनलिंक करने में अमान्य आईडी | पहले खोज कर सत्यापित करें कि रिकॉर्ड मौजूद है | | सत्यापन त्रुटि | आवश्यक फ़ील्ड गुम या अमान्य मान | वैध डेटा के साथ सभी आवश्यक फ़ील्ड शामिल करें | | उपयोक्तात्रुटि | व्यापार नियम का उल्लंघन | विशिष्ट नियम के लिए त्रुटि संदेश की जाँच करें | | ConcurrencyException | रिकॉर्ड किसी अन्य उपयोगकर्ता द्वारा संशोधित | रिकॉर्ड को दोबारा पढ़ें और पुनः प्रयास करें |

दर सीमित करना

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

पुनः प्रयास रणनीति

क्षणिक त्रुटियों के लिए घातीय बैकऑफ़ लागू करें:

  1. सबसे पहले 1 सेकंड के बाद पुनः प्रयास करें
  2. 4 सेकंड के बाद दूसरा पुनः प्रयास करें
  3. 16 सेकंड के बाद तीसरा पुनः प्रयास करें
  4. अधिकतम पुनः प्रयास के बाद लॉग इन करें और अलर्ट करें

प्रदर्शन अनुकूलन

बैच संचालन

व्यक्तिगत रिकॉर्ड प्रोसेसिंग की तुलना में बैच संचालन को प्राथमिकता दें:

  • create बैच निर्माण के लिए मूल्य शब्दकोशों की एक सूची स्वीकार करता है
  • write बैच अपडेट के लिए आईडी की एक सूची स्वीकार करता है
  • पेजिनेशन के साथ search_read व्यक्तिगत read कॉल की तुलना में अधिक कुशल है

फ़ील्ड चयन

अनावश्यक डेटा लोड करने से बचने के लिए हमेशा fields पैरामीटर निर्दिष्ट करें। 50+ कॉलम वाले मॉडल पर सभी फ़ील्ड लोड करने से महत्वपूर्ण ओवरहेड बनता है, विशेष रूप से sale.order या account.move.line जैसे मॉडलों के लिए।

कैशिंग

कैश धीरे-धीरे स्थानीय स्तर पर डेटा बदल रहा है:

  • उत्पाद सूची (हर घंटे ताज़ा करें)
  • ग्राहक सूची (परिवर्तन अधिसूचना पर ताज़ा करें)
  • कर दरें और राजकोषीय स्थिति (दैनिक ताज़ा करें)

ECOSIRE एकीकरण सेवाएँ

विश्वसनीय एकीकरण के निर्माण के लिए बाहरी सिस्टम और ओडू के डेटा मॉडल दोनों को समझने की आवश्यकता होती है। ECOSIRE की Odoo एकीकरण सेवाएँ API डिज़ाइन, कनेक्टर विकास, डेटा मैपिंग और चल रही निगरानी को कवर करती हैं। ईकॉमर्स प्लेटफ़ॉर्म को जोड़ने वाले संगठनों के लिए, हमारे विशेष Shopify-Odoo एकीकरण और मार्केटप्लेस कनेक्टर्स सबसे सामान्य परिदृश्यों को संभालते हैं।

संबंधित पढ़ना

नए एकीकरण के लिए मुझे कौन सा एपीआई प्रोटोकॉल चुनना चाहिए?

Odoo 19 पर नए प्रोजेक्ट के लिए, REST API का उपयोग करें। यह HTTP मानकों का पालन करता है, इसमें स्वचालित रूप से जेनरेट किए गए दस्तावेज़ हैं, और प्रमाणीकरण के लिए एपीआई कुंजियों का समर्थन करता है। Odoo 17 या 18 के लिए, XML-RPC सबसे विश्वसनीय और अच्छी तरह से प्रलेखित विकल्प है। JSON-RPC ब्राउज़र-आधारित एकीकरण या जावास्क्रिप्ट अनुप्रयोगों के लिए सर्वोत्तम है।

क्या ओडू के बाहरी एपीआई पर कोई दर सीमा है?

Odoo स्वयं दर सीमा लागू नहीं करता है। हालाँकि, Odoo.sh परिनियोजन में बुनियादी ढाँचा-स्तर की सीमाएँ हैं, और स्व-होस्टेड परिनियोजन को रिवर्स प्रॉक्सी (Nginx) स्तर पर दर सीमित करना लागू करना चाहिए। सीमाओं की परवाह किए बिना बैच संचालन और उचित मतदान अंतराल का उपयोग करने के लिए डिज़ाइन एकीकरण।

क्या मैं एपीआई के माध्यम से वर्कफ़्लो (आदेश की पुष्टि, चालान पोस्ट) ट्रिगर कर सकता हूं?

हाँ। वर्कफ़्लो विधि नाम के साथ execute_kw विधि का उपयोग करें। उदाहरण के लिए, किसी sales.order पर इसकी पुष्टि करने के लिए action_confirm पर कॉल करें, या किसी अकाउंट पर action_post पर कॉल करें। जर्नल प्रविष्टि पोस्ट करने के लिए आगे बढ़ें। वर्कफ़्लो विधियाँ UI के समान ही व्यावसायिक नियम लागू करती हैं।

शेयर करें:
E

लेखक

ECOSIRE Research and Development Team

ECOSIRE में एंटरप्राइज़-ग्रेड डिजिटल उत्पाद बना रहे हैं। Odoo एकीकरण, ई-कॉमर्स ऑटोमेशन, और AI-संचालित व्यावसायिक समाधानों पर अंतर्दृष्टि साझा कर रहे हैं।

WhatsApp पर चैट करें