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