Документация API

1. Общая информация

API Хабр Карьеры заточен под интеграцию с внешними CRM-системами по управлению кандидатами. Он отдаёт отклики на вакансии, размещённые на нашем сервисе, а вместе с откликами и полное резюме откликнувшегося кандидата, включая все контактные данные, которые не скрыты настройками приватности. Скорость отдачи данных мгновенная, никаких ограничений на объем данных нет.

API не предназначен для работы с базой резюме напрямую и для ведения переписки с кандидатами.

Пользование API бесплатное. Вы платите только за размещение вакансий на нашем сервисе, как и все другие клиенты.

  • API работает по протоколу HTTPS;
  • Авторизация осуществляется по протоколу OAuth2;
  • Все данные доступны только в формате JSON;
  • Базовый URL — https://career.habr.com/api

2. Начало работы

Для использования API нужно зарегистрировать приложение по адресу https://career.habr.com/profile/applications и настроить процесс авторизации по протоколу OAuth 2.0. Подробная документация по протоколу: RFC 6749.

Зарегистрированное приложение может запрашивать у пользователей сервиса разрешение доступа к их персональным данным, без получения и хранения их логина и пароля.

3. Процесс авторизации

В начале необходимо направить пользователя на страницу по адресу:

https://career.habr.com/integrations/oauth/authorize?
client_id={client_id}&
redirect_uri={redirect_uri}&
response_type=code

Обязательные параметры:

  • response_type=code — указание на способ получения авторизации;
  • client_id — идентификатор, полученный при создании приложения;
  • redirect_uri — uri для перенаправления пользователя после авторизации. Значение параметра валидируется, вам может потребоваться сделать urlencode значения данного параметра.

Если пользователь не авторизован на сайте, ему будет показана форма авторизации на сайте. После прохождения авторизации на сайте, пользователю будет выведена форма с запросом разрешения доступа вашего приложения к его персональным данным.

Если пользователь не разрешает доступ приложению, то он будет перенаправлен на указанный redirect_uri с параметром error=access_denied.

В случае разрешения прав, в редиректе будет указан временный authorization_code.

Если пользователь авторизован на сайте и доступ данному приложению уже был выдан ранее, то ответом сразу будет вышеописанный редирект с authorization_code.

После получения authorization_code приложению необходимо осуществить POST-запрос на адрес https://career.habr.com/integrations/oauth/token для обмена полученного authorization_code на access_token.

https://career.habr.com/integrations/oauth/token?
client_id={client_id}&
client_secret={client_secret}&
redirect_uri={redirect_uri}&
grant_type=authorization_code&
code={authorization_code}

Обязательные параметры:

  • grant_type=authorization_code
  • client_id, client_secret, redirect_uri - значения, полученные при регистрации приложения
  • code - значение authorization_code, полученное при перенаправлении пользователя

В ответ сервер пришлет JSON следующего вида:

{
"access_token": "ede87aba4312e7ff423e46745d6b17f04ff1a785603360b23e79b6b00f98a3af",
"token_type": "bearer",
"scope": "public",
"created_at": 1502376342
}

Если обмен authorization_code произвести не удалось, то сервер вернётся ответ со статусом 400 Bad Request и следующим содержанием:

{
"error": "invalid_request",
"error_description": "bad redirect url"
}

4. Сроки жизни токенов

Время жизни authorization_code - 10 минут, access_token в текущей реализации перманентен.

5. Использование access-токена

Полученный access_token необходимо передавать в качестве параметра при любом запросе к API, например:

https://career.habr.com/api/v1/integrations/vacancies?
access_token=ede87aba4312e7ff423e46745d6b17f04ff1a7856

6. Методы API

GET /v1/integrations/users/me

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит информацию о текущем пользователе:

{
"login": "ivanov",
"email": "ivanov@domain.com",
"first_name": "Иван",
"last_name": "Иванов",
"middle_name": "Иванович",
"birthday": "1990-08-15",
"avatar": "https://hsto.org/getpro/moikrug/uploads/company/348/850/484/logo/medium_cd41dce48c924bbcd134b5a8aac27be1.png",
"location": {
    "city": "Москва",
    "country": "Россия"
},
"gender": "male"
}

Описание полей:

Название поляТипОписание
loginstringЛогин пользователя
emailstringEmail пользователя
first_namestringИмя
last_namestringФамилия
middle_namestringОтчество
birthdaystringДень рождения
avatarstringСсылка на аватар пользователя
location/citystringГород
location/countrystringСтрана
genderstringПол

Оплаченные вакансии:

GET /v1/integrations/vacancies

Архивные вакансии:

GET /v1/integrations/vacancies/archived

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит массив вакансий.

Информация о конкретной вакансии:

GET /v1/integrations/vacancies/:id

Опциональные параметры:

page - номер страницы

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит объект:

{
  "vacancies": [
    {
      "id": 1,
      "title": "Вакансия1",
      "divisions": [],
      "specializations": [
        {
          "id": 13,
          "title": {
            "ru": "Инженер по обеспечению качества",
            "en": "Quality Assurance Engineer"
          }
        }
      ],
      "published_at": "2023-04-04T17:08:51.560+03:00",
      "url": "https://career.habr.com/vacancies/1",
      "qualification": null,
      "city": "",
      "marked": false,
      "company": {
        "name": "company2",
        "alias_name": "company2",
        "url": "https://career.habr.com/companies/company2",
        "logo_url": "https://hsto.org/getpro/moikrug/uploads/company/348/850/484/logo/medium_cd41dce48c924bbcd134b5a8aac27be1.png"},
      "employment_type": "",
      "salary": "",
      "remote": true,
      "expanded_salary": {
        "from": null,
        "to": null,
        "currency": null
      },
      "published": true,
      "paid": true,
      "skills": [
        {
          "value": 764,
          "alias": "konsultirovanie-po-podboru-personala",
          "title": "Консультирование по подбору персонала"
        }
      ],
      "locations": null,
      "description": "Условия работы",
      "bonuses": "Бонусы",
      "instructions": "Дополнительные инструкции",
      "team": "О компании и команде",
      "candidate": "Ожидания от кандидата"
    },
    {
      "id": 2,
      "title": "Вакансия1",
      "divisions": [],
      "specializations": [
        {
          "id": 13,
          "title": {
            "ru": "Инженер по обеспечению качества",
            "en": "Quality Assurance Engineer"
          }
        }
      ],
      "published_at": "2023-04-04T17:08:51.560+03:00",
      "url": "https://career.habr.com/vacancies/2",
      "qualification": {
        "title": {
          "ru":"Старший",
          "en":"Senior"
        }
      },
      "city": "Архангельск",
      "marked": false,
      "company": {
        "name": "company2",
        "alias_name": "company2",
        "url": "https://career.habr.com/companies/company2",
        "logo_url": "https://hsto.org/getpro/moikrug/uploads/company/348/850/484/logo/medium_cd41dce48c924bbcd134b5a8aac27be1.png"},
      "employment_type": "Полный рабочий день",
      "salary": "от 10 000 до 60 000 ₽",
      "remote": false,
      "expanded_salary": {
        "from": 100000,
        "to": 600000,
        "currency": rur
      },
      "published": true,
      "paid": true,
      "skills": [
        {
          "value": 764,
          "alias": "konsultirovanie-po-podboru-personala",
          "title": "Консультирование по подбору персонала"
        }
      ],
      "locations": [
        {
          "title": "Архангельск",
          "href": "/vacancies?city_id=5"
        }
      ],
      "description": "Условия работы",
      "bonuses": "Бонусы",
      "instructions": "Дополнительные инструкции",
      "team": "О компании и команде",
      "candidate": "Ожидания от кандидата"
    },
  ],
  "pagination": {
      "total": 2,
      "page": 0,
      "per": 20
  }
}

Описание полей вакансии:

Название поляТипОписание
idnumberID вакансии
titlestringЗаголовок вакансии
published_atstringДата публикации
urlstringСсылка на вакансию
locationstringРегион размещения вакансии
citystringГород размещения вакансии
markedbooleanПризнак того, что вакансия выделена
company/namestringНазвание компании
company/alias_namestringАлиас компании
company/urlstringСсылка на компанию
company/logo_urlstringСсылка на логотип компании
specializations/idnumberID специализации
specializations/title/rustringНазвание специализации на русском языке
specializations/title/enstringНазвание специализации на англ. языке
skill/valuenumberID навыка
skill/aliasstringАлиас навыка
skill/titlestringНазвание навыка
qualification/title/rustringНазвание квалификации на русском языке
qualification/title/enstringНазвание квалификации на англ. языке
employment_typestringТип трудоустройства
descriptionstringОписание вакансии
teamstringОписание вашей команды
candidatestringОжидания от кандидата
bonusesstringБонусы вакансии
instructionsstringДополнительные инструкции
salarystringВилка зарплат
publishedbooleanСтатус публикации
paidbooleanСтатус оплаты

GET /v1/integrations/companies/my

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит массив компаний пользователя:

{
  "companies": [
      {
          "name": "Компания 1",
          "alias_name": "company1"
      },
      {
          "name": "Компания 2",
          "alias_name": "company2"
      }
  ]
}

Описание полей компании пользователя:

Название поляТипОписание
namestringНазвание компании
alias_namestringАлиас компании

GET /v1/integrations/companies/{company_alias}/members

Обязательные параметры:

company_alias - алиас компании

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит массив кураторов вашей компании:

{
  "members": [
      {
          "login": "Логин 1"
      },
      {
          "login": "Логин 2"
      }
  ]
}

Описание полей куратора компании:

Название поляТипОписание
loginstringЛогин пользователя на Хабр Карьере

GET /v1/integrations/billing_accounts

Опциональные параметры:

alias_name - алиас компании (необязательно если компания одна)

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит массив счетов компании пользователя:

{
  "accounts": [
      {
          "id": "1"
          "name": "Старый лицевой счёт",
          "balance": {
            "value": 10000,
            "description": "10000 руб."
          }
      },
      {
          "id": "2"
          "name": "Счёт абонемента «Стандарт 200»",
          "balance": {
            "value": 200,
            "description": "200 вакансий типа «Стандарт»"
          }
      }
  ]
}

Описание полей счета компании пользователя:

Название поляТипОписание
idnumberИдентификатор счета
namestringНазвание счета
balanceobjectБаланс счета

GET /v1/integrations/vacancies/{vacancy_id}/responses

Обязательные параметры:

vacancy_id - идентификатор вакансии

Опциональные параметры:

page - номер страницы

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит массив откликов на вакансию:

{
  "responses": [
      {
          "id": 1,
          "vacancy_id": 19,
          "user": {
            "login": "someuser",
            "name": "Иван Иванов",
            "avatar": "https://hsto.org/getpro/moikrug/uploads/company/348/850/484/logo/medium_cd41dce48c924bbcd134b5a8aac27be1.png",
            "birthday": "1990-08-15",
            "specialization": "Дизайнер",
            "skills": [
                {
                    "title": "Разработка",
                    "alias_name": "coding"
                },
                {
                    "title": "Дизайн",
                    "alias_name": "design"
                }
            ],
            "experience_total": {
              "month": 15
            },
            "relocation": true,
            "remote": true,
            "compensation": {
              value: 100000,
              currency: 'rur'
            },
            "work_state": "ready",
            "age": 33,
            "location": {
              "city": "Москва",
              "country": "Россия"
            },
            "experiences": {
              "company": "Компания",
              "position": "Дизайнер",
              "period": "1 год и 3 месяца"
            },
            "educations": {
              "university": "Университет",
              "faculty": "Факультет",
              "start_date": "2013-05-01",
              "end_date": "2014-05-01"
            },
          },
          "body": "Отклик",
          "favorite": false,
          "archived": false,
          "created_at": "2017-08-11T00:17:47.827+03:00"
      }
  ],
  "pagination": {
      "total": 1,
      "page": 0,
      "per": 20
  }
}

Описание полей отклика:

Название поляТипОписание
idnumberID отклика
vacancy_idnumberID вакансии
bodystringСопроводительное письмо
favoritebooleanПризнак того, что отклик отмечен пользователем, разместившим вакансию
archivedbooleanПризнак того, что отклик удален пользователем, разместившим вакансию
created_atstringДата размещения отклика на вакансию
user
loginstringЛогин пользователя, оставившего отклик
namestringИмя пользователя
avatarstringСсылка на аватар пользователя
birthdaystringДень рождения
specializationstringСпециализация
skills/titlestringНазвание навыка пользователя
skills/alias_namestringАлиас навыка
experience_total/monthnumberОбщий стаж пользователя в месяцах
relocationstringПоказатель готовности пользователя к релокации
remotestringПоказатель готовности пользователя к удаленной работе
location/citystringГород проживания пользователя
location/countrystringСтрана проживания пользователя
compensation/valuestringОжидаемое вознаграждение
compensation/currencystringВалюта
work_statestringСтатус готовности к работе (not_search - не ищет работу | search - ищет работу | ready - рассматривает предложения)
agenumberВозраст
experiences/companystringКомпания последнего места работы
experiences/positionstringДолжность на последнем месте работы
experiences/periodstringПродолжительность работы на последнем месте
educations/universitystringПоследнее место обучения
educations/facultystringФакультет
educations/start_datestringНачало обучения
educations/end_datestringОкончания обучения

GET /v1/integrations/users/{login}

Обязательные параметры:

login - логин пользователя

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит информацию о пользователе:

{
  "login": "ivanov",
  "full_name": "Иван Иванов",
  "location": {
      "city": "Москва",
      "country": "Россия"
  },
  "relocation": true,
  "remote": false,
  "experience_total": 55,
  "age": 33,
  "salary": {
      "from": 50000,
      "currency": "rur"
  },
  "resume_headline": "Дизайнер",
  "contacts": {
      "emails": [
          {
              "type": "email",
              "value": "email@email.ru"
          }
      ],
      "phones": [
          {
              "type": "phone_work",
              "value": "+7 111-11-11"
          }
      ],
      "messengers": [
          {
              "type": "skype",
              "value": "ivan.ivanov"
          },
          {
              "type": "icq",
              "value": "4322435"
          },
          {
              "type": "telegram",
              "value": "someuser"
          }
      ],
      "sites": [
          {
              "type": "site",
              "value": "https://career.habr.com"
          }
      ]
  },
  "avatar": "https://hsto.org/getpro/moikrug/uploads/company/348/850/484/logo/medium_cd41dce48c924bbcd134b5a8aac27be1.png",
  "skills": [
      {
          "title": "Разработка",
          "alias_name": "coding"
      },
      {
          "title": "Дизайн",
          "alias_name": "design"
      }
  ],
  "birthday": "1987-08-11",
  "about": "<p>О себе</p>",
  "url": 'https://career.habr.com',
  "experiences": [
      {
          "start_date": "2013-05-01",
          "end_date": "2014-05-01",
          "company_name": "Компания",
          "position": "Дизайнер",
          "location": {
              "city": "Москва",
              "country": "Россия"
          },
          "description": "Должностные обязанности"
      }
  ],
  "additional_educations": [
      {
        "school_name": "Яндекс.Практикум",
        "courses": [
          {
            "title": "web",
            "start_date": 2013-05-01,
            "end_date": 2014-05-01,
            "skills": [
              {
                "title": "HTML",
                "alias_name": "html"
              }
            ],
            "description": "Пройденная практика и достижения",
            "has_certificate": false}
          ]
      }
  ],
  "university_educations": [
      {
          "start_date": "2013-05-01",
          "end_date": "2014-05-01",
          "university_name": "Университет",
          "faculty_name": "Факультет",
          "location": {
              "city": "Москва",
              "country": "Россия"
          },
          "description": "Учебная специализация и достижения"
      }
  ],
  "college_educations": [
      {
          "start_date": "2013-05-01",
          "end_date": "2014-05-01",
          "college_name": "СУЗ",
          "faculty": "Факультет",
          "location": {
              "city": "Москва",
              "country": "Россия"
          },
          "description": "Учебная специализация и достижения"
      }
  ],
  "opinions": [
    {
      "creator" : {
        "name": "otheruser",
        "resume_headline": "Специализация",
        "working_relationship": "руководитель"
      },
      "body": "Отзыв",
      "created_at": "2017-08-11T00:17:47.827+03:00"
    }
  ],
  "social_ratings": [
      {
          "kind": "github",
          "registered_at": "2010-02-25T02:21:44.000+03:00",
          "login": "somelogin",
          "stats": {
              "repos_count": 18,
              "contributions_count": 3194
          },
          "tags": [
              "Ruby",
              "Java",
              "ApacheConf",
              "JavaScript",
              "Go",
              "Erlang",
              "Shell",
              "Vim script"
          ]
      }
  ]
}

Описание полей:

Название поляТипОписание
loginstringЛогин пользователя
full_namestringПолное имя пользователя
location/citystringГород пользователя
location/countrystringСтрана пользователя
relocationbooleanПоказатель того, что пользователь готов к релокации
remotebooleanПоказатель того, что пользователь готов к удаленной работе
experience_totalnumberОбщий стаж пользователя (в месяцах)
agenumberВозраст пользователя (полных лет)
salary/fromnumberОжидаемое вознаграждение
salary/currencystringВалюта
resume_headlinestringСпециализация
contacts/contactsAvailablestringФлаг, показывающий возможно ли открытие контактов с помощью метода Открытие контактов пользователя
contacts/emails/type
contacts/phones/type
contacts/messengers/type
contacts/sites/type
stringТип контакта
contacts/emails/value
contacts/phones/value
contacts/messengers/value
contacts/sites/value
stringКонтакт пользователя
Контакты отдаются только в случае, если они открыты для компании. Для открытия контактов используется метод Открытие контактов пользователя
contacts/meta/errorstringТекст ошибки при недоступности контактов
avatarstringСсылка на аватар пользователя
skills/titlestringНазвание навыка пользователя
skills/alias_namestringАлиас навыка
birthdaystringДень рождения пользователя
aboutstringО себе
urlstringСсылка на сайт пользователя
experiences
start_datestringДата начала работы в компании
end_datestringДата окончания работы в компании (Значение этого параметра равное null означает, что пользователь работает в компании по настоящее время)
company_namestringНазвание компании
positionstringДолжность
location/citystringГород
location/countrystringСтрана
descriptionstringДолжностные обязанности и достижения
additional_educations
school_namestringНазвание образовательной платформы
courses/start_datestringДата начала прохождения курса
courses/end_datestringДата окончания прохождения курса
courses/titlestringНазвание курса
courses/descriptionstringПройденная практика и достижения
courses/has_certificatebooleanНаличие диплома о прохождении курса
courses/skills/titlestringНазвание навыка
courses/skills/alias_namestringАлиас навыка
university_educations
start_datestringДата начала обучения в высшем учебном заведении
end_datestringДата окончания высшего учебного заведения
university_namestringНазвание высшего учебного заведения
faculty_namestringФакультет
location/citystringГород
location/countrystringСтрана
descriptionstringУчебные обязанности и достижения
college_educations
start_datestringДата начала обучения в среднем учебном заведении
end_datestringДата окончания среднего учебного заведения
college_namestringНазвание среднего учебного заведения
faculty_namestringФакультет
location/citystringГород
location/countrystringСтрана
descriptionstringУчебные обязанности и достижения
opinions
creator/namestringЛогин пользователя, оставившего отзыв
creator/resume_headlinestringСпециализация пользователя, оставившего отзыв
creator/working_relationshipstringУровень отношений с пользователем, оставившим отзыв
bodystringСодержание отзыва
created_atstringДата создания отзыва
social_ratings
kindstringТип социальной сети
registered_atstringДата регистрации в социальной сети
loginstringЛогин в социальной сети
stats/repos_countstringКоличество репозиториев (только для Github)
stats/contributions_countstringКоличество вкладов (только для Github)
stats/publications_countstringКоличество публикаций (для Хабра и Гиктаймс)
stats/comments_countstringКоличество комментариев (для Хабра и Гиктаймс)
stats/questions_countstringКоличество вопросов (для Хабр Q&A и Stackoverflow)
stats/answers_countstringКоличество ответов (для Хабр Q&A и Stackoverflow)
tagsstringСписок тегов, с которыми связан пользователь
urlstringСсылка на профиль пользователя в социальной сети

GET /v1/integrations/users/{login}/contacts

Важно: каждый запрос считается открытием контактов. Он спишется с лимита контактов компании так же, как и при открытии на сайте. Если отсутствует доступ к базе или закончился лимит, то открытие контактов не сработает. Подробнее о лимитах

Обязательные параметры:

login - логин пользователя

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит информацию о контактах пользователя:

{
  "contacts": {
      "emails": [
          {
              "type": "email",
              "value": "email@email.ru"
          }
      ],
      "phones": [
          {
              "type": "phone_work",
              "value": "+7 111-11-11"
          }
      ],
      "messengers": [
          {
              "type": "skype",
              "value": "ivan.ivanov"
          },
          {
              "type": "icq",
              "value": "4322435"
          },
          {
              "type": "telegram",
              "value": "someuser"
          }
      ],
      "sites": [
          {
              "type": "site",
              "value": "https://career.habr.com"
          }
      ]
  }
}

Описание полей:

Название поляТипОписание
contacts/emails/type
contacts/phones/type
contacts/messengers/type
contacts/sites/type
stringТип контакта
contacts/emails/value
contacts/phones/value
contacts/messengers/value
contacts/sites/value
stringКонтакт пользователя
contacts/meta/errorstringТекст ошибки при неуспешном открытии контактов

GET /v1/integrations/skills

Опциональные параметры:

term - поисковый запрос

page - номер страницы

per_page - количество записей на страницу

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит массив навыков:

{
  "skills": [
      {
          "title": "Ruby on Rails",
          "alias_name": "ruby-on-rails"
      },
      {
          "title": "Ruby",
          "alias_name": "ruby"
      }
  ]
}

Описание полей навыка:

Название поляТипОписание
titlestringНазвание навыка
alias_namestringАлиас

GET /v1/integrations/cities

Опциональные параметры:

term - поисковый запрос

page - номер страницы

per_page - количество записей на страницу

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит массив городов:

{
  "cities": [
      {
          "id": 1,
          "name": "Москва",
          "country_name": "Россия",
          "region_name": "Московская область",
          "alias_name": "moscow"
      }
  ]
}

Описание полей города:

Название поляТипОписание
idnumberID города
namestringНазвание города
country_namestringСтрана
region_namestringРегион
alias_namestringАлиас

POST /v1/integrations/vacancies

Параметры:

Название поляТипОписание
vacancy[company]stringАлиас компании пользователя, в которой будет размещена вакансия
vacancy[title] *stringНазвание вакансии (макс. 80 символов)
vacancy[salary_from] *numberВознаграждение от
vacancy[salary_to]numberВознаграждение до
vacancy[currency] *stringВалюта (rur|usd|eur|uah|kzt)
vacancy[city_id]numberID города
vacancy[remote]numberУдаленная работа (0 - работа в офисе | 1 - удаленная работа)
vacancy[employment_type]stringТип занятости (full_time - полная занятость | part_time - частичная занятость)
vacancy[description] *stringОписание вакансии (текст или HTML)
vacancy[team] *stringОписание команды (текст или HTML)
vacancy[candidate] *stringОжидания от кандидата (текст или HTML)
vacancy[bonuses]stringБонусы вакансии (текст или HTML)
vacancy[instructions]stringДополнительные инструкции (текст или HTML)
vacancy[salary_qualification_id]numberID квалификации
vacancy[team] *stringО компании и команде (текст или HTML)
vacancy[candidate] *stringОжидания от кандидата (текст или HTML)
vacancy[skills] *stringНавыки (от 1 до 10, список алиасов через запятую)
vacancy[specialization_ids] *stringID специализации (не более 1)
vacancy[members] *stringСписок логинов или емейлов кураторов вакансии (через запятую)
accountnumberID счета, с которого должна произойти оплата (если не указан, счет будет выбран автоматически)
placement_typenumber0 - размещение по типу «Стандарт»
1 - размещение по типу «Стандарт плюс»
(если не указан - вакансия будет размещена по типу «Стандарт»)
skip_placementnumber1 - не оплачивать вакансию после создания
если параметр не передавать, произойдет попытка оплаты вакансии

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит описание вакансии:

{
  "vacancy": {
      "id": 2,
      "title": "Вакансия1",
      "divisions": [],
      "specializations": [
        {
          "id": 13,
          "title": {
            "ru": "Инженер по обеспечению качества",
            "en": "Quality Assurance Engineer"
          }
        }
      ],
      "published_at": "2023-04-04T17:08:51.560+03:00",
      "url": "https://career.habr.com/vacancies/2",
      "qualification": {
        "title": {
          "ru":"Старший",
          "en":"Senior"
        }
      },
      "city": "Архангельск",
      "marked": false,
      "company": {
        "name": "company2",
        "alias_name": "company2",
        "url": "https://career.habr.com/companies/company2",
        "logo_url": "https://hsto.org/getpro/moikrug/uploads/company/348/850/484/logo/medium_cd41dce48c924bbcd134b5a8aac27be1.png"},
      "employment_type": "Полный рабочий день",
      "salary": "от 10 000 до 60 000 ₽",
      "remote": false,
      "expanded_salary": {
        "from": 100000,
        "to": 600000,
        "currency": rur
      },
      "published": true,
      "paid": true,
      "skills": [
        {
          "value": 764,
          "alias": "konsultirovanie-po-podboru-personala",
          "title": "Консультирование по подбору персонала"
        }
      ],
      "locations": [
        {
          "title": "Архангельск",
          "href": "/vacancies?city_id=5"
        }
      ],
      "description": "Условия работы",
      "bonuses": "Бонусы",
      "instructions": "Дополнительные инструкции",
      "team": "О компании и команде",
      "candidate": "Ожидания от кандидата"
    },
  "result": {
      "message": "Вакансия размещена",
      "status": 200
  }
}

В поле result содержится информация о статусе размещения вакансии:

СтатусОписание
200Вакансия успешно размещена
400Некорректно заполнены поля вакансии
401На балансе компании недостаточно средств для размещения вакансии
403Вы не являетесь куратором ни в одной компании

PATCH /v1/integrations/vacancies/:id

Параметры:

Название поляТипОписание
vacancy[title] *stringНазвание вакансии (макс. 80 символов)
vacancy[salary_from] *numberВознаграждение от
vacancy[salary_to]numberВознаграждение до
vacancy[currency] *stringВалюта (rur|usd|eur|uah|kzt)
vacancy[remote]numberУдаленная работа (0 - работа в офисе | 1 - удаленная работа)
vacancy[employment_type]stringТип занятости (full_time - полная занятость | part_time - частичная занятость)
vacancy[description] *stringОписание вакансии (текст или HTML)
vacancy[bonuses]stringБонусы вакансии (текст или HTML)
vacancy[instructions]stringДополнительные инструкции (текст или HTML)
vacancy[team]stringО компании и команде (текст или HTML)
vacancy[candidate]stringОжидания от кандидата (текст или HTML)
vacancy[skills] *stringНавыки (от 1 до 10, список алиасов через запятую)
vacancy[specialization_ids] *stringID специализации (не более 1)
vacancy[members] *stringСписок логинов или емейлов кураторов вакансии (через запятую)

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит описание вакансии:

{
  "vacancy": {
      "id": 2,
      "title": "Вакансия1",
      "divisions": [],
      "specializations": [
        {
          "id": 13,
          "title": {
            "ru": "Инженер по обеспечению качества",
            "en": "Quality Assurance Engineer"
          }
        }
      ],
      "published_at": "2023-04-04T17:08:51.560+03:00",
      "url": "https://career.habr.com/vacancies/2",
      "qualification": {
        "title": {
          "ru":"Старший",
          "en":"Senior"
        }
      },
      "city": "Архангельск",
      "marked": false,
      "company": {
        "name": "company2",
        "alias_name": "company2",
        "url": "https://career.habr.com/companies/company2",
        "logo_url": "https://hsto.org/getpro/moikrug/uploads/company/348/850/484/logo/medium_cd41dce48c924bbcd134b5a8aac27be1.png"},
      "employment_type": "Полный рабочий день",
      "salary": "от 10 000 до 60 000 ₽",
      "remote": false,
      "expanded_salary": {
        "from": 100000,
        "to": 600000,
        "currency": rur
      },
      "published": true,
      "paid": true,
      "skills": [
        {
          "value": 764,
          "alias": "konsultirovanie-po-podboru-personala",
          "title": "Консультирование по подбору персонала"
        }
      ],
      "locations": [
        {
          "title": "Архангельск",
          "href": "/vacancies?city_id=5"
        }
      ],
      "description": "Условия работы",
      "bonuses": "Бонусы",
      "instructions": "Дополнительные инструкции",
      "team": "О компании и команде",
      "candidate": "Ожидания от кандидата"
    },
  "result": {
      "message": "Вакансия размещена",
      "status": 200
  }
}

В поле result содержится информация о статусе размещения вакансии:

СтатусОписание
200Вакансия успешно обновлена
400Некорректно заполнены поля вакансии
403Вакансия с таким ID не найдена

PUT /v1/integrations/vacancies/:id/pay

Параметры:

Название поляТипОписание
accountnumberID счета, с которого должна произойти оплата (если не указан, счет будет выбран автоматически)
placement_typenumber0 - размещение по типу «Стандарт»
1 - размещение по типу «Стандарт плюс»
(если не указан - вакансия будет размещена по типу «Стандарт»)

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит описание вакансии:

{
  "vacancy": {
    "id": 2,
    "title": "Вакансия1",
    "divisions": [],
    "specializations": [
      {
        "id": 13,
        "title": {
          "ru": "Инженер по обеспечению качества",
          "en": "Quality Assurance Engineer"
        }
      }
    ],
    "published_at": "2023-04-04T17:08:51.560+03:00",
    "url": "https://career.habr.com/vacancies/2",
    "qualification": {
      "title": {
        "ru":"Старший",
        "en":"Senior"
      }
    },
    "city": "Архангельск",
    "marked": false,
    "company": {
      "name": "company2",
      "alias_name": "company2",
      "url": "https://career.habr.com/companies/company2",
      "logo_url": "https://hsto.org/getpro/moikrug/uploads/company/348/850/484/logo/medium_cd41dce48c924bbcd134b5a8aac27be1.png"},
    "employment_type": "Полный рабочий день",
    "salary": "от 10 000 до 60 000 ₽",
    "remote": false,
    "expanded_salary": {
      "from": 100000,
      "to": 600000,
      "currency": rur
    },
    "published": true,
    "paid": true,
    "skills": [
      {
        "value": 764,
        "alias": "konsultirovanie-po-podboru-personala",
        "title": "Консультирование по подбору персонала"
      }
    ],
    "locations": [
      {
        "title": "Архангельск",
        "href": "/vacancies?city_id=5"
      }
    ],
    "description": "Условия работы",
    "bonuses": "Бонусы",
    "instructions": "Дополнительные инструкции",
    "team": "О компании и команде",
    "candidate": "Ожидания от кандидата"
  },
  "result": {
      "message": "Вакансия размещена",
      "status": 200
  }
}

В поле result содержится информация о статусе размещения вакансии:

СтатусОписание
200Вакансия размещена
401Недостаточно денег на балансе компании
403Вакансия с таким ID не найдена
405Вакансия уже оплачена

PUT /v1/integrations/vacancies/:id/toggle_published_state

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит описание вакансии:

{
  "vacancy": {
    "id": 2,
    "title": "Вакансия1",
    "divisions": [],
    "specializations": [
      {
        "id": 13,
        "title": {
          "ru": "Инженер по обеспечению качества",
          "en": "Quality Assurance Engineer"
        }
      }
    ],
    "published_at": "2023-04-04T17:08:51.560+03:00",
    "url": "https://career.habr.com/vacancies/2",
    "qualification": {
      "title": {
        "ru":"Старший",
        "en":"Senior"
      }
    },
    "city": "Архангельск",
    "marked": false,
    "company": {
      "name": "company2",
      "alias_name": "company2",
      "url": "https://career.habr.com/companies/company2",
      "logo_url": "https://hsto.org/getpro/moikrug/uploads/company/348/850/484/logo/medium_cd41dce48c924bbcd134b5a8aac27be1.png"},
    "employment_type": "Полный рабочий день",
    "salary": "от 10 000 до 60 000 ₽",
    "remote": false,
    "expanded_salary": {
      "from": 100000,
      "to": 600000,
      "currency": rur
    },
    "published": true,
    "paid": true,
    "skills": [
      {
        "value": 764,
        "alias": "konsultirovanie-po-podboru-personala",
        "title": "Консультирование по подбору персонала"
      }
    ],
    "locations": [
      {
        "title": "Архангельск",
        "href": "/vacancies?city_id=5"
      }
    ],
    "description": "Условия работы",
    "bonuses": "Бонусы",
    "instructions": "Дополнительные инструкции",
    "team": "О компании и команде",
    "candidate": "Ожидания от кандидата"
  },
  "result": {
      "published": false,
      "status": 200
  }
}

В поле result содержится информация о статусе размещения вакансии:

СтатусОписание
200Вакансия опубликована / скрыта в черновики
403Вакансия с таким ID не найдена

PUT /v1/integrations/vacancies/:id/responses/:response_id/destroy

Обязательные параметры:

id - ID вакансии

response_id - ID отклика на вакансию

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит описание отклика:

{
  "id": 1,
  "vacancy_id": 19,
  "user": {
    "login": "someuser",
    "name": "Иван Иванов",
    "avatar": "https://hsto.org/getpro/moikrug/uploads/company/348/850/484/logo/medium_cd41dce48c924bbcd134b5a8aac27be1.png",
    "birthday": "1990-08-15",
    "specialization": "Дизайнер",
    "skills": [
        {
            "title": "Разработка",
            "alias_name": "coding"
        },
        {
            "title": "Дизайн",
            "alias_name": "design"
        }
    ],
    "experience_total": "1 год и 3 месяца",
    "relocation": true,
    "remote": true,
    "compensation": {
      value: 100000,
      currency: 'rur'
    },
    "work_state": "ready",
    "age": 33,
    "location": {
      "city": "Москва",
      "country": "Россия"
    },
    "experiences": {
      "company": "Компания",
      "position": "Дизайнер",
      "period": "1 год и 3 месяца"
    },
    "educations": {
      "university": "Университет",
      "faculty": "Факультет",
      "start_date": "2013-05-01",
      "end_date": "2014-05-01"
    },
  },
  "body": "Отклик",
  "favorite": false,
  "archived": false,
  "created_at": "2017-08-11T00:17:47.827+03:00"
}

В поле result содержится информация о статусе операции:

СтатусОписание
200Отклик успешно удален
403Вакансия с таким ID не найдена
403Отклик с таким ID не найден

GET /v1/integrations/specializations

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит массив специализаций:

{ "groups":
  [{
      "id": 1,
      "title": {
          "ru": "Разработка программного обеспечения",
          "en": "Software Development"
      },
      "specializations": [
          {
              "id": 2,
              "title": {
                  "ru": "Бэкенд разработчик",
                  "en": "Backend Web Developer"
              }
          },
          {
              "id": 3,
              "title": {
                  "ru": "Фронтенд разработчик",
                  "en": "Frontend Web Developer"
              }
          }
      ]
  },
  {
      "id": 2,
      "title": {
          "ru": "Контроль качества, тестирование",
          "en": "Quality Assurance"
      },
      "specializations": [
          {
              "id": 10,
              "title": {
                  "ru": "Инженер по автомат. тестированию",
                  "en": "Test Automation Engineer"
              }
          },
          {
              "id": 11,
              "title": {
                  "ru": "Инженер по производительности",
                  "en": "Software Performance Engineer"
              }
          }
      ]
  }]
}

Описание полей специализации:

Название поляТипОписание
idnumberID группы специализаций
title/rustringНазвание группы специализаций на русском языке
title/enstringНазвание группы специализаций на англ. языке
specializationsarrayСписок специализаций
specializations/idnumberID специализации
specializations/title/rustringНазвание специализации на русском языке
specializations/title/enstringНазвание специализации на англ. языке

GET /v1/integrations/qualifications

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит массив квалификаций:

{ "qualifications": [
  {
      "id": 1,
      "title": {
          "ru": "Стажёр",
          "en": "Intern"
      }
  },
  {
      "id": 2,
      "title": {
          "ru": "Ассистент",
          "en": "Assistant"
      }
  }]
}

Описание полей квалификации:

Название поляТипОписание
idnumberID квалификации
title/rustringНазвание квалификации на русском языке
title/enstringНазвание квалификации на англ. языке

GET /v1/integrations/salaries

Важно:

Для доступа к данному разделу АПИ необходимо обратиться в техподдержку. Количество запросов к данному разделу ограничено одним запросом в минуту.

Параметры:

Название поляТипОписание
employment_typestringТип занятости (full_time - полная занятость | part_time - частичная занятость)
remotenumberУдаленная работа (0 - работа в офисе | 1 - удаленная работа)
sgnumberID группы специализаций
snumberID специализации
qnumberID квалификации
skills_liststringАлиасы навыков Хабр Карьеры через запятую, поддерживается до 3х навыков одновременно
company_aliasstringАлиас компании на Хабр Карьере
pnumberПериод, за который будет сформирована статистика. Формируется по правилу - две последние цифры года + полугодие, например 192 - 2 полугодие 2019 года. Первым доступным периодом является 2 полугодие 2017 года (172). Если параметр не указан или указан некорректно - будет показана статистика по текущему периоду. В случае, если необходимо получить статистику за все время, нужно передать значение 0.
citiesstringАлиасы городов Хабр Карьеры через запятую
exclude_citiesnumberЕсли необходимо исключить указанные города, нужно передать данный параметр со значением 1

Ответ:

Успешный ответ приходит с кодом 200 OK и содержит статистику по зарплатам:

{
  "dataAvailable": true,
  "averageSalary": 63333,
  "profilesAmount": 356,
  "min": 40000,
  "max": 100000,
  "percentile25": 45000,
  "percentile75": 75000,
  "href": "http://career.habr.com/salaries?p=192",
  "bars": {
      "labels": [
          "40000 - 45000",
          "45000 - 50000",
          "50000 - 55000",
          "55000 - 60000",
          "60000 - 65000",
          "65000 - 70000",
          "70000 - 75000",
          "75000 - 80000",
          "80000 - 85000",
          "85000 - 105000"
      ],
      "data": [
          33,
          33,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          33
      ],
      "median": 50000
  }
}

Описание полей:

Название поляТипОписание
dataAvailablebooleanПараметр, показывающий наличие данных
averageSalarynumberСредняя зарплата по выбранным фильтрам
profilesAmountnumberКоличество анкет
minnumberМинимальная зарплата
maxnumberМаксимальная зарплата
percentile25numberЗначение 25го процентиля (нижний квартиль)
percentile75numberЗначение 75го процентиля (верхний квартиль)
hrefstringСсылка на страницу зарплат с выбранными фильтрами
barsobjectДанные, необходимые для построения столбчатой диаграммы
bars/labelsarrayПодписи столбчатой диаграммы
bars/dataarrayЗначения столбчатой диаграммы
bars/mediannumberМедианное значение зарплаты