A dealer exports their item stock from the ERP as CSV once a month. An API integration is not planned, and for that rhythm it would be overkill. The risk lies elsewhere: one shifted column in a file with ten thousand rows turns prices into item numbers.
The catalogue transfer therefore treats the file like a sync run: first a preview with counts and review notes is produced, then a decision is made against exactly that preview. According to the contract, the transfer is created in the canonical Commerce model; whether the review differs by format is not specified by the contract.
| Surface | Roles |
|---|---|
| Commerce | Parts trading, Vehicle trading, Software vendor |
What this case requires
- An uploaded file with a token. The transfer references the file via
artifactToken; the token is only written, never returned. - The right format.
serializationknowscsv,xmlandjson. - Optionally a connection.
connectionIdis optional and references a connection; the contract does not describe what effect it has on the transfer. - Someone who reads the notes. Approval is only as good as the review before it.
The sequence
The table names the responsible call per stage and what exists afterwards. The reasoning for why a stage cannot be skipped follows below it.
| Stage | Call | What exists afterwards |
|---|---|---|
| Create the transfer | POST /commerce/v1/catalog-transfers | direction import or export, serialization csv, xml or json |
| Read the state | GET /commerce/v1/catalog-transfers/{transferId} | state and counts with read, changed, rejected and conflicted |
| Read the review notes | GET /commerce/v1/catalog-transfers/{transferId}/issues | severity, code, pointer and, where present, recordNumber per note |
| Decide | POST /commerce/v1/catalog-transfers/{transferId}/approval | decision approve or reject against the reviewed previewRevision |
| Collect the result file | GET /commerce/v1/catalog-transfers/{transferId}/artifact | artifactToken, checksum and expiresAt |
Why each stage is needed
- Create the transfer.
POST /commerce/v1/catalog-transferstakesdirectionwithimportorexport,serializationandartifactToken. The response carriestransferId,stateand the firstcounts— nothing is taken over yet. - Read the state.
GET /commerce/v1/catalog-transfers/{transferId}returnsstateandcountswithread,changed,rejectedandconflicted. The four figures are the first sanity check: ten thousand read and ten thousand changed is rarely right for a monthly file. - Read the review notes.
GET /commerce/v1/catalog-transfers/{transferId}/issueslists per noteseverity,code,message,pointerand, where present,recordNumber. WithrecordNumberyou find the row in your own file instead of interpreting an error message. - Decide.
POST /commerce/v1/catalog-transfers/{transferId}/approvaltakesdecisionwithapproveorreject, pluspreviewRevisionandexpectedRevision. What is approved is the reviewed preview — if the state has changed in the meantime, the revision no longer matches. - Collect the result file.
GET /commerce/v1/catalog-transfers/{transferId}/artifactreturnsartifactToken,checksumandexpiresAt.checksumis a string of 64 hexadecimal characters; the contract does not specify the algorithm or what it is computed over.expiresAtgives the expiry time.
curl -X POST \
-H 'X-Api-Key: <API_KEY>' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: katalog-import-2026-09' \
-d '{"direction":"import","serialization":"csv","artifactToken":"<artifactToken>","connectionId":"<connectionId>"}' \
'https://commerce-preview.invalid/commerce/v1/catalog-transfers'What you end up with
What remains is a catalogue taken over only after approval against the reviewed preview, and a result file with a checksum. The contract does not enforce that anyone has read the counts and review notes before approval; it requires previewRevision and expectedRevision — which is why someone who reads the notes is among the prerequisites. A shifted column can be noticed before approval if the preview’s counts or review notes show it.
Where to find this in the documentation
The binding field lists, error codes and sample responses live in this surface’s OpenAPI contract at docs.tapinomahub.com (tapinoma-commerce). All use cases arranged by surface and role: overview of the use cases.
Sources and legal references
Frequently asked
Which file formats work?
csv, xml and json — the values of serialization.
Is the file taken over immediately?
No. First counts and review notes are produced; takeover happens only after approval against the reviewed preview.
How do I find the faulty row?
Via recordNumber in the review note, where present. It points to the record in your file.
