Skip to content

Position ​

INFO

Каждый ответ приходит в общем конверте — code, message, messages, status_code, time — а полезная нагрузка лежит в data. Таблицы ниже описывают содержимое data.

GET /position/get-by-id/{id} ​

Get position using its _id

Параметры пути

ПараметрТипОбязательноОписание
idstringДа

Тело запроса

Тело запроса не требуется.

Ответ

ПолеТипОписание
_idstring
namestring
created_atstring
updated_atstring
is_deletedboolean
completely_deletedboolean
sectionsobject[]
sections[]._idstring
sections[].is_deletedboolean
sections[].completely_deletedboolean
sections[].namestring
organizationsobject[]
organizations[]._idstring
organizations[].organization_idstring
organizations[].max_employee_countnumber
organizations[].is_availableboolean
json
{
  "code": 0,
  "message": "Success",
  "status_code": 200,
  "data": {
    "_id": "string",
    "name": "string",
    "created_at": "string",
    "updated_at": "string",
    "is_deleted": false,
    "completely_deleted": false,
    "sections": [
      {
        "_id": "string",
        "is_deleted": false,
        "completely_deleted": false,
        "name": "string"
      }
    ],
    "organizations": [
      {
        "_id": "string",
        "organization_id": "string",
        "max_employee_count": 0,
        "is_available": false
      }
    ]
  },
  "time": "2025-05-01T12:00:00Z"
}

POST /position/get-paging ​

Get positions by paging

Тело запроса

ПолеТипОбязательноОписание
pagenumberДаПо умолчанию: 1
limitnumberДаПо умолчанию: 20
searchstringНет
section_idstringНет
organization_idstringНет
accessed_organization_idsstring[]Нет
json
{
  "page": 1,
  "limit": 20,
  "search": "string",
  "section_id": "63f8b0c4e4b0d3a2f8e4b0c4",
  "organization_id": "63f8b0c4e4b0d3a2f8e4b0c4",
  "accessed_organization_ids": [
    "63f8b0c4e4b0d3a2f8e4b0c4"
  ]
}

Ответ

data.total — общее количество записей, data.data[] — записи текущей страницы. Таблица ниже описывает одну запись.

ПолеТипОписание
_idstring
namestring
created_atstring
updated_atstring
max_employee_countnumber
employee_countnumber
json
{
  "code": 0,
  "message": "Success",
  "status_code": 200,
  "data": {
    "total": 0,
    "data": [
      {
        "_id": "string",
        "name": "string",
        "created_at": "string",
        "updated_at": "string",
        "max_employee_count": 0,
        "employee_count": 0
      }
    ]
  },
  "time": "2025-05-01T12:00:00Z"
}

POST /position/create ​

Create an HR position. name, section_ids (at least one existing section) and organizations (at least one entry) are required. Returns the created position aggregated with its sections. Fails with 400 if the name already exists in the account, or if a referenced section or organization does not exist.

Тело запроса

ПолеТипОбязательноОписание
namestringДаPosition name (required, 3–100 characters). Must be unique within the account.
section_idsstring[]ДаSections (departments) this position belongs to (required, at least one). Every id must reference an existing, non-deleted section.
organizationsobject[]ДаPer-organization availability of the position (required, at least one).
organizations[].organization_idstringДаOrganization the position is opened in (required). Must exist.
organizations[].is_availablebooleanДаWhether the position is currently open for hiring in this organization (required). A position whose every organization entry is is_available=false is auto soft-deleted by the backend.
organizations[].max_employee_countnumberНетHeadcount cap for this organization. Defaults to 0 (uncapped) when omitted.
json
{
  "name": "Sales manager",
  "section_ids": [
    "63f8b0c4e4b0d3a2f8e4b0c4"
  ],
  "organizations": [
    {
      "organization_id": "63f8b0c4e4b0d3a2f8e4b0c4",
      "is_available": false,
      "max_employee_count": 0
    }
  ]
}

Ответ

Структура ответа совпадает с GET /position/get-by-id/{id}.

PUT /position/update/{id} ​

Update an HR position by ObjectId. name, section_ids and organizations are all required — this is a full replacement of those fields, not a patch. The organizations named in the payload are pulled and re-pushed; organizations not named keep their existing entry. Returns the updated position aggregated with its sections.

Параметры пути

ПараметрТипОбязательноОписание
idstringДаPosition ObjectId to update

Тело запроса

ПолеТипОбязательноОписание
namestringДаUpdated position name (required, 3–100 characters).
section_idsstring[]ДаSections (departments) this position belongs to (required, at least one). Every id must reference an existing, non-deleted section.
organizationsobject[]ДаFull replacement set of per-organization entries (required, at least one). The entries for the organizations named here are removed and re-added, so send every organization the position should remain open in — an organization left out keeps its previous entry untouched.
organizations[].organization_idstringДаOrganization the position is opened in (required). Must exist.
organizations[].is_availablebooleanДаWhether the position is currently open for hiring in this organization (required). A position whose every organization entry is is_available=false is auto soft-deleted by the backend.
organizations[].max_employee_countnumberНетHeadcount cap for this organization. Defaults to 0 (uncapped) when omitted.
json
{
  "name": "Sales manager",
  "section_ids": [
    "63f8b0c4e4b0d3a2f8e4b0c4"
  ],
  "organizations": [
    {
      "organization_id": "63f8b0c4e4b0d3a2f8e4b0c4",
      "is_available": false,
      "max_employee_count": 0
    }
  ]
}

Ответ

Структура ответа совпадает с GET /position/get-by-id/{id}.

DELETE /position/delete/{id} ​

Soft-delete an HR position by ObjectId (sets is_deleted=true). Fails with 400 when at least one employee still holds the position — the error payload lists the blocking employees. Deleting an already-deleted position is a no-op.

Параметры пути

ПараметрТипОбязательноОписание
idstringДаPosition ObjectId to delete

Тело запроса

Тело запроса не требуется.

Ответ

json
{
  "code": 0,
  "message": "Success",
  "status_code": 200,
  "data": "63f8b0c4e4b0d3a2f8e4b0c4",
  "time": "2025-05-01T12:00:00Z"
}

Эта страница сгенерирована из спецификации OpenAPI.

Bito 2.0 Integration API