Skip to content

Manager Time Tracker DTO

Описание сущностей и типов из src/dto/managerTimeTracker/.

Обогащено snapshot-данными бэкенд-DTO (19 из 44 типов сопоставлено, snapshot от 2026-05-05T13:21:51.699Z).

Содержание


AbsenceEntryDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/AbsenceEntry/AbsenceEntryDto.cs (feature.managertimetrackerservice).

Поля

ПолеТип (TS)ОбязательноеОписаниеТип (C#)
idnumberдаint
userIdnumberдаint
typeAbsenceTypeDtoдаAbsenceTypeDto
dateFromstringдаISO YYYY-MM-DDDateOnly
dateTostringдаISO YYYY-MM-DDDateOnly
statusWorkTimeStatusDtoдаWorkTimeStatusDto
reasonstring | nullдаstring?
attachmentFileUrlstring | nullдаURL returned by FileApiClient on upload; null if no AU document attached. Use the file service to resolve a temp signed URL when displaying.string?
enteredBynumberдаint
approvedBynumber | nullдаint?
approvedAtstring | nullдаISO 8601 datetime; null until approved.DateTimeOffset?

Пример

json
{
  "id": 0,
  "userId": 0,
  "type": "<AbsenceTypeDto>",
  "dateFrom": "2026-05-05T08:00:00Z",
  "dateTo": "2026-05-05T08:00:00Z",
  "status": "<WorkTimeStatusDto>",
  "reason": "string",
  "attachmentFileUrl": "https://...",
  "enteredBy": 0,
  "approvedBy": 0,
  "approvedAt": "2026-05-05T08:00:00Z"
}


AbsenceTypeDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/Enums/AbsenceTypeDto.cs (feature.managertimetrackerservice).

Значения

ИмяЗначение (TS)ОписаниеКод (C#)
NotFound00
Vacation11
SickLeave22
SpecialLeave33
UnpaidLeave44
TimeOffInLieu55

Пример

json
0


CloseWorkScheduleRequestDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/WorkSchedule/Requests/CloseWorkScheduleRequestDto.cs (feature.managertimetrackerservice).

Поля

ПолеТип (TS)ОбязательноеОписаниеТип (C#)
idnumberдаint
closeOnstringдаISO YYYY-MM-DD — sets validTo and ends the schedule on this date.DateOnly

Пример

json
{
  "id": 0,
  "closeOn": "string"
}


CreateAbsenceEntryRequestDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/AbsenceEntry/Requests/CreateAbsenceEntryRequestDto.cs (feature.managertimetrackerservice).

Поля

ПолеТип (TS)ОбязательноеОписаниеТип (C#)
userIdnumberдаint
typeAbsenceTypeDtoдаAbsenceTypeDto
dateFromstringдаISO YYYY-MM-DDDateOnly
dateTostringдаISO YYYY-MM-DDDateOnly
reasonstring | nullнетstring?
attachmentFileUrlstring | nullнетURL of the AU document returned by FileApiClient on upload (required for SickLeave when settings.RequireAuDocument is on).string?

Пример

json
{
  "userId": 0,
  "type": "<AbsenceTypeDto>",
  "dateFrom": "2026-05-05T08:00:00Z",
  "dateTo": "2026-05-05T08:00:00Z",
  "reason": "string",
  "attachmentFileUrl": "https://..."
}


CreateAbsenceEntryResponseDto

Поля

ПолеТипОбязательноеОписание
idnumberда

Пример

json
{
  "id": 0
}


CreateWorkScheduleRequestDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/WorkSchedule/Requests/CreateWorkScheduleRequestDto.cs (feature.managertimetrackerservice).

Поля

ПолеТип (TS)ОбязательноеОписаниеТип (C#)
userIdnumberдаint
validFromstringдаISO YYYY-MM-DDDateOnly
validTostring | nullнетISO YYYY-MM-DD or null for an open-ended schedule.DateOnly?
isFullTimebooleanдаbool
employmentRatenumberдаDecimal between 0 and 1 (e.g. 0.5 = half-time).decimal
mondayStartstring | nullнетISO HH:mm:ss; null if no shift on that weekday.TimeOnly?
mondayEndstring | nullнетTimeOnly?
tuesdayStartstring | nullнетTimeOnly?
tuesdayEndstring | nullнетTimeOnly?
wednesdayStartstring | nullнетTimeOnly?
wednesdayEndstring | nullнетTimeOnly?
thursdayStartstring | nullнетTimeOnly?
thursdayEndstring | nullнетTimeOnly?
fridayStartstring | nullнетTimeOnly?
fridayEndstring | nullнетTimeOnly?
saturdayStartstring | nullнетTimeOnly?
saturdayEndstring | nullнетTimeOnly?
sundayStartstring | nullнетTimeOnly?
sundayEndstring | nullнетTimeOnly?
lunchBreakMinutesnumberдаint
annualVacationDaysnumberдаint
notestring | nullнетstring?

Пример

json
{
  "userId": 0,
  "validFrom": "2026-05-05T08:00:00Z",
  "validTo": "2026-05-05T08:00:00Z",
  "isFullTime": false,
  "employmentRate": 0,
  "mondayStart": "string",
  "mondayEnd": "string",
  "tuesdayStart": "string",
  "tuesdayEnd": "string",
  "wednesdayStart": "string",
  "wednesdayEnd": "string",
  "thursdayStart": "string",
  "thursdayEnd": "string",
  "fridayStart": "string",
  "fridayEnd": "string",
  "saturdayStart": "string",
  "saturdayEnd": "string",
  "sundayStart": "string",
  "sundayEnd": "string",
  "lunchBreakMinutes": 0,
  "annualVacationDays": 0,
  "note": "string"
}


CreateWorkScheduleResponseDto

Поля

ПолеТипОбязательноеОписание
idnumberда

Пример

json
{
  "id": 0
}


CreateWorkTimeEntryRequestDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/WorkTimeEntry/Requests/CreateWorkTimeEntryRequestDto.cs (feature.managertimetrackerservice).

Поля

ПолеТип (TS)ОбязательноеОписаниеТип (C#)
userIdnumberдаint
typeWorkTimeEntryTypeDtoдаWorkTimeEntryTypeDto
startedAtstringдаISO 8601 UTC instant, e.g. 2026-05-04T08:00:00ZDateTime
endedAtstringдаISO 8601 UTC instant; must fall on the same UTC calendar day as startedAt.DateTime
breakMinutesnumberдаint
statusWorkTimeStatusDtoдаWorkTimeStatusDto
notestring | nullнетstring?
backlogReasonstring | nullнетОбъяснение пропуска прошлых рабочих дней. Обязательно, если одновременно: (1) юзер сейчас IsSoftBlocked (см. workTimeBacklogStateAccessService.GetMy()) и (2) startedAt < сегодня (UTC) — то есть запись back-dated. Для записи на текущий день поле опционально даже в soft-block. При пустом backlogReason для back-dated записи сервер вернёт 400 work-time-entry-backlog-soft-block-reason-required. При IsHardBlocked поле не помогает — сервер вернёт 400 work-time-entry-backlog-hard-block, разрешение возможно только через HeadOffice (EnteredBy != UserId). Сохраняется на самой записи (WorkTimeEntryDto.backlogReason) для аудита.

Пример

json
{
  "userId": 0,
  "type": "<WorkTimeEntryTypeDto>",
  "startedAt": "2026-05-05T08:00:00Z",
  "endedAt": "2026-05-05T08:00:00Z",
  "breakMinutes": 0,
  "status": "<WorkTimeStatusDto>",
  "note": "string",
  "backlogReason": "string"
}


CreateWorkTimeEntryResponseDto

Поля

ПолеТипОбязательноеОписание
idnumberда
problemsWorkTimeProblemDto[]даSoft warnings emitted by the validation pipeline (ArbZG break, backlog tier, etc.).

Пример

json
{
  "id": 0,
  "problems": []
}


GetAbsenceEntriesByUserResponseDto

Поля

ПолеТипОбязательноеОписание
absencesAbsenceEntryDto[]да
countnumberда

Пример

json
{
  "absences": [],
  "count": 0
}


GetAbsenceEntryResponseDto

Поля

ПолеТипОбязательноеОписание
absenceAbsenceEntryDtoда

Пример

json
{
  "absence": "<AbsenceEntryDto>"
}


GetActiveWorkScheduleResponseDto

Поля

ПолеТипОбязательноеОписание
scheduleWorkScheduleDto | nullдаnull when the user has no schedule covering the requested date.

Пример

json
{
  "schedule": "<workscheduledto>"
}


GetActiveWorkSchedulesRequestDto

Query parameters for GET /Api/WorkSchedules/Active.

userIds: omitted/null - filter is not applied; empty array - explicit filter, no rows are returned.

date: ISO YYYY-MM-DD; defaults to today (UTC) on the server when omitted.

Поля

ПолеТипОбязательноеОписание
datestring | nullнет
userIdsnumber[] | nullнет
currentPagenumberда1-based page number.
rowsPerPagenumberдаItems per page.
sortBystring | nullнетServer-side field name to sort by.
descendingbooleanдаtrue for DESC, false for ASC.

Пример

json
{
  "date": "2026-05-05T08:00:00Z",
  "userIds": [],
  "currentPage": 0,
  "rowsPerPage": 0,
  "sortBy": "string",
  "descending": false
}


GetActiveWorkSchedulesResponseDto

Поля

ПолеТипОбязательноеОписание
paginationPaginationResult<WorkScheduleDto>да

Пример

json
{
  "pagination": "<PaginationResult<WorkScheduleDto>>"
}


GetCurrentTimerResponseDto

Поля

ПолеТипОбязательноеОписание
entryWorkTimeEntryDto | nullдаnull when no timer is currently running for the calling user.

Пример

json
{
  "entry": "<worktimeentrydto>"
}


GetWorkScheduleResponseDto

Поля

ПолеТипОбязательноеОписание
scheduleWorkScheduleDtoда

Пример

json
{
  "schedule": "<WorkScheduleDto>"
}


GetWorkSchedulesByUserResponseDto

Поля

ПолеТипОбязательноеОписание
schedulesWorkScheduleDto[]да
countnumberда

Пример

json
{
  "schedules": [],
  "count": 0
}


GetWorkTimeBacklogStateResponseDto

Поля

ПолеТипОбязательноеОписание
stateWorkTimeBacklogStateDtoда

Пример

json
{
  "state": "<WorkTimeBacklogStateDto>"
}


GetWorkTimeDaySummaryResponseDto

Поля

ПолеТипОбязательноеОписание
dayWorkTimeDaySummaryDtoда

Пример

json
{
  "day": "<WorkTimeDaySummaryDto>"
}


GetWorkTimeEntriesByUserResponseDto

Поля

ПолеТипОбязательноеОписание
entriesWorkTimeEntryDto[]да
countnumberда

Пример

json
{
  "entries": [],
  "count": 0
}


GetWorkTimeEntriesRequestDto

Query parameters for GET /Api/WorkTimeEntries.

Все фильтры опциональны: при отсутствии — соответствующее условие не применяется. dateTimeFrom / dateTimeTo сравниваются с startedAt записи (ISO 8601 UTC).

Поля

ПолеТипОбязательноеОписание
paginationPaginationда
dateTimeFromstring | nullнет
dateTimeTostring | nullнет
userIdnumber | nullнет

Пример

json
{
  "pagination": "<Pagination>",
  "dateTimeFrom": "2026-05-05T08:00:00Z",
  "dateTimeTo": "2026-05-05T08:00:00Z",
  "userId": 0
}


GetWorkTimeEntriesResponseDto

Поля

ПолеТипОбязательноеОписание
paginationPaginationResult<WorkTimeEntryDto>да

Пример

json
{
  "pagination": "<PaginationResult<WorkTimeEntryDto>>"
}


GetWorkTimeEntryResponseDto

Поля

ПолеТипОбязательноеОписание
entryWorkTimeEntryDtoда

Пример

json
{
  "entry": "<WorkTimeEntryDto>"
}


GetWorkTimeMonthSummaryResponseDto

Поля

ПолеТипОбязательноеОписание
summaryWorkTimeMonthSummaryDtoда

Пример

json
{
  "summary": "<WorkTimeMonthSummaryDto>"
}


GetWorkTimeReportsResponseDto

Поля

ПолеТипОбязательноеОписание
yearnumberда
monthnumberда
summariesWorkTimeMonthSummaryDto[]да
countnumberда

Пример

json
{
  "year": 0,
  "month": 0,
  "summaries": [],
  "count": 0
}


GetWorkTimeSettingsResponseDto

Поля

ПолеТипОбязательноеОписание
settingsWorkTimeSettingsDtoда

Пример

json
{
  "settings": "<WorkTimeSettingsDto>"
}


StartTimerRequestDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/WorkTimeEntry/Requests/StartTimerRequestDto.cs (feature.managertimetrackerservice).

Поля

ПолеТип (TS)ОбязательноеОписаниеТип (C#)
notestring | nullнетstring?

Пример

json
{
  "note": "string"
}


StartTimerResponseDto

Поля

ПолеТипОбязательноеОписание
entryWorkTimeEntryDtoдаEither the freshly-created running entry or — when a timer was already running — the existing one (idempotent). Distinguish via id/startTime if you need to know which case fired.

Пример

json
{
  "entry": "<WorkTimeEntryDto>"
}


StopTimerRequestDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/WorkTimeEntry/Requests/StopTimerRequestDto.cs (feature.managertimetrackerservice).

Поля

ПолеТип (TS)ОбязательноеОписаниеТип (C#)
breakMinutesnumber | nullнетBreak minutes to record on the entry. null/omitted is treated as 0.int?
notestring | nullнетOptional override for the running entry's stored Note. When provided, used as the Note on the resulting WorkTimeEntry instead of whatever was passed to Start. Useful for unblocking validation failures that need a Note (e.g. an approved-absence-day override) without restarting the timer.string?
backlogReasonstring | nullнетОбъяснение пропуска прошлых рабочих дней. Для StopTimer практически не нужен (таймер всегда финализирует запись на сегодняшнюю дату — cross-midnight отбрасывается отдельно), но оставлен для симметрии с Create/Update. Сохраняется в финальной записи (WorkTimeEntryDto.backlogReason).

Пример

json
{
  "breakMinutes": 0,
  "note": "string",
  "backlogReason": "string"
}


StopTimerResponseDto

Поля

ПолеТипОбязательноеОписание
idnumberдаId of the finalised WorkTimeEntry.
problemsWorkTimeProblemDto[]даSoft warnings emitted by the validation pipeline (ArbZG break, backlog tier, etc.).

Пример

json
{
  "id": 0,
  "problems": []
}


UpdateAbsenceEntryRequestDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/AbsenceEntry/Requests/UpdateAbsenceEntryRequestDto.cs (feature.managertimetrackerservice).

Поля

ПолеТип (TS)ОбязательноеОписаниеТип (C#)
idnumberдаint
typeAbsenceTypeDtoдаAbsenceTypeDto
dateFromstringдаISO YYYY-MM-DDDateOnly
dateTostringдаISO YYYY-MM-DDDateOnly
reasonstring | nullнетstring?
attachmentFileUrlstring | nullнетURL of the AU document returned by FileApiClient on upload.string?

Пример

json
{
  "id": 0,
  "type": "<AbsenceTypeDto>",
  "dateFrom": "2026-05-05T08:00:00Z",
  "dateTo": "2026-05-05T08:00:00Z",
  "reason": "string",
  "attachmentFileUrl": "https://..."
}


UpdateWorkScheduleRequestDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/WorkSchedule/Requests/UpdateWorkScheduleRequestDto.cs (feature.managertimetrackerservice).

Поля

ПолеТип (TS)ОбязательноеОписаниеТип (C#)
idnumberдаint
validFromstringдаISO YYYY-MM-DDDateOnly
validTostring | nullнетISO YYYY-MM-DD or null for an open-ended schedule.DateOnly?
isFullTimebooleanдаbool
employmentRatenumberдаdecimal
mondayStartstring | nullнетTimeOnly?
mondayEndstring | nullнетTimeOnly?
tuesdayStartstring | nullнетTimeOnly?
tuesdayEndstring | nullнетTimeOnly?
wednesdayStartstring | nullнетTimeOnly?
wednesdayEndstring | nullнетTimeOnly?
thursdayStartstring | nullнетTimeOnly?
thursdayEndstring | nullнетTimeOnly?
fridayStartstring | nullнетTimeOnly?
fridayEndstring | nullнетTimeOnly?
saturdayStartstring | nullнетTimeOnly?
saturdayEndstring | nullнетTimeOnly?
sundayStartstring | nullнетTimeOnly?
sundayEndstring | nullнетTimeOnly?
lunchBreakMinutesnumberдаint
annualVacationDaysnumberдаint
notestring | nullнетstring?

Пример

json
{
  "id": 0,
  "validFrom": "2026-05-05T08:00:00Z",
  "validTo": "2026-05-05T08:00:00Z",
  "isFullTime": false,
  "employmentRate": 0,
  "mondayStart": "string",
  "mondayEnd": "string",
  "tuesdayStart": "string",
  "tuesdayEnd": "string",
  "wednesdayStart": "string",
  "wednesdayEnd": "string",
  "thursdayStart": "string",
  "thursdayEnd": "string",
  "fridayStart": "string",
  "fridayEnd": "string",
  "saturdayStart": "string",
  "saturdayEnd": "string",
  "sundayStart": "string",
  "sundayEnd": "string",
  "lunchBreakMinutes": 0,
  "annualVacationDays": 0,
  "note": "string"
}


UpdateWorkTimeEntryRequestDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/WorkTimeEntry/Requests/UpdateWorkTimeEntryRequestDto.cs (feature.managertimetrackerservice).

Поля

ПолеТип (TS)ОбязательноеОписаниеТип (C#)
idnumberдаint
typeWorkTimeEntryTypeDtoдаWorkTimeEntryTypeDto
startedAtstringдаISO 8601 UTC instant, e.g. 2026-05-04T08:00:00ZDateTime
endedAtstringдаISO 8601 UTC instant; must fall on the same UTC calendar day as startedAt.DateTime
breakMinutesnumberдаint
statusWorkTimeStatusDtoдаWorkTimeStatusDto
notestring | nullнетstring?
backlogReasonstring | nullнетСм. CreateWorkTimeEntryRequestDto.backlogReason. Та же gate-семантика — требуется только когда IsSoftBlocked и новая startedAt < сегодня (UTC).
unfreezeReasonstring | nullнетAudit-причина при разморозке Locked-записи (docx §7.7/§8.8). Обязательно, когда юзер пытается отредактировать запись со Status = Locked и имеет право RightToEditPastLockedEntries (или UserType = Admin). Без неё сервер вернёт 400 work-time-entry-locked-unfreeze-reason-required. Игнорируется на не-Locked записях. Save-flow для Manager без bypass-prava остаётся 400 work-time-entry-locked независимо от значения этого поля.

Пример

json
{
  "id": 0,
  "type": "<WorkTimeEntryTypeDto>",
  "startedAt": "2026-05-05T08:00:00Z",
  "endedAt": "2026-05-05T08:00:00Z",
  "breakMinutes": 0,
  "status": "<WorkTimeStatusDto>",
  "note": "string",
  "backlogReason": "string",
  "unfreezeReason": "string"
}


UpdateWorkTimeEntryResponseDto

Поля

ПолеТипОбязательноеОписание
problemsWorkTimeProblemDto[]да

Пример

json
{
  "problems": []
}


UpdateWorkTimeSettingsRequestDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/WorkTimeSettings/Requests/UpdateWorkTimeSettingsRequestDto.cs (feature.managertimetrackerservice).

Поля

ПолеТип (TS)ОбязательноеОписаниеТип (C#)
backlogMonthCloseDaynumberда
softBlockGraceDaysnumberда
hardBlockGraceDaysnumberда
monthCloseDayOfMonthnumberдаint
defaultLunchMinutesnumberдаint
maxDailyMinutesnumberдаint
weeklyOvertimeWarningMinutesnumberдаint
notificationEmailstring | nullнетstring?
requireAuDocumentbooleanдаbool
defaultRegionCodeIdnumber | nullнетint?

Пример

json
{
  "backlogMonthCloseDay": 0,
  "softBlockGraceDays": 0,
  "hardBlockGraceDays": 0,
  "monthCloseDayOfMonth": 0,
  "defaultLunchMinutes": 0,
  "maxDailyMinutes": 0,
  "weeklyOvertimeWarningMinutes": 0,
  "notificationEmail": "user@example.com",
  "requireAuDocument": false,
  "defaultRegionCodeId": 0
}


WorkScheduleDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/WorkSchedule/WorkScheduleDto.cs (feature.managertimetrackerservice).

Поля

ПолеТип (TS)ОбязательноеОписаниеТип (C#)
idnumberдаint
userIdnumberдаint
validFromstringдаISO YYYY-MM-DDDateOnly
validTostring | nullдаISO YYYY-MM-DD or null for an open-ended schedule.DateOnly?
isFullTimebooleanдаbool
employmentRatenumberдаDecimal between 0 and 1 (e.g. 0.5 = half-time).decimal
mondayStartstring | nullдаISO HH:mm:ss; null if no shift on that weekday.TimeOnly?
mondayEndstring | nullдаTimeOnly?
tuesdayStartstring | nullдаTimeOnly?
tuesdayEndstring | nullдаTimeOnly?
wednesdayStartstring | nullдаTimeOnly?
wednesdayEndstring | nullдаTimeOnly?
thursdayStartstring | nullдаTimeOnly?
thursdayEndstring | nullдаTimeOnly?
fridayStartstring | nullдаTimeOnly?
fridayEndstring | nullдаTimeOnly?
saturdayStartstring | nullдаTimeOnly?
saturdayEndstring | nullдаTimeOnly?
sundayStartstring | nullдаTimeOnly?
sundayEndstring | nullдаTimeOnly?
lunchBreakMinutesnumberдаint
annualVacationDaysnumberдаint
notestring | nullдаstring?
mondayMinutesnumberдаComputed: planned minutes per weekday (start-to-end minus lunch break).int
tuesdayMinutesnumberдаint
wednesdayMinutesnumberдаint
thursdayMinutesnumberдаint
fridayMinutesnumberдаint
saturdayMinutesnumberдаint
sundayMinutesnumberдаint
weeklyMinutesnumberдаSum of the 7 weekday minutes.int

Пример

json
{
  "id": 0,
  "userId": 0,
  "validFrom": "2026-05-05T08:00:00Z",
  "validTo": "2026-05-05T08:00:00Z",
  "isFullTime": false,
  "employmentRate": 0,
  "mondayStart": "string",
  "mondayEnd": "string",
  "tuesdayStart": "string",
  "tuesdayEnd": "string",
  "wednesdayStart": "string",
  "wednesdayEnd": "string",
  "thursdayStart": "string",
  "thursdayEnd": "string",
  "fridayStart": "string",
  "fridayEnd": "string",
  "saturdayStart": "string",
  "saturdayEnd": "string",
  "sundayStart": "string",
  "sundayEnd": "string",
  "lunchBreakMinutes": 0,
  "annualVacationDays": 0,
  "note": "string",
  "mondayMinutes": 0,
  "tuesdayMinutes": 0,
  "wednesdayMinutes": 0,
  "thursdayMinutes": 0,
  "fridayMinutes": 0,
  "saturdayMinutes": 0,
  "sundayMinutes": 0,
  "weeklyMinutes": 0
}


WorkTimeBacklogStateDto

Поля

ПолеТипОбязательноеОписание
userIdnumberда
isSoftBlockedbooleanдаУ юзера есть незаполненные рабочие дни старше grace-периода. Письмо HeadOffice летит один раз на переходе false → true, повторные сохранения в том же состоянии email не триггерят (anti-spam через persisted-флаги). Гейт backlogReason срабатывает только на back-dated записях (startedAt < сегодня (UTC)). Сегодняшние записи проходят без коммента — флаг используется фронтом для UI-баннера и для preset'а поля «Причина» на форме при выборе прошлой даты.
isHardBlockedbooleanдаСохранение собственных записей запрещено (400 work-time-entry-backlog-hard-block). Разблокировка только через HeadOffice (POST WorkTimeEntries с enteredBy != userId) — он добивает пропущенные дни за заблокированного менеджера.
earliestMissingDatestring | nullдаСамый ранний незаполненный рабочий день в окне оценки. Для UI-баннера и подстановки в текст письма HeadOffice. null, когда пропусков нет.
lastEvaluatedAtstring | nullдаКогда последний раз пересчитывалось состояние. ISO 8601 UTC. null, если для юзера ни разу не было события-триггера и daily scheduler ещё не пробежал по нему — в этом случае состояние подаётся как clean-slate.

Пример

json
{
  "userId": 0,
  "isSoftBlocked": false,
  "isHardBlocked": false,
  "earliestMissingDate": "2026-05-05T08:00:00Z",
  "lastEvaluatedAt": "2026-05-05T08:00:00Z"
}


WorkTimeDaySummaryDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/Summary/WorkTimeDaySummaryDto.cs (feature.managertimetrackerservice).

Поля

ПолеТип (TS)ОбязательноеОписаниеТип (C#)
datestringдаISO YYYY-MM-DDDateOnly
dayOfWeeknumberда.NET DayOfWeek: 0=Sunday … 6=Saturday.DayOfWeek
isWorkdaybooleanдаbool
isHolidaybooleanдаbool
isVacationbooleanдаbool
isSickLeavebooleanдаbool
isSpecialLeavebooleanдаbool
isTimeOffInLieubooleanдаbool
plannedMinutesnumberдаint
actualMinutesnumberдаint
overtimeMinutesnumberдаint
undertimeMinutesnumberдаint
isLockedbooleanдаbool

Пример

json
{
  "date": "2026-05-05T08:00:00Z",
  "dayOfWeek": 0,
  "isWorkday": false,
  "isHoliday": false,
  "isVacation": false,
  "isSickLeave": false,
  "isSpecialLeave": false,
  "isTimeOffInLieu": false,
  "plannedMinutes": 0,
  "actualMinutes": 0,
  "overtimeMinutes": 0,
  "undertimeMinutes": 0,
  "isLocked": false
}


WorkTimeEntryDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/WorkTimeEntry/WorkTimeEntryDto.cs (feature.managertimetrackerservice).

Поля

ПолеТип (TS)ОбязательноеОписаниеТип (C#)
idnumberдаint
userIdnumberдаint
typeWorkTimeEntryTypeDtoдаWorkTimeEntryTypeDto
startedAtstringдаISO 8601 UTC instant, e.g. 2026-05-04T08:00:00ZDateTime
endedAtstring | nullдаISO 8601 UTC instant; null means the entry is currently a running timer (and durationMinutes is 0).DateTime?
breakMinutesnumberдаint
durationMinutesnumberдаint
statusWorkTimeStatusDtoдаWorkTimeStatusDto
notestring | nullдаstring?
backlogReasonstring | nullдаAudit-комментарий, заполненный юзером при сохранении записи в состоянии soft-block (см. backlog state). null для обычных записей вне блокировки.
unfreezeReasonstring | nullдаAudit-причина последней разморозки Locked-записи (docx §8.8). null, если запись никогда не редактировалась после lock'а.
enteredBynumberдаint
correlationIdstring | nullдаСвободно-форматный correlation-ID входящего HTTP-запроса (заголовок X-Correlation-Id), под которым запись была создана/финализирована. Используется для привязки логов к конкретной записи.Guid?

Пример

json
{
  "id": 0,
  "userId": 0,
  "type": "<WorkTimeEntryTypeDto>",
  "startedAt": "2026-05-05T08:00:00Z",
  "endedAt": "2026-05-05T08:00:00Z",
  "breakMinutes": 0,
  "durationMinutes": 0,
  "status": "<WorkTimeStatusDto>",
  "note": "string",
  "backlogReason": "string",
  "unfreezeReason": "string",
  "enteredBy": 0,
  "correlationId": "uuid"
}


WorkTimeEntryTypeDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/Enums/WorkTimeEntryTypeDto.cs (feature.managertimetrackerservice).

Значения

ИмяЗначение (TS)ОписаниеКод (C#)
NotFound00
Regular11
Overtime22
Lunch33
Travel44

Пример

json
0


WorkTimeMonthSummaryDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/Summary/WorkTimeMonthSummaryDto.cs (feature.managertimetrackerservice).

Поля

ПолеТип (TS)ОбязательноеОписаниеТип (C#)
userIdnumberдаint
yearnumberдаint
monthnumberдаint
plannedMinutesnumberдаint
actualMinutesnumberдаint
overtimeMinutesnumberдаint
undertimeMinutesnumberдаint
vacationDaysUsednumberдаint
vacationDaysRemainingnumberдаint
sickLeaveDaysnumberдаint
specialLeaveDaysnumberдаint
timeOffInLieuDaysnumberдаint
isLockedbooleanдаbool
daysWorkTimeDaySummaryDto[]даList<WorkTimeDaySummaryDto>

Пример

json
{
  "userId": 0,
  "year": 0,
  "month": 0,
  "plannedMinutes": 0,
  "actualMinutes": 0,
  "overtimeMinutes": 0,
  "undertimeMinutes": 0,
  "vacationDaysUsed": 0,
  "vacationDaysRemaining": 0,
  "sickLeaveDays": 0,
  "specialLeaveDays": 0,
  "timeOffInLieuDays": 0,
  "isLocked": false,
  "days": []
}


WorkTimeProblemDto

Soft-warning emitted by WorkTime write endpoints alongside a successful response. Mirrors ASP.NET Core's ProblemDetails JSON shape but used for non-blocking advisories — e.g. work-time-entry-break-below-arbzg-6h (ArbZG break warning), work-time-entry-backlog-warning, …-backlog-soft-block.

Hard validation failures (overlap, daily-limit, no-running-timer, …) come back as regular 4xx error responses and surface as ProblemDetailsError from the http client, not in this list.

Поля

ПолеТипОбязательноеОписание
typestring | nullдаRFC-7807 type identifier (e.g. work-time-entry-break-below-arbzg-9h).
titlestring | nullда
detailstring | nullда
statusnumber | nullда
instancestring | nullда

Пример

json
{
  "type": "string",
  "title": "string",
  "detail": "string",
  "status": 0,
  "instance": "string"
}


WorkTimeSettingsDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/WorkTimeSettings/WorkTimeSettingsDto.cs (feature.managertimetrackerservice).

Поля

ПолеТип (TS)ОбязательноеОписаниеТип (C#)
backlogMonthCloseDaynumberдаДень месяца, разделяющий окно проверки backlog'а: до этого числа включаемся с 1-го числа прошлого месяца, начиная с него — только текущий месяц. По умолчанию 10 — синхронно с monthCloseDayOfMonth.
softBlockGraceDaysnumberдаСколько рабочих дней (отсчёт от сегодня) дозволено не заполнять без последствий. При первом необъяснённом пропуске за пределами этого окна юзер становится IsSoftBlocked = true (требуется BacklogReason при следующем сохранении). По умолчанию 5.
hardBlockGraceDaysnumberдаСколько рабочих дней дозволено не заполнять до жёсткой блокировки. При наличии пропуска за пределами этого окна юзер становится IsHardBlocked = true — сохранение собственных записей запрещено, разрешение через EnteredBy != UserId (HeadOffice). По умолчанию 10.
monthCloseDayOfMonthnumberдаint
defaultLunchMinutesnumberдаint
maxDailyMinutesnumberдаint
weeklyOvertimeWarningMinutesnumberдаint
notificationEmailstring | nullдаstring?
requireAuDocumentbooleanдаbool
defaultRegionCodeIdnumber | nullдаint?

Пример

json
{
  "backlogMonthCloseDay": 0,
  "softBlockGraceDays": 0,
  "hardBlockGraceDays": 0,
  "monthCloseDayOfMonth": 0,
  "defaultLunchMinutes": 0,
  "maxDailyMinutes": 0,
  "weeklyOvertimeWarningMinutes": 0,
  "notificationEmail": "user@example.com",
  "requireAuDocument": false,
  "defaultRegionCodeId": 0
}


WorkTimeStatusDto

Backend-источник: feature.managertimetrackerservice/Feature.ManagerTimeTrackerService/Nuget.ManagerTimeTrackerApiClient/Dto/Enums/WorkTimeStatusDto.cs (feature.managertimetrackerservice).

Значения

ИмяЗначение (TS)ОписаниеКод (C#)
NotFound00
Draft11
Submitted22
Approved33
Rejected44
Locked55

Пример

json
0