Bulk upload
Send many products at once, without the request body limit of a single upsert (1 MB on Sandbox, 6 MB on Production).
- Get a bulk upload URL returns a signed URL.
- Upload your JSON file to that URL with an HTTP
PUT. The file is an array of products, each in the same format as a single upsert. See Bulk file format. - Start a bulk upload with the same URL.
Processing happens in the background. Check bulk upload status follows it, and Cancel a bulk upload stops it.
Endpoints
GET /api/bobsync/products-bulk |
Get a signed URL to upload the file to. |
POST /api/bobsync/products-bulk |
Queue the uploaded file for processing. |
GET /api/bobsync/products-bulk/status |
Check how a run is going, or how the last one finished. |
POST /api/bobsync/products-bulk/cancel |
Stop a running upload. |
A bulk file is a set of changes, not a replacement catalogue
- Products in the file are created or updated.
- Products missing from the file are left alone. Their listings stay live.
- To remove a listing, call Delete a product. Leaving a product out of a later file does nothing.
A daily file containing only what changed is a good way to use these endpoints.
But a product's variants are replaced
Within each product you send, the variants array replaces that product's
variants. A variant we hold that is not in the array is deleted, along with
its part of the listing. Send a product's complete variant list every time,
even for a one-field change. The single-product upsert works the same way.
Errors do not stop the run, with one exception
Each product is processed on its own. A failed product is recorded in the status and the run continues.
The exception is an id that does not exist, most often an id from the
other environment. That stops the run part-way and leaves is_running set
for up to an hour, until the status record expires. See Important concepts.