# Оргструктура команды

> Подразделения, место каждого сотрудника и агента, фактические руководители и разрывы цепочки подчинения.

export default function Layout(props) {
  const { OpenAPIPage } = props.components ?? {};
  return (
    <>
      {props.children}
      ## Оргструктура команды

`GET /api/v1/security/org`

Подразделения, место каждого сотрудника и агента, фактические руководители и разрывы цепочки подчинения.

**Авторизация:** dpop или oauth2: `security.users:read`, `security.users:write`

**Ответы**

- `200` — Структура (`application/json`, OrgStructure)
  - `agents`: массив OrgAgent, обязательное — Агенты команды и их место в структуре
    - `agentId`: string (uuid), обязательное — Агент
    - `curatorUserId`: string (uuid), nullable, обязательное — Юрист-куратор, который надзирает за работой агента
    - `unitId`: string (uuid), nullable, обязательное — Подразделение, в котором работает агент
  - `headUserId`: string (uuid), nullable, обязательное — Руководитель команды: вершина структуры
  - `issues`: массив OrgIssue, обязательное — Разрывы цепочки подчинения и незаполненные места
    - `agentId`: string (uuid) — Агент
    - `kind`: "team_without_head" | "unit_without_head" | "head_inactive" | "member_without_unit" | "member_without_manager" | "agent_without_curator" | "agent_without_unit", обязательное — Что не так в структуре
    - `unitId`: string (uuid) — Подразделение
    - `userId`: string (uuid) — Сотрудник
  - `members`: массив OrgMember, обязательное — Сотрудники команды и их место в структуре
    - `deputyUserId`: string (uuid), nullable, обязательное — Заместитель: принимает решения по согласованиям, пока сотрудник отсутствует
    - `effectiveManagerId`: string (uuid), nullable, обязательное — Фактический руководитель: назначенный напрямую или руководитель подразделения выше по структуре
    - `managerUserId`: string (uuid), nullable, обязательное — Руководитель, назначенный напрямую; null — руководитель подразделения
    - `title`: string, nullable, обязательное — Должность
    - `unitId`: string (uuid), nullable, обязательное — Подразделение сотрудника
    - `userId`: string (uuid), обязательное — Сотрудник
  - `units`: массив OrgUnit, обязательное — Подразделения
    - `headUserId`: string (uuid), nullable, обязательное — Руководитель подразделения
    - `id`: string (uuid), обязательное — Идентификатор подразделения
    - `name`: string, обязательное — Название, например «Судебная практика»
    - `parentId`: string (uuid), nullable, обязательное — Вышестоящее подразделение; null — верхний уровень
    - `position`: integer, обязательное — Порядок среди подразделений одного уровня
- `401` — Токен отсутствует, недействителен или истёк (`application/problem+json`, ProblemDetails)
- `403` — Недостаточно прав или scope (`application/problem+json`, ProblemDetails)
- `429` — Превышен лимит запросов, повторите через Retry-After секунд (`application/problem+json`, ProblemDetails)

    </>
  );
}
