Skip to content

API Documentation

Москвин edited this page Jul 26, 2024 · 4 revisions

Описание API Вакансий

В данном разделе описано API для управления вакансиями. Модуль 'jobs/backend/api/routes.py'

Эндпоинты

  1. POST "/jobs/" - создать новую вакансию
  2. GET "/jobs/" - получить список вакансий
  3. GET "/jobs/{vacancy_id}" - получить одну конкретную вакансию
  4. GET "/locations/" - получить список местоположений

1.Создать новую вакансию

POST /jobs/

Входные параметры:

  • Reques body:
{
  "external_id": 0,
  "company": "string",
  "title": "string",
  "salary": "string",
  "address": "string",
  "requirements": "string",
  "responsibilities": "string",
  "description": "string"
}
  • external_id (integer): Внешний идентификатор вакансии
  • company (string): Название компании
  • title (string): Название вакансии
  • salary (string): Зарплата
  • address (string): Адрес места работы
  • requirements (string): Требования к кандидату
  • responsibilities (string): Обязанности кандидата
  • description (string): Описание вакансии

Возвращаемые данные:

  • 200 OK:
{
  "external_id": 0,
  "company": "string",
  "title": "string",
  "salary": "string",
  "address": "string",
  "requirements": "string",
  "responsibilities": "string",
  "description": "string"
}
  • 422 Validation Error:
{
  "detail": [
      {
          "loc": [
              "string"
          ],
          "msg": "string",
          "type": "string"
      }
  ]
}
  • 500 Internal Server Error:
{
  "detail": "Internal Server Error"
}

Пример запроса:

curl -X POST "http://127.0.0.1:8000/api/jobs/" -H "accept: application/json" -H "Content-Type: application/json" -d '{"external_id":0,"company":"string","title":"string","salary":"string","address":"string","requirements":"string","responsibilities":"string","description":"string"}'

2.Получить список вакансий

GET /jobs/

Входные параметры:

  • skip (integer): Смещение для пагинации. По умолчанию 0.
  • limit (integer): Лимит для пагинации. По умолчанию 10.
  • specialities (list[string]): Список специальностей для фильтрации.
  • internship (boolean): Фильтр по доступности стажировок.
  • remote (boolean): Фильтр по возможности удаленной работы.
  • location (list[string]): Список местоположений для фильтрации.

Возвращаемые данные:

  • 200 OK:
  • Response body
{
    "total_count": 3741,
    "data": [
        {
            "id": 1,
            "active": true,
            "company_name": "БОТ",
            "salary": "Не указана",
            "location": "Удалённо",
            "remote": true,
            "url": "https://t.me/valentinalvl",
            "description": "Удалённо (РФ). Компания разработчик программных продуктов и заказных решений.. Подробнее: https://telegra.ph/QA-Engineer--BFT-03-07",
            "external_id": "129700",
            "title": "Стажёр QA Engineer",
            "speciality": "qa",
            "internship": false
        },
        {
            "id": 2,
            "active": true,
            "company_name": "Груша",
            "salary": "Не указана",
            "location": "Удалённо",
            "remote": true,
            "url": "https://t.me/HR04dev",
            "description": "Привет! Мы – Груша, небольшой финтех-стартап, связанный с процессингом платежей за рубежом. мы делаем криптопроекты и криптопродукты. Нам важен каждый член нашей команды.",
            "external_id": "1",
            "title": "Frontend Developer",
            "speciality": "frontend",
            "internship": false
        }
    ]
}
...
  • Response headers
content-length: 30803 
content-type: application/json 
date: Fri,26 Jul 2024 08:45:54 GMT 
server: uvicorn 
  • 200 OK:
"string"
  • 422 Validation Error:
{
    "detail": [
        {
            "loc": [
                "string"
            ],
            "msg": "string",
            "type": "string"
        }
    ]
}

3.Получить одну конкретную вакансию

GET /jobs/{vacancy_id}

Входные параметры:

  • vacancy_id (integer): ID вакансии

Возвращаемые данные:

  • 200 OK:
{
  "external_id": 0,
  "company": "string",
  "title": "string",
  "salary": "string",
  "address": "string",
  "requirements": "string",
  "responsibilities": "string",
  "description": "string"
}
  • 404 Not Found:
{
  "detail": "Job not found"
}

Пример запроса:

curl -X GET "http://127.0.0.1:8000/api/jobs/1" -H "accept: application/json"

4.Получить список местоположений

GET /locations/

Входные параметры: None

Возвращаемые данные:

  • 200 OK:
{
    "total_count": 100,
    "data": [
        "Уфа, улица Генерала Горбатова, 2",
        "г. Краснодар, ул. им. Орджоникидзе/ул. Красноармейская, 46/32",
        "Томск, проспект Кирова, 51Ас15",
        "город Новосибирск, Окружная улица, 29в",
        "Оренбург, улица Марины Расковой, 10А",
        "Санкт-Петербург, Кушелевская дорога, 13к2",
        "Баку",
        "Курск, Хуторская улица, 2",
        "Москва, Кутузовский проспект, 36с23",
        "Москва, Микояновский проезд, 4Ас2",
        ...
    ]
}

Пример запроса:

curl -X GET "http://127.0.0.1:8000/api/locations/" -H "accept: application/json"

HTTP-статусы

  • 200 OK: Запрос выполнен успешно.
  • 404 Not Found: Ресурс не найден.
  • 422 Validation Error: Ошибка валидации данных.
  • 400 Bad Request: Неверный запрос.

Clone this wiki locally