Skip to main content

Resolve Field Review

Resolve one held field: approve keeps the value, correct or override promotes a replacement. Writes a promotion cell, appends to the decision log, and resumes the field.

Resolve one held field. The action is approve to keep the held value, or correct / override to promote a replacement supplied in corrected_value. Every action writes a promotion cell version so the value becomes canonical, appends a row to the per-field decision log, and resumes the field. A gate-blocked field re-runs its remaining phases; a declarative hold completes directly.

The promotion cell is written synchronously before the field-state flip, so a data product never reads a resolved-but-still-held value. The decision is attributed to the api actor in the decision log, which keeps API-driven resolutions auditable without forging a user record. The reason note is recorded against the decision and is recommended for overrides.

The field must currently be in review (blocked or pending_review); resolving a field that is not in review returns 400. There is a re-block loop guard: an approve or override decision for a field and gate suppresses re-blocking on re-validation, while a correct does not, since a corrected value that still fails is a genuinely new review item. This endpoint requires an API key with the write scope.

Use correct when you are supplying the right value (it is required for correct). Use override to force a value past a gate you judge wrong; corrected_value is optional for override and, when omitted, the held value is promoted as-is.
POST/v1/field-reviews/{docId}/{fieldKey}/resolve

Response

Response fields

fieldKeystringThe resolved field key.
statusstringField state after resolution (e.g. progressing while it resumes, or completed).
currentPhaseIdstring | nullPhase the field resumed into, if any.
blockedAtStageIdstring | nullGate that had blocked the field; null after a clearing decision.
blockedByFieldstring | nullField that this field was waiting on, if it was a dependent.
reviewTriggerstring | nullgate or declarative, or null once cleared.
reviewRoutingstring | nullWhere the review was routed (review_queue or hold).
reviewRequestedAtstring | nullISO 8601 time the field was parked, or null once cleared.
resolveActionstring | nullThe action just applied: approve, correct, or override.
resolvedAtstring | nullISO 8601 resolution timestamp.
deliveredAtstring | nullISO 8601 delivery timestamp, if delivered.

Response

{
  "fieldKey": "total_amount",
  "status": "progressing",
  "currentPhaseId": "validation",
  "blockedAtStageId": null,
  "blockedByField": null,
  "reviewTrigger": null,
  "reviewRouting": null,
  "reviewRequestedAt": null,
  "resolveAction": "correct",
  "resolvedAt": "2024-09-14T11:20:05.000Z",
  "deliveredAt": null
}

Errors

Error responses

400validation_errorInvalid document ID format, the field is not in review (current status is not blocked or pending_review), or the body failed validation (e.g. correct without corrected_value).
401unauthorizedMissing or invalid API key.
404not_foundNo pipeline document, or no field state for the given field key, exists for your organization.
429rate_limitedToo many requests. Retry after the period indicated in the Retry-After header.