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