Skip to content

Preview a catalogue import without changing products

POST
/shops/{id}/catalogue-preview
curl --request POST \
--url https://example.com/shops/019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f/catalogue-preview \
--header 'Content-Type: application/json' \
--cookie __Host-bottle.session_token=<__Host-bottle.session_token> \
--data '{ "settings": { "importImages": true, "importDescriptions": true, "importCylinderCharges": true, "suggestGasTypes": true, "reviewGasTypes": true } }'

Lists each eligible listing as new or already here. A new listing that looks like a product already in Bottle carries a match: the same SKU, else the same name, else a model suggestion. Send matches you accept as links on the pull.

id
required

UUID v7

string format: uuid

Example

019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f

UUID v7

Media typeapplication/json
object
settings
object
importImages
required
boolean
importDescriptions
required
boolean
importCylinderCharges
required
boolean
suggestGasTypes
required
boolean
reviewGasTypes
required
boolean

Example generated

{
"settings": {
"importImages": true,
"importDescriptions": true,
"importCylinderCharges": true,
"suggestGasTypes": true,
"reviewGasTypes": true
}
}

New and existing listings for approval

Media typeapplication/json
object
hash
required
string
settings
required
object
importImages
required
boolean
importDescriptions
required
boolean
importCylinderCharges
required
boolean
suggestGasTypes
required
boolean
reviewGasTypes
required
boolean
items
required
Array<object>
object
externalId
required
string
name
required
string
sku
required
string | null
existingProductId
required

UUID v7

string | null format: uuid
currentName
required
string | null
match
object
productId
required

UUID v7

string format: uuid
name
required
string
by
required
string
Allowed values: sku name ai
pricePence
required
integer
images
required
integer
description
required
string | null
charge
required
string | null
Allowed values: deposit hire
selectable
required
boolean
reason
required
string | null
Allowed values: external grouped unknown_type composite_no_price composite_kit no_name no_price charges_excluded
shopType
string | null
candidates
Array<object>
object
id
required

UUID v7

string format: uuid
name
required
string
sku
required
string | null

Example

{
"items": [
{
"existingProductId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"match": {
"productId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"by": "sku"
},
"charge": "deposit",
"reason": "external"
}
],
"candidates": [
{
"id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f"
}
]
}

Not signed in

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

Not allowed to manage shops, or asking for a key to do it

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

No such shop

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

Unsupported currency or unsafe shop address

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

Validation failed

Media typeapplication/json
object
error
required
string
Allowed values: validation
message
required
string
issues
required
Array<object>
object
path
required
string
message
required
string

Example

{
"error": "validation",
"issues": [
{
"path": "email",
"message": "Invalid email"
}
]
}

Shop unavailable

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}