Zum Inhalt
HALOWERK

Agentenwerk

oss opencart catalog import rehearsal

Walks a staged product-catalog import through the pinned OpenCart source in a private, non-root database and reports what the native code makes of it at each stage: how many masters and variants survive, whether option values stay attached to the right products, and how the resulting catalog behaves in a localized cart. The point is to find the damage before the import touches a live shop, where a broken option mapping shows up as a customer ordering a variant that does not exist.

POST https://agent.halowerk.com/v1/oss-opencart-catalog-import-rehearsal

Eingaben

Felder des veröffentlichten Eingabeschemas
FeldTypPflichtBeschreibung
localesarrayJa
taxonomyarrayJa
stagesarrayJa
Vollständiges Eingabeschema anzeigen
{
  "type": "object",
  "properties": {
    "locales": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[a-z]{2}-[a-z]{2}$",
        "minLength": 5,
        "maxLength": 5
      },
      "minItems": 1,
      "maxItems": 4
    },
    "taxonomy": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "ref": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,31}$",
            "minLength": 1,
            "maxLength": 32
          },
          "type": {
            "enum": [
              "select",
              "radio"
            ]
          },
          "names": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "locale": {
                  "type": "string",
                  "pattern": "^[a-z]{2}-[a-z]{2}$",
                  "minLength": 5,
                  "maxLength": 5
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 128,
                  "pattern": "^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"
                }
              },
              "required": [
                "locale",
                "name"
              ],
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 4
          },
          "values": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "ref": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,31}$",
                  "minLength": 1,
                  "maxLength": 32
                },
                "names": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "locale": {
                        "type": "string",
                        "pattern": "^[a-z]{2}-[a-z]{2}$",
                        "minLength": 5,
                        "maxLength": 5
                      },
                      "name": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"
                      }
                    },
                    "required": [
                      "locale",
                      "name"
                    ],
                    "additionalProperties": false
                  },
                  "minItems": 1,
                  "maxItems": 4
                }
              },
              "required": [
                "ref",
                "names"
              ],
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 8
          }
        },
        "required": [
          "ref",
          "type",
          "names",
          "values"
        ],
        "additionalProperties": false
      },
      "minItems": 0,
      "maxItems": 8
    },
    "stages": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "ref": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,31}$",
            "minLength": 1,
            "maxLength": 32
          },
          "masters": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "ref": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,31}$",
                  "minLength": 1,
                  "maxLength": 32
                },
                "sku": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "pattern": "^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"
                },
                "quantity": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 100000
                },
                "price": {
                  "type": "string",
                  "pattern": "^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$",
                  "maxLength": 10
                },
                "weight": {
                  "type": "string",
                  "pattern": "^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$",
                  "maxLength": 10
                },
                "points": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1000
                },
                "minimum": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 100
                },
                "subtract": {
                  "type": "boolean"
                },
                "shipping": {
                  "type": "boolean"
                },
                "enabled": {
                  "type": "boolean"
                },
                "descriptions": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "locale": {
                        "type": "string",
                        "pattern": "^[a-z]{2}-[a-z]{2}$",
                        "minLength": 5,
                        "maxLength": 5
                      },
                      "name": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 255,
                        "pattern": "^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"
                      },
                      "description": {
                        "type": "string",
                        "minLength": 0,
                        "maxLength": 2048,
                        "pattern": "^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"
                      },
                      "meta_title": {
                        "type": "string",
                        "minLength": 0,
                        "maxLength": 255,
                        "pattern": "^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"
                      },
                      "meta_description": {
                        "type": "string",
                        "minLength": 0,
                        "maxLength": 255,
                        "pattern": "^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"
                      },
                      "meta_keyword": {
                        "type": "string",
                        "minLength": 0,
                        "maxLength": 255,
                        "pattern": "^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"
                      }
                    },
                    "required": [
                      "locale",
                      "name",
                      "description",
                      "meta_title",
                      "meta_description",
                      "meta_keyword"
                    ],
                    "additionalProperties": false
                  },
                  "minItems": 1,
                  "maxItems": 4
                },
                "options": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ref": {
                        "type": "string",
                        "pattern": "^[a-z][a-z0-9_-]{0,31}$",
                        "minLength": 1,
                        "maxLength": 32
                      },
                      "required": {
                        "type": "boolean"
                      },
                      "values": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "ref": {
                              "type": "string",
                              "pattern": "^[a-z][a-z0-9_-]{0,31}$",
                              "minLength": 1,
                              "maxLength": 32
                            },
                            "quantity": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 100000
                            },
                            "subtract": {
                              "type": "boolean"
                            },
                            "price": {
                              "type": "string",
                              "pattern": "^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$",
                              "maxLength": 10
                            },
                            "points": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 1000
                            },
                            "weight": {
                              "type": "string",
                              "pattern": "^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$",
                              "maxLength": 10
                            }
                          },
                          "required": [
                            "ref",
                            "quantity",
                            "subtract",
                            "price",
                            "points",
                            "weight"
                          ],
                          "additionalProperties": false
                        },
                        "minItems": 1,
                        "maxItems": 8
                      }
                    },
                    "required": [
                      "ref",
                      "required",
                      "values"
                    ],
                    "additionalProperties": false
                  },
                  "minItems": 0,
                  "maxItems": 4
                }
              },
              "required": [
                "ref",
                "sku",
                "quantity",
                "price",
                "weight",
                "points",
                "minimum",
                "subtract",
                "shipping",
                "enabled",
                "descriptions",
                "options"
              ],
              "additionalProperties": false
            },
            "minItems": 0,
            "maxItems": 8
          },
          "variants": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "ref": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,31}$",
                  "minLength": 1,
                  "maxLength": 32
                },
                "master": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,31}$",
                  "minLength": 1,
                  "maxLength": 32
                },
                "sku": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "pattern": "^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"
                },
                "quantity": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 100000
                },
                "selection": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "option": {
                        "type": "string",
                        "pattern": "^[a-z][a-z0-9_-]{0,31}$",
                        "minLength": 1,
                        "maxLength": 32
                      },
                      "value": {
                        "type": "string",
                        "pattern": "^[a-z][a-z0-9_-]{0,31}$",
                        "minLength": 1,
                        "maxLength": 32
                      }
                    },
                    "required": [
                      "option",
                      "value"
                    ],
                    "additionalProperties": false
                  },
                  "minItems": 1,
                  "maxItems": 4
                },
                "overrides": {
                  "type": "object",
                  "properties": {
                    "price": {
                      "type": "string",
                      "pattern": "^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$",
                      "maxLength": 10
                    },
                    "weight": {
                      "type": "string",
                      "pattern": "^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$",
                      "maxLength": 10
                    },
                    "points": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 1000
                    },
                    "minimum": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 100
                    },
                    "subtract": {
                      "type": "boolean"
                    },
                    "shipping": {
                      "type": "boolean"
                    },
                    "enabled": {
                      "type": "boolean"
                    },
                    "descriptions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "locale": {
                            "type": "string",
                            "pattern": "^[a-z]{2}-[a-z]{2}$",
                            "minLength": 5,
                            "maxLength": 5
                          },
                          "name": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 255,
                            "pattern": "^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"
                          },
                          "description": {
                            "type": "string",
                            "minLength": 0,
                            "maxLength": 2048,
                            "pattern": "^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"
                          },
                          "meta_title": {
                            "type": "string",
                            "minLength": 0,
                            "maxLength": 255,
                            "pattern": "^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"
                          },
                          "meta_description": {
                            "type": "string",
                            "minLength": 0,
                            "maxLength": 255,
                            "pattern": "^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"
                          },
                          "meta_keyword": {
                            "type": "string",
                            "minLength": 0,
                            "maxLength": 255,
                            "pattern": "^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"
                          }
                        },
                        "required": [
                          "locale"
                        ],
                        "additionalProperties": false
                      },
                      "minItems": 0,
                      "maxItems": 4
                    }
                  },
                  "required": [],
                  "additionalProperties": false
                }
              },
              "required": [
                "ref",
                "master",
                "sku",
                "quantity",
                "selection",
                "overrides"
              ],
              "additionalProperties": false
            },
            "minItems": 0,
            "maxItems": 16
          }
        },
        "required": [
          "ref",
          "masters",
          "variants"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 4
    }
  },
  "required": [
    "locales",
    "taxonomy",
    "stages"
  ],
  "additionalProperties": false
}

Originalschema öffnen

Veröffentlichtes Eingabebeispiel

{
  "locales": [
    "de-de",
    "en-gb"
  ],
  "taxonomy": [
    {
      "ref": "colour",
      "type": "select",
      "names": [
        {
          "locale": "de-de",
          "name": "Farbe 🎨"
        },
        {
          "locale": "en-gb",
          "name": "Colour"
        }
      ],
      "values": [
        {
          "ref": "blue",
          "names": [
            {
              "locale": "de-de",
              "name": "Blau"
            },
            {
              "locale": "en-gb",
              "name": "Blue"
            }
          ]
        },
        {
          "ref": "green",
          "names": [
            {
              "locale": "de-de",
              "name": "Grün"
            },
            {
              "locale": "en-gb",
              "name": "Green"
            }
          ]
        },
        {
          "ref": "red",
          "names": [
            {
              "locale": "de-de",
              "name": "Rot"
            },
            {
              "locale": "en-gb",
              "name": "Red"
            }
          ]
        }
      ]
    },
    {
      "ref": "size",
      "type": "radio",
      "names": [
        {
          "locale": "de-de",
          "name": "Größe"
        },
        {
          "locale": "en-gb",
          "name": "Size"
        }
      ],
      "values": [
        {
          "ref": "large",
          "names": [
            {
              "locale": "de-de",
              "name": "Groß"
            },
            {
              "locale": "en-gb",
              "name": "Large"
            }
          ]
        },
        {
          "ref": "medium",
          "names": [
            {
              "locale": "de-de",
              "name": "Mittel"
            },
            {
              "locale": "en-gb",
              "name": "Medium"
            }
          ]
        }
      ]
    }
  ],
  "stages": [
    {
      "ref": "initial",
      "masters": [
        {
          "ref": "book",
          "sku": "book",
          "quantity": 20,
          "price": "5.0000",
          "weight": "1.0000",
          "points": 0,
          "minimum": 1,
          "subtract": true,
          "shipping": false,
          "enabled": true,
          "descriptions": [
            {
              "locale": "de-de",
              "name": "book Name",
              "description": "Native import: book Name\nO'Reilly & <b>UTF-8</b>",
              "meta_title": "book Name",
              "meta_description": "Synthetic fixture",
              "meta_keyword": ""
            },
            {
              "locale": "en-gb",
              "name": "book name",
              "description": "Native import: book name\nO'Reilly & <b>UTF-8</b>",
              "meta_title": "book name",
              "meta_description": "Synthetic fixture",
              "meta_keyword": ""
            }
          ],
          "options": []
        },
        {
          "ref": "shirt",
          "sku": "shirt-master",
          "quantity": 20,
          "price": "10.0000",
          "weight": "1.0000",
          "points": 4,
          "minimum": 1,
          "subtract": true,
          "shipping": true,
          "enabled": true,
          "descriptions": [
            {
              "locale": "de-de",
              "name": "shirt Name",
              "description": "Native import: shirt Name\nO'Reilly & <b>UTF-8</b>",
              "meta_title": "shirt Name",
              "meta_description": "Synthetic fixture",
              "meta_keyword": ""
            },
            {
              "locale": "en-gb",
              "name": "shirt name",
              "description": "Native import: shirt name\nO'Reilly & <b>UTF-8</b>",
              "meta_title": "shirt name",
              "meta_description": "Synthetic fixture",
              "meta_keyword": ""
            }
          ],
          "options": [
            {
              "ref": "colour",
              "required": true,
              "values": [
                {
                  "ref": "blue",
                  "quantity": 9,
                  "subtract": true,
                  "price": "3.0000",
                  "points": 2,
                  "weight": "0.2500"
                },
                {
                  "ref": "red",
                  "quantity": 1,
                  "subtract": true,
                  "price": "2.0000",
                  "points": 2,
                  "weight": "0.2500"
                }
              ]
            },
            {
              "ref": "size",
              "required": true,
              "values": [
                {
                  "ref": "large",
                  "quantity": 9,
                  "subtract": true,
                  "price": "1.0000",
                  "points": 2,
                  "weight": "0.2500"
                },
                {
                  "ref": "medium",
                  "quantity": 9,
                  "subtract": true,
                  "price": "0.0000",
                  "points": 2,
                  "weight": "0.2500"
                }
              ]
            }
          ]
        }
      ],
      "variants": [
        {
          "ref": "variant-a",
          "master": "shirt",
          "sku": "shirt-red-m",
          "quantity": 3,
          "selection": [
            {
              "option": "colour",
              "value": "red"
            },
            {
              "option": "size",
              "value": "medium"
            }
          ],
          "overrides": {
            "descriptions": [
              {
                "locale": "de-de",
                "name": "Rotes Sondermodell"
              }
            ]
          }
        },
        {
          "ref": "variant-b",
          "master": "shirt",
          "sku": "shirt-blue-l",
          "quantity": 7,
          "selection": [
            {
              "option": "colour",
              "value": "blue"
            },
            {
              "option": "size",
              "value": "large"
            }
          ],
          "overrides": {
            "price": "17.0000",
            "minimum": 3,
            "points": 0,
            "descriptions": []
          }
        }
      ]
    },
    {
      "ref": "updated",
      "masters": [
        {
          "ref": "book",
          "sku": "book",
          "quantity": 20,
          "price": "5.0000",
          "weight": "1.0000",
          "points": 0,
          "minimum": 1,
          "subtract": true,
          "shipping": false,
          "enabled": true,
          "descriptions": [
            {
              "locale": "de-de",
              "name": "book Name",
              "description": "Native import: book Name\nO'Reilly & <b>UTF-8</b>",
              "meta_title": "book Name",
              "meta_description": "Synthetic fixture",
              "meta_keyword": ""
            },
            {
              "locale": "en-gb",
              "name": "book name",
              "description": "Native import: book name\nO'Reilly & <b>UTF-8</b>",
              "meta_title": "book name",
              "meta_description": "Synthetic fixture",
              "meta_keyword": ""
            }
          ],
          "options": []
        },
        {
          "ref": "shirt",
          "sku": "shirt-master",
          "quantity": 20,
          "price": "12.0000",
          "weight": "1.0000",
          "points": 4,
          "minimum": 1,
          "subtract": true,
          "shipping": true,
          "enabled": true,
          "descriptions": [
            {
              "locale": "de-de",
              "name": "Aktualisiertes Shirt",
              "description": "Native import: Aktualisiertes Shirt\nO'Reilly & <b>UTF-8</b>",
              "meta_title": "Aktualisiertes Shirt",
              "meta_description": "Synthetic fixture",
              "meta_keyword": ""
            },
            {
              "locale": "en-gb",
              "name": "Updated shirt",
              "description": "Native import: Updated shirt\nO'Reilly & <b>UTF-8</b>",
              "meta_title": "Updated shirt",
              "meta_description": "Synthetic fixture",
              "meta_keyword": ""
            }
          ],
          "options": [
            {
              "ref": "colour",
              "required": true,
              "values": [
                {
                  "ref": "blue",
                  "quantity": 9,
                  "subtract": true,
                  "price": "4.0000",
                  "points": 2,
                  "weight": "0.2500"
                },
                {
                  "ref": "green",
                  "quantity": 9,
                  "subtract": true,
                  "price": "1.0000",
                  "points": 2,
                  "weight": "0.2500"
                }
              ]
            },
            {
              "ref": "size",
              "required": true,
              "values": [
                {
                  "ref": "large",
                  "quantity": 9,
                  "subtract": true,
                  "price": "1.0000",
                  "points": 2,
                  "weight": "0.2500"
                },
                {
                  "ref": "medium",
                  "quantity": 9,
                  "subtract": true,
                  "price": "0.0000",
                  "points": 2,
                  "weight": "0.2500"
                }
              ]
            }
          ]
        }
      ],
      "variants": [
        {
          "ref": "variant-a",
          "master": "shirt",
          "sku": "shirt-red-m",
          "quantity": 3,
          "selection": [
            {
              "option": "colour",
              "value": "green"
            },
            {
              "option": "size",
              "value": "medium"
            }
          ],
          "overrides": {
            "descriptions": [
              {
                "locale": "de-de",
                "name": "Grünes Sondermodell"
              }
            ]
          }
        },
        {
          "ref": "variant-b",
          "master": "shirt",
          "sku": "shirt-blue-l",
          "quantity": 1,
          "selection": [
            {
              "option": "colour",
              "value": "blue"
            },
            {
              "option": "size",
              "value": "large"
            }
          ],
          "overrides": {
            "descriptions": []
          }
        }
      ]
    },
    {
      "ref": "retired",
      "masters": [
        {
          "ref": "shirt",
          "sku": "shirt-master",
          "quantity": 20,
          "price": "12.0000",
          "weight": "1.0000",
          "points": 4,
          "minimum": 1,
          "subtract": true,
          "shipping": true,
          "enabled": false,
          "descriptions": [
            {
              "locale": "de-de",
              "name": "Aktualisiertes Shirt",
              "description": "Native import: Aktualisiertes Shirt\nO'Reilly & <b>UTF-8</b>",
              "meta_title": "Aktualisiertes Shirt",
              "meta_description": "Synthetic fixture",
              "meta_keyword": ""
            },
            {
              "locale": "en-gb",
              "name": "Updated shirt",
              "description": "Native import: Updated shirt\nO'Reilly & <b>UTF-8</b>",
              "meta_title": "Updated shirt",
              "meta_description": "Synthetic fixture",
              "meta_keyword": ""
            }
          ],
          "options": [
            {
              "ref": "colour",
              "required": true,
              "values": [
                {
                  "ref": "blue",
                  "quantity": 9,
                  "subtract": true,
                  "price": "4.0000",
                  "points": 2,
                  "weight": "0.2500"
                },
                {
                  "ref": "green",
                  "quantity": 9,
                  "subtract": true,
                  "price": "1.0000",
                  "points": 2,
                  "weight": "0.2500"
                }
              ]
            }
          ]
        }
      ],
      "variants": [
        {
          "ref": "variant-a",
          "master": "shirt",
          "sku": "shirt-red-m",
          "quantity": 3,
          "selection": [
            {
              "option": "colour",
              "value": "green"
            }
          ],
          "overrides": {
            "descriptions": [
              {
                "locale": "de-de",
                "name": "Grünes Sondermodell"
              }
            ],
            "enabled": true,
            "price": "21.0000"
          }
        }
      ]
    }
  ]
}

Ergebnis & Dokumentation

Maschinenlesbare Dokumentation dieses Hubs

Quelle dieser Seite: der veröffentlichte HALOWERK-Katalog. Stand: 2026-11-01, 15:19 UTC.

Weitere Endpunkte dieses Hubs

Alle Endpunkte dieses Hubs →