Skip to main content

Заголовки запроса

Authorization
string
required
API токен сервисного пользователя в формате Bearer. Получите токен в панели администратора школы. Формат: Bearer YOUR_TOKEN.
Seller-Id
string
required
Уникальный идентификатор продавца в системе. Используется для разграничения доступа между разными продавцами.
School-Id
string
required
Уникальный идентификатор школы в системе. Определяет контекст выполнения операции.
Должности — это справочник наименований позиций сотрудников школы (например, «Backend Engineer»). Должности назначаются сотрудникам при найме и повышении и используются модулем персонала (staff) для описания структуры занятости.
Все эндпоинты модуля персонала доступны только для школ корпоративного сегмента (Corporate). Запрос от школы другого сегмента будет отклонён.

Требования к правам доступа

Чтение (list) требует права StaffView. Создание, обновление и удаление требуют права StaffManage. Во всех случаях необходима аутентификация по токену и принадлежность школы к сегменту Corporate.
Сервисный пользователь должен быть аутентифицирован по токену и иметь соответствующие права доступа к указанной школе.
Название должности уникально в рамках школы (уникальный индекс school + name). Попытка создать или переименовать должность в уже существующее название в этой же школе вернёт ошибку.

Список должностей

GET /saas/v2/staff/position/list
Требуется аутентификация и право StaffView.
Эндпоинт возвращает пагинированный список должностей. Параметры пагинации и фильтрации передаются как query-параметры.

Параметры

skip
integer
Количество пропускаемых записей (offset-пагинация). Минимум 0.
take
integer
Количество возвращаемых записей на странице. От 1 до 1000.
page
integer
Номер страницы (альтернатива skip). Минимум 1.
Поиск по названию должности. Максимум 50 символов.
createdAt
enum
Направление сортировки по дате создания. Возможные значения: ASC, DESC.

Ответ

payload
object
required
Пагинированный объект: items (массив должностей), page, count, pages, isFirst, isLast, next, prev.
curl --location 'https://api.exode.biz/saas/v2/staff/position/list?take=10&page=1&search=Backend' \
  --header 'Seller-Id: {{ sellerId }}' \
  --header 'School-Id: {{ schoolId }}' \
  --header 'Authorization: Bearer YOUR_TOKEN'
{
  "success": true,
  "code": 200,
  "payload": {
    "page": 1,
    "count": 2,
    "pages": 1,
    "isFirst": true,
    "isLast": true,
    "items": [
      {
        "id": 4,
        "createdAt": "2026-07-02T11:15:47.216Z",
        "updatedAt": "2026-07-02T11:15:47.260Z",
        "archivedAt": null,
        "schoolId": 198,
        "name": "Staff Backend Engineer"
      },
      {
        "id": 3,
        "createdAt": "2026-07-02T11:15:47.207Z",
        "updatedAt": "2026-07-02T11:15:47.207Z",
        "archivedAt": null,
        "schoolId": 198,
        "name": "Backend Engineer"
      }
    ],
    "next": {
      "skip": 0,
      "take": 10,
      "page": 1
    },
    "prev": {
      "skip": 0,
      "take": 10,
      "page": 1
    }
  }
}

Создание должности

POST /saas/v2/staff/position/create
Требуется аутентификация и право StaffManage.

Параметры запроса

name
string
required
Название должности. От 1 до 100 символов. Пробелы в начале и конце обрезаются автоматически. Должно быть уникальным в рамках школы.
curl --location 'https://api.exode.biz/saas/v2/staff/position/create' \
  --header 'Seller-Id: {{ sellerId }}' \
  --header 'School-Id: {{ schoolId }}' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_TOKEN' \
  --data-raw '{
    "name": "Backend Engineer"
  }'
{
  "success": true,
  "code": 201,
  "payload": {
    "id": 3,
    "createdAt": "2026-07-02T11:15:47.207Z",
    "updatedAt": "2026-07-02T11:15:47.207Z",
    "archivedAt": null,
    "schoolId": 198,
    "name": "Backend Engineer"
  }
}

Обновление должности

PUT /saas/v2/staff/position/{positionId}/update
Требуется аутентификация и право StaffManage.

Параметры

positionId
integer
required
ID обновляемой должности в рамках школы.
name
string
Новое название должности. От 1 до 100 символов. Пробелы в начале и конце обрезаются автоматически. Должно быть уникальным в рамках школы.
curl --location --request PUT 'https://api.exode.biz/saas/v2/staff/position/4/update' \
  --header 'Seller-Id: {{ sellerId }}' \
  --header 'School-Id: {{ schoolId }}' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_TOKEN' \
  --data-raw '{
    "name": "Staff Backend Engineer"
  }'
{
  "success": true,
  "code": 200,
  "payload": {
    "id": 4,
    "createdAt": "2026-07-02T11:15:47.216Z",
    "updatedAt": "2026-07-02T11:15:47.260Z",
    "archivedAt": null,
    "schoolId": 198,
    "name": "Staff Backend Engineer"
  }
}

Удаление должности

DELETE /saas/v2/staff/position/{positionId}/delete
Требуется аутентификация и право StaffManage.
Должность нельзя удалить, если на ней есть активные сотрудники. Сначала переведите сотрудников на другую должность или уволите их.

Параметры

positionId
integer
required
ID удаляемой должности в рамках школы.

Ответ

deleted
boolean
required
Флаг успешного удаления должности.
curl --location --request DELETE 'https://api.exode.biz/saas/v2/staff/position/4/delete' \
  --header 'Seller-Id: {{ sellerId }}' \
  --header 'School-Id: {{ schoolId }}' \
  --header 'Authorization: Bearer YOUR_TOKEN'
{
  "success": true,
  "code": 200,
  "payload": {
    "deleted": true
  }
}