← Back to schema index

BeneficiaryImportJob

Bulk beneficiary import job. Lifecycle: `pending` → `parsing` → `preview_ready` → `committing` → `completed` (or `failed` / `cancelled`). Wrapped under `{ type, id, attributes }` following JSON:API format.

ExtendsJsonApiResourceBase

Properties

FieldTypeDescription
typestringJSON:API resource type (always `beneficiary_import`).
idstringNumeric job ID expressed as a string (JSON:API format).
attributesobjectImport job fields.
statusstringJob status: `pending` — uploaded, awaiting parsing; `parsing` — extracting rows; `preview_ready` — ready for user review; `committing` — persisting confirmed rows; `completed` — commit finished; `failed` — non-recoverable failure (see `error_code`); `cancelled` — cancelled by the user.
file_formatstringFormat of the uploaded file. Accepted: CSV, Excel (xls/xlsx), plain text, and PDF. That is, `csv`, `xls`, `xlsx`, `txt`, or `pdf`.
parse_modestringParse mode: `template` — fixed column format (downloadable from `/v1/beneficiaries/imports/template`); `free` — free-form, the system infers the structure.
total_rowsintegerTotal rows extracted from the file. Available once status is `preview_ready` or later.
valid_countintegerError-free rows, ready for direct commit.
correctable_countintegerRows with auto-corrections applied (e.g. auto-assigned alias). Persisted unless the user rejects them.
fatal_countintegerRows with errors that cannot be auto-corrected. Not persisted and skipped during commit.
duplicate_countintegerSum of `duplicate_account` and `duplicate_alias` rows. `duplicate_account` rows are skipped unless the account is archived (in which case it is reactivated); `duplicate_alias` rows are persisted with an alias suffix.
committed_countintegerRows effectively persisted in the beneficiary list. Available once status is `completed`.
skipped_countintegerRows not persisted (fatal or `duplicate_account` without possible reactivation).
llm_invokedboolean`true` if the AI engine was used during parsing to resolve ambiguous rows in free-form mode.
error_codestring | nullStable error code when `status=failed` (e.g. `file_corrupt`, `plan_cap_exceeded`). `null` in non-failed states.
error_summarystring | nullHuman-readable diagnostic message when `status=failed`. Card numbers (PANs) are masked in this field.
created_atstring (date-time)ISO 8601 timestamp in UTC with explicit `Z` suffix. Example: `"2026-05-01T05:14:38Z"`. Every datetime field uses this shape. The descriptor at `meta.datetime` makes the contract runtime-assertable.
parsed_atstring | nullISO 8601 UTC timestamp when parsing completed. `null` until parsing finishes.
committed_atstring | nullISO 8601 UTC timestamp when commit started. `null` until commit begins.
completed_atstring | nullISO 8601 UTC timestamp when the job completed. `null` while the job has not finished.

Used in operations

  • GET /v1/beneficiaries/imports/{id}
  • GET /v1/beneficiaries/imports/{id}/preview

Referenced by schemas