Skip to content
ShopAssist Docs
APIAPI referenceCatalog Push API

Push Categories

Upsert categories (parents by parent_external_id).

POST/v1/stores/{store_id}/catalog/categories:batchScope catalog:write

Upsert categories (parents by `parent_external_id`).

Parameters

Parameters of Push Categories
NameInTypeDescription
store_idrequiredpathstring
Idempotency-KeyrequiredheaderstringReplays return the original

Request body (CategoriesBatch)

Request body of Push Categories
FieldTypeDescription
categoriesrequiredCatalogCategoryInput[]CatalogCategoryInput items (validated individually; invalid items are reported in rejected[])≥ 1 items · ≤ 500 items
categories[].external_idrequiredstring1–128 characters
categories[].namerequiredstring1–255 characters
categories[].parent_external_idstring1–128 characters
categories[].positioninteger
categories[].urlstringformat uri · ≤ 2048 characters

Example request

curl -X POST "https://api.shopassist.coec.dk/v1/stores/sto_01j8000000e008000000000000/catalog/categories:batch" \
  -H "Authorization: Bearer $SHOPASSIST_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"categories":[{"external_id":"string","name":"string","parent_external_id":"string","position":1,"url":"https://shop.example/products/linen-shirt"}]}'

Response 202 (BatchAccepted)

Response of Push Categories
FieldTypeDescription
acceptedrequiredinteger≥ 0
rejectedrequiredItemRejection[]
rejected[].errorrequiredItemError`{ code; message }` of a rejected item.
rejected[].error.coderequired"validation_error" | "currency_mismatch" | "duplicate_external_id" | "too_many_variants" | "url_not_allowed"
rejected[].error.messagerequiredstring
rejected[].indexrequiredinteger≥ 0
sync_run_idrequiredstringpattern `^sync_[0-9a-hjkmnp-tv-z]{26}$`
{
  "accepted": 0,
  "rejected": [
    {
      "error": {
        "code": "validation_error",
        "message": "string"
      },
      "index": 0
    }
  ],
  "sync_run_id": "sync_01j8000000e008000000000000"
}

Errors

Every error uses the error envelope; the code field is stable.

  • 400 Bad Request
  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found
  • 409 Conflict
  • 413 Content Too Large
  • 422 Unprocessable Content
  • 429 Too Many Requests

Last updated on