---
title: "Завести пачку карточек сотрудников"
method: POST
path: "/api/v1/core/employees/batch"
tags: ["Core employees"]
---

# Завести пачку карточек сотрудников

`POST /api/v1/core/employees/batch`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/core/employees/batch`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Api-Key`
  - OAuth 2 (authorization code, authorization URL `https://erp.akeda.ru/oauth2/authorize`, token URL `https://erp.akeda.ru/oauth2/token`, scopes: `akeda:delegate`)
  - HTTP bearer

До 200 карточек «Команды» без доступа: кладовщики, монтажники и все, кому считают зарплату, но не нужен вход. Строка — то же тело, что у одиночного создания. Строки создаются независимо, ответ 200 называет исход каждой: created с карточкой, duplicate (та же почта выше в пачке или конфликт 409 одиночного создания — тело отказа в problem) или error с тем же кодом и текстом, что дал бы одиночный запрос. Реквизиты без права `core.employee_requisites:write` не сохраняются.

## Headers

- `X-Tenant` string, required

## Request body

- CoreEmployeeBatchInput
  - `rows` CoreEmployeeCreate[], required: Карточки в порядке отчёта; строка — то же тело, что у одиночного создания
    - union
      - object
        - `full_name` string, required
        - `first_name` string
        - `last_name` string
        - `middle_name` string
        - `position` string
        - `position_id` string, uuid, nullable: Legacy compatibility; prefer position
        - `company_id` string, uuid, nullable
        - `department` string
        - `department_id` string, uuid, nullable: Подразделение — элемент справочника departments; null — вне оргструктуры
        - `location` string
        - `phone` string
        - `email` string
        - `user_id` integer, nullable
        - `manager_employee_id` string, uuid, nullable: Не задаётся: руководителя вычисляет оргструктура. Новое значение отклоняется кодом core.employee.manager_derived, прежнее пропускается
        - `employed_at` string, date, nullable
        - `is_active` boolean
        - `notes` string
        - `inn` string: Применяется только с правом core.employee_requisites:write
        - `bank_bic` string: Применяется только с правом core.employee_requisites:write
        - `bank_account` string: Применяется только с правом core.employee_requisites:write
        - `allow_duplicate` boolean: Завести карточку, хотя в «Команде» уже есть действующая с той же почтой, телефоном или ИНН
        - `affiliation` 'own' | 'external' | 'guest': own — свой человек (умолчание), external — внешний участник, guest — гость-подрядчик. Внешнему и гостю нужна организация, иначе 400 core.employee.affiliation_invalid
        - `organization_contact_id` string, uuid, nullable: Контрагент-организация внешнего участника: юрлицо или ИП из контрагентов кабинета
      - object
        - `first_name` string, required
        - `full_name` string
        - `last_name` string
        - `middle_name` string
        - `position` string
        - `position_id` string, uuid, nullable: Legacy compatibility; prefer position
        - `company_id` string, uuid, nullable
        - `department` string
        - `department_id` string, uuid, nullable: Подразделение — элемент справочника departments; null — вне оргструктуры
        - `location` string
        - `phone` string
        - `email` string
        - `user_id` integer, nullable
        - `manager_employee_id` string, uuid, nullable: Не задаётся: руководителя вычисляет оргструктура. Новое значение отклоняется кодом core.employee.manager_derived, прежнее пропускается
        - `employed_at` string, date, nullable
        - `is_active` boolean
        - `notes` string
        - `inn` string: Применяется только с правом core.employee_requisites:write
        - `bank_bic` string: Применяется только с правом core.employee_requisites:write
        - `bank_account` string: Применяется только с правом core.employee_requisites:write
        - `allow_duplicate` boolean: Завести карточку, хотя в «Команде» уже есть действующая с той же почтой, телефоном или ИНН
        - `affiliation` 'own' | 'external' | 'guest': own — свой человек (умолчание), external — внешний участник, guest — гость-подрядчик. Внешнему и гостю нужна организация, иначе 400 core.employee.affiliation_invalid
        - `organization_contact_id` string, uuid, nullable: Контрагент-организация внешнего участника: юрлицо или ИП из контрагентов кабинета
      - object
        - `last_name` string, required
        - `full_name` string
        - `first_name` string
        - `middle_name` string
        - `position` string
        - `position_id` string, uuid, nullable: Legacy compatibility; prefer position
        - `company_id` string, uuid, nullable
        - `department` string
        - `department_id` string, uuid, nullable: Подразделение — элемент справочника departments; null — вне оргструктуры
        - `location` string
        - `phone` string
        - `email` string
        - `user_id` integer, nullable
        - `manager_employee_id` string, uuid, nullable: Не задаётся: руководителя вычисляет оргструктура. Новое значение отклоняется кодом core.employee.manager_derived, прежнее пропускается
        - `employed_at` string, date, nullable
        - `is_active` boolean
        - `notes` string
        - `inn` string: Применяется только с правом core.employee_requisites:write
        - `bank_bic` string: Применяется только с правом core.employee_requisites:write
        - `bank_account` string: Применяется только с правом core.employee_requisites:write
        - `allow_duplicate` boolean: Завести карточку, хотя в «Команде» уже есть действующая с той же почтой, телефоном или ИНН
        - `affiliation` 'own' | 'external' | 'guest': own — свой человек (умолчание), external — внешний участник, guest — гость-подрядчик. Внешнему и гостю нужна организация, иначе 400 core.employee.affiliation_invalid
        - `organization_contact_id` string, uuid, nullable: Контрагент-организация внешнего участника: юрлицо или ИП из контрагентов кабинета
      - object
        - `middle_name` string, required
        - `full_name` string
        - `first_name` string
        - `last_name` string
        - `position` string
        - `position_id` string, uuid, nullable: Legacy compatibility; prefer position
        - `company_id` string, uuid, nullable
        - `department` string
        - `department_id` string, uuid, nullable: Подразделение — элемент справочника departments; null — вне оргструктуры
        - `location` string
        - `phone` string
        - `email` string
        - `user_id` integer, nullable
        - `manager_employee_id` string, uuid, nullable: Не задаётся: руководителя вычисляет оргструктура. Новое значение отклоняется кодом core.employee.manager_derived, прежнее пропускается
        - `employed_at` string, date, nullable
        - `is_active` boolean
        - `notes` string
        - `inn` string: Применяется только с правом core.employee_requisites:write
        - `bank_bic` string: Применяется только с правом core.employee_requisites:write
        - `bank_account` string: Применяется только с правом core.employee_requisites:write
        - `allow_duplicate` boolean: Завести карточку, хотя в «Команде» уже есть действующая с той же почтой, телефоном или ИНН
        - `affiliation` 'own' | 'external' | 'guest': own — свой человек (умолчание), external — внешний участник, guest — гость-подрядчик. Внешнему и гостю нужна организация, иначе 400 core.employee.affiliation_invalid
        - `organization_contact_id` string, uuid, nullable: Контрагент-организация внешнего участника: юрлицо или ИП из контрагентов кабинета

## Response `200`

Отчёт по строкам

- CoreEmployeeBatchResult
  - `rows` CoreEmployeeBatchRow[], required
    - `index` integer, required: Номер строки в запросе с нуля
    - `status` 'created' | 'duplicate' | 'error', required: created — карточка заведена; duplicate — та же почта выше в пачке или конфликт одиночного создания; error — отказ
    - `employee` CoreEmployee
      - `id` string, uuid, required
      - `full_name` string, required
      - `first_name` string, required
      - `last_name` string, required
      - `middle_name` string, required
      - `position` string, required
      - `position_id` string, uuid, nullable, required
      - `position_label` string, required
      - `company_id` string, uuid, nullable, required
      - `company_name` string, required
      - `department` string, required
      - `location` string, required
      - `manager_employee_id` string, uuid, nullable, required: Руководитель из оргструктуры: руководитель подразделения сотрудника, а у самого руководителя — руководитель выше по дереву. Пересчитывается при любом изменении структуры
      - `manager_name` string, required
      - `phone` string, required: Пусто у чужой карточки без права core.employee_requisites:read
      - `email` string, required: Пусто у чужой карточки без права core.employee_requisites:read
      - `user_id` integer, nullable, required
      - `username` string, required
      - `role_name` string, required
      - `employed_at` string, required: Date or empty string
      - `is_active` boolean, required
      - `notes` string, required: Пусто у чужой карточки без права core.employee_requisites:read
      - `has_photo` boolean, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
      - `inn` string: ИНН для выплаты; пусто у чужой карточки без права core.employee_requisites:read
      - `bank_bic` string: БИК банка выплаты; пусто у чужой карточки без права core.employee_requisites:read
      - `bank_account` string: Счёт или карта выплаты; пусто у чужой карточки без права core.employee_requisites:read
      - `affiliation` 'own' | 'external' | 'guest', required: own — свой человек кабинета, external — внешний участник: интегратор, аутсорс; guest — гость-подрядчик: видит только задачи, чаты и папки, куда его позвали, места тарифа не занимает. Внешний и гость не стоят в оргструктуре и штате и руководителем не выбираются
      - `organization_contact_id` string, uuid, nullable, required: Контрагент-организация, от которой пришёл внешний участник
      - `organization_name` string, required: Название организации внешнего участника
    - `code` string: Машинный код отказа, если он есть
    - `detail` string: Текст отказа на языке запроса
    - `problem` object: Тело отказа целиком, как у одиночного запроса
  - `created` integer, required
  - `duplicates` integer, required
  - `failed` integer, required

## Other responses

- `400`: Некорректный запрос или нарушение бизнес-правила
- `401`: Сессия, ключ или кабинет не подтверждены
- `403`: Текущая роль не имеет требуемого права

---

[API](https://skmtc.dev/akeda/apis/akeda-erp-client-api.md) · [All operations](https://skmtc.dev/akeda/apis/akeda-erp-client-api/llms.txt) · [OpenAPI document](https://skmtc.dev/akeda/apis/akeda-erp-client-api/revisions/a99574d597cc?raw)
