Skip to main content
GET
Get Import Job

Authorizations

Authorization
string
header
required

API key generated in Settings > API Keys. Include as Authorization: Bearer <key>.

Path Parameters

jobId
string<uuid>
required

Job id returned by the batch POST (also in its Location header)

Query Parameters

fields
string

Comma-separated list of the resource's top-level keys to return (per element for a list), e.g. id,name; omit for the full body. Top-level only; whitespace is trimmed and duplicates count once. fields never adds keys: a selected optional key that is absent on a row stays absent. 400 when passed more than once, when empty, or when it names an unknown key (the error names it and lists the allowed ones).

Response

The import job

Async batch import job. completed and failed are terminal — stop polling. The staged input payload is freed ~24 h after the job finishes and the job row itself is deleted ~30 days after creation; poll and persist the result within that window.

jobId
string
required

UUID of the import job.

kind
string
required

articles | suppliers | orders, or a PPWR kind (ppwr_units | ppwr_components | ppwr_article_links | ppwr_formats | ppwr_quantities), or plots (a large plot-file import committed in the app).

source
string
required

erp = staged by this API; ui = a CSV import run in the app.

runId
string | null
required

Null for erp jobs; set when a UI upload was recorded in accumulated form.

status
string
required

queued | running | completed | failed

progress
object
required
error
string | null
required

Stable machine key when status is failed — e.g. workerError, dispatchFailed, or a JSON string for structured failures: {"key":"lineReplacementRequired","orderNumbers":[…]} or {"key":"invalidPayload","issues":[{"path","code"}]}. Never contains payload values.

createdAt
string
required

When the job was staged (ISO 8601, UTC).

finishedAt
string | null
required

When the job reached completed or failed (ISO 8601, UTC); null while it is still running.

result
any

The merged result, null until the job is completed (a failed plots job may carry the partial result). Its shape depends on kind:

  • articles: { imported: [{ internalArticleNr, id }], updated: [{ internalArticleNr }], failed: [{ internalArticleNr, error }], skipped, skippedRows: [{ key, reason }], consolidatedRows }
  • suppliers: { imported: [{ id, name, country }], updated: [{ name, country }], failed: [{ name, error }], skipped, inferredCountryCount, contactsAdded: [{ id, supplierId, email }] }
  • orders: { imported: [{ id, orderNumber }], updated: [{ id, orderNumber }], failed: [{ orderNumber, error }], skipped, skippedOrders: [{ id, orderNumber }], autoCreated: { suppliers, articles, supplierArticleLinks } }
  • ppwr_quantities: { imported, updated, deleted, failed[], derived, cleared, conflicts[], multiLinkedArticleNrs[] } — derived, cleared and conflicts count packaging units of the touched period/market scopes, read before and after the batch (feed figures are computed at read, never stored): units counting the feed after it, units that stopped counting it, and units using typed figures instead (one conflict per unit). multiLinkedArticleNrs lists the article numbers whose quantity feeds more than one packaging unit (an article can be linked to several units, e.g. sales plus transport packaging), so the same quantity counts on each linked unit. Informational, never blocking.

skipped is a count. Each failed[].error is { key, params? }: a stable machine key plus its parameters.