जब आप पैनल को किसी बॉट, अपनी साइट या दूसरे पैनल से जोड़ते हैं, तो «API क्या है» वाला सामान्य विवरण बेकार हो जाता है - आपको कॉल की ठीक सूची, उनके पैरामीटर और जवाब के ढाँचे चाहिए। यह संदर्भ आम दस्तावेज़ों से अलग तरीक़े से बनाया गया है: असली अनुबंध हमने ग्यारह चालू पैनलों पर नापा और अपने कोर से मिलाकर देखा। नीचे सभी दस कॉल हैं, सेवा के प्रकार के हिसाब से ऑर्डर के फ़ील्ड, और वे तीन जगहें जहाँ इंटीग्रेशन सबसे ज़्यादा टूटते हैं।

नीचे की संदर्भिका बताती है कि क्या बुलाना है। इस बीच ख़ुद पैनल को क्या जाँचना चाहिए - मात्रा की सीमाएँ, एक ही लिंक पर दोहरे ऑर्डर, ग्राहक के अधिकार, अनुरोध बजट - इस पर API दुरुपयोग पर अलग लेख है: इन नियमों को ध्यान में रखे बिना लिखा इंटीग्रेशन उनसे प्रोडक्शन में ही टकराता है।

लगभग हर पैनल एक ही API क्यों बोलता है

व्यवहार में पूरा उद्योग एक ही प्रोटोकॉल बोलता है, जिसे आम तौर पर API v2 कहते हैं। यह ऐतिहासिक रूप से हुआ: एक इंजन ने प्रारूप तय किया और बाक़ी ने उसे कॉपी कर लिया, ताकि कहीं और लिखे रीसेलर क्लाइंट उनके साथ भी चलें। इंटीग्रेटर के लिए यह दुर्लभ सौभाग्य है - एक पैनल के लिए लिखा क्लाइंट लगभग बिना बदलाव दूसरे पर चल जाता है।

सब पर लागू ठीक चार नियम हैं:

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

सात action, दस कॉल

मानक में सात action हैं, पर उनमें चार बैच रूप में भी आते हैं - इससे समर्थन के लिए दस अलग कॉल बनती हैं:

इस सूची के बाहर जो कुछ है वह किसी एक पैनल का विस्तार है। हमारा, उदाहरण के लिए, order से एक अकेला cancel स्वीकार करता है और action=create को add का पर्याय मानता है - पर क्लाइंट ऐसी सुविधाओं के भरोसे कभी नहीं लिखा जाना चाहिए, क्योंकि अगले पैनल पर वे नहीं होंगी।

ऑर्डर के फ़ील्ड सेवा के प्रकार पर निर्भर हैं

पहले इंटीग्रेशन की सबसे बड़ी ग़लतफ़हमी यह है कि ऑर्डर एक लिंक और एक मात्रा है। यह सिर्फ़ आधार प्रकार है। services में type फ़ील्ड स्ट्रिंग नाम के रूप में आता है, और add का पूरा पैरामीटर सेट वही तय करता है:

दो तकनीकी बातें लगभग सबको गिरा देती हैं। सूचियाँ - कमेंट, कीवर्ड, यूज़रनेम, हैशटैग - JSON ऐरे के रूप में नहीं, बल्कि नई पंक्ति को विभाजक मानकर एक ही स्ट्रिंग के रूप में भेजी जाती हैं। और device तथा type_of_traffic के पीछे के संख्यात्मक मान services में कभी नहीं लौटते: वे मान आपको पैनल के दस्तावेज़ से पहले से पता होने चाहिए।

एक बात साफ़ मान लेने लायक़ है: प्रकारों की संख्या में छेद हैं। कम से कम छह नंबर इंजनों को पता हैं पर हमारे नापे किसी पैनल में नहीं दिखते। इसलिए «हम हर प्रकार सपोर्ट करते हैं» ऐसा वादा है जो कोई निभा नहीं सकता - लेने वाले पैनल के लिए सही रणनीति है अनजाने प्रकार पर फ़ील्ड का अंदाज़ा लगाने के बजाय साफ़ इनकार। प्रकारों का असल मतलब प्रोवाइडर की सेवा किस्में में खोला गया है।

वे तीन जगहें जहाँ इंटीग्रेशन टूटते हैं

ये तीनों लगभग किसी दस्तावेज़ सेट में नहीं हैं, और ठीक वही उन बग को जन्म देते हैं जो शुरुआत के हफ़्ते भर बाद सतह पर आते हैं।

रद्द करना भी इसी सूची का है: मानक में एक ऑर्डर वाला cancel नहीं है, सिर्फ़ बैच वाला। जो क्लाइंट ऑर्डर एक-एक करके रद्द करता है उसे भी एक तत्व की सूची भेजनी पड़ती है और बदले में ऐरे पार्स करना पड़ता है।

स्टेटस और त्रुटियाँ स्थिरांक नहीं, स्ट्रिंग हैं

ऑर्डर का स्टेटस पढ़े जा सकने वाले टेक्स्ट के रूप में आता है: Pending, In progress, Processing, Partial, Completed, Canceled, Fail, Error। refill के अपने मान हैं - Completed, Rejected और बीच का In progress - और अनजान refill नंबर पर Refill not found लौटता है।

इससे क्लाइंट के लिए चार नियम बनते हैं:

स्टेटस का ख़रीदार के लिए क्या मतलब है और हर स्थिति में पैनल उस पर क्या उधार है, यह SMM पैनल पर ऑर्डर स्टेटस में है; पहुँचाई गई मात्रा क्यों बहकर घट जाती है और refill उसका जवाब कैसे देता है, यह ड्रॉप और refill में।

प्रोडक्शन से पहले इंटीग्रेशन कैसे परखें

छह जाँचें, जो पहले असली ऑर्डर से पहले लगभग सब पकड़ लेती हैं:

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

निचोड़

API v2 सरल दिखता है - एक एंडपॉइंट, सात action - और ठीक इसीलिए इसे कम आँका जाता है। असली जटिलता तीन जगहों पर बैठी है: सेवा का प्रकार ऑर्डर के फ़ील्ड तय करता है, बैच जवाब का ढाँचा action पर निर्भर है, और refill अपनी अलग संख्या के नीचे रहता है। जो क्लाइंट इन तीनों का लिहाज़ करता है वह पैनलों के बीच लगभग बिना बदलाव चला जाता है; जो इन्हें चूक गया वह ऑर्डर चुपचाप खोता है।

अगर आपको API किसी और के पैनल का नहीं, अपने पैनल का चाहिए, तो यह सब बिना पैसे लगाए परखा जा सकता है: हमारे अपने कैटलॉग से गए ऑर्डर, चाहे जितने हों, कभी बिल में नहीं आते, और तीसरे पक्ष के प्रोवाइडर पर महीने के पहले 100 ऑर्डर मुफ़्त हैं। कुंजी और पूरा दस्तावेज़ तुरंत मिल जाते हैं, इसलिए पैनल का पहला ग्राहक आने से पहले ही आप क्लाइंट लिखकर दसों कॉल चला सकते हैं। वह सीमा कैसे गिनी जाती है, यह किराए का प्लान कैसे गिना जाता है में समझाया है।