Skip to content

Monday DTO

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

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

Содержание


BootstrapPreviewReportDto

Snapshot of what a bootstrap import would do, computed before any mutation.

Поля

ПолеТипОбязательноеОписание
workersTotalnumberда
clientsTotalnumberда
workersToInsertnumberда
workersToSkipnumberда
clientsToInsertnumberда
clientsToSkipnumberда
matchedSinglenumberда
matchedAmbiguousnumberда
matchedSoftDeletednumberда
missingRequiredFieldnumberда
loginCollisionsnumberда
loginDuplicatesInBatchnumberда
assignmentsToCreatenumberдаClients whose "zugeteilte Fee" resolves to exactly one worker with no existing assignment — a WorkerAssignment the apply will create. Preview estimate.
assignmentsToReactivatenumberдаClients whose assigned worker already has a non-InWork assignment that the apply will reactivate to InWork. Preview estimate.
assignmentsToClosenumberдаIncremental sync only: active assignments the apply will close (zugeteilte Fee cleared or changed). 0 for bootstrap import.
assignmentsAmbiguousnumberдаClients whose "zugeteilte Fee" matches more than one worker by name — left for the operator, never auto-assigned.
assignmentsUnmatchednumberдаClients whose "zugeteilte Fee" matches no worker in the import.
addressesRequestednumberда
addressesResolvednumberда
addressMissesnumberда
estimatedAddressCacheHitsnumberнетOf the addresses resolved for this preview, how many came from the geocoding cache (no Google Places call).
estimatedAddressApiCallsnumberнетAddress resolutions that needed a paid Google Places call (Autocomplete + Place Details), incl. misses. Note: this cost is spent while building the preview, not at apply.
estimatedDistancePairsnumberдаEstimated client↔worker distance pairs this import would compute (dry-run, before approve).
estimatedDistanceCacheHitsnumberдаOf estimatedDistancePairs, how many are already cached.
estimatedDistanceGoogleApiCallsnumberдаOf estimatedDistancePairs, how many would need a fresh (paid) Google Routes call.
distanceEstimateReliablebooleanдаFalse when the estimate could not be trusted (failed, or 0 pairs despite create/update work). The UI must not show the numbers as a reliable "0 Google calls" in that case.
distanceEstimatePendingbooleanнетTrue while the estimate is still being computed asynchronously (the figures above are not yet final). Poll GetSyncRequestStatus and watch estimateStage for live progress; the report is patched with the final figures when it reaches Done.
estimatedMondayApiRequestsnumberнетEstimated number of Monday API calls the apply will consume (Business→Monday writes batch ≤30 per request; Monday→Business creates read one item each). ≈0 for Import (writes to the Business layer, not Monday).
collisionsPreviewCollisionDto[]да

Пример

json
{
  "workersTotal": 0,
  "clientsTotal": 0,
  "workersToInsert": 0,
  "workersToSkip": 0,
  "clientsToInsert": 0,
  "clientsToSkip": 0,
  "matchedSingle": 0,
  "matchedAmbiguous": 0,
  "matchedSoftDeleted": 0,
  "missingRequiredField": 0,
  "loginCollisions": 0,
  "loginDuplicatesInBatch": 0,
  "assignmentsToCreate": 0,
  "assignmentsToReactivate": 0,
  "assignmentsToClose": 0,
  "assignmentsAmbiguous": 0,
  "assignmentsUnmatched": 0,
  "addressesRequested": 0,
  "addressesResolved": 0,
  "addressMisses": 0,
  "estimatedAddressCacheHits": 0,
  "estimatedAddressApiCalls": 0,
  "estimatedDistancePairs": 0,
  "estimatedDistanceCacheHits": 0,
  "estimatedDistanceGoogleApiCalls": 0,
  "distanceEstimateReliable": false,
  "distanceEstimatePending": false,
  "estimatedMondayApiRequests": 0,
  "collisions": []
}


ConflictPropertySummaryDto

Number of still-conflicting changes per property name within a sync request.

Поля

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

Пример

json
{
  "propertyName": "string",
  "count": 0
}


DuplicateResolutionDto

Remembered duplicate decision (which Monday row wins for a Business entity), reused by future imports.

Поля

ПолеТипОбязательноеОписание
idnumberда
entityTypestringдаEntity type: "Worker" or "Client".
businessEntityIdnumberдаId of the Business (DAF) entity the duplicate group maps to.
chosenMondayItemIdstringдаId of the Monday row chosen as the winner.
createDateTimestring | nullнет

Пример

json
{
  "id": 0,
  "entityType": "string",
  "businessEntityId": 0,
  "chosenMondayItemId": "uuid",
  "createDateTime": "2026-05-05T08:00:00Z"
}


DuplicateResolutionListPageDto

One server-side page of remembered duplicate decisions.

Поля

ПолеТипОбязательноеОписание
totalnumberда
pagenumberда
rowsPerPagenumberда
itemsDuplicateResolutionDto[]да

Пример

json
{
  "total": 0,
  "page": 0,
  "rowsPerPage": 0,
  "items": []
}


GetSyncChangesRequestDto

Pagination and filters for the server-side changes table of a sync request.

Поля

ПолеТипОбязательноеОписание
pagenumberда
rowsPerPagenumberда
statusSyncChangeStatusDto | nullнетFilter by change status.
sourceSideSyncSideDto | nullнетFilter by the side the change originates from.
entityTypeSyncEntityTypeDto | nullнетFilter by entity type (Worker/Client).
propertystring | nullнетFilter by target property name.
searchstring | nullнетFree-text search over entity display names.

Пример

json
{
  "page": 0,
  "rowsPerPage": 0,
  "status": "<syncchangestatusdto>",
  "sourceSide": "<syncsidedto>",
  "entityType": "<syncentitytypedto>",
  "property": "string",
  "search": "string"
}


GetSyncEntityHistoryRequestDto

Pagination and filters for the per-entity sync history.

Поля

ПолеТипОбязательноеОписание
entityType"Worker" | "Client"даEntity type the history belongs to.
businessEntityIdnumber | nullнетId of the entity in Business (DAF). Provide this or mondayItemId.
mondayItemIdstring | nullнетId of the Monday item. Provide this or businessEntityId.
pagenumberда
rowsPerPagenumberда

Пример

json
{
  "entityType": "<\"Worker\" | \"Client\">",
  "businessEntityId": 0,
  "mondayItemId": "uuid",
  "page": 0,
  "rowsPerPage": 0
}


InsuranceAliasDto

Operator-curated mapping from a raw Monday insurance company name to a CRM insurance company.

Поля

ПолеТипОбязательноеОписание
idnumberда
aliasstringдаRaw name as it appears in Monday.
insuranceCompanyIdnumberдаId of the CRM insurance company the alias resolves to.
insuranceCompanyNamestring | nullнетDisplay name of the resolved CRM insurance company.
createDateTimestring | nullнет

Пример

json
{
  "id": 0,
  "alias": "string",
  "insuranceCompanyId": 0,
  "insuranceCompanyName": "string",
  "createDateTime": "2026-05-05T08:00:00Z"
}


InsuranceAliasListPageDto

One server-side page of insurance aliases.

Поля

ПолеТипОбязательноеОписание
totalnumberда
pagenumberда
rowsPerPagenumberда
itemsInsuranceAliasDto[]да

Пример

json
{
  "total": 0,
  "page": 0,
  "rowsPerPage": 0,
  "items": []
}


MondayQuotaDto

Current consumption of the Monday daily API call quota (resets at midnight UTC).

Поля

ПолеТипОбязательноеОписание
datestringдаUTC date (ISO-8601) the counters belong to.
usednumberдаAPI calls already consumed today.
limitnumberдаDaily limit configured for the Monday account.
remainingnumberдаCalls still available before the apply phase gets deferred (WaitingForApiLimit).

Пример

json
{
  "date": "2026-05-05T08:00:00Z",
  "used": 0,
  "limit": 0,
  "remaining": 0
}


PreviewCollisionDto

Поля

ПолеТипОбязательноеОписание
entityTypestringда
kindstringда
entityDisplayNamestring | nullнет
mondayItemIdstring | nullнет
businessEntityIdnumber | nullнет
detailsstring | nullнет

Пример

json
{
  "entityType": "string",
  "kind": "string",
  "entityDisplayName": "string",
  "mondayItemId": "uuid",
  "businessEntityId": 0,
  "details": "string"
}


SkipChangeOutcomeDto

Per-change outcome of a bulk Skip/Unskip operation.

Поля

ПолеТипОбязательноеОписание
changeIdnumberда
succeededbooleanдаTrue when the change was actually skipped/unskipped.
reasonstring | nullнетWhy the change was left untouched (e.g. not found, status does not allow it).

Пример

json
{
  "changeId": 0,
  "succeeded": false,
  "reason": "string"
}


SkipChangesResultDto

Result of a bulk Skip/Unskip operation — one outcome per requested change id.

Поля

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

Пример

json
{
  "outcomes": []
}


StaleDiffDto

Diff between the data the sync model was built on and the current CRM state — explains why a request became Stale.

Поля

ПолеТипОбязательноеОписание
totalWorkersChangednumberда
totalClientsChangednumberда
truncatedbooleanдаTrue when the workers/clients lists were cut off and do not contain every changed entity.
workersStaleDiffEntryDto[]да
clientsStaleDiffEntryDto[]да

Пример

json
{
  "totalWorkersChanged": 0,
  "totalClientsChanged": 0,
  "truncated": false,
  "workers": [],
  "clients": []
}


StaleDiffEntryDto

One entity that changed in CRM since the sync model was built.

Поля

ПолеТипОбязательноеОписание
businessEntityIdnumberда
displayNamestringда
kindStaleDiffEntryKindDtoда
changedFieldsstring[]даProperty names that differ (empty for Added/Removed).

Пример

json
{
  "businessEntityId": 0,
  "displayName": "string",
  "kind": "<StaleDiffEntryKindDto>",
  "changedFields": []
}


StaleDiffEntryKindDto

How an entity differs between the stale model snapshot and the current CRM data.

"Added" | "Removed" | "Changed"



SyncChangeDto

Поля

ПолеТипОбязательноеОписание
idnumberда
syncRequestIdnumberда
entityTypeSyncEntityTypeDtoда
entityDisplayNamestringда
businessEntityIdnumber | nullнет
mondayItemIdstring | nullнет
counterpartyBusinessEntityIdnumber | nullнетLinked second entity for a WorkerAssignment change (the worker, when the primary entity is the client).
counterpartyMondayItemIdstring | nullнет
counterpartyDisplayNamestring | nullнет
sourceSideSyncSideDtoда
operationTypeSyncChangeOperationTypeDtoда
sourcePropertyNamestring | nullнет
targetPropertyNamestring | nullнет
beforeValuestring | nullнет
afterValuestring | nullнет
statusSyncChangeStatusDtoда
errorMessagestring | nullнет
resolvedWinnerSyncSideDto | nullнет
resolvedByUserIdnumber | nullнет
resolvedDateTimestring | nullнет

Пример

json
{
  "id": 0,
  "syncRequestId": 0,
  "entityType": "<SyncEntityTypeDto>",
  "entityDisplayName": "string",
  "businessEntityId": 0,
  "mondayItemId": "uuid",
  "counterpartyBusinessEntityId": 0,
  "counterpartyMondayItemId": "uuid",
  "counterpartyDisplayName": "string",
  "sourceSide": "<SyncSideDto>",
  "operationType": "<SyncChangeOperationTypeDto>",
  "sourcePropertyName": "string",
  "targetPropertyName": "string",
  "beforeValue": "string",
  "afterValue": "string",
  "status": "<SyncChangeStatusDto>",
  "errorMessage": "string",
  "resolvedWinner": "<syncsidedto>",
  "resolvedByUserId": 0,
  "resolvedDateTime": "2026-05-05T08:00:00Z"
}


SyncChangeListPageDto

One server-side page of the changes table of a sync request.

Поля

ПолеТипОбязательноеОписание
totalnumberда
pagenumberда
rowsPerPagenumberда
itemsSyncChangeDto[]да

Пример

json
{
  "total": 0,
  "page": 0,
  "rowsPerPage": 0,
  "items": []
}


SyncChangeOperationTypeDto

Operation carried out by the change (entity-level create vs per-property update).

Значения

ИмяЗначениеОписание
NotFound0
Create1
Update2

Пример

json
0


SyncChangeStatusDto

Execution status of an individual change row.

Значения

ИмяЗначениеОписание
NotFound0
InPending1
Syncing2
Synced3
Conflict4
Error5

Пример

json
0


SyncEntityHistoryPageDto

One server-side page of the per-entity sync history.

Поля

ПолеТипОбязательноеОписание
totalnumberда
pagenumberда
rowsPerPagenumberда
itemsSyncEntityHistoryRowDto[]да

Пример

json
{
  "total": 0,
  "page": 0,
  "rowsPerPage": 0,
  "items": []
}


SyncEntityHistoryRowDto

One change applied to (or attempted on) an entity across all sync requests.

Поля

ПолеТипОбязательноеОписание
requestIdnumberдаId of the sync request the change belongs to.
requestKindstringдаFlow of the request: "Import" or "Sync".
requestCreateDateTimestringдаISO-8601 UTC timestamp the request was created.
propertyNamestring | nullнет
beforeValuestring | nullнет
afterValuestring | nullнет
sourceSideSyncSideDtoда
statusSyncChangeStatusDtoда
errorMessagestring | nullнет
mondayItemIdstring | nullнет
mondayItemUrlstring | nullнет

Пример

json
{
  "requestId": 0,
  "requestKind": "string",
  "requestCreateDateTime": "2026-05-05T08:00:00Z",
  "propertyName": "string",
  "beforeValue": "string",
  "afterValue": "string",
  "sourceSide": "<SyncSideDto>",
  "status": "<SyncChangeStatusDto>",
  "errorMessage": "string",
  "mondayItemId": "uuid",
  "mondayItemUrl": "https://..."
}


SyncEntityTypeDto

Type of the entity a change refers to.

Значения

ИмяЗначениеОписание
NotFound0
Worker1
Client2
WorkerAssignment3

Пример

json
0


SyncErrorGroupDto

A group of failed changes sharing the same normalized error message.

Поля

ПолеТипОбязательноеОписание
messagestringдаOriginal (raw) error message of the first change in the group.
normalizedstringдаNormalized message used as the grouping key (ids/values stripped).
countnumberдаNumber of changes in Error status with this normalized message.
changeIdsnumber[]даIds of the changes in the group.
entitySamplesstring[]даA few entity display names affected by the group, for quick orientation.

Пример

json
{
  "message": "string",
  "normalized": "string",
  "count": 0,
  "changeIds": [],
  "entitySamples": []
}


SyncErrorsSummaryDto

Errors of a sync request grouped by normalized message.

Поля

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

Пример

json
{
  "items": []
}


SyncRequestDetailDto

Поля

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

Пример

json
{
  "summary": "<SyncRequestSummaryDto>",
  "changes": []
}


SyncRequestListPageDto

Поля

ПолеТипОбязательноеОписание
totalnumberда
pagenumberда
rowsPerPagenumberда
itemsSyncRequestSummaryDto[]да

Пример

json
{
  "total": 0,
  "page": 0,
  "rowsPerPage": 0,
  "items": []
}


SyncRequestStatusDto

Status of a full Monday ↔ Business sync request.

Значения

ИмяЗначениеОписание
NotFound0
Syncing1
Synced2
PartiallySynced3
PreviewPending4Bootstrap import: background worker has not yet built the preview.
PreviewReady5Bootstrap import: preview built, waiting for the user to approve.
Cancelled6Request was cancelled by the operator before/while applying.
NoChanges7Preview built but the diff was empty — nothing to apply on either side.
Stale8Business (DAF) data changed since the preview was built — operator must recompute before applying.
WaitingForApiLimit9Apply hit Monday's daily API call limit; the remaining changes are deferred until the quota resets (midnight UTC), then the background worker auto-resumes. See resumeAfterDateTime.

Пример

json
0


SyncRequestSummaryDto

Поля

ПолеТипОбязательноеОписание
idnumberда
statusSyncRequestStatusDtoда
assignedUserIdnumberда
assignedUserFullNamestringда
workersXlsxFileNamestring | nullнет
clientsXlsxFileNamestring | nullнет
createDateTimestringда
processedDateTimestring | nullнет
totalChangesnumberда
conflictCountnumberда
errorCountnumberда
pendingCountnumberда
processedCountnumberнет
totalCountnumberнет
requiresApprovalbooleanнетBootstrap-import preview/approve flow — true when the request was uploaded with requiresApproval.
previewBuiltDateTimestring | nullнетISO-8601 UTC timestamp (e.g. "2026-05-18T12:34:56.789Z") set when the preview build completed.
approvedDateTimestring | nullнетISO-8601 UTC timestamp set when an admin approved the preview and unblocked the apply phase.
approvedByUserFullNamestring | nullнет
resumeAfterDateTimestring | nullнетWhen status is WaitingForApiLimit, ISO-8601 UTC time the request will resume (Monday daily quota reset, midnight UTC).
estimatedMondayApiRequestsnumberнетEstimated number of Monday API calls the apply will consume (batched ≤30 per request). ≈0 for Import.
previewReportBootstrapPreviewReportDto | nullнетComputed report attached while status is PreviewPending or PreviewReady.

Пример

json
{
  "id": 0,
  "status": "<SyncRequestStatusDto>",
  "assignedUserId": 0,
  "assignedUserFullName": "string",
  "workersXlsxFileName": "string",
  "clientsXlsxFileName": "string",
  "createDateTime": "2026-05-05T08:00:00Z",
  "processedDateTime": "2026-05-05T08:00:00Z",
  "totalChanges": 0,
  "conflictCount": 0,
  "errorCount": 0,
  "pendingCount": 0,
  "processedCount": 0,
  "totalCount": 0,
  "requiresApproval": false,
  "previewBuiltDateTime": "2026-05-05T08:00:00Z",
  "approvedDateTime": "2026-05-05T08:00:00Z",
  "approvedByUserFullName": "string",
  "resumeAfterDateTime": "2026-05-05T08:00:00Z",
  "estimatedMondayApiRequests": 0,
  "previewReport": "<bootstrappreviewreportdto>"
}


SyncSideDto

Origin of a detected change or a snapshot row.

Значения

ИмяЗначениеОписание
NotFound0
Business1
Monday2

Пример

json
0


UnresolvedInsuranceCompanyDto

An insurance company name from Monday that could not be matched to a CRM insurance company.

Поля

ПолеТипОбязательноеОписание
namestringдаRaw insurance company name as it appears in Monday.
countnumberдаNumber of changes blocked by this unresolved name.
changeIdsnumber[]даIds of the affected changes.

Пример

json
{
  "name": "string",
  "count": 0,
  "changeIds": []
}