Repairs local land data after a crop or ATM sync is rejected because of the asset. When IEPortfolioPostRH, IEPortfolioPatchRH, PortfolioLineItemPutRH(WithCropChange) or FarmingModelPostRH receive ERR_PLATFORM_ASSET_CHECKSUM_MISMATCH or ERR_PLATFORM_ASSET_TOTAL_QUANTITY_LIMIT_EXCEED, they enqueue FetchFarmerAssetDataWorker with the asset id taken from the server errorMessage. The worker (data/utils/LandDataUpdateWorker.kt; a copy also exists in app/utility/FarmerDataUpdateWorker.kt) calls this endpoint online and overwrites the local farmerassets row, keeping the local appId and geofence columns. It then writes a SyncErrorLogs row, flags the line item or ATM as having a sync error, and shows a notification. On failure, response.body()!! throws and the worker fails without updating anything.
Headers
Header
Value
Notes
X-SESSIONID
<session id>
Passed explicitly as a @Header by the caller (AndroidSessionManager.sessionId). AuthInterceptor also fills it when missing, and on a 401 or 400 it invalidates the token, fetches a new one and retries once.
Parameters
Param
In
Required
Example
Notes
assetId
path
Yes
5501
Server asset id parsed from the sync error's errorMessage.
Values from the asset ref data (land or livestock picker on the Land and Livestock screens).
*.labels[]
array
Localised labels, stored in asset_*_labels tables.
totalQuantity.value
double
Land extent (acres) or head count, from the Extent field. On an "Integrity" error, the RH sets a null value to 0.0 and re-queues.
totalQuantity.uoM
object
Unit of measure (code, symbol, measurementType).
nameList[].text
string
Asset name or survey label. PII: may contain survey or land identifiers.
assetSpecsList[]
array
specName/specValue pairs (for example survey number). PII: land record identifiers.
appMillMetadata.ie_appId
string
Local app id of the farmer, used to resolve owningEntityId offline.
assetCheckSum
string
MD5 of the asset name plus total quantity (IeAsset.setMD5Hash). The server uses it to detect checksum mismatches (ERR_PLATFORM_ASSET_CHECKSUM_MISMATCH).
The data module parses it as FarmerAssets (SetupServiceNew). APIInterface declares IeAsset for the same path, but that method is not used by these workers.
Errors
Status
When
What the app does
non-2xx / empty body
Asset not found or server error
NullPointerException on body()!!. The worker returns failure, the local data is not repaired, and the portfolio operation keeps retrying.
401/400
Session invalid
AuthInterceptor re-authenticates and retries once.