हमारी कस्टम भर्ती सेवा के बारे में एक छोटी कहानी और पोस्टिंग रिक्तियों के संदर्भ में हेडहंटर के साथ एकीकरण करते समय आने वाली समस्याओं के बारे में एक बड़ी कहानी। हेडहंटर क्यों? क्योंकि सुपरजॉब पर, सब कुछ कुछ सरल है (लेकिन बाद में उस पर अधिक)।

प्रागितिहास
मेरी टीम एक प्रमुख खुदरा श्रृंखला के लिए एक वेब-आधारित नौकरी प्लेसमेंट एप्लिकेशन विकसित कर रही है। क्रियाओं की श्रृंखला इस प्रकार निर्मित होती है:
- व्यवसाय बुनियादी रिक्ति टेम्पलेट्स (आवश्यकताओं, जिम्मेदारियों, शर्तों) को मंजूरी देता है, सभी स्टोर और शहरों के लिए सार्वभौमिक है;
- एचआर, मूल टेम्पलेट के आधार पर, प्रत्येक शहर के लिए मूल रिक्ति का खाका बनाते हैं, जो किसी विशेष पद के लिए वेतन सीमा को दर्शाता है (विभिन्न क्षेत्रों में समान पदों के लिए अलग-अलग वेतन हो सकता है);
- स्टोर निदेशक, रिक्ति टेम्पलेट के आधार पर, हमारे आवेदन के अंदर अपने स्टोर में एक रिक्ति खोलता है और इसके लिए एक लिंक प्राप्त करता है;
- उम्मीदवार, लिंक का अनुसरण करते हुए, प्रश्नावली के लिए जाता है, जहां वह संपर्क जानकारी दर्ज करता है और इसे स्टोर निदेशक को विचार के लिए भेजता है;
- ??????
- लाभ!
जब प्रश्नावली की एक कड़ी के साथ हेडहंटर पर एक रिक्ति प्रकाशित करने का प्रस्ताव था, मैंने संक्षेप में उनके एपीआई के लिए प्रलेखन का अध्ययन किया और "5 मिनट के लिए एक व्यवसाय है" की शैली में कुछ सोचा। और अब, ~ 1.5 महीने के बाद, मैं यह लेख लिख रहा हूं।
हेडहंटर एपीआई के साथ काम करना
इसलिए, हेडहंटर पर रिक्तियों को प्रकाशित करने का कार्य है, आपको इसकी आवश्यकता होगी:
वर्तमान एपीआई संस्करण
दुर्भाग्य से (या सौभाग्य से?), एपीआई का संस्करण नहीं है, इसलिए, सैद्धांतिक रूप से , किसी भी समय कुछ भी गिर सकता है। भले ही यह कभी नहीं हुआ हो और इसके लिए कोई शर्त न हो, फिर भी इसे अपडेट किया जाता है:
आप उत्तर और एपीआई मापदंडों में चाबियाँ पा सकते हैं जो प्रलेखन में वर्णित नहीं हैं। आमतौर पर इसका मतलब है कि वे पुराने संस्करणों के साथ संगतता के लिए छोड़ दिए गए हैं। उनके उपयोग की अनुशंसा नहीं की जाती है।
आवेदन पंजीकरण
यहां सब कुछ सरल है, लेकिन उतना सरल नहीं है जितना हम चाहेंगे। आपको एक फॉर्म भरने के लिए कहा जाएगा, जिसमें से एक फ़ील्ड में शब्दांकन होता है " एप्लिकेशन की सभी कार्यक्षमता का वर्णन करें और उपयोग किए गए एपीआई तरीकों का संकेत दें ।" कितना विस्तृत ???

पहली बार आवेदन को पंजीकृत करते समय, प्रपत्र को विस्तार से भरा गया था, सभी मार्गों का संकेत देते हुए, दूसरी बार केवल " खाली स्थान से सभी विधियों " वाक्यांश के लिए पर्याप्त धैर्य था। दोनों विकल्प पास हुए।
आवेदन लगभग दो सप्ताह के लिए स्वीकृत है। यह उन कारणों में से एक है जिन्हें हमारे एकीकरण ने थोड़ा सा खींच लिया है।
दूसरे आवेदन का पंजीकरण
एप्लिकेशन को पंजीकृत करते समय रीडायरेक्ट URI पैरामीटर पर ध्यान दें । हमारे अवलोकन के अनुसार, हेडहंटर तकनीकी सहायता द्वारा पुष्टि की गई है, यदि आपका परीक्षण सर्किट एक उपडोमेन (उदाहरण के लिए, test.example.com) पर स्थित है, तो आपको बिक्री के लिए एक आवेदन की आवश्यकता है (redirect_uri = example.com के साथ) और विकास के लिए (redirect_uri = test.example.com) )। और यह अनुमोदन के लिए इंतजार करने का एक और दो सप्ताह है।
नियमों को सीखना और स्पष्ट करना
जब हम परीक्षण मोड में कार्यात्मक और प्रकाशित बंद रिक्तियों को विकसित कर रहे थे, तो सब कुछ ठीक था। प्रकाशनों के प्रकाशन के लिए खुली रिक्तियों को हटाए जाने के बाद, रिक्तियों में उनके प्लेसमेंट के नियमों द्वारा निषेध के कारण लिंक गायब हो गए, लेकिन समर्थन के शब्दों से, लिंक स्वचालित रूप से उपयोगकर्ता को प्रतिक्रिया में भेजे जा सकते हैं (जो कि नियमों में वर्णित नहीं है)। यहां हमें अपनी लापरवाही से छोड़ दिया गया, हालांकि, मेरी राय में, रिक्ति पाठ प्राप्त करने के चरण में एक सत्यापनकर्ता डालना संभव था।
थोड़ा सा अंतर्ज्ञान
कभी-कभी त्रुटि ग्रंथ पूरी तरह से अप्रत्याशित और अतार्किक होते हैं। यहाँ हमारे साथ सामना किया गया है:
- not_enough_purchased_services(इस प्रकार की रिक्ति को प्रकाशित करने या अद्यतन करने के लिए खरीदी गई सेवाएँ पर्याप्त नहीं हैं) - जब रिक्त स्थान के साथ रिक्ति प्रकाशित करना। वास्तव में मुफ्त रिक्तियों के लिए क्या खरीदा जाना चाहिए, यह स्पष्ट नहीं है। समाधान: निर्दिष्ट- type: standard;
- quota_exceeded(इस प्रकार की रिक्ति को प्रकाशित करने के लिए प्रबंधक का कोटा समाप्त हो गया है) - प्रबंधक कोटा https://hh.ru/employer/settings/quotas के माध्यम से कॉन्फ़िगर किया गया है, पिछली बार जब हमने इसे देखा था जब टाइप फ़ील्ड में- standardबजाय- standartटाइप किया गया था;
- duplicate(समान- ignore_duplicatesपहले ही प्रकाशित हो चुकी है) जब- ignore_duplicatesध्वज का उपयोग किया- ignore_duplicates- तब होता है जब- nameऔर- areaफ़ील्ड समान होते हैं, चाहे डुप्लिकेट को अनदेखा करने के लिए ध्वज की उपस्थिति की परवाह किए बिना।
साथ ही
सुरक्षा के बारे में
इस तथ्य को ध्यान में रखें कि टोकन का जीवन दो सप्ताह है (यह उनका पसंदीदा समय है, जाहिरा तौर पर) और आप इसे समय से पहले ताज़ा नहीं कर सकते हैं, केवल razlogin द्वारा। सैद्धांतिक रूप से, इससे समस्याएं पैदा नहीं होनी चाहिए, हालांकि, अगर टोकन लीक हो जाता है, तो हमलावर के पास प्रतिबिंब, अत्याचार और ग्लोबिंग के लिए पर्याप्त समय हो सकता है।
इंटरफेस के बारे में
नौकरी विवरण एक एकल description फ़ील्ड है जो कई HTML टैग्स का समर्थन करता है, लेकिन साइट के माध्यम से प्रकाशित होने पर केवल स्वरूपण काम करता है। एपीआई द्वारा भेजा गया HTML सादे पाठ में बदल गया।
संदर्भ पुस्तकों के बारे में
संपूर्ण API की तरह, निर्देशिका किसी भी समय बदल सकती हैं, जैसा कि उनके विवरण में स्पष्ट रूप से कहा गया है:

त्रुटियां भी संभव हैं, उदाहरण के लिए, क्षेत्रों की निर्देशिका में अतिरिक्त स्थान मिले, जिसके लिए आप तैयार नहीं हो सकते हैं। मैंने इस विषय पर एक समीक्षा शुरू की , मुझे उम्मीद है कि वे इसे ठीक कर देंगे, लेकिन सावधान रहें।
परिणाम
एक त्वरित शुरुआत में आपको लगभग दो सप्ताह लगेंगे, संभवतः कई अनुप्रयोगों को पंजीकृत करने की आवश्यकता के साथ। सामान्य तौर पर, प्रलेखन और एपीआई स्वयं काफी समझदार होते हैं, अन्यथा आप यह जान सकते हैं कि तकनीकी सहायता से या उनके लिथुब पर समस्या के माध्यम से कैसे संवाद किया जाए।
मुझे यकीन है कि हमें हेडहंटर एपीआई से संबंधित सभी दिलचस्प चीजें नहीं मिलेंगी, क्योंकि हमने फिर से शुरू करने वाली शाखा को भी नहीं देखा है। इसलिए, यदि आपके पास बताने / पूरक / स्पष्ट करने के लिए कुछ है - टिप्पणियों में लिखें।
पुनश्च
सुपरजॉब एपीआई और हेडहंटर के साथ एक छोटी तुलना: habr.com/en/post/465663