2 Commits
Author SHA1 Message Date
kirill 7a50001f0b описание основного апи 2026-10-05 15:09:53 +06:00
kirill 56a357009c visibility_target_id 2026-06-22 14:41:40 +06:00
2 changed files with 736 additions and 0 deletions
+680
View File
@@ -0,0 +1,680 @@
openapi: 3.0.3
info:
title: HRBox API
version: 1.0.0
description: |
API для чтения подразделений, трудоустройств и пользователей.
Все методы требуют авторизованную сессию HRBox и соответствующее право доступа.
Ответ содержит массив `data` и метаданные пагинации `_meta`.
servers:
- url: /api
tags:
- name: department
description: Подразделения организационной структуры
- name: employment
description: Трудоустройства пользователей
- name: user
description: Пользователи
paths:
/department:
get:
tags: [department]
summary: Получить список подразделений
operationId: getDepartments
description: Возвращает активные подразделения и организации.
x-permissions:
- show-structure-page
parameters:
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
- $ref: '#/components/parameters/Sort'
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Expand'
- name: id
in: query
description: ID подразделений через запятую
style: form
explode: false
schema:
type: array
items:
type: string
format: uuid
- name: name
in: query
description: Поиск по названию
schema:
type: string
- name: parent_id
in: query
description: ID родительского подразделения
schema:
type: string
format: uuid
- name: chief_id
in: query
description: ID руководителя
schema:
type: string
format: uuid
- name: is_organization
in: query
description: Признак организации
schema:
type: boolean
- name: is_null_parent_id
in: query
description: Только корневые подразделения
schema:
type: boolean
- name: status_id
in: query
description: Статусы подразделений через запятую
style: form
explode: false
schema:
type: array
items:
type: integer
- name: chief_only
in: query
description: Только подразделения текущего руководителя
schema:
type: boolean
- name: for_boss
in: query
description: Только управляемые текущим пользователем поддеревья
schema:
type: boolean
responses:
'200':
description: Список подразделений
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/PaginatedResponse'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Department'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/employment:
get:
tags: [employment]
summary: Получить список трудоустройств
operationId: getEmployments
x-permissions:
- user-edit
parameters:
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
- $ref: '#/components/parameters/Sort'
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Expand'
- name: id
in: query
description: ID трудоустройства
schema:
type: string
format: uuid
- name: user_id
in: query
description: ID пользователя
schema:
type: string
format: uuid
- name: department_id
in: query
description: ID подразделения; учитывается его поддерево
schema:
type: string
format: uuid
- name: chief_id
in: query
description: ID трудоустройства руководителя
schema:
type: string
format: uuid
- name: position
in: query
description: Поиск по должности
schema:
type: string
- name: is_main
in: query
description: Только основное трудоустройство
schema:
type: boolean
- name: status_id
in: query
description: Статус трудоустройства
schema:
type: integer
- name: org_num
in: query
description: Табельные номера через запятую
style: form
explode: false
schema:
type: array
items:
type: string
- name: created_at
in: query
description: Дата или диапазон дат создания в формате `from|to`
schema:
type: string
- name: first_name
in: query
description: Поиск по имени
schema:
type: string
- name: last_name
in: query
description: Поиск по фамилии
schema:
type: string
- name: name
in: query
description: Поиск по имени и фамилии пользователя
schema:
type: string
- name: employment_date
in: query
description: Дата трудоустройства
schema:
type: string
format: date
- name: fired_date
in: query
description: Дата увольнения
schema:
type: string
format: date
- name: origin_id
in: query
description: Внешние ID через запятую
style: form
explode: false
schema:
type: array
items:
type: string
- name: origin_organization_id
in: query
description: Внешний ID организации
schema:
type: string
- name: reg_status_id
in: query
description: Регистрационные статусы пользователей через запятую
style: form
explode: false
schema:
type: array
items:
type: integer
- name: user_list_key
in: query
description: Ключ сохранённого списка пользователей
schema:
type: string
format: uuid
- name: chief_only
in: query
description: Текущий пользователь и его прямые подчинённые
schema:
type: boolean
- name: chief_only_all
in: query
description: Текущий пользователь и все его подчинённые
schema:
type: boolean
- name: multipleEmployment
in: query
description: Фильтр по наличию нескольких трудоустройств
schema:
type: boolean
- name: searchInAllSubDepartments
in: query
description: Искать во всех вложенных подразделениях
schema:
type: boolean
responses:
'200':
description: Список трудоустройств
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/PaginatedResponse'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Employment'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/user:
get:
tags: [user]
summary: Получить список пользователей
operationId: getUsers
x-permissions:
anyOf:
- user-list
- show-user-page
- user-invite
- authenticated user with reports
parameters:
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
- $ref: '#/components/parameters/Sort'
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Expand'
- name: searchQuery
in: query
description: Сквозной полнотекстовый поиск пользователей
schema:
type: string
- name: q
in: query
description: Поиск по имени
schema:
type: string
- name: id
in: query
description: ID пользователей через запятую
style: form
explode: false
schema:
type: array
items:
type: string
format: uuid
- name: not_id
in: query
description: Исключить пользователя по ID
schema:
type: string
format: uuid
- name: email
in: query
description: Поиск по электронной почте
schema:
type: string
- name: phone_auth
in: query
description: Поиск по телефону авторизации
schema:
type: string
- name: name
in: query
description: Поиск по имени, фамилии и отчеству
schema:
type: string
- name: first_name
in: query
description: Поиск по имени
schema:
type: string
- name: middle_name
in: query
description: Поиск по отчеству
schema:
type: string
- name: last_name
in: query
description: Поиск по фамилии
schema:
type: string
- name: department_id
in: query
description: ID подразделения; учитывается его поддерево
schema:
type: string
format: uuid
- name: chief_id
in: query
description: ID руководителя
schema:
type: string
format: uuid
- name: position
in: query
description: Поиск по должности
schema:
type: string
- name: is_external
in: query
description: Признак внешнего пользователя
schema:
type: boolean
- name: reg_status_id
in: query
description: Регистрационные статусы через запятую
style: form
explode: false
schema:
type: array
items:
type: integer
- name: gender_id
in: query
description: Пол пользователя; несколько значений через запятую
style: form
explode: false
schema:
type: array
items:
type: integer
- name: duty_id
in: query
description: ID внутренней услуги
schema:
type: string
format: uuid
- name: birthday_date
in: query
description: Дата или диапазон дат рождения
schema:
type: string
- name: created_at
in: query
description: Дата или диапазон дат создания в формате `from|to`
schema:
type: string
- name: updated_at
in: query
description: Дата или диапазон дат изменения
schema:
type: string
- name: employment_date
in: query
description: Дата или диапазон дат трудоустройства
schema:
type: string
- name: is_boss
in: query
description: Признак руководителя
schema:
type: boolean
- name: group_id
in: query
description: ID группы пользователей
schema:
type: string
format: uuid
- name: status
in: query
description: ID персональных статусов через запятую
style: form
explode: false
schema:
type: array
items:
type: string
format: uuid
- name: survey_id
in: query
description: ID опроса
schema:
type: string
format: uuid
- name: survey_360_matrix_is_approved
in: query
description: Статус согласования матрицы 360
schema:
type: boolean
- name: company
in: query
description: Поиск по компании
schema:
type: string
- name: spec_id
in: query
description: ID профессиональной области
schema:
type: string
format: uuid
- name: chief_only
in: query
description: Текущий пользователь и его прямые подчинённые
schema:
type: boolean
- name: chief_only_all
in: query
description: Текущий пользователь и все его подчинённые
schema:
type: boolean
- name: user_list_key
in: query
description: Ключ сохранённого списка пользователей
schema:
type: string
format: uuid
- name: withoutEmployment
in: query
description: Только пользователи без трудоустройств
schema:
type: boolean
- name: searchInAllSubDepartments
in: query
description: Искать во всех вложенных подразделениях
schema:
type: boolean
responses:
'200':
description: Список пользователей
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/PaginatedResponse'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/User'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
components:
parameters:
Page:
name: page
in: query
description: Номер страницы, начиная с 1
schema:
type: integer
minimum: 1
default: 1
PerPage:
name: per-page
in: query
description: Количество элементов на странице
schema:
type: integer
minimum: 1
default: 20
Sort:
name: sort
in: query
description: Поля сортировки через запятую; префикс `-` задаёт сортировку по убыванию
schema:
type: string
Fields:
name: fields
in: query
description: Возвращаемые поля через запятую
schema:
type: string
Expand:
name: expand
in: query
description: Дополнительные связанные данные через запятую
schema:
type: string
responses:
Unauthorized:
description: Пользователь не авторизован
Forbidden:
description: Недостаточно прав
schemas:
PaginatedResponse:
type: object
required: [data, _meta]
properties:
data:
type: array
items: {}
_meta:
$ref: '#/components/schemas/PaginationMeta'
PaginationMeta:
type: object
required: [totalCount, pageCount, currentPage, perPage]
properties:
totalCount:
type: integer
example: 42
pageCount:
type: integer
example: 3
currentPage:
type: integer
example: 1
perPage:
type: integer
example: 20
Department:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
description:
type: string
nullable: true
parent_id:
type: string
format: uuid
nullable: true
chief_id:
type: string
format: uuid
nullable: true
is_organization:
type: boolean
status_id:
type: integer
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
Employment:
type: object
properties:
id:
type: string
format: uuid
user_id:
type: string
format: uuid
department_id:
type: string
format: uuid
nullable: true
chief_id:
type: string
format: uuid
nullable: true
position:
type: string
nullable: true
is_main:
type: boolean
employment_date:
type: string
format: date
nullable: true
fired_date:
type: string
format: date
nullable: true
status_id:
type: integer
org_num:
type: string
nullable: true
User:
type: object
properties:
id:
type: string
format: uuid
first_name:
type: string
middle_name:
type: string
nullable: true
last_name:
type: string
name:
type: string
birthday_date:
type: string
format: date
nullable: true
reg_status_id:
type: integer
gender_id:
type: integer
nullable: true
city_id:
type: string
format: uuid
nullable: true
company:
type: string
nullable: true
is_external:
type: boolean
photo_file_id:
type: string
format: uuid
nullable: true
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
+56
View File
@@ -2525,6 +2525,7 @@ paths:
- updBirthday - updBirthday
- updNewbies - updNewbies
- updBooks - updBooks
- updContent
- name: info - name: info
in: query in: query
description: > description: >
@@ -2537,6 +2538,21 @@ paths:
enum: enum:
- profileBrief - profileBrief
- notificationsBadge - notificationsBadge
- name: visibility_target_id
in: query
description: >
Content widgets visibility target filter. Used for `updContent` widget.
* `1` - Web
* `2` - Mobile app
* `3` - Everywhere
example: 2
schema:
type: integer
default: 1
enum:
- 1
- 2
- 3
responses: responses:
200: 200:
description: Returns all the dashboard data about requested widgets. In response object only requested info/widgets keys will be presented. If widget is not available for current user, this widget will not exists in response of will be null. description: Returns all the dashboard data about requested widgets. In response object only requested info/widgets keys will be presented. If widget is not available for current user, this widget will not exists in response of will be null.
@@ -2596,6 +2612,21 @@ paths:
updBooks: updBooks:
# description: Company feed - New books in library # description: Company feed - New books in library
$ref: '#/components/schemas/dashboardWidget' $ref: '#/components/schemas/dashboardWidget'
updContent:
description: Company feed - Content widgets
allOf:
- $ref: '#/components/schemas/dashboardWidget'
- type: object
properties:
items:
type: array
items:
allOf:
- $ref: '#/components/schemas/dashboardWidgetItem'
- type: object
properties:
data:
$ref: '#/components/schemas/dashboardContentWidgetItemData'
400: 400:
description: Invalid input description: Invalid input
401: 401:
@@ -9590,6 +9621,31 @@ components:
periodLengthText: periodLengthText:
type: integer type: integer
description: Продолжительность отпуска в днях description: Продолжительность отпуска в днях
dashboardContentWidgetItemData:
type: object
properties:
content:
type: string
description: Rendered content widget HTML.
example: '<a href="https://example.hrbox.io/article/1">Open article</a>'
visibility_target_id:
type: integer
description: Content widget visibility target.
enum:
- 1
- 2
- 3
example: 2
visibilityTargetName:
type: string
description: Human readable visibility target name.
enum:
- Веб
- Мобильное приложение
- Везде
example: Мобильное приложение
feedback: feedback:
type: object type: object
properties: properties: