APIs & services / portfolio-service

Delete a compact block.

Endpointtoday's app
Call
DELETE /gateway/portfolio-service/api/v1/compact-block?compactBlockId&reason
Service
portfolio-service
Features
Compact Block
When
Queued sync (COMPACT_BLOCK DELETE)
Auth
X-SESSIONID stamped when queued (CoreAPI dooWithRetry); X-REQUESTID idempotency key
In the App Service

Use case

Queued delete of a compact block (COMPACT_BLOCK DELETE) with the reason chosen by the user. On success the local block is marked synced. On error the handler rewrites compactBlockId and reason in the URL from the DB (in case the id arrived later) and retries.

Headers

HeaderValueNotes
X-SESSIONID<session token>Stamped when queued (dooWithRetry); refreshed on 401.
Content-Typeapplication/jsonAdded by CoreAPI even though there is no body. No X-REQUESTID: DELETE ops do not get one.

Parameters

ParamInRequiredExampleNotes
compactBlockIdqueryYes6101Server block id.
reasonqueryYesLands no longer adjacentinActiveReason (not URL-encoded by the app).

Request

No body. compactBlockId, reason

Response

FieldTypeRequiredNotes
(body)unknownNot read.

Errors

StatusWhenWhat the app does
401Session token expired or invalidCoreAPI invalidates the session id and retries once immediately; if still failing the op stays in the queue (TryAgain.LATER).
500Server error on a /gateway URLBaseResponseHandler fetches a new session id (first 5 attempts) and returns TryAgain.LATER; retried per RetryScheduler policy (retry threshold/delay come from app config).
503Service unavailableCoreAPI retries once immediately, then the op is retried later by the sync queue.
any non-2xxAny other failureHandler onError -> TryAgain.LATER (op stays queued and is visible in Pending Sync); a row is written to the local error_log table (Sync Error Log screen) with URL, body, headers and raw response; every 10th attempt the op is mirrored to Firestore for support.

Source

  • data/src/main/java/org/mindtree/app/agricultor/data/entity/CompactBlock.kt
  • data/src/main/java/org/mindtree/app/agricultor/data/sync/work/CompactBlockWorker.kt
  • data/src/main/java/org/mindtree/app/agricultor/data/sync/rh/CompactBlockDeleteRH.kt
  • data/src/main/java/org/mindtree/app/agricultor/data/manager/CoreAPIManager.kt
  • data/src/main/java/org/mindtree/app/agricultor/data/sync/rh/BaseResponseHandler.kt
  • offline-core/src/main/java/com/mindtree/bridge/coreapi/offline/SyncQueueProcessor.java
  • offline-core/src/main/java/com/mindtree/bridge/coreapi/offline/manager/OperationManagerImpl.java
  • core-api/src/main/java/com/mindtree/bridge/coreapi/impl/CoreAPIDefaultImpl.java