Sebuah cerita pendek tentang layanan rekrutmen kustom kami dan sebuah cerita besar tentang masalah yang muncul ketika berintegrasi dengan HeadHunter dalam hal memposting lowongan. Mengapa HeadHunter? Karena pada Superjob, semuanya agak sederhana (tetapi lebih banyak tentang itu nanti).

Latar belakang
Tim saya sedang mengembangkan aplikasi penempatan kerja berbasis web untuk satu rantai ritel besar. Rantai tindakan dibangun dengan cara ini:
- bisnis menyetujui templat kekosongan dasar (persyaratan, tanggung jawab, kondisi), universal untuk semua toko dan kota;
- SDM, berdasarkan templat dasar, membuat templat lowongan kerja dasar untuk setiap kota, yang menunjukkan kisaran gaji untuk posisi tertentu (untuk jabatan yang sama di berbagai daerah mungkin ada gaji yang berbeda);
- direktur toko, berdasarkan templat lowongan, membuka lowongan di tokonya di dalam aplikasi kami dan menerima tautan ke sana;
- kandidat, mengikuti tautan, sampai ke kuesioner, di mana ia memasukkan informasi kontak dan mengirimkannya ke direktur toko untuk dipertimbangkan;
- ??????
- KEUNTUNGAN!
Ketika ada proposal untuk menerbitkan lowongan di HeadHunter dengan tautan ke kuesioner, saya secara singkat mempelajari dokumentasi untuk API mereka dan memikirkan sesuatu dengan gaya "ada bisnis selama 5 menit." Dan sekarang, setelah ~ 1,5 bulan, saya menulis artikel ini.
Bekerja dengan API HeadHunter
Jadi, ada tugas untuk mempublikasikan lowongan di HeadHunter, Anda perlu:
Versi API saat ini
Sayangnya (atau untungnya?), API tidak diversi, jadi, secara teoritis , apa pun bisa jatuh kapan saja. Meskipun ini belum pernah terjadi dan tidak ada prasyarat untuk ini, masih diperbarui:
Anda dapat menemukan kunci dalam jawaban dan parameter API yang tidak dijelaskan dalam dokumentasi. Biasanya ini berarti mereka dibiarkan kompatibel dengan versi yang lebih lama. Penggunaannya tidak dianjurkan.
Pendaftaran Aplikasi
Semuanya sederhana di sini, tetapi tidak sesederhana yang kita inginkan. Anda akan diminta untuk mengisi formulir di mana salah satu bidang berisi kata-kata " Jelaskan semua fungsi aplikasi dan tunjukkan metode API yang digunakan ." Seberapa detail ???

Saat mendaftar aplikasi untuk pertama kalinya, formulir itu diisi secara rinci, menunjukkan semua rute, kedua kalinya ada cukup kesabaran hanya untuk frasa " semua metode dari blok lowongan ". Kedua opsi berlalu.
Aplikasi disetujui selama sekitar dua minggu. Ini adalah salah satu alasan integrasi kami agak berlarut-larut.
Pendaftaran aplikasi kedua
Perhatikan parameter Redirect URI saat mendaftarkan aplikasi. Menurut pengamatan kami, dikonfirmasi oleh dukungan teknis HeadHunter, jika sirkuit pengujian Anda berada pada subdomain (misalnya, test.example.com), maka Anda memerlukan aplikasi untuk dijual (dengan redirect_uri = example.com) dan untuk pengembangan (dengan redirect_uri = test.example.com ) Dan ini dua minggu lagi menunggu persetujuan.
Mempelajari dan mengklarifikasi aturan
Sementara kami sedang mengembangkan lowongan tertutup yang fungsional dan diterbitkan dalam mode uji, semuanya baik-baik saja. Setelah meluncurkan lowongan terbuka untuk publikasi publikasi, tautan menghilang karena larangan oleh aturan penempatan mereka di lowongan, tetapi, dari kata-kata dukungan, tautan dapat secara otomatis dikirim kepada pengguna sebagai tanggapan (yang tidak dijelaskan dalam aturan). Di sini kami dikecewakan oleh kecerobohan kami sendiri, namun, menurut pendapat saya, adalah mungkin untuk menempatkan validator pada tahap menerima teks lowongan.
Sedikit intuisi
Terkadang teks kesalahan benar-benar tidak dapat diprediksi dan tidak logis. Inilah yang kita hadapi:
not_enough_purchased_services
(layanan yang dibeli untuk menerbitkan atau memperbarui jenis lowongan ini tidak cukup) - ketika menerbitkan lowongan dengan jenis ini gratis . Apa yang sebenarnya perlu dibeli untuk lowongan gratis tidak jelas. Solusi: sebutkan type: standard
;quota_exceeded
(kuota manajer untuk memublikasikan jenis lowongan ini telah berakhir) - kuota manajer dikonfigurasikan melalui https://hh.ru/employer/settings/quotas , terakhir kali kami melihatnya saat mengetik standart
alih-alih standard
di bidang type
;duplicate
(lowongan serupa telah diterbitkan) saat menggunakan flag ignore_duplicates
- terjadi ketika bidang name
dan area
sama, terlepas dari keberadaan flag untuk mengabaikan duplikat.
Juga
Tentang keamanan
Mempertimbangkan fakta bahwa kehidupan token adalah dua minggu (tampaknya ini waktu favorit mereka) dan Anda tidak dapat menyegarkannya terlebih dahulu, hanya dengan razlogin. Secara teoritis, ini seharusnya tidak menyebabkan masalah, namun, jika token bocor, maka penyerang mungkin punya cukup waktu untuk meditasi, kekejaman dan sombong.
Tentang antarmuka
Deskripsi pekerjaan adalah bidang description
tunggal yang mendukung beberapa tag HTML, tetapi pemformatan hanya berfungsi saat dipublikasikan melalui situs. HTML yang dikirim melalui API berubah menjadi teks biasa.
Tentang buku referensi
Seperti seluruh API, direktori dapat berubah kapan saja, seperti yang dinyatakan secara eksplisit dalam deskripsi mereka:

Kesalahan juga dimungkinkan, misalnya, di direktori wilayah ditemukan ruang berlebih, di mana Anda mungkin tidak siap. Saya memulai ulasan tentang topik ini, saya berharap mereka akan memperbaikinya, tetapi hati-hati.
Ringkasan
Mulai cepat akan memakan waktu sekitar dua minggu, mungkin dengan kebutuhan untuk mendaftarkan beberapa aplikasi. Secara umum, dokumentasi dan API itu sendiri cukup waras, jika tidak, Anda dapat mengetahui cara berkomunikasi dengan dukungan teknis atau melalui masalah pada github mereka.
Saya yakin kami tidak menemukan semua hal menarik terkait dengan HeadHunter API, karena kami bahkan tidak menyentuh cabang resume. Karena itu, jika Anda memiliki sesuatu untuk diceritakan / ditambahkan / diperjelas - tulis di komentar.
PS
API Superjob dan perbandingan kecil dengan HeadHunter: habr.com/en/post/465663