API: Import
API: Import
Programmatic access — early access
The
tieback
API is available to selected workspaces during early access. Endpoints in production today are authenticated with an authenticated session. Standalone API-key access is being onboarded per workspace. Contact
tieback
to enable API credentials for your workspace.
What It Does
The Import API moves product data into tieback through a four-stage pipeline. Nothing is written to your catalogue until the final stage, so an import can be inspected, corrected, and re-staged before it takes effect.
Who It’s For
Developers building automated data pipelines that feed product data into tieback from external systems.
Stage 1: Job
create_import_job
What it does
Creates a new import job for the specified brand. The job starts in a draft state and accepts rows and mappings before validation and commit.
Request
Response (example)
Errors (examples)
- Not authenticated: request has no valid JWT or the token has expired.
- Forbidden: caller does not have admin access to the specified brand.
- Invalid input: missing required fields or duplicate idempotency key.
Stage 2: Stage
Staging has two parts: submitting the rows, and describing how their columns map to product fields. Both must be complete before validation.
bulk_upsert_import_rows
What it does
Submits parsed rows to an existing import job. Rows are upserted by row number within the job, resubmitting the same row number replaces the previous data.
Request
Response (example)
Errors (examples)
- Not authenticated: request has no valid JWT or the token has expired.
- Forbidden: caller does not have access to the specified job.
- Invalid input: rows are malformed or missing required fields (row_number, raw_row).
set_import_mapping
What it does
Defines how source CSV columns map to tieback product fields. Must be called before validation.
Request
Response (example)
Errors (examples)
- Not authenticated: request has no valid JWT or the token has expired.
- Forbidden: caller does not have access to the specified job.
- Invalid input: column mapping is not a valid JSON object.
Stage 3: Validate
validate_import_job
What it does
Runs server-side validation on all rows in the job. Each row is checked for required fields, data types, value-set compliance, and identifier format. Must be called before commit.
Request
Response (example)
Errors (examples)
- Not authenticated: request has no valid JWT or the token has expired.
- Forbidden: caller does not have access to the specified job.
- Invalid input: job has no rows or no column mapping set.
Stage 4: Commit
commit_import_job
What it does
Commits the import, creating or updating products for all valid (non-excluded) rows. Each row is processed independently, a failure on one row does not affect others. The job must be validated before committing.
Request
Response (example)
Errors (examples)
- Not authenticated: request has no valid JWT.
- Forbidden: caller does not have sufficient access for this operation.
- Invalid input: request is malformed or cannot be processed.
Typical Workflow
- Call
create_import_jobwith the brand ID and file name. - Call
bulk_upsert_import_rowswith parsed row data. - Call
set_import_mappingto define column-to-field mappings. - Call
validate_import_jobto check all rows. - Call
commit_import_jobto apply the import.
Limits & Notes
- All import operations require authentication with admin role.
- Each row is processed independently during commit.
- Idempotency keys prevent duplicate job creation.
- Validation must complete before commit is allowed.
FAQ
Can I update an existing row after submission?
Yes. Call bulk_upsert_import_rows again with the same row numbers, rows are upserted by row number.
What file formats are supported? The API accepts pre-parsed JSON row data. CSV parsing is handled client-side before calling the API.