← सिस्टम्स पर वापस

एआई लिस्टिंग एजेंट के लिए eBay एपीआई सेटअप

ebay-apiai-agentsebay-sellingoauth

मेरा सामान eBay पर लिस्ट करने वाला एआई एजेंट मेरी तस्वीरों के समूह बना सकता है, सामान पहचान सकता है, मेरे दिए हुए मिलती-जुलती बिकी चीज़ों के दाम से उसकी कीमत तय कर सकता है और लिस्टिंग बना सकता है। वह अपना eBay डेवलपर खाता नहीं खोल सकता। उसके लिए eBay को एक इंसान चाहिए, और उसके बाद की कुछ और स्क्रीन पर भी।

इसलिए eBay एपीआई सेटअप की यह गाइड काम को दो हिस्सों में बाँटती है। तुम eBay के छह पेज सँभालते हो और अपनी डिस्क की एक फ़ाइल में तीन वैल्यू पेस्ट करते हो। बाकी काम तुम्हारा एजेंट टर्मिनल से करता है: प्राइवेसी पेज, सहमति लिंक, कोड के बदले टोकन लेना और नीतियाँ जाँचना। हर चरण का शीर्षक बताता है कि बारी किसकी है: तुम्हारी, या तुम्हारी और तुम्हारे एजेंट की। किसी चरण के अंदर सीधा निर्देश तुम्हारे लिए है। जो पंक्ति “अपने एजेंट से कहो” से शुरू होती है, वहाँ उसकी बारी है, और तुम जेसन को स्क्रीन पर आगे बढ़ते देख सकते हो।

धूल से भरा कैमरा, जिसकी कीमत $120 से घटाकर $60 की गई है, लैपटॉप पर काम करता एआई लिस्टिंग एजेंट रोबोट, और eBay पर उसी कैमरे की $120 की लिस्टिंग
लिस्टिंग तुम्हारा एजेंट बनाता है। List now (अभी लिस्ट करो) पर क्लिक करने के लिए अब भी तुम्हारी हाँ चाहिए।

eBay एपीआई सेटअप में कौन क्या करता है

चरण तुम तुम्हारा एजेंट
शुरू करने से पहले विक्रेता खाता, GitHub खाता और एआई कोडिंग एजेंट लेकर आओ। अपनाने से जुड़े सवालों के जवाब दो कोड को निजी फ़ोल्डर में कॉपी करता है, इंस्टॉल करता है, टेस्ट चलाता है
1. डेवलपर खाता पंजीकरण करो, मंज़ूरी का इंतज़ार करो —
2. Production (असली बाज़ार) कीसेट उसे बनाओ —
3. कीसेट चालू करना eBay का खाता मिटाने से जुड़ा फ़ॉर्म भरो —
4. प्राइवेसी पेज नाम, संपर्क और अपनी एआई सेवा बताओ टेम्पलेट भरता है, Gist प्रकाशित करता है
5. RuName (रीडायरेक्ट सेटिंग का नाम) एक फ़ॉर्म भरो —
6. .env फ़ाइल तीन वैल्यू पेस्ट करो फ़ाइल बनाता है, Production सेट करता है
7. सहमति eBay पर सहमति दो, एक पता कॉपी करो लिंक बनाता है, कोड के बदले टोकन लेता है
8. व्यावसायिक नीतियाँ शिपिंग, भुगतान और वापसी की नीतियाँ बनाओ उन्हें जाँचता है, तुम्हारी हाँ पर तुम्हें शामिल करता है
9. account.json जो चुनाव वह नहीं कर सकता, वे करो, नई लोकेशन को मंज़ूरी दो फ़ाइल लिखता है, अपनाने से जुड़े तुम्हारे जवाब लागू करता है, पाँच जाँचें चलाता है

चरण 7 के रिफ्रेश टोकन को अपनी कार की चाबी समझो, और पाइपलाइन को नियमों की किताब वाला वैले, जो कार पार्क करता है। वैले कार पार्क करता है: तुम्हारा एजेंट एक अप्रकाशित ऑफर बनाता है, जिसे खरीदार नहीं देख सकते। जब तक तुम सिर हिलाकर हामी नहीं भरते, कार पार्किंग से बाहर नहीं जाती, क्योंकि प्रकाशित करने के लिए तुम्हारी साफ़ हाँ चाहिए। एक बात साफ़ कह दूँ। चाबी खुद नियमों से ज़्यादा काम कर सकती है, इसलिए वह तुम्हारी डिस्क पर .env में रहती है, कभी चैट में नहीं।

स्क्रीनशॉट के गुलाबी अंक उसके नीचे दिए चरणों के अंकों से मेल खाते हैं। लेबल नवंबर 2026 की eBay स्क्रीन से मेल खाते हैं। eBay कभी-कभी नाम बदलता है, इसलिए कोई लेबल अलग हो तो लिंक किए गए eBay पेज को सही मानो।

यह सब ebay-listing-agent की लिस्टिंग पाइपलाइन से लिया गया है, जिसे मैं अपने विक्रेता खाते पर चलाता हूँ। चरण 1 से पहले तुम्हारे एजेंट को रेपो चाहिए, इसलिए अभी लिंक ले लो।

यह eBay एपीआई सेटअप सीधे Production में क्यों जाता है

eBay एक Sandbox (परीक्षण वाला बाज़ार) देता है, जहाँ जाँच के लिए नकली बाज़ार होता है। रेपो की अपनी गाइड वहीं से शुरू होती है। यह गाइड वहाँ से शुरू नहीं होती। तुम्हारी लिस्टिंग Production में रहती हैं, और Sandbox के टेस्ट उपयोगकर्ता के पास शुरुआत में न व्यावसायिक नीतियाँ होती हैं, न इन्वेंटरी लोकेशन। उन्हें Sandbox में बनाना एक अलग ही काम है। इसलिए तुम्हारा एजेंट शुरुआत से तुम्हारे असली विक्रेता खाते से जुड़ता है, और सुरक्षा का काम पाइपलाइन की रोकें करती हैं:

  • Lister वर्कफ़्लो अप्रकाशित ऑफर पर रुक जाता है। खरीदार उसे नहीं देख सकते।
  • publish, --confirm के बिना सारांश दिखाकर आगे बढ़ने से मना कर देता है। तुम्हारा एजेंट वह सारांश दिखाता है और तुम्हारी हाँ का इंतज़ार करता है।
  • तुम्हारे विक्रेता खाते को बदलने वाले दोनों कमांड, setup --opt-in और setup --create-location, भी --confirm के बिना मना कर देते हैं।
  • तुम्हारा एजेंट delete-offer से ऐसा अप्रकाशित ऑफर हटा सकता है जो तुम्हें नहीं चाहिए। कमांड पहले से प्रकाशित ऑफर को हटाने से मना कर देता है।

⚠️ चेतावनी: यह सेटअप तुम्हारे एजेंट को तुम्हारे असली विक्रेता खाते से जोड़ता है। Cert ID (प्रमाणपत्र की पहचान) और रिफ्रेश टोकन सिर्फ़ .env में रखो। उन्हें चैट में पेस्ट मत करो। .env को git में कमिट मत करो।

शुरू करने से पहले

तुम ये लेकर आओ:

  • eBay का विक्रेता खाता, जिसकी स्थिति ठीक हो और भुगतान की व्यवस्था पूरी हो। तुम्हारी लिस्टिंग यहीं जाएँगी।
  • अमेरिकी बाज़ार (EBAY_US)। दूसरे बाज़ारों को जाँचा नहीं गया है।
  • GitHub खाता। चरण 4 में तुम्हारा एजेंट वहाँ एक छोटा पेज प्रकाशित करता है।
  • ऐसा एआई कोडिंग एजेंट जो टर्मिनल कमांड चला सके, जैसे Claude Code, Cursor या Codex CLI।

तुम्हारा एजेंट ये करता है:

  • रेपो क्लोन करता है और core/ को एक नए निजी फ़ोल्डर में कॉपी करता है। कॉपी, फ़ोर्क नहीं: GitHub पर सार्वजनिक रेपो का फ़ोर्क सार्वजनिक होता है, और तुम्हारे लिस्टिंग फ़ोल्डरों में तुम्हारे ऑफर की आईडी रहेंगी।
  • Python 3.10+, ImageMagick 7 और GitHub CLI (gh) मौजूद न हों तो उन्हें इंस्टॉल करता है, फिर Python पैकेज, फिर टेस्ट चलाता है।
  • तुम्हारे साथ ADOPTION-QUESTIONS.md के सवाल देखता है: समीक्षा के लिए तुम्हारी कीमत सीमा, लिस्ट करने से पहले उसे कितना भरोसा चाहिए, कौन-सी नीतियाँ इस्तेमाल करनी हैं। वह तुम्हारे जवाब लिखता है और चरण 9 में लागू करता है। शिपिंग और वापसी के बारे में तुम्हारे जवाब तय करते हैं कि चरण 8 में तुम क्या बनाओगे।

यह प्रॉम्प्ट पेस्ट कर सकते हो:

github.com/matbanik/ebay-listing-agent में ADOPTION-GUIDE.md पढ़ो। मेरे साथ चरण 1 से 3 तक करो। हम eBay का सेटअप Production में कर रहे हैं, Sandbox में नहीं। eBay एपीआई ऐक्सेस से पहले रुक जाओ।

“Production” ऐसे साफ़ बोलो। रेपो की गाइड पहले Sandbox सुझाती है, और ध्यान से काम करने वाला एजेंट रेपो के मुताबिक चलता है।

1. तुम: eBay Developers Program (eBay डेवलपर प्रोग्राम) में शामिल हो

तुम्हारा विक्रेता खाता एपीआई कॉल नहीं कर सकता। eBay अपना डेवलपर प्रोग्राम एक अलग इमारत की तरह चलाता है, जिसका अपना प्रवेश द्वार है, इसलिए तुम्हें दूसरा खाता चाहिए। उसमें अपने विक्रेता खाते वाला ईमेल इस्तेमाल कर सकते हो। फिर भी उसका लॉगिन अलग है।

  1. eBay Developers Program में पंजीकरण का पेज खोलो।
  2. फ़ॉर्म भरो। जहाँ फ़ॉर्म कहे, वहाँ अपना ईमेल पता दूसरी बार डालो।
  3. API License Agreement (एपीआई इस्तेमाल की लाइसेंस शर्तें) स्वीकार करो। रोबोट जाँच पूरी करो। Join (शामिल हो) चुनो।
  4. मंज़ूरी का इंतज़ार करो। मंज़ूरी में लगभग एक कार्यदिवस लग सकता है। मंज़ूरी से पहले कुंजियाँ नहीं बना सकते।

eBay कारोबारी ईमेल पता माँग सकता है। तुम्हारे पास हो तो दे दो।

2. तुम: अपना eBay Production कीसेट बनाओ

eBay का Application Keys (ऐप की कुंजियाँ) पेज, Production हिस्सा, जिसमें App ID (ऐप की पहचान), Dev ID (डेवलपर की पहचान) और Cert ID की वैल्यू छिपी हैं, और User Tokens (उपयोगकर्ता टोकन) तथा Notifications (सूचनाएँ) लिंक चौखट में हैं
अगर Cert ID कभी लीक हो जाए, तो उसके नीचे Rotate (Reset) Cert ID (प्रमाणपत्र की पहचान बदलो या रीसेट करो) से नई मिल जाती है।

कीसेट तुम्हारे ऐप का पहचान पत्र है: तीन वैल्यू, जो eBay को बताती हैं कि कौन-सा ऐप दरवाज़ा खटखटा रहा है। तुम्हें Production वाला चाहिए।

  1. डेवलपर साइट पर Application Keys (ऐप की कुंजियाँ) खोलो।
  2. Production के नीचे कीसेट बनाओ। ऐप को कोई भी नाम दो, जैसे “my-ebay-lister”।
  3. जाँचो कि Production हिस्से में App ID (Client ID) (ऐप की पहचान, जिसे क्लाइंट की पहचान भी कहते हैं), Dev ID और Cert ID (Client Secret) (प्रमाणपत्र की पहचान, यानी क्लाइंट का गुप्त पासवर्ड) दिखें।
  4. यह पेज खुला रखो। चरण 3, 5 और 6 में फिर चाहिए।

App ID तुम्हारे ऐप की पहचान है। Cert ID उसका पासवर्ड है, इसलिए उसे पासवर्ड की तरह रखो। Dev ID का इस्तेमाल नहीं होता। App ID के नीचे चौखट में दिए दोनों लिंक, User Tokens और Notifications, चरण 5 और 3 के दरवाज़े हैं। नए Production कीसेट पर “Your Keyset is currently disabled.” (तुम्हारा कीसेट अभी बंद है) भी लिखा होता है। यह सामान्य है। चरण 3 उसे चालू करता है।

3. तुम: Production कीसेट चालू करो

eBay का सूचनाओं वाला फ़ॉर्म, जिसमें Marketplace Account Deletion (बाज़ार का खाता मिटाना), छूट का टॉगल, Exemption reason (छूट का कारण) के विकल्प और Submit (जमा करो) को 1 से 4 तक चिह्नित किया गया है
कारण वाले बटन जानबूझकर धुँधले किए गए हैं। तस्वीर को तुम्हारी जगह चुनाव नहीं करना चाहिए।

eBay तब तक Production कीसेट चालू नहीं करेगा, जब तक तुम एक सवाल का जवाब न दो: जब eBay का कोई उपयोगकर्ता अपना खाता बंद करता है, तो तुम्हारे ऐप को कैसे पता चलता है? eBay उपयोगकर्ताओं का डेटा रखने वाले ऐप को खाता मिटाने की वे सूचनाएँ सुननी होती हैं। जो ऐप ऐसा डेटा नहीं रखते, वे छूट के लिए आवेदन कर सकते हैं। फ़ॉर्म तुम्हारे Production App ID के नीचे Notifications लिंक से खुलता है। तुम सीधे Production की सूचनाओं का पेज भी खोल सकते हो।

⚠️ सावधानी: छूट का सिर्फ़ वही कारण चुनो जो तुम्हारे लिए सच है। अगर कोई कारण तुम्हारे ऐप पर लागू नहीं होता, तो आवेदन मत करो। इस चरण के अंत में बताया एंडपॉइंट वाला रास्ता अपनाओ। टॉगल के बाद पुष्टि का बॉक्स खुले तो उसे पढ़ो। Confirm (पुष्टि करो) तभी चुनो जब उसमें लिखा कथन तुम्हारे लिए सच हो। फ़ॉर्म कहता है: “Failure to provide correct information may result in penalties or having your account disabled.” (सही जानकारी न देने पर जुर्माना लग सकता है या तुम्हारा खाता बंद किया जा सकता है।)

  1. Marketplace Account Deletion चुनो।
  2. Exempted from Marketplace Account Deletion (बाज़ार का खाता मिटाने की सूचना से छूट) टॉगल चालू करो।
  3. Exemption reason में वह कारण चुनो जो तुम्हारे लिए सच है। Additional information (अतिरिक्त जानकारी) में बताओ कि तुम क्या रखते हो।
  4. Submit चुनो।
  5. Application Keys फिर खोलो। Production कीसेट पर “Your Keyset is currently disabled.” संदेश है या नहीं, जाँचो।
  6. संदेश अब भी है? रुक जाओ। इंतज़ार करते हुए चरण 4 का प्राइवेसी पेज बना लो। संदेश हटने तक चरण 7 की सहमति शुरू मत करो।

तुम्हें यह तय करना है। पाइपलाइन सिर्फ़ तुम्हारे अपने विक्रेता खाते पर चलती है। वह कभी दूसरे eBay उपयोगकर्ताओं को साइन इन नहीं कराती और खरीदारों का कोई डेटा नहीं रखती। वह तुम्हारी डिस्क पर तुम्हारी अपनी लिस्टिंग की फ़ाइलें ज़रूर रखती है: शीर्षक, कीमतें, ऑफर की आईडी और लिस्टिंग की आईडी। eBay के शब्द “any eBay data,” (eBay का कोई भी डेटा) यह नहीं बताते कि वह इसमें गिना जाता है या नहीं। यह फैसला मैं तुम्हारे लिए नहीं कर सकता, और तुम्हारा एजेंट भी नहीं।

अगर कोई कारण सही नहीं बैठता, या eBay छूट ठुकरा देता है, तो दूसरा रास्ता है एक एचटीटीपीएस एंडपॉइंट को सूचनाओं के लिए सब्सक्राइब करना, जो eBay की सूचनाओं का जवाब दे। रेपो ऐसा एंडपॉइंट नहीं देता, इसलिए उसे तुम्हें खुद होस्ट करना होगा, और उसके काम करने तक चरण 7 की सहमति रुकी रहेगी। eBay की खाता मिटाने वाली गाइड इसे समझाती है। eBay के फ़ोरम पर कुछ डेवलपर बताते हैं कि आवेदन के बाद भी उनके कीसेट “Non Compliant” (नियमों के अनुरूप नहीं) रहे, इसलिए आगे बढ़ने से पहले कीसेट देखो।

4. तुम और तुम्हारा एजेंट: प्राइवेसी पेज प्रकाशित करो

प्राइवेसी पॉलिसी का यूआरएल दिए बिना eBay चरण 5 में RuName नहीं बनाएगा। उसे लिखना होमवर्क जैसा लगता है। उसका ज़्यादातर काम तुम्हारे एजेंट का है, क्योंकि रेपो में टेम्पलेट मिलता है।

  1. अपने एजेंट को ऐप का नाम, अपना या अपने कारोबार का नाम, सार्वजनिक संपर्क और अपनी एआई सेवा बताओ।
  2. अपने एजेंट से PRIVACY-TEMPLATE.md पूरा करने को कहो। वह नतीजा privacy-policy.md में सहेजता है।
  3. अपने एजेंट से privacy-policy.md को सार्वजनिक GitHub Gist के रूप में प्रकाशित करने को कहो।
  4. क्या gh लॉगिन माँगता है? खुद gh auth login चलाओ। उसके निर्देश मानो।
  5. तुम्हारा एजेंट जो पेज प्रकाशित करे, उसे पढ़ो। नाम और संपर्क जाँचो।
  6. Gist का लिंक लिखकर रखो। चरण 5 के RuName फ़ॉर्म में उसे पेस्ट करोगे।

यह प्रॉम्प्ट पेस्ट कर सकते हो:

“My eBay Lister” के लिए PRIVACY-TEMPLATE.md पूरा करो। मालिक: [तुम्हारा या तुम्हारे कारोबार का नाम]। संपर्क: [वह ईमेल या पेज जिसे तुम सार्वजनिक करोगे]। एआई सेवा: [जो तुम इस्तेमाल करते हो]। इसे privacy-policy.md में सहेजो, सार्वजनिक Gist के रूप में प्रकाशित करो और मुझे लिंक दो।

टेम्पलेट के पाँच छोटे हिस्से हैं: ऐप किस चीज़ तक पहुँचता है, क्या रखता है, किसके साथ साझा करता है, उसे कैसे मिटाएँ और तुमसे संपर्क कैसे करें। तुम्हारी तस्वीरों का विश्लेषण करने वाली किसी भी एआई सेवा का नाम लिखने के लिए भी एक पंक्ति है। तुम्हारा एजेंट सामान पहचानने के लिए तुम्हारी तस्वीरें पढ़ता है, इसलिए उस सेवा का नाम दो जिस पर उसे चलाते हो। टेम्पलेट अपनी हैसियत बढ़ा-चढ़ाकर भी नहीं बताता: “यह शुरुआत का आधार है, कानूनी सलाह नहीं।” प्रकाशित करने के लिए तुम्हारे एजेंट को सिर्फ़ एक पंक्ति चाहिए:

gh gist create --public --desc "Privacy policy: My eBay Lister" privacy-policy.md

5. तुम: अपना eBay RuName बनाओ

eBay का RuName फ़ॉर्म, जिसमें प्राइवेसी पॉलिसी के यूआरएल वाले फ़ील्ड पर 1 और सहमति स्वीकार तथा अस्वीकार होने के यूआरएल वाले फ़ील्डों पर 2 लिखा है
प्राइवेसी यूआरएल https:// से शुरू होना चाहिए और eBay की अपनी पॉलिसी नहीं हो सकता। Gist लिंक दोनों शर्तें पूरी करता है।

RuName, “redirect URL name” (रीडायरेक्ट यूआरएल का नाम) का छोटा नाम है। यह तुम्हारी रीडायरेक्ट सेटिंग के लिए eBay का दिया छोटा नाम है, और देखने में ऐसा लगता है जैसे तुम्हारे ऐप के नाम को कतरने वाली मशीन से निकाला गया हो: YourName-YourApp-ab12-cdefgh। सहमति के चरण में यह चाहिए। हर कीसेट का अपना RuName होता है, इसलिए इसे Production कीसेट से बनाओ।

फ़ॉर्म तक ऐसे पहुँचो:

  1. Application Keys पर Production App ID के नीचे User Tokens चुनो।
  2. Get a Token from eBay via Your Application (अपने ऐप के ज़रिए eBay से टोकन लो) खोलो। “You have no Redirect URLs. Click here to add one.” (तुम्हारा कोई रीडायरेक्ट यूआरएल नहीं है। जोड़ने के लिए यहाँ क्लिक करो।) चुनो।
  3. क्या eBay कानूनी पता माँगता है? फ़ॉर्म भरो। Continue to create RuName (RuName बनाने के लिए आगे बढ़ो) चुनो।

फ़ॉर्म भरो। गुलाबी अंक इस सूची से मेल खाते हैं:

  1. Your privacy policy URL (तुम्हारी प्राइवेसी पॉलिसी का यूआरएल) में चरण 4 का Gist लिंक पेस्ट करो।
  2. Your auth accepted URL (सहमति स्वीकार होने पर खुलने वाला यूआरएल) और Your auth declined URL (सहमति अस्वीकार होने पर खुलने वाला यूआरएल) में कोई भी एचटीटीपीएस पता डालो। मेरे सेटअप में https://example.com है।
  3. Display Title (दिखने वाला शीर्षक) डालो, जैसे “My eBay Lister”। चरण 7 के सहमति पेज पर यह शीर्षक दिखता है।
  4. फ़ॉर्म सहेजो।
  5. RuName कॉपी करो। चरण 6 में उसे .env में पेस्ट करोगे।

स्वीकार होने वाला यूआरएल कोई भी एचटीटीपीएस पेज क्यों हो सकता है? वहाँ कुछ चलना ज़रूरी नहीं। चरण 7 में तुम्हारे स्वीकार करने के बाद eBay तुम्हारे ब्राउज़र को उस पते पर भेजता है, जिसमें एक बार इस्तेमाल होने वाला कोड जुड़ा होता है, और तुम उसे सीधे एड्रेस बार से कॉपी करते हो। eBay का फ़ॉर्म यह भी कहता है: “If you leave these fields blank, the eBay default accept and reject pages will be used.” (अगर तुम ये फ़ील्ड खाली छोड़ते हो, तो eBay के डिफ़ॉल्ट स्वीकार और अस्वीकार पेज इस्तेमाल होंगे।) तब कॉपी किया जाने वाला पता अलग दिखता है। चरण 7 में दोनों हैं।

eBay अपनी प्राइवेसी पॉलिसी को तुम्हारी पॉलिसी के रूप में भी स्वीकार नहीं करेगा: यूआरएल एचटीटीपीएस होना चाहिए और “should not be eBay’s Privacy Policy URL.” (eBay की प्राइवेसी पॉलिसी का यूआरएल नहीं होना चाहिए।) eBay की Quick OAuth Guide (OAuth की त्वरित गाइड) में “OAuth Enabled” (OAuth चालू) RuName माँगा गया है। तुम्हारे फ़ॉर्म में यह विकल्प दिखे तो चालू कर दो।

6. तुम और तुम्हारा एजेंट: .env फ़ाइल भरो

.env एक साधारण टेक्स्ट फ़ाइल है, जो तुम्हारी कुंजियाँ तुम्हारी अपनी डिस्क पर रखती है। तुम्हारा एजेंट इसे बनाता है। गुप्त वैल्यू तुम भरते हो, ताकि वे कभी चैट से होकर न गुज़रें।

  1. अपने एजेंट से .env.example से .env बनाने को कहो, जिसमें EBAY_ENVIRONMENT=production हो।
  2. .env टेक्स्ट एडिटर में खोलो।
  3. EBAY_CLIENT_ID= के बाद App ID पेस्ट करो।
  4. EBAY_CLIENT_SECRET= के बाद Cert ID पेस्ट करो।
  5. EBAY_REDIRECT_URI= के बाद RuName पेस्ट करो। RuName पेस्ट करो, यूआरएल नहीं।
  6. EBAY_USER_REFRESH_TOKEN= खाली छोड़ो। चरण 7 इसे लिखता है।
  7. फ़ाइल सहेजो।

पूरा होने पर ज़रूरी पाँच पंक्तियाँ ऐसी दिखेंगी, जहाँ कोष्ठकों की जगह तुम्हारी वैल्यू होंगी:

EBAY_ENVIRONMENT=production
EBAY_CLIENT_ID=<Production App ID>
EBAY_CLIENT_SECRET=<Production Cert ID>
EBAY_REDIRECT_URI=<Production RuName>
EBAY_USER_REFRESH_TOKEN=

ज़्यादातर लोग RuName वाली पंक्ति पर चूकते हैं। सेटिंग का नाम redirect_uri है, इसलिए यूआरएल सही जवाब लगता है। eBay को RuName चाहिए। वहाँ यूआरएल होना redirect_uri की गलतियों का सबसे आम कारण है।

अगर Cert ID कभी लीक हो जाए, तो Application Keys खोलो और Rotate (Reset) Cert ID चुनो, जिसमें मोहलत 0 रखो, ताकि पुरानी तुरंत काम करना बंद कर दे। नई वैल्यू .env में पेस्ट करो। कुंजी बदलने पर भी रिफ्रेश टोकन काम करते रहते हैं, इसलिए चरण 7 दोहराने की ज़रूरत नहीं।

7. तुम और तुम्हारा एजेंट: सहमति और eBay रिफ्रेश टोकन

यह आपस में हाथ मिलाने वाला चरण है। तुम विक्रेता के तौर पर eBay को बताते हो कि यह ऐप तुम्हारी लिस्टिंग सँभाल सकता है। eBay तुम्हारे ब्राउज़र को एक बार इस्तेमाल होने वाला कोड देता है। तुम्हारा एजेंट उस कोड के बदले रिफ्रेश टोकन लेता है, जो लंबे समय तक चलने वाली कुंजी है और उसके बाद पाइपलाइन उसी का इस्तेमाल करती है। कुल पाँच मिनट मिलते हैं, इसलिए पहले सूची पढ़ो, फिर शुरू करो।

  1. अपने एजेंट से auth-url चलाने को कहो। वह तुम्हें सहमति लिंक देता है।
  2. सहमति लिंक अपने ब्राउज़र में खोलो।
  3. क्या eBay लॉगिन माँगता है? अपने विक्रेता खाते का उपयोगकर्ता नाम और पासवर्ड डालो। डेवलपर खाता मत इस्तेमाल करो।
  4. सहमति पेज की अनुमतियाँ पढ़ो। उन्हें स्वीकार करो।
  5. जो पेज खुले, उसके एड्रेस बार से पूरा पता कॉपी करो।
  6. पूरा पता चैट में पेस्ट करो।
  7. अपने एजेंट से उस पते के साथ तुरंत exchange-code चलाने को कहो।
  8. जाँचो कि तुम्हारा एजेंट "stored": true बताए। क्या वह invalid_grant बता रहा है? इस सूची की शुरुआत से फिर करो।

दोनों पते ऐसे दिखते हैं। तुम्हारा एजेंट पहला देता है। तुम दूसरा वापस देते हो।

You open (the consent link from your agent):
https://auth.ebay.com/oauth2/authorize?client_id=<App ID>&redirect_uri=<RuName>&response_type=code&scope=https%3A//api.ebay.com/oauth/api_scope%20...

You copy (from the address bar, after you accept):
https://example.com/?code=v%5E1.1%23i%5E1%23...&expires_in=299

code= के बाद का हिस्सा हर बार नया होता है। वह एक बार काम करता है और 299 सेकंड बाद खत्म हो जाता है, यही expires_in=299 बता रहा है। तुम्हारे पते में state= जैसे दूसरे हिस्से भी हो सकते हैं। पूरा पता कॉपी करो। तुम्हारा एजेंट उसमें से कोड निकाल लेता है।

क्या उसे चैट में पेस्ट करना सुरक्षित है? कोड एक बार काम करता है और पाँच मिनट में खत्म हो जाता है। eBay उसके बदले टोकन तभी देता है जब तुम्हारा Cert ID भी साथ हो, और Cert ID .env में रहता है। इसलिए Cert ID के बिना कोड बेकार है। दो जगहों पर वह दिखता ज़रूर है: चैट में और तुम्हारे स्वीकार होने वाले यूआरएल की साइट पर, जो तुम्हारे पहुँचने वाला पता लॉग कर सकती है। दोनों में से किसी को तुम्हारा Cert ID नहीं मिलता, और एजेंट के कोड भुनाते ही वह इस्तेमाल हो चुका होता है। सहमति लिंक में तुम्हारा App ID और RuName दिखते हैं। यह सामान्य है: हर OAuth सहमति लिंक में वे होते हैं।

चरण 5 में स्वीकार होने वाला यूआरएल खाली छोड़ा था? तब eBay तुम्हें अपने पेज पर भेजता है, और पता ऐसे शुरू होता है:

https://signin.ebay.com/ws/eBayISAPI.dll?ThirdPartyAuthSucessFailure&isAuthSuccessful=true&state=null&code=v%5E1...

हाँ, “Sucess.” यह eBay की वर्तनी है, मेरी नहीं। code= वाला हिस्सा वहाँ भी है, और exchange-code उसे किसी भी पते से पढ़ लेता है। इस रास्ते में कोड ऐसी साइट तक भी नहीं जाता जिसे तुम नहीं चलाते। मेरे अपने सेटअप में example.com है, इसलिए मैंने खुद यह रास्ता नहीं आज़माया है।

क्या कितनी देर रहता है कौन सँभालता है
कोड 299 सेकंड, एक इस्तेमाल तुम एक बार कॉपी करते हो
ऐक्सेस टोकन 2 घंटे टूल खुद नया कर लेता है
रिफ्रेश टोकन लगभग 18 महीने खत्म होने पर यह चरण दोहराओ

कुछ गड़बड़ हो तो:

  • invalid_grant: कोड पहले इस्तेमाल हो चुका था या पाँच मिनट से ज़्यादा पुराना था। नया लिंक लो और जल्दी पेस्ट करो।
  • redirect_uri की गलती: .env में Production RuName की जगह यूआरएल या Sandbox RuName है।
  • invalid_client: App ID और Cert ID अलग-अलग कीसेट से आए हैं, या EBAY_ENVIRONMENT की वैल्यू production नहीं है।

8. तुम और तुम्हारा एजेंट: eBay की व्यावसायिक नीतियाँ बनाओ

My eBay (मेरा eBay) का Account (खाता) मेन्यू, जिसमें Selling (बेचना) और Business Policies (व्यावसायिक नीतियाँ) पर 1 और 2 हैं, और नोट है कि Create policy (नीति बनाओ) ऊपर दाईं ओर है
शिपिंग नीति भी व्यावसायिक नीति है। वह ठीक नीचे दिख रहे Shipping Preferences (शिपिंग की प्राथमिकताएँ) में नहीं है।

व्यावसायिक नीतियाँ उन सवालों के सहेजे हुए जवाब हैं जो हर लिस्टिंग पूछती है: सामान कैसे भेजा जाएगा, खरीदार भुगतान कैसे करेगा और वापसी पर क्या होगा? तुम्हारा एजेंट हर ऑफर में उन्हें आईडी के ज़रिए जोड़ता है। उसका टूल नीतियाँ पढ़ सकता है, लेकिन उन्हें बनाने का कमांड नहीं है, इसलिए यह हिस्सा तुम्हारा है।

अपने एजेंट से पहले policies चलाने को कहो। वह तुम्हारी मौजूदा नीतियाँ दिखाता है। अगर तुम्हारे पास पहले से मुफ़्त शिपिंग की नीति, भुगतान की नीति और 30 दिन की वापसी नीति है, तो चरण 9 पर जाओ। अगर policies बताए कि तुम्हारा खाता Business Policies में शामिल नहीं है, तो तुम्हारा एजेंट setup --opt-in --confirm चला सकता है, लेकिन तुम्हारी हाँ के बाद ही। फिर अपने एजेंट से दोबारा policies चलाने को कहो। शामिल होने की गलती हटने के बाद अपनी नीतियाँ बनाओ। रेपो के अपने नोटों के मुताबिक यह इंतज़ार कुछ मिनट से लेकर 24 घंटे तक हो सकता है।

  1. My eBay खोलो। Account चुनो। बाईं ओर के मेन्यू में Selling चुनो।
  2. Business Policies चुनो। Manage your business policies (अपनी व्यावसायिक नीतियाँ सँभालो) पेज खुलता है।
  3. ऊपर दाईं ओर Create policy चुनो। नीति का प्रकार चुनो।

इस तरह तीन नीतियाँ बनाओ, एक-एक करके।

शिपिंग नीति

eBay का शिपिंग नीति फ़ॉर्म, जिसमें Flat (एकसमान) पर सेट Cost type (लागत का प्रकार) पर 1 और Offer free shipping (मुफ़्त शिपिंग दो) चेकबॉक्स पर 2 लिखा है
Offer free shipping चालू होने पर Buyer pays (खरीदार देगा) फ़ील्ड $0.00 पर धूसर हो जाते हैं।

पाइपलाइन कीमत तय करते समय शिपिंग की लागत सामान की कीमत में जोड़ देती है, इसलिए उसे मुफ़्त शिपिंग की नीति चाहिए। हिसाब लगाकर तय होने वाली शिपिंग छोड़ दो। रेपो के अपनाने से जुड़े सवालों में उसे ऐसी नीति के उदाहरण के रूप में दिया है जो पैकेज की गलतियों से विफल हो सकती है।

  1. Cost type के नीचे Flat: Same cost to all buyers (एकसमान: सभी खरीदारों के लिए एक ही लागत) चुनो।
  2. Offer free shipping चालू करो।
  3. Policy name (नीति का नाम) डालो, जैसे “Free domestic shipping” (देश के अंदर मुफ़्त शिपिंग)।
  4. अपने सामान के मुताबिक Shipping method (शिपिंग का तरीका) चुनो।
  5. अपने सामान के मुताबिक Handling time (भेजने की तैयारी का समय) चुनो।
  6. Save (सहेजो) चुनो।

भुगतान और वापसी की नीतियाँ

  1. भुगतान की नीति बनाओ। Require immediate payment when buyer uses Buy It Now (खरीदार Buy It Now, यानी अभी खरीदो, इस्तेमाल करे तो तुरंत भुगतान ज़रूरी हो) चालू करो। Save चुनो।
  2. वापसी की नीति बनाओ। domestic returns (देश के अंदर वापसी) वाले हिस्से में Accept returns (वापसी स्वीकार करो) चालू करो।
  3. Allowed within (इस अवधि के अंदर अनुमति है) में 30 Days (30 दिन) चुनो। Return shipping paid by (वापसी की शिपिंग कौन देगा) में Buyer (खरीदार) चुनो। Save चुनो।
  4. अपने एजेंट से दोबारा policies चलाने को कहो।
  5. जाँचो कि तीनों नीतियाँ दिखें।

मेरी भुगतान नीति में तुरंत भुगतान ज़रूरी है, और रेपो की डिफ़ॉल्ट वापसी नीति 30 दिन की है, जिसमें वापसी की शिपिंग खरीदार देता है। eBay का फ़ॉर्म अपनी ओर से भी सुझाता है: “Offering a minimum 30-day return policy helps your listings qualify for Top Rated Seller Benefits.” (कम-से-कम 30 दिन की वापसी नीति देने से तुम्हारी लिस्टिंग को सर्वोच्च रेटिंग वाले विक्रेता के लाभों के लिए योग्य होने में मदद मिलती है।)

9. तुम और तुम्हारा एजेंट: account.json लिखो और जाँचें चलाओ

तुम्हारी नीति की आईडी और इन्वेंटरी लोकेशन बाकी लोगों से अलग हैं, इसलिए वे .env के पास रखी निजी फ़ाइल account.json में रहती हैं। तुम्हारा एजेंट उसे setup से लिखता है। वह कमांड किसी से सवाल-जवाब नहीं करता। account.json में पहले से सहेजे चुनाव रखता है। वरना अकेला उपलब्ध विकल्प चुन लेता है, जैसे तुम्हारी एक लोकेशन या तुम्हारी एक 30 दिन की वापसी नीति। जब वह चुन नहीं पाता, तो अपनी choices में बता देता है और फ़्लैग का इंतज़ार करता है। जो चुनाव वह नहीं कर सकता, वे तुम्हें करने हैं।

  1. अपने एजेंट से setup --dry-run चलाने को कहो। वह बताता है कि क्या मिला और क्या तय नहीं कर सकता।
  2. अपने एजेंट के साथ choices पढ़ो। क्या किसी पंक्ति में “found: pass” है? अपने एजेंट को बताओ कि कौन-सी नीति या लोकेशन इस्तेमाल करे।
  3. इन्वेंटरी लोकेशन नहीं है? अपने एजेंट को अपना ज़िप कोड, शहर और राज्य बताओ। --create-location कमांड को मंज़ूरी दो।
  4. अपने एजेंट से तुम्हारे चुनावों के साथ फिर setup --dry-run चलाने को कहो।
  5. क्या problems में अब भी कुछ है? चरण 2 से 4 दोहराओ।
  6. अपने एजेंट से उन्हीं चुनावों के साथ setup चलाने को कहो। वह account.json लिखता है।
  7. अपने एजेंट से अपनाने से जुड़े बाकी जवाब लागू करने को कहो। ADOPTION-QUESTIONS.md में हर जवाब की कुंजी या फ़ाइल का नाम है।
  8. account.json के pipeline हिस्से में कीमत सीमा और शुल्क की दर जाँचो।
  9. अपने एजेंट से नीचे दी गई पाँच जाँचें चलाने को कहो। पाँचों सफल होनी चाहिए।

तुम्हारे चुनाव फ़्लैग बनकर जाते हैं। तुम्हारा एजेंट --fulfillment (eBay शिपिंग को यही कहता है), --payment या --return के साथ नीति की आईडी देता है, और --location-key के साथ लोकेशन। अपनाने से जुड़े दो जवाब भी इसी तरह जाते हैं: --disallow-fulfillment ऐसी शिपिंग नीति को चिह्नित करता है जिसे तुम्हारा एजेंट कभी इस्तेमाल न करे, और --return-14-day उस 14 दिन की वापसी नीति का नाम देता है, अगर तुम ऐसी नीति रखते हो:

python tools/ebay_api.py setup --dry-run --fulfillment <ID> --return <ID> --location-key HOME-01

तुम्हारी हाँ के बाद तुम्हारा एजेंट जो लोकेशन कमांड चलाता है, वह ऐसा दिखता है:

python tools/ebay_api.py setup --create-location --location-key HOME-01 --postal-code <ZIP> --city <city> --state <ST> --confirm

ऊपर का बिंदु 7 आसानी से छूट सकता है, क्योंकि setup तुम्हारा eBay खाता पढ़ता है, अपनाने से जुड़े तुम्हारे जवाब नहीं। वह pipeline में रेपो की डिफ़ॉल्ट वैल्यू भरता है: $200 से ऊपर हर चीज़ की समीक्षा, भरोसा 0.70 से कम हो तो पूछना, अंतिम बिक्री मूल्य का 13.6% शुल्क और हर ऑर्डर पर $0.40। तुम्हारा एजेंट फ़ाइल बदले तब तक यही लागू रहती हैं, और बाद में setup चलाने पर वे बदलाव बने रहते हैं। तुम्हारे बाकी जवाब, जैसे तस्वीरों का स्रोत और बैकअप, वर्कफ़्लो फ़ाइलों और AGENTS.md में जाते हैं। ADOPTION-GUIDE.md के चरण 5 और 6 में हर बदलाव दिया है। उसका चरण 7 एक काल्पनिक हेडलैम्प लिस्टिंग पर वैलिडेशन चलाता है, जो eBay पर कुछ नहीं छूता।

फिर चरण 9 की पाँच जाँचें:

python tools/ebay_api.py setup --dry-run              # "problems": [] means ready
python tools/ebay_api.py policies
python tools/ebay_api.py categories "flashlight"
python tools/ebay_api.py browse "flashlight" --limit 1
python tools/ebay_api.py reconcile

यह मेरे अपने खाते का असली setup --dry-run है, जिसे छोटा किया गया है और आईडी छिपाई गई हैं। इसे दोबारा चलाया गया है, इसलिए हर चुनाव में “kept from account.json” लिखा है। तुम्हें "problems": [] वाली पंक्ति देखनी है।

{
  "file": "<your folder>/account.json",
  "written": false,
  ...
  "choices": {
    "merchantLocationKey": "kept from account.json",
    "fulfillment": "kept from account.json",
    "payment": "kept from account.json",
    "return": "kept from account.json"
  },
  "problems": [],
  ...
  "next": "Ready: the Lister copies these IDs into offer.json; validate_payload.py checks them"
}

"written": false का मतलब है कि ड्राई रन ने जाँच की और फ़ाइल को वैसे ही छोड़ दिया।

तुम्हारा पहला सामान: कौन क्या करता है

तुम्हारा eBay एपीआई सेटअप पूरा हुआ। अब तुम एक फ़ोल्डर में तस्वीरें डालते हो और तुम्हारा एजेंट एक के बाद एक पाँच वर्कफ़्लो चलाता है। तुम्हारा काम कुछ जगहों पर नज़र डालने तक सिमट जाता है:

वर्कफ़्लो तुम क्या करते हो
Import तस्वीरें डालो। समूह जाँचो
Curator पहचान गलत हो तो सुधारो
Evaluator माँगे तो Terapeak से मिलती-जुलती बिकी चीज़ों के दाम पेस्ट करो
Lister कुछ नहीं। वह अप्रकाशित ऑफर पर रुक जाता है
Review listing-draft.md पढ़ो, फिर मंज़ूरी दो या ठुकराओ

Terapeak वाला काम हाथ से क्यों? टूल का Browse कमांड देखता है कि दूसरे विक्रेता अभी कितना माँग रहे हैं, यह नहीं कि खरीदारों ने असल में कितना दिया। माँगी गई कीमत ऊपरी सीमा है, बिक्री नहीं। इसलिए Evaluator तुमसे मिलती-जुलती बिकी चीज़ों के दाम माँगता है, और वे Seller Hub (विक्रेता केंद्र) के Terapeak में मिलते हैं।

यही वैले का काम है। वह हर कार को पार्किंग में करीने से एक अप्रकाशित ऑफर की तरह खड़ा करता है, और तुम्हारी कीमत सीमा से ऊपर की हर चीज़ पार्क होने से पहले ही तुम्हारा इंतज़ार करती है। जब तक तुम पर्ची नहीं देते, कुछ भी पार्किंग से बाहर नहीं जाता, और वह पर्ची है Review चरण में तुम्हारी हाँ।

GitHub से ebay-listing-agent लो, अपने एजेंट को ADOPTION-GUIDE.md दो और कहो “Production, Sandbox नहीं।” अगर eBay एपीआई सेटअप की इस गाइड का कोई लेबल अब eBay की स्क्रीन से मेल नहीं खाता, तो रेपो में इश्यू खोलो, ताकि अगले विक्रेता को उसे ढूँढ़ना न पड़े।

संसाधन


सदस्यता लें