Catalogue, basket and shop connection
Maintain and import the product catalogue, connect and sync a shop, product search, product cards and basket handover: fields, limits, messages.
In plain language
This page explains the catalogue. The catalogue is the list of your products. The assistant only names products from this list. You keep the list by hand, upload it or get it from your shop. In a chat, the assistant shows matching products as cards. It can also put together a basket. Your shop then picks up this basket.
All documentation topics
The catalogue is the list of products your assistant knows about: anything not listed there, it will not mention. You maintain it by hand, import it as a JSON list or have it synchronised from a connected shop. The Search the catalogue tool pulls products from it and shows them as cards in the conversation, and the Hand over basket tool puts together a basket that your shop collects with a pickup token. This page covers the catalogue, the shop connection, both tools and the pickup, with their fields, limits and messages.
Where to find it
In the app, the catalogue sits in the Triggers group under Tools (app.xicbot.de/werkzeuge), on the Catalogue tab. At the top it reads “What the assistant may name. What is not listed here, it does not know.”, followed by the Shop connection box, the Products list, the Add product form and the Import box. You also create the Search the catalogue and Hand over basket tools under Tools, as described in Tools. Handed-over baskets appear under Cases on the Baskets tab, see Appointments and cases.
Roles and plan
| What | Minimum role |
|---|---|
| View the catalogue and the state of the shop connection | Read |
| Add, change, delete and import products | Edit |
| Connect a shop, change, check, sync and disconnect it | Administration |
With the Read role the product form is locked and the page says: “With the Read role this area is view-only. Changes need at least the Edit role.” Each product shows View instead of Edit, and the Import box is missing. If no shop is connected yet, users below Administration see “Administrators of this account can connect a shop.” Which role may do what is explained in Team and roles.
Product fields
You create a product with Add product and open an existing one with Edit. Edit scrolls the form into view and moves the focus to its heading “Edit: …” with the title. Save stores it (“Saving …”); the form is then empty, “Saved: …” with the title appears next to the button, and the focus is on the product’s Edit button in the list. Cancel discards your input and returns the focus there.
| Field | Required and limits | Default | Effect |
|---|---|---|---|
| Identifier | Required, at most 100 characters, unique in the catalogue; cannot be changed after creation | empty | Article number. The basket, accessories, import and sync find the product by it. |
| Title | Required, at most 200 characters | empty | Heading of the card; the search looks in it. |
| Description | At most 800 characters | empty | Text about the product; the search looks in it too. |
| Price in cents | Whole number from 0 to 100000000 | empty | Price on the card and basis of the basket. Without a price the card shows none. |
| List price in cents | Same as the price; not checked against the price | empty | Only a list price above the price produces a saving on the card, and only with a Currency. |
| Currency | Exactly 3 characters, stored in upper case | EUR | Code after every amount on the card |
| Image address | Valid address, at most 500 characters | empty | Passed to the widget with the card, see Product cards. |
| Product address | Valid address, at most 500 characters | empty | The card title links there; target of the Product page button. |
| Available | On or off | on | The search only finds available products. |
| Rating (0 to 5) | 0 to 5, one decimal place | empty | Line such as “4.5 out of 5” on the card, only above 0 |
| Number of ratings | Whole number from 0 | empty | Adds “(12 reviews)” after the rating |
| Delivery time in business days | 0 to 365 | empty | 0 shows “Ships today”, otherwise “Delivery: … business days” |
| Features | One per line, at most six, each at most 60 characters | empty | Feature line on the card and a row in the comparison |
| Accessories | One identifier per line, at most six, each at most 100 characters | empty | Basis of “Goes together” |
| Customers also bought | Same as accessories | empty | Basis of “Customers also bought” |
| Button target | No button, Product page or Cart | Product page | “View product” or “Add to cart” button on the card |
| Cart address | Valid address, at most 500 characters; only shown for the Cart target | empty | Target of the “Add to cart” button |
Viewing, changing and deleting products
- The Products list is sorted by title and shows the title, identifier and price of each product, or a dash without a price. An unavailable product carries the suffix “· not available”.
- A product from the connected shop also carries “from the shop · synced …” with the date and time of its last sync.
- Above it, the total appears as “in the catalogue: …”, during a search “… matches of … in the catalogue”, together with the range shown, for example “1–50 shown”. Each page holds 50 products; with more, Back and Next turn the pages, with “Page 1 / 10”.
- The search field takes up to 120 characters and finds products whose title or identifier starts with the text you enter; the hint below the field says the same. A new search starts on page 1.
- While loading it says “Loading …”. If the request fails, “The list could not be loaded.” appears with a Load again button; an empty catalogue shows “The catalogue is empty.”, a search without matches “No product whose title or identifier starts with “…”.”
- Delete asks “Delete this product from the catalogue?” with Delete and Cancel; afterwards “The product has been deleted.” appears below the list heading, and the page reloads so that the next product moves up.
- If a product has been deleted in the meantime, for example in another window, the page reports “This entry no longer exists. Reload the page to see the current state.” when saving or deleting.
- The form rejects an identifier that is already taken with “This identifier already exists in the catalogue.”
Import
The Import box takes a list in JSON format: “A list in JSON format, at most 500 rows per run. Existing identifiers are updated, not duplicated. If an entry carries the identifier of a product from the shop, the next sync overwrites its synchronised details.” Paste the list into the text field and click Start import. Each entry is one product with the field names from the table below.
katalog.json json
[
{
"external_id": "MUG-01",
"title": "Stoneware coffee mug",
"price_cents": 1490,
"list_price_cents": 1890,
"currency": "EUR",
"image_url": "https://shop.example.com/images/mug-01.jpg",
"product_url": "https://shop.example.com/mug-01",
"is_available": true,
"rating_tenths": 45,
"rating_count": 12,
"delivery_days": 2,
"features": ["dishwasher safe", "300 ml"],
"accessories": ["COASTER-01"],
"action": "product"
}
]| Field name | Form field | Limits |
|---|---|---|
external_id | Identifier | Required, at most 100 characters |
title | Title | Required, at most 200 characters |
description | Description | At most 800 characters |
price_cents, list_price_cents | Price in cents, List price in cents | Whole number from 0 to 100000000 |
currency | Currency | Exactly 3 characters, EUR if omitted |
image_url, product_url, cart_url | Image address, Product address, Cart address | Valid address, at most 500 characters |
is_available | Available | true or false, true if omitted |
rating_tenths | Rating (0 to 5) | In tenths, 0 to 50; 45 stands for 4.5 |
rating_count | Number of ratings | Whole number from 0 to 100000000 |
delivery_days | Delivery time in business days | 0 to 365 |
features | Features | List, at most six entries of 60 characters each |
accessories, also_bought | Accessories, Customers also bought | List of identifiers, at most six of 100 characters each |
action | Button target | none, product or cart, product if omitted |
- One run takes at least one and at most 500 entries. Split larger catalogues across several runs.
- All or nothing: if a single entry is invalid, the run writes none.
- An existing identifier is updated and a new one is created. Afterwards the box reports next to the button, for example, “new: 3, updated: 12, in the catalogue: 240”.
- If the input is not JSON or not a list, “The input is not valid JSON.” appears and nothing is sent.
- Importing, creating and changing products as well as saving, checking and syncing the shop connection share a limit of 20 requests per minute per signed-in user.
Shop connection
Instead of maintaining the catalogue yourself, you can connect a shop whose sales channel offers a Store API with an access key. The catalogue is then synchronised every hour, and on every product search the assistant re-reads price and availability from the shop. The connection only reads: nothing is written to the shop. Nothing needs to be installed in the shop for this; the address and access key of the sales channel are enough. The widget goes into the shop with the embed code, as on any other website, see Embed the widget.
Setting up the connection
| Field | Required and limits | Note |
|---|---|---|
| Shop address | Required, at most 300 characters, with https:// | The address of the sales channel, such as https://shop.example.com. A trailing /store-api and a trailing slash are removed; user name, password, query and fragment are not allowed. Addresses that do not point to the public internet are not fetched. |
| Access key | Required on first save; 12 to 200 letters, digits, hyphens or underscores | The API access key of the sales channel from your shop administration. It is stored encrypted and afterwards only shown by its last characters. Leaving it empty keeps the stored key; a different shop address needs the key to be entered again. |
| Sync and live re-reading switched on | On or off; on when first created | Off means the state paused: no sync and no re-reading during conversations. |
-
Step 1
Get the key
You will find the access key in your shop administration under the sales channel the assistant should read.
-
Step 2
Enter and save
Enter the Shop address and Access key and click Save. The key field stays empty afterwards; only “…” followed by the last four characters is shown.
-
Step 3
Check the connection
Check connection (“Checking”) reads the currency and one product, with a deadline of 5 seconds. Success reports “The connection works. The shop prices in …”, an empty sales channel “The connection works (…), but the sales channel shows no products.” The server rejects more than three checks per minute per account.
-
Step 4
Start the first sync
Sync now queues a sync: “The sync has been queued.” or, if one is already waiting, “A sync is already waiting.” The display then checks every 3 seconds, up to 100 times, and reloads the product list.
Connection status
| Row | Content |
|---|---|
| Shop address | The stored address |
| Access key | “…” and the last four characters |
| State | active or paused |
| Last sync | Sync running, none yet or a time with successful or failed |
| Products | read, new, updated with “of which previously not from the shop: …”, withdrawn |
| Reason | Only if the last sync failed or was incomplete: the message from the table below, plus “The catalogue shows the state of …” if there was an earlier successful sync |
With the Administration role, below are the buttons Sync now (disabled while a sync is running or the connection is paused), Check connection, Edit and Disconnect. If the state could not be loaded, “The current state could not be loaded.” appears with Load again; without a connection it says “No shop is connected yet.”
What the sync does
- Every hour at minute 41 a sync is queued for each switched-on connection of an active account whose plan includes the shop connection. A waiting or running sync is not duplicated, and a manual sync takes precedence.
- Manual syncs are possible at most every 15 minutes; the regular sync continues independently.
- Products are read in pages of 100, at most 100 pages, so up to 10000 products. If the shop has more, the run counts as incomplete: what was read is taken over, missing products are not withdrawn.
- Each request to the shop has 20 seconds, the whole sync 300 seconds. The sync does not follow redirects.
- Products with variants count as containers and are skipped; each variant comes in as its own product, with the variant options in brackets after the title.
- Matching uses the shop's product ID. A product without a shop link whose Identifier equals the article number of a shop product is taken over and belongs to the sync from then on, so the first sync does not duplicate an imported catalogue.
- Products without a shop link whose number the shop does not list are left untouched.
- Only after a run that has read all pages of the shop are shop products that no longer came back set to unavailable as withdrawn. Nothing is deleted.
- If the sync fails, the existing catalogue stays unchanged. If the shop returns no products although it had some before, the catalogue also stays unchanged.
| Field | During the sync |
|---|---|
| Identifier | The shop's article number, or the shop product ID if there is none |
| Title | Product name, with variant options for variants, at most 200 characters; the article number if there is no name |
| Description | Without HTML, at most 800 characters |
| Price in cents, List price in cents | A tier price before the calculated price |
| Currency | Currency of the sales channel |
| Image address | Cover image of the product |
| Product address | The product's canonical SEO address, otherwise its SEO path after the shop address, otherwise the detail page via the shop product ID |
| Available | As the shop lists the product |
| Rating (0 to 5) | Average rating in the shop, only if it is above 0 |
| Delivery time in business days | Maximum delivery time if the shop states it in days or weeks; a week counts as 7 days, 0 to 365 is taken over, other units stay empty |
| Features, Accessories, Customers also bought, Button target, Cart address, Number of ratings | Stay as you maintain them in the catalogue |
Connection messages
| Message | Cause |
|---|---|
| “The shop rejected the access key. Check that it belongs to this sales channel.” | The shop answers with 401 or 403. |
| “The shop could not be reached.” / “The shop did not answer in time.” | No connection or deadline exceeded |
| “No Store API answers at this address. Enter the address of the sales channel.” | The shop answers with 404. |
| “The address redirects. Enter the address the shop redirects to.” | The shop answers with a redirect. |
| “The shop answered with status ….” | Any other error status |
| “The shop's answer could not be read.” / “The shop's answer was too large.” | No readable answer, or more than 8 MiB per page during a sync |
| “The shop did not state a currency.” | The sales channel states no currency. |
| “The stored key could not be read. Please enter it again.” | The stored key can no longer be read. |
| “The shop returned no products although it had some before. The catalogue stays unchanged; check the sales channel.” | Empty sales channel while the catalogue has products |
| “The shop has more products than one sync reads. The products read have been taken over; missing ones are not withdrawn.” | More than 10000 products |
| “The shop took too long for the whole sync. The catalogue stays unchanged.” | Sync longer than 300 seconds |
| “Your plan does not include the shop connection.” | The plan no longer includes the shop connection. |
| “An internal error occurred during the sync.” | Error on our side |
| “No shop is connected yet.” / “The connection is paused.” | Check or sync without a connection or in the paused state |
| “The address cannot be read. Expected is, for example, https://shop.example.” | Not a valid address |
| “Only addresses with https are possible.” / “The shop must be reachable via https. Enter the address with https://.” | Address without https |
| “This address does not point to the public internet and is therefore not fetched.” / “The name of this address cannot be resolved.” | Internal target or unknown name |
| “A different shop address needs its access key as well. Please enter it too.” | New address without a new key |
| “The access key consists of 12 to 200 letters, digits, hyphens or underscores.” | Key in the wrong format |
| “The connection was just tested several times. Please wait a minute.” | More than three checks per minute |
| “A manual sync is possible at most every 15 minutes. The regular sync continues independently.” | Manual sync before 15 minutes have passed |
| “The sync failed.” | Any other reason |
Prices and availability from the shop
If a shop is connected and switched on and your plan includes the shop connection, the assistant re-reads the price and availability of the products that come from the shop on every product search and every basket change; for the cards of the product search it also re-reads the list price and delivery time. The shop has 3 seconds for this, establishing the connection 2 seconds. Nothing is written in the process, neither to the shop nor to the catalogue.
| Situation | What the visitor sees |
|---|---|
| Shop answers | Current price from the shop; products the shop currently does not list as available are dropped, and the assistant is told that they were left out and must not be mentioned |
| After dropping, only one card is left of a comparison, accessories or suggestions | A single card; the assistant receives a matching note, for a comparison for example that only one of the two products is currently available and it should ask what to compare with |
| Shop lists none of the products, or not the starting product of accessories and suggestions, as available | No card; the assistant is told that nothing is currently available in the shop and that it must not invent a product or price |
| Shop does not answer in time or answers with an error | Price from the last sync; the assistant is told that prices and availability come from the last sync at … and that the shop was not reachable just now |
| No shop connected or connection paused | Price from the catalogue, without a note to the assistant |
| Plan without the shop connection | No card: without the shop connection, the service does not offer Search the catalogue and Hand over basket tools to the assistant, and they can only be deleted |
Product search in the conversation
You create the Search the catalogue tool under Tools. It only reads; it runs without confirmation if its Approval is set to without asking. For a new tool the form suggests with confirmation. The assistant passes a search term, identifiers from an earlier search or both, plus one of four forms and the number of hits. The preview reads “Search catalog for: …” in an English conversation and “Im Katalog suchen nach: …” in a German one.
| Form | Result in the widget |
|---|---|
search | A single card or a Recommendations row with 1 to 6 hits, 4 if not specified. |
compare | Exactly two products as a Direct comparison with rows for price, rating, delivery and features; the better value carries the Advantage mark, missing values show “not stated”. If only one product is found, a single card appears. |
bundle | The first product and its Accessories under Goes together, with a Total if every item has a price. |
also_bought | The first product and the entries from Customers also bought under “Customers also bought”. |
- Named identifiers come first; hits for the search term then fill up to the requested number. Without a term and without an identifier there is no search; the assistant is told that it cannot search without a search term.
- The search looks in the title and the description.
- Only products set to Available are found. An identifier that is not in the catalogue does not appear in any form, not even as an accessory.
- If nothing is found, the widget shows no card, and the assistant is told that the catalogue has nothing on it and that it must not invent a product or price.
- A separate tool reads the stock level of a product: Read stock level from the tool kit; it also only reads and runs without confirmation if its Approval is set to without asking.
Product cards
| Part of the card | Shown when |
|---|---|
| Title, linked to the product address | On every card; the link only with a Product address |
| Price | Price in cents is set |
| “Was …” and “You save …” | List price in cents is above the price and a Currency is given |
| “… out of 5” with “(… reviews)” | Rating (0 to 5) above 0 |
| “Ships today”, “Delivery: 1 business day”, “Delivery: … business days” | Delivery time in business days is set |
| Features | Up to six, each at most 60 characters |
| “View product” or “Add to cart” button | Button target with a matching address; opens in a new tab |
| Image | Image address with https, loaded only when it scrolls into view; with http the card has no image |
Basket in the conversation
The Hand over basket tool puts together a basket during the conversation. Every call changes something and therefore needs the visitor's confirmation: the widget shows the proposal with Confirm and Reject. A proposal that stays unconfirmed for 60 minutes expires; after that it reads “This suggestion was not confirmed in time, so nothing was carried out. Just ask again.” How confirmations work in the conversation is explained in Chat in the widget.
| Mode | Preview in the widget | Effect |
|---|---|---|
set | “Hand over cart: … items” | Creates a new basket with a new pickup token, without a coupon |
add | “Add to cart: … items” | Adds quantities; creates a basket if none is open |
update | “Change quantity in cart: … items” | Sets the quantity; 0 removes the item |
remove | “Remove from cart: … items” | Removes items |
clear | “Empty cart” | Empties the basket and removes the coupon |
coupon | “Apply coupon: …” or “Remove coupon from cart” | Applies a coupon code or removes it |
- An item holds 1 to 99 units; more is capped at 99.
- Every item needs an Identifier from the catalogue. Every change recalculates the whole basket against the catalogue, and with a connected shop against the prices the shop currently states.
- A product the shop currently does not list as available is not added to the basket; the assistant is told which one it was.
- Every change after
setwrites to the same basket, and the pickup token stays the same. - If the same confirmed call runs a second time, the basket does not change again.
- After every change the widget shows the items, Subtotal (only if it differs from the total), Coupon (only with a discount), Shipping (“free” at 0), Total, the amount left until free shipping and, with a handover address starting with
http://orhttps://, the Continue button.
| Message to the assistant | Cause |
|---|---|
| “The basket is ready to be taken over.” | set carried out |
| “The basket has been changed and is ready to be taken over.” | add, update or remove carried out |
| “The basket has been emptied.” | clear carried out |
| “The coupon has been applied. The basket is ready to be taken over.” / “The coupon has been removed. The basket is ready to be taken over.” | coupon carried out |
| “There is no open basket that could be changed.” | Change without an open basket |
| “The call names no item that could be changed.” | update or remove without a usable item |
| “The item … is not in the basket.” | Change to an item that is missing |
| “The product … is not in the catalogue.” | Unknown identifier |
| “An empty basket does not accept a coupon.” | Coupon on an empty basket |
| “The basket was empty.” | No item is left after the calculation |
| “Not in the basket because the shop currently does not list it as available: … Tell the visitor and do not state a price for it.” | Product the shop currently does not list as available |
Handover to the shop
-
Step 1
Set the address
On the Hand over basket tool, enter the Address for the basket handover: the address of a page in your shop, such as
https://shop.example.com/basket, at most 500 characters. -
Step 2
Visitor clicks Continue
The Continue button opens this address in a new tab and appends
token=with the pickup token, using?or, if the address already has a query,&. The token consists of 40 random letters and digits. Without an address, or with an address that does not start withhttp://orhttps://, the widget shows no button. -
Step 3
The shop collects the basket
Your page calls
GET /api/v1/cart/pickup/{token}with the token and puts the items into its own basket. The pickup only reads; your page can repeat it within the deadline.
GET /api/v1/cart/pickup/{token}
Returns the basket for a pickup token, up to 7 days after the last change. The response carries Cache-Control: no-store. The server allows browser access via Access-Control-Allow-Origin only from the origin (scheme, host and port) of an Address for the basket handover stored on a basket tool of the assistant that held the conversation.
- Authentication
- no sign-in; the pickup token is the access
- Rate limit
- 60 requests per minute per source address, for IPv6 per /64 network
| Response field | Content |
|---|---|
items | Items with external_id, title, amount, unit_price_cents; for newer baskets also price_source: live (price re-read from the shop) or stand (price from the catalogue) |
subtotal_cents, discount_cents, shipping_cents, total_cents | Subtotal, discount, shipping and total in cents |
coupon_code | Applied coupon code or null |
currency | Currency of the basket, currently EUR |
created_at, updated_at, expires_at | Timestamps in ISO 8601 format |
| Status | Meaning |
|---|---|
200 | Basket returned |
404 unknown_cart | Token unknown, in the wrong format or account deactivated |
410 cart_expired | Deadline passed |
429 | Too many requests, see API limits |
More on endpoints without sign-in is in Public API endpoints.
Shipping and coupons
In the Hand over basket tool, the Shipping and coupons section sets what the assistant uses when calculating the basket: “The assistant calculates the basket with these. Whether a shop honours a discount later is up to the shop.”
| Field | Limits | Effect |
|---|---|---|
| Shipping cost in cents | Whole number from 0 to 100000 | Shipping per basket; an empty basket costs no shipping |
| Free shipping from (cents) | Whole number from 0 to 10000000; 0 means no threshold | From this goods value after discount, shipping is free; needs a shipping cost |
| Code | 2 to 40 characters: letters A to Z, digits, hyphen and underscore, starting with a letter or digit; stored in upper case, each code only once | The code the visitor names |
| Kind | Percent or Fixed amount | Type of discount |
| Value | 1 to 100 for percent, 1 to 10000000 cents for a fixed amount | Size of the discount, at most the subtotal; percentages are rounded down to whole cents |
| Minimum value in cents | Whole number from 0 to 10000000 | Goods value before discount from which the code applies |
| Valid until | Date in the form 2026-12-31, empty for no end date | Last valid day; the code applies until the end of that day, German time (Europe/Berlin) |
| Active | On or off; a new code is on | The assistant rejects switched-off codes |
- At most 20 coupon codes per tool; you maintain the list with Add coupon and Remove coupon. A new entry starts with Percent, value 10, minimum value 0 and Active switched on. Without an entry, “No coupon code stored yet.” is shown.
- A basket carries at most one coupon. If a coupon no longer applies after a change, for example because the minimum value is no longer reached, it is dropped and the assistant receives the reason from the table below.
- The widget shows amounts in the currency of the basket, currently
EUR; the messages to the assistant write them in German notation, with a comma before the cents, a dot as thousands separator and the euro sign after the amount.
| Message when saving | Cause |
|---|---|
| “A threshold for free shipping needs a shipping cost. Enter a shipping cost or set the threshold to 0.” | Threshold without a shipping cost |
| “Shipping cost and threshold are whole amounts in cents, at most 100000.” | Shipping cost outside 0 to 100000 or threshold outside 0 to 10000000 |
| “A coupon code has 2 to 40 characters: letters, digits, hyphen, underscore. Each code occurs only once.” | Code in the wrong format or duplicated |
| “A percent coupon is between 1 and 100, a fixed amount between 1 and 10000000 cents. The minimum value is not negative.” | Value out of range |
| “The field “Valid until” needs a date in the form 2026-12-31.” | Date in the wrong format |
| “The coupon list is not valid: it is incomplete or has more than 20 entries.” | List incomplete or too long |
| Message to the assistant | Cause |
|---|---|
| “The coupon code … does not exist here.” | Unknown code |
| “The coupon code … is switched off.” | Code not set to Active |
| “The coupon code … was valid until … and has expired.” | Valid until has passed |
| “The coupon code … applies from a basket value of … Still missing: …” | Minimum value in cents not reached |
| “The coupon … takes … off.” | Code applied |
| “Plus … shipping.” | Shipping cost without a threshold |
| “The free-shipping threshold has been reached.” / “… left until free shipping; until then shipping costs …” | Shipping threshold reached or not |
API
Every endpoint under /api/v1/catalog needs a sign-in with a confirmed email address and a plan with the shop connection. The writing endpoints except the two delete endpoints share a limit of 20 requests per minute per signed-in user. Sign-in and keys are covered in API integration, the limits in API limits.
GET /api/v1/catalog
Lists products by title, page from 1, per_page 1 to 200, 50 if omitted. search (at most 120 characters) matches the start of the title and identifier. total is the number of all products in the catalogue, regardless of the search, matches the number of hits of the query before paging. Each product carries from_shop and shop_synced_at; shop_sync_active states whether an active shop connection exists.
- Authentication
- signed in, confirmed email address, any role
POST /api/v1/catalog
Creates a product with the import fields. An identifier that is already taken returns 422 identifier_taken.
- Authentication
- signed in, confirmed email address, Edit or higher
- Rate limit
- 20 requests per minute per signed-in user
PUT /api/v1/catalog/{id}
Changes a product. The identifier stays; missing fields are cleared or set to their default. Unknown {id}: 404 not_found.
- Authentication
- signed in, confirmed email address, Edit or higher
- Rate limit
- 20 requests per minute per signed-in user
DELETE /api/v1/catalog/{id}
Deletes a product permanently. Unknown {id}: 404 not_found.
- Authentication
- signed in, confirmed email address, Edit or higher
POST /api/v1/catalog/import
Imports products, 1 to 500 entries, all or nothing. The response states new, changed and total.
- Authentication
- signed in, confirmed email address, Edit or higher
- Rate limit
- 20 requests per minute per signed-in user
GET /api/v1/catalog/shop
State of the connection and the last sync; the key only as access_key_masked with its last characters.
- Authentication
- signed in, confirmed email address, any role
PUT /api/v1/catalog/shop
Saves base_url, access_key and the switch for sync and re-reading. An unreadable address returns 422 url_unreadable, one without https:// returns 422 https_required, and an address that does not point to the public internet also returns 422 with the reason. An address on a different server without a new key: 422 access_key_required.
- Authentication
- signed in, confirmed email address, Administration or higher
- Rate limit
- 20 requests per minute per signed-in user
POST /api/v1/catalog/shop/test
Checks the connection and answers with ok: true, the currency and has_products; if the check fails, with ok: false and the reason in error, for example key_unreadable. More than three checks per minute per account: 429 too_many_tests with retry_after. Without a connection: 404 connection_missing.
- Authentication
- signed in, confirmed email address, Administration or higher
- Rate limit
- 20 requests per minute per signed-in user
POST /api/v1/catalog/shop/sync
Queues a sync and answers with 202; already_pending says whether one was already waiting. Paused: 422 connection_inactive; with no sync waiting and less than 15 minutes since the last manual sync: 429 sync_too_soon with retry_after. Without a connection: 404 connection_missing.
- Authentication
- signed in, confirmed email address, Administration or higher
- Rate limit
- 20 requests per minute per signed-in user
DELETE /api/v1/catalog/shop
Removes the connection; the products stay in the catalogue. Without a connection: 404 connection_missing.
- Authentication
- signed in, confirmed email address, Administration or higher
Frequent questions
Why does the assistant not mention a product that is in the catalogue?
The search only finds products set to Available. With a connected shop, products the shop currently does not list as available are dropped as well.
Why does the card show no button?
Either Button target is set to No button, or the matching address is missing: Product address for Product page, Cart address for Cart.
Why is no list price shown?
The card only shows “Was …” and “You save …” if the list price is above the price and a currency is given.
How long can the shop collect a basket?
7 days after the last change. After that the pickup answers with 410 cart_expired.
Does the sync overwrite my features and accessories?
No. You maintain Features, Accessories, Customers also bought, Button target, Cart address and Number of ratings in the catalogue; the sync leaves them as they are.
Ask it yourself, Assistant of this website
Automated assistant