Resolve Cycle Count
POST/api/cyclecounts/resolvecyclecount
Tier: Internal — subject to change without notice.
Uploads the scan batch for a cycle count and resolves it in the same call (there is no separate snapshot-upload endpoint for cycle counts).
The item-resolution logic runs inside a blanket catch block: any exception raised
mid-resolve — including the System.ArgumentException thrown when resolving
an already-complete cycle count a second time — is silently swallowed. The action still
raises the CycleCountResolved event and returns 200 with a detail DTO reflecting
whatever partially committed, rather than surfacing the failure (code-read only, not
verified live — see docs/api-known-issues.md). Out-of-scope tags scanned during a
SkuGroup/CustomSku count are captured on the snapshot but excluded from the
Present/Moved/Created results.
Request
Responses
- 200
- 400
- 401
- 403
A CycleCountDtos.ResolveCycleCountResultDto. On the synchronous path this carries the
resolved detail plus Notifications for items excluded because their current item
state disallows the scan. On the async path only BackgroundTaskId and a
placeholder CycleCountDto (Id only) are populated. Unknown tags are
auto-created as items at the count place (recorded with the literal state string
"Created"); scanned items already at the place become Present; scanned items
located elsewhere are physically moved and become Moved. There is no missing-item
sweep. Raises the CycleCountResolved system event and flips IsComplete to
true (terminal).
Unknown cycle count id — NotFound; snapshot validation failure; any other outer exception — OperationFailed.
Caller is not authenticated.
Caller does not have Update permission on the CycleCount module.