{
  "openapi": "3.0.3",
  "info": {
    "title": "Admin API",
    "version": "v1.188.1",
    "x-rateLimit": {
      "globalRead": {
        "maxAttempts": 1000,
        "decayMinutes": 1
      },
      "globalWrite": {
        "maxAttempts": 300,
        "decayMinutes": 1
      },
      "customersRead": {
        "maxAttempts": 300,
        "decayMinutes": 1
      },
      "customersWrite": {
        "maxAttempts": 300,
        "decayMinutes": 1
      },
      "fulfillmentWrite": {
        "maxAttempts": 300,
        "decayMinutes": 1
      },
      "ordersRead": {
        "maxAttempts": 1000,
        "decayMinutes": 1
      },
      "ordersWrite": {
        "maxAttempts": 300,
        "decayMinutes": 1
      },
      "pricesRead": {
        "maxAttempts": 2500,
        "decayMinutes": 1
      },
      "pricesWrite": {
        "maxAttempts": 300,
        "decayMinutes": 1
      },
      "productRead": {
        "maxAttempts": 1000,
        "decayMinutes": 1
      },
      "productWrite": {
        "maxAttempts": 300,
        "decayMinutes": 1
      },
      "productSortingsWrite": {
        "maxAttempts": 2500,
        "decayMinutes": 1
      },
      "shopCategoriesRead": {
        "maxAttempts": 1000,
        "decayMinutes": 1
      },
      "shopCategoriesWrite": {
        "maxAttempts": 300,
        "decayMinutes": 1
      },
      "stocksRead": {
        "maxAttempts": 2500,
        "decayMinutes": 1
      },
      "stocksWrite": {
        "maxAttempts": 2500,
        "decayMinutes": 1
      },
      "vouchersRead": {
        "maxAttempts": 300,
        "decayMinutes": 1
      },
      "vouchersWrite": {
        "maxAttempts": 300,
        "decayMinutes": 1
      },
      "customDataRead": {
        "maxAttempts": 2000,
        "decayMinutes": 1
      },
      "customDataWrite": {
        "maxAttempts": 1000,
        "decayMinutes": 1
      },
      "reservationsWrite": {
        "maxAttempts": 2500,
        "decayMinutes": 1
      },
      "redirectsRead": {
        "maxAttempts": 1000,
        "decayMinutes": 1
      },
      "redirectsWrite": {
        "maxAttempts": 300,
        "decayMinutes": 1
      },
      "emailsRead": {
        "maxAttempts": 1000,
        "decayMinutes": 1
      },
      "emailsWrite": {
        "maxAttempts": 300,
        "decayMinutes": 1
      },
      "bulkRequestsRead": {
        "maxAttempts": 1000,
        "decayMinutes": 1
      },
      "bulkRequestsWrite": {
        "maxAttempts": 300,
        "decayMinutes": 1
      }
    },
    "x-resources": [
      {
        "name": "assets",
        "critical": false,
        "readonly": false,
        "groups": []
      },
      {
        "name": "attribute-groups",
        "groups": [
          "product-management"
        ]
      },
      {
        "name": "brands",
        "groups": [
          "product-management"
        ]
      },
      {
        "name": "campaigns",
        "groups": [
          "shop-management"
        ]
      },
      {
        "name": "carriers"
      },
      {
        "name": "categories",
        "groups": [
          "product-management"
        ]
      },
      {
        "name": "companies"
      },
      {
        "name": "custom-data-config"
      },
      {
        "name": "customers",
        "critical": true,
        "groups": [
          "checkout"
        ]
      },
      {
        "name": "fulfillment",
        "groups": [
          "checkout"
        ]
      },
      {
        "name": "merchants"
      },
      {
        "name": "orders",
        "critical": true,
        "groups": [
          "checkout",
          "shop-management"
        ]
      },
      {
        "name": "package-groups",
        "groups": [
          "shop-management"
        ]
      },
      {
        "name": "prices",
        "groups": [
          "product-management"
        ]
      },
      {
        "name": "products",
        "groups": [
          "product-management"
        ]
      },
      {
        "name": "promotions",
        "groups": [
          "checkout"
        ]
      },
      {
        "name": "reservations"
      },
      {
        "name": "shops",
        "groups": [
          "shop-management"
        ]
      },
      {
        "name": "shop-categories",
        "groups": [
          "shop-management"
        ]
      },
      {
        "name": "shop-emails",
        "groups": [
          "shop-management"
        ]
      },
      {
        "name": "shop-redirects",
        "groups": [
          "shop-management"
        ]
      },
      {
        "name": "stocks",
        "groups": [
          "product-management"
        ]
      },
      {
        "name": "vouchers",
        "groups": [
          "checkout",
          "shop-management"
        ]
      },
      {
        "name": "warehouses"
      },
      {
        "name": "webhooks"
      },
      {
        "name": "channels"
      },
      {
        "name": "customer-segments",
        "groups": [
          "checkout"
        ]
      }
    ],
    "description": "This is the specification of the SCAYLE Admin API.\n\nFor more information about how to interact with the Admin API, you can read the respective [developer guide](/en/dev/admin-api/introduction).\nThe developer guide includes code samples for our [PHP SDK](/en/dev/admin-api/sdk-setup#php), for our [Java SDK](/en/dev/admin-api/sdk-setup#java) and for [JavaScript](/en/dev/admin-api/sdk-setup#javascript) and curl.\n\nAuthentication is done via `X-Access-Token` HTTP Header as described [here](/en/dev/admin-api/api-authentication).\n\nBase url **should** be prefixed with `/api/admin/v1`.\n\nIf a client side timeout is deemed necessary, it is recommended to set it at a minimum of `380` seconds.\n"
  },
  "externalDocs": {
    "description": "Find out more in our official docs.",
    "url": "https://scayle.dev/"
  },
  "servers": [
    {
      "url": "https://{{tenant-space}}.admin.api.scayle.cloud/v1/"
    }
  ],
  "tags": [
    {
      "name": "Assets",
      "description": "Assets"
    },
    {
      "name": "AttributeGroups",
      "description": "Attribute Groups"
    },
    {
      "name": "Attributes",
      "description": "Attributes"
    },
    {
      "name": "BrandCustomData",
      "description": "Custom Data for Brand"
    },
    {
      "name": "Brands",
      "description": "Brands"
    },
    {
      "name": "Campaigns",
      "description": "Campaigns"
    },
    {
      "name": "Carriers",
      "description": "Carriers"
    },
    {
      "name": "Companies",
      "description": "Companies"
    },
    {
      "name": "CompositeProducts",
      "description": "Composite Products"
    },
    {
      "name": "CompositeProductVariants",
      "description": "Composite Product Variants"
    },
    {
      "name": "CustomDataConfig",
      "description": "Custom Data Config"
    },
    {
      "name": "Customers",
      "description": "Customers"
    },
    {
      "name": "CustomerSegments",
      "description": "Customer Segments"
    },
    {
      "name": "Fulfillment",
      "description": "Fulfillment"
    },
    {
      "name": "Images",
      "description": "Images"
    },
    {
      "name": "MasterCategories",
      "description": "Master Categories"
    },
    {
      "name": "Merchants",
      "description": "Merchants"
    },
    {
      "name": "Orders",
      "description": "Orders"
    },
    {
      "name": "PackageGroups",
      "description": "Package Groups"
    },
    {
      "name": "Prices",
      "description": "Prices"
    },
    {
      "name": "ProductSortings",
      "description": "Product Sortings"
    },
    {
      "name": "Products",
      "description": "Products"
    },
    {
      "name": "ShopCategories",
      "description": "Shop Categories"
    },
    {
      "name": "ShopCategoriesCountryCustomData",
      "description": "Custom Data for Shop Category Country"
    },
    {
      "name": "ShopCategoriesCustomData",
      "description": "Custom Data for Shop Category"
    },
    {
      "name": "ShopCountryCustomData",
      "description": "Custom Data for Shop Country"
    },
    {
      "name": "ShopCustomData",
      "description": "Custom Data for Shops"
    },
    {
      "name": "ProductCustomData",
      "description": "Custom Data for Products"
    },
    {
      "name": "ProductMaster",
      "description": "Product Master"
    },
    {
      "name": "ProductVariantCustomData",
      "description": "Custom Data for product variants"
    },
    {
      "name": "ProductVariantPriceCustomData",
      "description": "Custom Data for product variant prices"
    },
    {
      "name": "CampaignCustomData",
      "description": "Custom data for Campaigns"
    },
    {
      "name": "Shops",
      "description": "Shops"
    },
    {
      "name": "Stocks",
      "description": "Stocks"
    },
    {
      "name": "Translations",
      "description": "Translations"
    },
    {
      "name": "Promotions",
      "description": "Promotions"
    },
    {
      "name": "Variants",
      "description": "Variants"
    },
    {
      "name": "Vouchers",
      "description": "Vouchers"
    },
    {
      "name": "Warehouses",
      "description": "Warehouses"
    },
    {
      "name": "Webhooks",
      "description": "Event Subscription Management"
    },
    {
      "name": "Redirects",
      "description": "Redirects"
    },
    {
      "name": "Payments",
      "description": "Payments"
    }
  ],
  "paths": {
    "/assets": {
      "post": {
        "operationId": "createAsset",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "assets"
        ],
        "tags": [
          "Assets"
        ],
        "summary": "Upload an asset",
        "description": "This endpoint can be used to upload assets to the digital asset management service.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/customise-extend/manage-generic-assets#create-an-asset).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Asset"
              },
              "examples": {
                "Url": {
                  "value": {
                    "source": {
                      "url": "https://cdn.aboutstatic.com/file/3f5a809d399b58ddf5c50025f984de18"
                    }
                  }
                },
                "Attachment": {
                  "value": {
                    "source": {
                      "attachment": "U0NBWUxFIHJvY2tzIQ=="
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Asset was successfully uploaded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetUrl"
                },
                "examples": {
                  "Asset Url": {
                    "value": {
                      "assetUrl": "images/084dace7d7ff691e97982fa554113c29"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "// Url\nlet newAsset = {\n  source: {\n      url: \"https://cdn.aboutstatic.com/file/3f5a809d399b58ddf5c50025f984de18\"\n  }\n};\n\nlet response = await adminApi.apis.Assets.createAsset({requestBody: newAsset});\n  let createdAsset = response.body;\n\n// Attachment\nlet newAsset = {\n  source: {\n      attachment: fs.readFileSync('images/myImage.jpg').toString('base64')\n  }\n};\n\nlet response = await client.apis.Assets.createAsset({requestBody: newAsset});\nlet createdAsset = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "// Url\n$asset = new Asset();\n\n$source = new AssetSource();\n$source->url = \"https://cdn.aboutstatic.com/file/3f5a809d399b58ddf5c50025f984de18\";\n\n$asset->source = $source;\n\n$assetUrl = $adminApi->assets->create($asset);\n\n// Attachment\n$asset = new Asset();\n\n$source = new AssetSource();\n$source->attachment = base64_encode(file_get_contents('images/myImage.jpg'));\n\n$asset->source = $source;\n\n$assetUrl = $adminApi->assets->create($asset);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "// Url\nAsset asset = new Asset();\n\nAssetSource source = new AssetSource();\nsource.setUrl(\"https://cdn.aboutstatic.com/file/3f5a809d399b58ddf5c50025f984de18\");\n\nasset.setSource(source);\n\nAssetUrl assetUrl = adminApi.assets().create(asset);\n\n// Attachment\nAsset asset = new Asset();\n\nAssetSource source = new AssetSource();\n\nbyte[] imageContent = FileUtils.readFileToByteArray(new File(\"images/myImage.jpg\"));\nString encodedImage = Base64.getEncoder().encodeToString(imageContent);\n\nsource.setAttachment(encodedImage);\n\nasset.setSource(source);\n\nAssetUrl assetUrl = adminApi.assets().create(asset);\n"
          }
        ]
      }
    },
    "/products": {
      "get": {
        "operationId": "getProducts",
        "x-rateLimit": {
          "scope": "productRead"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Products"
        ],
        "summary": "Get products for given filters",
        "description": "This endpoint can be used to request a collection of products. It is possible to refine the search by applying filters.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-products#get-a-collection-of-products).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductWith"
          },
          {
            "$ref": "#/components/parameters/FilterId"
          },
          {
            "$ref": "#/components/parameters/FilterMinId"
          },
          {
            "$ref": "#/components/parameters/FilterMaxId"
          },
          {
            "$ref": "#/components/parameters/FilterMinCreatedAt"
          },
          {
            "$ref": "#/components/parameters/FilterMaxCreatedAt"
          },
          {
            "$ref": "#/components/parameters/FilterMinUpdatedAt"
          },
          {
            "$ref": "#/components/parameters/FilterMaxUpdatedAt"
          },
          {
            "name": "filters[minLastContentUpdatedAt]",
            "in": "query",
            "description": "Minimum (inclusive) content update timestamp of products that should be returned.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2021-01-23T11%3A30%3A58%2B00%3A00"
            }
          },
          {
            "name": "filters[maxLastContentUpdatedAt]",
            "in": "query",
            "description": "Maximum (inclusive) content update timestamp of products that should be returned.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2021-01-23T11%3A30%3A58%2B00%3A00"
            }
          },
          {
            "$ref": "#/components/parameters/FilterVariantIds"
          },
          {
            "$ref": "#/components/parameters/FilterVariantReferenceKeys"
          },
          {
            "name": "filters[variantEan]",
            "in": "query",
            "description": "Comma-separated list of variant EANs that should be used for filtering.",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 55
              }
            }
          },
          {
            "name": "filters[attributes]",
            "in": "query",
            "description": "This query parameter allows you to filter for entities with the given simple attributes. The array/object key\nmust be the attribute name and the value can be a comma-separated list of attribute values.\n\nThe filter logic will combine all attributes of the same group into an `OR` filter and all attribute groups\ninto an `AND` filter.\n",
            "example": "?filters[attributes][color]=red,blue,yellow&filters[attributes][size]=xs,s,m",
            "explode": true,
            "style": "deepObject",
            "allowReserved": true,
            "schema": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              },
              "example": {
                "color": "red,blue,yellow",
                "season": "FS20"
              }
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of entities in the result. When fetching entities with children, the limit always applies to the amount of parent entities.\n\n**WARNING:** While the maximum allowed value is **1000**, using this limit in combination with the `with` parameter (to load detailed nested resources like `variants.attributes`) can lead to performance issues.\n* If you use the maximum limit, do not use the `with` parameter.\n* When loading nested resources via `with`, use the default limit of **100** or a value significantly lower than 1000 to ensure API stability.\n",
            "required": false,
            "style": "form",
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 1000
            }
          },
          {
            "name": "filters[masterReferenceKey]",
            "in": "query",
            "description": "Comma-separated list of master reference keys that should be used for filtering.",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filters[isComposite]",
            "in": "query",
            "description": "Pass true to get only composite products, pass false to get the non-composite products.",
            "example": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "filters[state]",
            "in": "query",
            "description": "Pass one of the available product states \"live\", \"draft\", \"problem\", \"new\", \"inApproval\", \"blocked\".",
            "schema": {
              "$ref": "#/components/schemas/Product/properties/state"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort products by the provided field.",
            "schema": {
              "type": "string",
              "enum": [
                "id",
                "createdAt",
                "lastContentUpdatedAt"
              ],
              "default": "id"
            }
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "List of products",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Product"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Complete Product Collection": {
                    "$ref": "#/components/examples/CompleteProductCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Products.getProducts({\n    \"limit\": 10,\n    \"filters[attributes]\": {color: \"green,red\"},\n    \"filters[variantEan]\": \"01010101,01010102\",\n    \"filters[state]\": \"live\"\n});\n\nlet products = response.body.entities;\n\nproducts.forEach(\n    product => console.log(product.referenceKey)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'limit' => 10,\n    'filters[attributes][color]' => 'green,red',\n    'filters[variantEan]' => '01010101,01010102',\n    'filters[state]' => 'live',\n];\n\n$productCollection = $adminApi->products->all($options);\n\nforeach ($productCollection->getEntities() as $product) {\n    echo $product->referenceKey;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"limit\", 10)\n                        .addOption(\"filters[attributes][color]\", \"green,red\")\n                        .addOption(\"filters[variantEan]\", \"01010101,01010102\")\n                        .addOption(\"filters[state]\", \"live\")\n                        .build();\n\nApiCollection<Product> productCollection = adminApi.products().all(options);\n\nfor (Product product : productCollection.getEntities()) {\n    System.out.println(product.getReferenceKey());\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "createProduct",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-bulkRequest": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Products"
        ],
        "summary": "Create a new shop product",
        "description": "This endpoint can be used to create a product that will later be displayed in the storefront for customers to purchase.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-products#create-product).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/IgnoreMasterIfExistCreate"
          },
          {
            "$ref": "#/components/parameters/UpdateIfExists"
          },
          {
            "$ref": "#/components/parameters/ProductWith"
          },
          {
            "$ref": "#/components/parameters/IgnoreAttributeLocks"
          },
          {
            "$ref": "#/components/parameters/IgnoreCategoryLocks"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Product"
              },
              "examples": {
                "Complete Product": {
                  "$ref": "#/components/examples/CompleteProductRequest"
                },
                "Minimal Draft Product": {
                  "$ref": "#/components/examples/MinimalDraftProductRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product was successfully updated.\nThis status code is returned when `updateIfExists=true` and a product with the given reference key exists.\n",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                },
                "examples": {
                  "Complete Product": {
                    "$ref": "#/components/examples/CompleteProductResponse"
                  },
                  "Minimal Draft Product": {
                    "$ref": "#/components/examples/MinimalDraftProductResponse"
                  }
                }
              }
            }
          },
          "201": {
            "description": "Product was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                },
                "examples": {
                  "Complete Product": {
                    "$ref": "#/components/examples/CompleteProductResponse"
                  },
                  "Minimal Draft Product": {
                    "$ref": "#/components/examples/MinimalDraftProductResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "409": {
            "description": "Conflict error",
            "content": {
              "application/json": {
                "schema": {
                  "title": "ConflictResponse",
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "errors": [
                    {
                      "errorKey": "OVERRIDING_ENTITY_CONFIGURATION",
                      "message": "Custom data for the entity shop is being manipulated by other job in the meantime.",
                      "context": {
                        "entity": "shop"
                      }
                    }
                  ]
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable error",
            "content": {
              "application/json": {
                "schema": {
                  "title": "ServiceUnavailableResponse",
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "errors": [
                    {
                      "errorKey": "SERVICE_UNAVAILABLE_ERROR",
                      "message": "The request failed as the service is not currently functioning due to internal errors.",
                      "context": {}
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newProduct = {\n  \"referenceKey\": \"M0001-black\",\n  \"name\": {\n    \"de_DE\": \"Blaues Shirt\",\n    \"en_GB\": \"Blue Shirt\"\n  },\n  \"state\": \"live\",\n  \"master\": {\n    \"referenceKey\": \"M0001\",\n    \"categories\": {\n      \"paths\": [\n        [\n          \"Fashion\",\n          \"Men\",\n          \"Shirts\"\n        ]\n      ]\n    },\n    \"attributes\": [\n      {\n        \"name\": \"collection\",\n        \"type\": \"localizedString\",\n        \"value\": {\n          \"de_DE\": \"einzigartig\",\n          \"en_GB\": \"unique\"\n        }\n      },\n      {\n        \"name\": \"season\",\n        \"type\": \"simpleList\",\n        \"value\": [\"autumn\", \"winter\"]\n      }\n    ]\n  },\n  \"attributes\": [\n    {\n      \"name\": \"dimensions\",\n      \"type\": \"advanced\",\n      \"value\": {\n        \"height\": 100,\n        \"width\": 30,\n        \"unit\": \"cm\"\n      }\n    },\n    {\n      \"name\": \"material\",\n      \"type\": \"advancedList\",\n      \"value\": [\n        {\n          \"name\": \"wool\",\n          \"percentage\": 80\n        },\n        {\n          \"name\": \"cotton\",\n          \"percentage\": 20\n        }\n      ]\n    }\n  ],\n  \"variants\": [\n    {\n      \"referenceKey\": \"M0001-black-M\",\n      \"attributes\": [\n        {\n          \"name\": \"size\",\n          \"type\": \"simple\",\n          \"value\": \"M\"\n        },\n        {\n          \"name\": \"color\",\n          \"type\": \"localizedStringList\",\n          \"value\": [\n            {\n              \"de_DE\": \"weiß\",\n              \"en_GB\": \"white\"\n            },\n            {\n              \"de_DE\": \"schwarz\",\n              \"en_GB\": \"black\"\n            }\n          ]\n        }\n      ],\n      \"prices\": [\n        {\n          \"price\": 80,\n          \"oldPrice\": 100,\n          \"recommendedRetailPrice\": 90,\n          \"buyingPrice\": 70,\n          \"tax\": 19.0,\n          \"countryCode\": \"DE\",\n          \"currencyCode\": \"EUR\",\n          \"groupKey\": \"myGroupKey\",\n          \"promotionKey\": \"myPromotionKey\",\n          \"unitPrice\": {\n            \"unit\": \"ml\",\n            \"amount\": 100,\n            \"price\": 399\n          },\n          \"validFrom\": \"2021-09-23T11:30:58+00:00\",\n          \"validTo\": null,\n          \"merchantReferenceKey\": \"merchant-1\"\n        }\n      ]\n    }\n  ],\n  \"images\": [\n    {\n      \"assetUrl\": \"images/084dace7d7ff691e97982fa554113c29\",\n      \"attributes\": [\n        {\n          \"name\": \"view\",\n          \"type\": \"simple\",\n          \"value\": \"front\"\n        }\n      ]\n    }\n  ],\n  \"customData\": {\n      \"isValid\": true,\n      \"name\": 'ayou',\n      \"score\": 100,\n      \"some-json\": {\n          \"de_DE\": { \"color\": \"weiss\" },\n          \"en_GB\": { \"color\": \"white\" }\n      }\n  },\n  \"merchantReferenceKeys\": [\"merchant-1\", \"merchant-2\"]\n};\n\nlet response = await client.apis.Products.createProduct({}, {requestBody: newProduct});\nlet createdProduct = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$product = new Product();\n$product->referenceKey = 'M0001-black';\n$product->name = [\n    'de_DE' => 'Blaues Shirt',\n    'en_GB' => 'Blue Shirt'\n];\n$product->state = 'live';\n\n$categories = new ProductMasterCategories();\n$categories->paths = [\n    [\n        'Fashion',\n        'Men',\n        'Shirts'\n    ]\n];\n\n$master = new Master();\n$master->referenceKey = 'M0001';\n$master->categories = $categories;\n\n$collectionAttribute = new Attribute();\n$collectionAttribute->name = 'collection';\n$collectionAttribute->type = 'localizedString';\n$collectionAttribute->value = ['de_DE' => 'einzigartig', 'en_GB' => 'unique'];\n\n$seasonAttribute = new Attribute();\n$seasonAttribute->name = 'season';\n$seasonAttribute->type = 'simpleList';\n$seasonAttribute->value = ['autumn', 'winter'];\n\n$master->attributes = [$collectionAttribute, $seasonAttribute];\n\n$product->master = $master;\n\n$dimensionsAttribute = new Attribute();\n$dimensionsAttribute->name = 'dimensions';\n$dimensionsAttribute->type = 'advanced';\n$dimensionsAttribute->value = [\n  'height' => 100,\n  'width' => 30,\n  'unit' => 'cm',\n];\n\n$materialAttribute = new Attribute();\n$materialAttribute->name = 'material';\n$materialAttribute->type = 'advancedList';\n$materialAttribute->value = [\n  ['name' => 'wool', 'percentage' => 80],\n  ['name' => 'cotton', 'percentage' => 20],\n];\n\n$product->attributes = [$dimensionsAttribute, $materialAttribute];\n\n$variant = new ProductVariant();\n$variant->referenceKey = \"M0001-black-M\";\n\n$sizeAttribute = new Attribute();\n$sizeAttribute->type = \"simple\";\n$sizeAttribute->name = \"size\";\n$sizeAttribute->value = \"M\";\n\n$productColor = new Attribute();\n$productColor->type = \"localizedStringList\";\n$productColor->name = 'color';\n$productColor->value = [\n    [\n        'de_DE' => 'rot',\n        'en_GB' => 'red'\n    ],\n    [\n        'de_DE' => 'blau',\n        'en_GB' => 'blue'\n    ]\n];\n\n$variant->attributes = [$sizeAttribute, $productColor];\n\n$price = new ProductVariantPrice();\n$price->price = 80;\n$price->oldPrice = 100;\n$price->recommendedRetailPrice = 90;\n$price->tax = 19.0;\n$price->currencyCode = \"EUR\";\n$price->countryCode = \"DE\";\n$price->groupKey = \"myGroupKey\";\n$price->promotionKey = \"myPromotionKey\";\n$price->validFrom = \"2021-09-23T11:30:58+00:00\";\n$price->merchantReferenceKey = \"merchant-1\";\n\n$variant->prices = [$price];\n$product->variants = [$variant];\n\n$product->customData = (object) [\n  'isValid' => true, \n  'name' => 'ayou', \n  'score' => 100, \n  'some-json' => [\n    'de_DE' => [\n      'color' => 'schwarz'\n    ],\n    'en_GB' => [\n      'color' => 'black'\n    ]\n  ]\n];\n\n$image = new ProductImage();\n$imageSource = new AssetSource();\n$imageSource->url = 'images/084dace7d7ff691e97982fa554113c29';\n$image->source = $imageSource;\n\n$imageAttribute = new Attribute();\n$imageAttribute->type = \"simple\";\n$imageAttribute->name = \"view\";\n$imageAttribute->value = \"front\";\n\n$image->attributes = [$imageAttribute];\n\n$product->images = [$image];\n\n$product->merchantReferenceKeys = ['merchant-1', 'merchant-2'];\n\n$createdProduct = $adminApi->products->create($product);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Product product = new Product();\nproduct.setReferenceKey(\"M0001-black\");\n\nMap<String, String> name = new HashMap<>();\nname.put(\"de_DE\", \"Blaues Shirt\");\nname.put(\"en_GB\", \"Blue Shirt\");\n\n//master\nvar categories = new ProductMasterCategories();\nvar categoryPaths = new ArrayList<List<String>>();\nvar categoryPath = new ArrayList<String>();\ncategoryPath.add(\"Fashion\");\ncategoryPath.add(\"Men\");\ncategoryPath.add(\"Shirts\");\ncategoryPaths.add(categoryPath);\ncategories.setPaths(categoryPaths);\n\nvar masterAttributes = new ArrayList<Attribute>();\n\nvar collection = new HashMap<String, String>();\ncollection.put(\"de_DE\", \"einzigartig\");\ncollection.put(\"en_GB\", \"unique\");\n\nvar attribute = new Attribute();\nattribute.setName(\"collection\");\nattribute.setType(AttributeType.VALUE_LOCALIZEDSTRING);\nattribute.setValue(collection);\n\nvar seasonAttribute = new Attribute();\nseasonAttribute.setName(\"season\");\nseasonAttribute.setType(AttributeType.VALUE_SIMPLELIST);\nseasonAttribute.setValue(seasons);\n\nmasterAttributes.add(attribute);\nmasterAttributes.add(seasonAttribute);\n\nvar master = new Master();\nmaster.setReferenceKey(\"M0001\");\nmaster.setCategories(categories);\nmaster.setAttributes(masterAttributes);\n\n//attributes\nvar dimensions = new HashMap<String, Object>();\ndimensions.put(\"height\", 100);\ndimensions.put(\"width\", 30);\ndimensions.put(\"unit\", \"cm\");\n\nvar dimensionsAttribute = new Attribute();\ndimensionsAttribute.setName(\"dimensions\");\ndimensionsAttribute.setType(AttributeType.VALUE_ADVANCED);\ndimensionsAttribute.setValue(dimensions);\n\nvar wool = new HashMap<String, Object>();\nwool.put(\"name\", \"wool\");\nwool.put(\"percentage\", 80);\n\nvar cotton = new HashMap<String, Object>();\ncotton.put(\"name\", \"cotton\");\ncotton.put(\"percentage\", 20);\n\nvar materials = new ArrayList<HashMap<String, Object>>();\nmaterials.add(wool);\nmaterials.add(cotton); \n\nvar materialAttribute = new Attribute();\nmaterialAttribute.setName(\"material\");\nmaterialAttribute.setType(AttributeType.VALUE_ADVANCEDLIST);\nmaterialAttribute.setValue(materials);\n\nvar productAttributes = new ArrayList<Attribute>();\nproductAttributes.add(dimensionsAttribute);\nproductAttributes.add(materialAttribute);\n\nproduct.setAttributes(productAttributes);\n\n//custom data\nvar deColorObject = new HashMap<String, String>();\ndeColorObject.put(\"color\", \"weiss\");\n\nvar enColorObject = new HashMap<String, String>();\nenColorObject.put(\"color\", \"white\");\n\nEntityCustomData someJson = new HashMap<>();\nsomeJson.put(\"de_DE\", deColorObject);\nsomeJson.put(\"en_GB\", enColorObject);\n\nMap<String, Map<String, String>> someJson = new HashMap<>();\nsomeJson.put(\"de_DE\", deColor);\nsomeJson.put(\"en_GB\", enColor);\n\nMap<String, Object> customData = new HashMap<>();\ncustomData.put(\"isValid\", true);\ncustomData.put(\"name\", \"ayou\");\ncustomData.put(\"score\", 100);\ncustomData.put(\"some-json\", someJson);\n\nvar merchantReferenceKeys = new ArrayList<String>();\nmerchantReferenceKeys.add(\"merchant-1\");\nmerchantReferenceKeys.add(\"merchant-2\");\n\nproduct.setMaster(master);\nproduct.setReferenceKey(\"myReferenceKey\");\nproduct.setName(name);\nproduct.setState(ProductStateEnum.VALUE_LIVE);\nproduct.setCustomData(customData);\nproduct.setMerchantReferenceKeys(merchantReferenceKeys);\n\n//variants\nProductVariant variant = new ProductVariant();\nvariant.setReferenceKey(\"myVariantKey\");\n\nvar sizeAttribute = new Attribute();\nsizeAttribute.setType(AttributeType.VALUE_SIMPLE);\nsizeAttribute.setName(\"size\");\nsizeAttribute.setValue(\"M\");\n\nvar variantAttributes = new ArrayList<Attribute>();\nvariantAttributes.add(sizeAttribute);\n\nvariant.setAttributes(variantAttributes);\n\nvar prices = new ArrayList<ProductVariantPrice>();\n\nvar price = new ProductVariantPrice();\nprice.setPrice(80);\nprice.setOldPrice(100);\nprice.setRecommendedRetailPrice(90);\nprice.setBuyingPrice(70);\nprice.setTax(19.0);\nprice.setCurrencyCode(\"EUR\");\nprice.setCountryCode(\"DE\");\nprice.setGroupKey(\"myGroupKey\");\nprice.setPromotionKey(\"myPromotionKey\");\nprice.setValidFrom(java.time.Instant.parse(\"2021-09-23T11:30:58+00:00\"));\n\nvar unitPrice = new ProductVariantUnitPrice();\nunitPrice.setUnit(\"ml\");\nunitPrice.setAmount(100);\nunitPrice.setPrice(399);\nprice.setUnitPrice(unitPrice);\n\nprice.setMerchantReferenceKey(\"merchant-1\");\n\nprices.add(price);\n\nvariant.setPrices(prices);\n\nvar variants = new ArrayList<ProductVariant>();\nvariants.add(variant);\n\nproduct.setVariants(variants);\n\n//images\nvar image = new ProductImage();\nvar imageSource = new AssetSource();\nimageSource.setUrl(\"https://example.com/image.jpg\");\nimage.setSource(imageSource);\n\nvar imageAttribute = new Attribute();\nimageAttribute.setType(AttributeType.VALUE_SIMPLE);\nimageAttribute.setName(\"view\");\nimageAttribute.setValue(\"front\");\n\nvar imageAttributes = new ArrayList<Attribute>();\nimageAttributes.add(imageAttribute);\n\nimage.setAttributes(variantAttributes);\n\nvar images = new ArrayList<ProductImage>();\nimages.add(image);\n\nproduct.setImages(images);\n\nProduct createdProduct = adminApi.products().create(product);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}": {
      "get": {
        "operationId": "getProduct",
        "x-rateLimit": {
          "scope": "productRead"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Products"
        ],
        "summary": "Get a product",
        "description": "This endpoint can be used to get a single product.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-products#get-products).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/ProductWith"
          }
        ],
        "responses": {
          "200": {
            "description": "Product",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                },
                "examples": {
                  "Complete Product": {
                    "$ref": "#/components/examples/CompleteProductResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Products.getProduct({productIdentifier: 1, with: \"productSortings\"});\nlet product = response.body;\n\nproduct.productSortings.forEach(\n    productSorting => console.log(productSorting.sortValue)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'with' => 'productSortings'\n];\n\n$product = $adminApi->products->get(Identifier::fromId(1), $options);\n\nforeach ($product->productSortings as $productSorting) {\n    echo $productSorting->sortValue;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"with\", \"productSortings\")\n                        .build();\n\nProduct product = adminApi.products().get(Identifier.fromId(1), options);\n\nfor (ProductSorting productSorting : product.getProductSortings()) {\n    System.out.println(productSorting.getSortValue());\n}\n"
          }
        ]
      },
      "put": {
        "operationId": "updateProduct",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-bulkRequest": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Products"
        ],
        "summary": "Update an existing product",
        "description": "This endpoint can be used to update/replace an existing product. It does not support partial updates.\n\nIn general, this endpoint replaces the product with the provided information, meaning not provided properties will get deleted, except for nested entities. This logic is only applied to them if they are part of the payload. The attribute locking behavior can be controlled via the `ignoreAttributeLocks` parameter/option.\n\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-products#update-products).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/IgnoreMasterIfExistUpdate"
          },
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/ProductWith"
          },
          {
            "$ref": "#/components/parameters/IgnoreAttributeLocks"
          },
          {
            "$ref": "#/components/parameters/IgnoreCategoryLocks"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Product"
              },
              "examples": {
                "Complete Product": {
                  "$ref": "#/components/examples/CompleteProductRequest"
                },
                "Minimal Draft Product": {
                  "$ref": "#/components/examples/MinimalDraftProductRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                },
                "examples": {
                  "Complete Product": {
                    "$ref": "#/components/examples/CompleteProductResponse"
                  },
                  "Minimal Draft Product": {
                    "$ref": "#/components/examples/MinimalDraftProductResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          },
          "503": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Products.getProduct({productIdentifier: 1, with: \"attributes\"});\n\nlet product = response.body;\nlet key = product.attributes.findIndex(attribute => attribute.name === \"color\");\n\nproduct.attributes[key].value.push({\n    de_DE: \"grün\",\n    en_GB: \"green\"\n});\n\nclient.apis.Products.updateProduct(\n    {productIdentifier: product.id, ignoreAttributeLocks: true},\n    {requestBody: product}\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = ['with' => 'attributes'];\n\n$product = $adminApi->products->get(Identifier::fromKey('my-key'), $options);\n\n$key = array_search('color', array_column($product->attributes, 'name'));\n\n// Append green to the existing colors\n$product->attributes[$key]->value[] = [\n    'de_DE' => 'grün',\n    'en_GB' => 'green'\n];\n\n$options = ['ignoreAttributeLocks' => true];\n\n$updatedProduct = $adminApi->products->update(Identifier::fromId($product->id), $product, $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"with\", \"attributes\")\n                        .build();\n\nProduct product = adminApi.products().get(Identifier.fromKey(\"my-key\"), options);\n\nAttribute colorAttribute = product.getAttributes()\n                .stream()\n                .filter(a -> a.getName().equals(\"color\"))\n                .findFirst()\n                .get();\n\nMap<String, String> newColor = new HashMap<>();\nnewColor.put(\"de_DE\", \"grün\");\nnewColor.put(\"en_GB\", \"green\");\n\nvar existingColorValue = (List<Map<String, String>>)colorAttribute.getValue();\n\nexistingColorValue.add(newColor);\n\noptions = ApiOptions.builder()\n                    .addOption(\"ignoreAttributeLocks\", true)\n                    .build();\n\nProduct updatedProduct = adminApi.products().update(Identifier.fromId(product.getId()), product, options);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteProduct",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Products"
        ],
        "summary": "Delete a product",
        "description": "This endpoint can be used to delete a product along with all its dependencies.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-products#delete-product).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Product was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "client.apis.Products.deleteProduct({productIdentifier: \"key=my-key\"});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->products->delete(Identifier::fromKey('my-key'));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.products().delete(Identifier.fromKey(\"my-key\"));\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/state": {
      "put": {
        "operationId": "updateProductState",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Products"
        ],
        "summary": "Update state of an existing product",
        "description": "This endpoint can be used to update state of an existing product.\n\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-products#update-product-state).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductState"
              },
              "examples": {
                "Product State": {
                  "$ref": "#/components/examples/ProductState"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product state was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductState"
                },
                "examples": {
                  "Product State": {
                    "value": {
                      "state": "live",
                      "merchantProductStates": [
                        {
                          "merchantReferenceKey": "foo",
                          "state": "live"
                        },
                        {
                          "merchantReferenceKey": "bar",
                          "state": "blocked"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "503": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newProductState = {\n    state: \"live\",\n    merchantReferenceKeys: [\"merchant-1\", \"merchant-2\"]\n };\n\nlet response = await client.apis.Products.updateProductState({productIdentifier: 1}, {requestBody: newProductState});\nlet updatedProductState = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$newProductState = new ProductState();\n$newProductState->state = 'live';\n$newProductState->merchantReferenceKeys = ['merchant-1', 'merchant-2']\n\n$updatedProductState = $adminApi->products->updateState(Identifier::fromId(1), $newProductState);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var merchantReferenceKeys = new ArrayList<String>();\nmerchantReferenceKeys.add(\"merchant-1\");\nmerchantReferenceKeys.add(\"merchant-2\");\n\nProductState newProductState = new ProductState();\nnewProductState.setState(ProductStateEnum.VALUE_LIVE);\nnewProductState.setMerchantReferenceKeys(merchantReferenceKeys);\nProductState updatedProductState = adminApi.products().updateState(Identifier.fromId(1), newProductState);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/similar-products": {
      "patch": {
        "operationId": "patchSimilarProducts",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Products"
        ],
        "summary": "Update similar products of an existing product",
        "description": "This endpoint can be used to update similar product of an existing product.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-products#update-similar-products).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/SimilarProducts"
                }
              },
              "examples": {
                "Similar Products List": {
                  "$ref": "#/components/examples/SimilarProductsList"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Similar products were successfully updated."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "503": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let similarProducts = [{\n    shopKey: \"ay\",\n    productIds: [1, 2]\n }];\n\nawait client.apis.Products.patchSimilarProducts({productIdentifier: 1}, {requestBody: similarProducts});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$similarProducts = new SimilarProducts();\n$similarProducts->shopKey = 'ay';\n$similarProducts->productIds = [1, 2]\n\n$adminApi->products->patchSimilarProducts(Identifier::fromId(1), [$similarProducts]);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "SimilarProducts similarProducts = new SimilarProducts();\nsimilarProducts.setShopKey(\"ay\");\nsimilarProducts.setProductIds(List.of(1, 2));\n\nList<SimilarProducts> similarProductsList = new ArrayList<>();\nsimilarProductsList.add(similarProducts);\n\nadminApi.products().patchSimilarProducts(Identifier.fromId(1), similarProductsList);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/unlock-asset-sortings": {
      "post": {
        "operationId": "unlockProductAssetSortings",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Products"
        ],
        "summary": "Unlock product asset sortings",
        "description": "This endpoint unlocks existing product asset sortings for the given product.\n\nWhen both unlockGlobal and shopCountrySpecific are omitted, all locks are removed (global and every shop-specific).\nWhen only unlockGlobal is true, only the global lock is removed.\nWhen only shopCountrySpecific is non-empty, only the listed shop countries are unlocked.\nWhen both unlockGlobal is true and shopCountrySpecific is non-empty, global and the listed shop countries are unlocked.\nWhen unlockGlobal is false and shopCountrySpecific is non-empty, only the listed shop countries are unlocked.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UnlockAssetSortingsRequest"
              },
              "examples": {
                "Unlock global and shop countries": {
                  "$ref": "#/components/examples/ProductUnlockAssetSortingsRequest"
                },
                "Unlock all": {
                  "$ref": "#/components/examples/UnlockAllRequest"
                },
                "Unlock global only": {
                  "$ref": "#/components/examples/UnlockGlobalOnlyRequest"
                },
                "Unlock shop countries only": {
                  "$ref": "#/components/examples/UnlockShopCountriesOnlyRequest"
                },
                "Unlock shop countries only (unlockGlobal false)": {
                  "$ref": "#/components/examples/UnlockShopCountriesOnlyExplicitRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Asset sortings were successfully unlocked."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "503": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const shopCountry = new ShopCountryToUnlock();\nshopCountry.shopKey = 'ms';\nshopCountry.countryCode = 'de';\n\nconst request = new UnlockAssetSortingsRequest();\nrequest.unlockGlobal = true;\nrequest.shopCountrySpecific = [shopCountry];\n\nawait client.apis.Products.unlockAssetSortings({ productIdentifier: 1 }, { requestBody: request });\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCountry = new ShopCountryToUnlock();\n$shopCountry->shopKey = 'ms';\n$shopCountry->countryCode = 'de';\n\n$request = new UnlockAssetSortingsRequest();\n$request->unlockGlobal = true;\n$request->shopCountrySpecific = [$shopCountry];\n\n$adminApi->products->unlockAssetSortings(Identifier::fromId(1), $request);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ShopCountryToUnlock shopCountry = new ShopCountryToUnlock();\nshopCountry.setShopKey(\"ms\");\nshopCountry.setCountryCode(\"de\");\n\nUnlockAssetSortingsRequest request = new UnlockAssetSortingsRequest();\nrequest.setUnlockGlobal(true);\nrequest.setShopCountrySpecific(List.of(shopCountry));\n\nadminApi.products().unlockAssetSortings(Identifier.fromId(1), request);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/copy": {
      "post": {
        "operationId": "copyProduct",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Products"
        ],
        "summary": "Copy an existing product",
        "description": "This endpoint copies (clones) an existing product, including its attributes, assets, and variants, into a new product within the same environment.\n\nThe source product is identified by the path parameter. The new product is created with the provided `referenceKey` and the variant reference keys supplied in the `variants` mapping.\n\nWhen `master` is omitted, the copy is attached to the same ProductMaster as the source product. When `master.referenceKey` is provided with a new value, a new ProductMaster is created for the copy.\n\nOptional `copyPrices` and `copyStocks` toggles control whether commercial data is mirrored from the source. When `merchantReferenceKeys` is provided, the copy is only applied to the listed merchant entities. Merchant products of the copy start in `draft` state.\n\nImage reference keys are globally unique across product images. Any source image that has a `referenceKey` must therefore be remapped to a new, unique value via the `images` mapping; for source images without a `referenceKey`, providing an override is optional. Source images that are not listed in the mapping are copied without a `referenceKey`.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/ProductWith"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CopyProductRequest"
              },
              "examples": {
                "ProductCopyRequest": {
                  "$ref": "#/components/examples/ProductCopyRequest"
                },
                "Minimal": {
                  "$ref": "#/components/examples/ProductCopyMinimalRequest"
                },
                "With new master": {
                  "$ref": "#/components/examples/ProductCopyWithNewMasterRequest"
                },
                "With merchants and commercial data": {
                  "$ref": "#/components/examples/ProductCopyWithMerchantsRequest"
                },
                "With image reference key overrides": {
                  "$ref": "#/components/examples/ProductCopyWithImagesRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Product was successfully copied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                },
                "examples": {
                  "ProductCopyResponse": {
                    "$ref": "#/components/examples/ProductCopyResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          },
          "503": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const variantMapping1 = new CopyProductVariant();\nvariantMapping1.sourceReferenceKey = 'M0001-black-S';\nvariantMapping1.referenceKey = 'M0001-blue-S';\n\nconst variantMapping2 = new CopyProductVariant();\nvariantMapping2.sourceReferenceKey = 'M0001-black-M';\nvariantMapping2.referenceKey = 'M0001-blue-M';\n\nconst request = new CopyProductRequest();\nrequest.referenceKey = 'M0001-blue';\nrequest.variants = [variantMapping1, variantMapping2];\nrequest.copyPrices = false;\nrequest.copyStocks = false;\n\nconst response = await client.apis.Products.copyProduct({ productIdentifier: 1 }, { requestBody: request });\nconst product = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$variantMapping1 = new CopyProductVariant();\n$variantMapping1->sourceReferenceKey = 'M0001-black-S';\n$variantMapping1->referenceKey = 'M0001-blue-S';\n\n$variantMapping2 = new CopyProductVariant();\n$variantMapping2->sourceReferenceKey = 'M0001-black-M';\n$variantMapping2->referenceKey = 'M0001-blue-M';\n\n$request = new CopyProductRequest();\n$request->referenceKey = 'M0001-blue';\n$request->variants = [$variantMapping1, $variantMapping2];\n$request->copyPrices = false;\n$request->copyStocks = false;\n\n$product = $adminApi->products->copy(Identifier::fromId(1), $request);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "CopyProductVariant variantMapping1 = new CopyProductVariant();\nvariantMapping1.setSourceReferenceKey(\"M0001-black-S\");\nvariantMapping1.setReferenceKey(\"M0001-blue-S\");\n\nCopyProductVariant variantMapping2 = new CopyProductVariant();\nvariantMapping2.setSourceReferenceKey(\"M0001-black-M\");\nvariantMapping2.setReferenceKey(\"M0001-blue-M\");\n\nCopyProductRequest request = new CopyProductRequest();\nrequest.setReferenceKey(\"M0001-blue\");\nrequest.setVariants(List.of(variantMapping1, variantMapping2));\nrequest.setCopyPrices(false);\nrequest.setCopyStocks(false);\n\nProduct product = adminApi.products().copy(Identifier.fromId(1), request);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/images": {
      "get": {
        "operationId": "getProductImages",
        "x-rateLimit": {
          "scope": "productRead"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Images"
        ],
        "summary": "Get product images",
        "description": "This endpoint can be used to retrieve a collection of images belonging to the given product.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-product-media-assets#get-image-collections).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/ProductImageWith"
          }
        ],
        "responses": {
          "200": {
            "description": "List of product images",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ProductImage"
                      }
                    }
                  }
                },
                "examples": {
                  "Image Collection": {
                    "$ref": "#/components/examples/ProductImageCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Images.getProductImages({ productIdentifier: 1 });\nlet images = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$productImages = $this->adminApi->productImages->all(Identifier::fromId(1));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var productImages = adminApi.productImages().all(Identifier.fromId(1));\n"
          }
        ]
      },
      "post": {
        "operationId": "createProductImage",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Images"
        ],
        "summary": "Create a new product image",
        "description": "This endpoint can be used to create a new product image. It is possible to either upload an existing image to the SCAYLE CDN or reference an existing image. The images will be saved in the provided order. The order can be changed afterwards using the patch images endpoint.\nYou may set optional per-shop-country positions via `shopCountrySpecific` on each image\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-product-media-assets#upload-images).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/IgnoreAttributeLocks"
          },
          {
            "$ref": "#/components/parameters/ProductImageWith"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductImage"
              },
              "examples": {
                "Image with asset url": {
                  "value": {
                    "referenceKey": "myReferenceKey",
                    "name": "some_name",
                    "assetUrl": "images/my_image.jpg",
                    "position": 0,
                    "shopCountrySpecific": [
                      {
                        "shopKey": "ms",
                        "countryCode": "de",
                        "position": 2
                      }
                    ],
                    "attributes": [
                      {
                        "name": "view",
                        "type": "simple",
                        "value": "front"
                      }
                    ]
                  }
                },
                "Image with url source": {
                  "$ref": "#/components/examples/ProductImageResponse"
                },
                "Image with attachment url": {
                  "value": {
                    "referenceKey": "myReferenceKey",
                    "name": "some_name",
                    "source": {
                      "attachment": "U3dhZ2dlciByb2Nrcw=="
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Product image was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductImage"
                },
                "examples": {
                  "Image": {
                    "value": {
                      "id": 13,
                      "name": "some_name",
                      "assetUrl": "images/084dace7d7ff691e97982fa554113c29",
                      "mimeType": "image/jpeg",
                      "position": 0,
                      "attributes": [
                        {
                          "name": "size",
                          "type": "simple",
                          "value": "M",
                          "isLocked": false
                        },
                        {
                          "name": "season",
                          "type": "simpleList",
                          "value": [
                            "autumn",
                            "winter"
                          ],
                          "isLocked": false
                        },
                        {
                          "name": "collection",
                          "type": "localizedString",
                          "value": {
                            "de_DE": "einzigartig",
                            "en_GB": "unique"
                          },
                          "isLocked": false
                        },
                        {
                          "name": "color",
                          "type": "localizedStringList",
                          "value": [
                            {
                              "de_DE": "weiß",
                              "en_GB": "white"
                            },
                            {
                              "de_DE": "schwarz",
                              "en_GB": "black"
                            }
                          ],
                          "isLocked": false
                        }
                      ],
                      "customData": {
                        "isValid": true,
                        "name": "ayou",
                        "score": 100,
                        "some-json": {
                          "de_DE": {
                            "color": "weiss"
                          },
                          "en_GB": {
                            "color": "white"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "// Image with asset url\nlet newImage = {\n  \"referenceKey\": \"myReferenceKey\",\n  \"name\": \"some_name\",\n  \"assetUrl\": \"images/my_image.jpg\",\n  \"attributes\": [\n    {\n      \"name\": \"view\",\n      \"type\": \"simple\",\n      \"value\": \"front\"\n    }\n  ]\n};\n\nlet response = await client.apis.Images.createProductImage({productIdentifier: 1}, {requestBody: newImage});\nlet createdImage = response.body;\n\n// Image with url source\nlet newImage = {\n  \"referenceKey\": \"myReferenceKey\",\n  \"name\": \"some_name\",\n  \"source\": {\n    \"url\": \"https://cdn.aboutstatic.com/file/3f5a809d399b58ddf5c50025f984de18\"\n  },\n  \"attributes\": [\n    {\n      \"name\": \"size\",\n      \"type\": \"simple\",\n      \"value\": \"M\"\n    },\n    {\n      \"name\": \"season\",\n      \"type\": \"simpleList\",\n      \"value\": [\"autumn\", \"winter\"]\n    },\n    {\n      \"name\": \"collection\",\n      \"type\": \"localizedString\",\n      \"value\": {\n        \"de_DE\": \"einzigartig\",\n        \"en_GB\": \"unique\"\n      }\n    },\n    {\n      \"name\": \"color\",\n      \"type\": \"localizedStringList\",\n      \"value\": [\n        {\n          \"de_DE\": \"weiß\",\n          \"en_GB\": \"white\"\n        },\n        {\n          \"de_DE\": \"schwarz\",\n          \"en_GB\": \"black\"\n        }\n      ]\n    }\n  ]\n};\n\nlet response = await client.apis.Images.createProductImage({productIdentifier: 1}, {requestBody: newImage});\nlet createdImage = response.body;\n\n// Image with attachment url\nlet newImage = {\n  \"referenceKey\": \"myReferenceKey\",\n  \"name\": \"some_name\",\n  \"source\": {\n      \"attachment\": fs.readFileSync('images/myImage.jpg').toString('base64')\n  }\n};\n\nlet response = await client.apis.Images.createProductImage({productIdentifier: 1}, {requestBody: newImage});\nlet createdImage = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "// Image with asset url\n$productImage = new ProductImage();\n$productImage->assetUrl = 'images/myImage.jpg';\n$productImage->referenceKey = \"myReferenceKey\";\n\n$attribute = new Attribute();\n$attribute->name = \"view\";\n$attribute->type = \"simple\";\n$attribute->value = \"front\";\n\n$productImage->attributes = [$attribute];\n\n$productImage = $adminApi->productImages->create(Identifier::fromId(1), $productImage);\n\n// Image with url source\n$productImage = new ProductImage();\n$productImage->referenceKey = \"myReferenceKey\";\n\n$source = new AssetSource();\n$source->url = 'https://example.com/myImage.jpg';\n\n$productImage->source = $source;\n\n$sizeAttribute = new Attribute();\n$sizeAttribute->name = \"size\";\n$simpleAttribute->type = \"simple\";\n$sizeAttribute->value = \"M\";\n\n$seasonAttribute = new Attribute();\n$seasonAttribute->name = 'season';\n$seasonAttribute->type = 'simpleList';\n$seasonAttribute->value = ['autumn', 'winter'];\n\n$collectionAttribute = new Attribute();\n$collectionAttribute->name = 'collection';\n$collectionAttribute->type = 'localizedString';\n$collectionAttribute->value = ['de_DE' => 'einzigartig', 'en_GB' => 'unique'];\n\n$colorAttribute = new Attribute();\n$colorAttribute->name = 'color';\n$colorAttribute->type = 'localizedStringList';\n$colorAttribute->value = [\n    ['de_DE' => 'weiß', 'en_GB' => 'white'],\n    ['de_DE' => 'schwarz', 'en_GB' => 'black'],\n];\n\n$productImage->attributes = [$sizeAttribute, $seasonAttribute, $collectionAttribute, $colorAttribute];\n\n$productImage = $adminApi->productImages->create(Identifier::fromId(1), $productImage);\n\n// Image with attachment url\n$productImage = new ProductImage();\n$productImage->referenceKey = \"myReferenceKey\";\n\n$source = new AssetSource();\n$source->attachment = base64_encode(file_get_contents('images/myImage.jpg'));\n\n$productImage->source = $source;\n\n$productImage = $adminApi->productImages->create(Identifier::fromId(1), $productImage);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "// Image with asset url\nProductImage productImage = new ProductImage();\nproductImage.setReferenceKey(\"myReferenceKey\");\nproductImage.setName(\"some_name\");\nproductImage.setAssetUrl(\"images/myImage.jpg\");\n\nvar attributes = new ArrayList<Attribute>();\nvar attribute = new Attribute();\nattribute.setType(AttributeType.VALUE_VIEW);\nattribute.setName(\"size\");\nattribute.setValue(\"front\");\nattributes.add(attribute);\n\nproductImage.setAttributes(attributes);\n\nproductImage = adminApi.productImages().create(Identifier.fromId(1), productImage);\n\n// Image with url source\nProductImage productImage = new ProductImage();\nproductImage.setReferenceKey(\"myReferenceKey\");\nproductImage.setName(\"some_name\");\n\nAssetSource source = new AssetSource();\nsource.setUrl(\"https://cdn.aboutstatic.com/file/3f5a809d399b58ddf5c50025f984de18\");\n\nproductImage.setSource(source);\n\nvar attributes = new ArrayList<Attribute>();\n\nvar sizeAttribute = new Attribute();\nsizeAttribute.setType(AttributeType.VALUE_SIMPLE);\nsizeAttribute.setName(\"size\");\nsizeAttribute.setValue(\"M\");\nattributes.add(sizeAttribute);\n\nvar logoAttribute = new Attribute();\nlogoAttribute.setType(AttributeType.VALUE_SIMPLE);\nlogoAttribute.setName(\"logo\");\nlogoAttribute.setValue(\"meister_logo\");\nattributes.add(logoAttribute);\n\nvar nameFlockAttribute = new Attribute();\nnameFlockAttribute.setType(AttributeType.VALUE_SIMPLE);\nnameFlockAttribute.setName(\"name_flock\");\nnameFlockAttribute.setValue(\"25_mueller\");\nattributes.add(nameFlockAttribute);\n\nproductImage.setAttributes(attributes);\n\nproductImage = adminApi.productImages().create(Identifier.fromId(1), productImage);\n\n// Image with attachment url\nProductImage productImage = new ProductImage();\nproductImage.setReferenceKey(\"myReferenceKey\");\nproductImage.setName(\"some_name\");\n\nAssetSource source = new AssetSource();\n\nbyte[] imageContent = FileUtils.readFileToByteArray(new File(\"images/myImage.jpg\"));\nString encodedImage = Base64.getEncoder().encodeToString(imageContent);\n\nsource.setAttachment(encodedImage);\n\nproductImage.setSource(source);\n\nproductImage = adminApi.productImages().create(Identifier.fromId(1), productImage);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/images/{imageIdentifier}": {
      "patch": {
        "operationId": "patchProductImage",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Images"
        ],
        "summary": "Update a product image position",
        "description": "This endpoint can be used to update the position of a product image. The product image will be moved to the provided position and all other images will be moved accordingly.\nOptionally, `shopCountrySpecific` sets per-shop-country ordering.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-product-media-assets#update-product-image-position).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/ImageIdentifier"
          },
          {
            "$ref": "#/components/parameters/ProductImageWith"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductImagePosition"
              },
              "examples": {
                "Image Position": {
                  "value": {
                    "position": 3,
                    "shopCountrySpecific": [
                      {
                        "shopKey": "ms",
                        "countryCode": "de",
                        "position": 2
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product image position was successfully changed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductImage"
                },
                "examples": {
                  "Image": {
                    "value": {
                      "id": 13,
                      "name": "some_name",
                      "assetUrl": "images/084dace7d7ff691e97982fa554113c29",
                      "mimeType": "image/jpeg",
                      "position": 3
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const sc = new ProductImageShopCountryPosition();\nsc.shopKey = 'ms';\nsc.countryCode = 'de';\nsc.position = 2;\n\nconst body = new ProductImagePosition();\nbody.position = 3;\nbody.shopCountrySpecific = [sc];\n\nlet response = await client.apis.Images.patchProductImage(\n    {productIdentifier: \"product-key\", imageIdentifier: \"image-key\"},\n    {requestBody: body}\n);\n\nlet updatedImage = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$sc = new ProductImageShopCountryPosition();\n$sc->shopKey = 'ms';\n$sc->countryCode = 'de';\n$sc->position = 2;\n\n$imagePosition = new ProductImagePosition();\n$imagePosition->position = 3;\n$imagePosition->shopCountrySpecific = [$sc];\n\n$image = $adminApi->productImages->updatePosition(Identifier::fromKey('product-key'), Identifier::fromKey('image-key'), $imagePosition);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ProductImageShopCountryPosition sc = new ProductImageShopCountryPosition();\nsc.setShopKey(\"ms\");\nsc.setCountryCode(\"de\");\nsc.setPosition(2);\n\nProductImagePosition body = new ProductImagePosition();\nbody.setPosition(3);\nbody.setShopCountrySpecific(List.of(sc));\n\nadminApi.productImages().updatePosition(Identifier.fromKey(\"product-key\"), Identifier.fromKey(\"image-key\"), body);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteProductImage",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Images"
        ],
        "summary": "Delete a product image",
        "description": "This endpoint can be used to delete a product image along with all its dependencies.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-product-media-assets#delete-images).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/ImageIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Product image was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "client.apis.Images.deleteProductImage({productIdentifier: productIdentifier, imageIdentifier: imageIdentifier});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->productImages->delete(Identifier $productIdentifier, Identifier $imageIdentifier);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.productImages().delete(Identifier productIdentifier, Identifier imageIdentifier);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/images/{imageIdentifier}/custom-data": {
      "get": {
        "operationId": "getProductImageCustomData",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductImageCustomData"
        ],
        "summary": "Get custom data for a product image",
        "description": "This endpoint can be used to get custom data for a product image.\nSee more details in the [Developer Guide](/en/developer-guide/customise-extend/extend-entity-data#get-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/ImageIdentifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Custom data of a product image",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Product Image Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.ProductImageCustomData.getProductImageCustomData({productIdentifier: 1, imageIdentifier: 2});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->productImages->getProductImageCustomData(1, 2);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.productImages().getProductImageCustomData(1, 2);\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateProductImageCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductImageCustomData"
        ],
        "summary": "Create or update custom data for a product image",
        "description": "This endpoint can be used to create custom data for a product image.\nSee more details in the [Developer Guide](/en/developer-guide/customise-extend/extend-entity-data#create-or-update-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/ImageIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "Product Image Custom Data": {
                  "$ref": "#/components/examples/CustomDataRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Product image custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Product Image Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n    isValid: true,\n    score: 100,\n    name: \"ayou\",\n    someJson: {\n        de_DE: {\n          color: \"Weiss\"\n        },\n        en_GB: {\n          color: \"White\"\n        }\n    }\n};\n\nawait client.apis.ProductImageCustomData.createOrUpdateProductImageCustomData({productIdentifier: 1, imageIdentifier: 2}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n$entityCustomData->score = 100;\n$entityCustomData->name = 'ayou';\n$entityCustomData->someJson = (object) ['de_DE' => ['color' => 'Weiss'], 'en_GB' => ['color' => 'White']];\n\n$adminApi->productImages->createOrUpdateProductImageCustomData(1, 2, $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new entityCustomData();\nentityCustomData.put(\"isValid\", true);\nentityCustomData.put(\"score\", 100);\nentityCustomData.put(\"name\", \"ayou\");\n\nvar deColorObject = new HashMap<String, String>();\ndeColorObject.put(\"color\", \"weiss\");\n\nvar enColorObject = new HashMap<String, String>();\nenColorObject.put(\"color\", \"white\");\n\nEntityCustomData someJson = new HashMap<>();\nsomeJson.put(\"de_DE\", deColorObject);\nsomeJson.put(\"en_GB\", enColorObject);\n\nentityCustomData.put(\"someJson\", someJson);\n\nadminApi.productImages().createOrUpdateProductImageCustomData(1, 2, entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteProductImageCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductImageCustomData"
        ],
        "summary": "Delete custom data for a product image.",
        "description": "This endpoint can be used to delete custom data for a product image.\nSee more details in the [Developer Guide](/en/developer-guide/customise-extend/extend-entity-data#delete-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/ImageIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Product image custom data was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.ProductImageCustomData.deleteProductImageCustomData({productIdentifier: 1, imageIdentifier: 2});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->productImages->deleteProductImageCustomData(1, 2);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.productImages().deleteProductImageCustomData(1, 2);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/images/{imageIdentifier}/custom-data/{key}": {
      "get": {
        "operationId": "getProductImageCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductImageCustomData"
        ],
        "summary": "Get data of a key in custom data for a product image",
        "description": "This endpoint can be used to get custom data of key for a product image.\nSee more details in the [Developer Guide](/en/developer-guide/customise-extend/extend-entity-data#get-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/ImageIdentifier"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Custom data of a key for a product image",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Product Image Custom Data For Key": {
                    "$ref": "#/components/examples/CustomDataResponseForKey"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.ProductImageCustomData.getProductImageCustomDataForKey({productIdentifier: 1, imageIdentifier: 2, key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->productImages->getProductImageCustomDataForKey(1, 2, 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.productImages().getProductImageCustomDataForKey(1, 2, \"isValid\");\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateProductImageCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductImageCustomData"
        ],
        "summary": "Create or update specific key of custom data for a product image",
        "description": "This endpoint can be used to create or update specific key of custom data for a product image.\nSee more details in the [Developer Guide](/en/developer-guide/customise-extend/extend-entity-data#create-or-update-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/ImageIdentifier"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "Product Image Custom Data For Key": {
                  "$ref": "#/components/examples/CustomDataRequestForKey"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Key of a product image custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Product Image Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n  isValid: true\n};\nawait client.apis.ProductImageCustomData.createOrUpdateProductImageCustomDataForKey({productIdentifier: 1, imageIdentifier: 2, key: 'isValid'}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->productImages->createOrUpdateProductImageCustomDataForKey(1, 2, 'isValid', $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new entityCustomData();\nentityCustomData.put(\"isValid\", true);\n\nadminApi.productImages().createOrUpdateProductImageCustomDataForKey(1, 2, \"isValid\", entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteProductImageCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductImageCustomData"
        ],
        "summary": "Delete a key of custom data for a product image",
        "description": "This endpoint can be used to delete a key of custom data for a product image.\nSee more details in the [Developer Guide](/en/developer-guide/customise-extend/extend-entity-data#delete-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/ImageIdentifier"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "204": {
            "description": "Key of a product image custom data was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.ProductImageCustomData.deleteProductImageCustomDataForKey({productIdentifier: 1, imageIdentifier: 2, key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->productImages->deleteProductImageCustomDataForKey(1, 2, 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.productImages().deleteProductImageCustomDataForKey(1, 2, \"isValid\");\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/variants": {
      "get": {
        "operationId": "getProductVariants",
        "x-rateLimit": {
          "scope": "productRead"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Variants"
        ],
        "summary": "Get product variants",
        "description": "This endpoint can be used to retrieve a collection of product variants belonging to the given product.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/overview#get-a-collection-of-product-variant).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/VariantWith"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/FilterId"
          },
          {
            "$ref": "#/components/parameters/FilterMinId"
          },
          {
            "$ref": "#/components/parameters/FilterMaxId"
          },
          {
            "$ref": "#/components/parameters/FilterMinCreatedAt"
          },
          {
            "$ref": "#/components/parameters/FilterMaxCreatedAt"
          },
          {
            "$ref": "#/components/parameters/FilterMinUpdatedAt"
          },
          {
            "$ref": "#/components/parameters/FilterMaxUpdatedAt"
          },
          {
            "$ref": "#/paths/~1products/get/parameters/13"
          },
          {
            "$ref": "#/components/parameters/SortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "List of product variants",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ProductVariant"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Complete Variant Collection": {
                    "$ref": "#/components/examples/CompleteVariantCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.Variants.getProductVariants({productIdentifier: 1});\nlet productVariants = response.body.entities;\n\nproductVariants.forEach(\n  productVariant => console.log(productVariant.referenceKey)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$variantCollection = $adminApi->productVariants->all(Identifier::fromId(1));\n\nforeach ($variantCollection->getEntities() as $variant) {\n    echo $variant->referenceKey;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                            .addOption(\"filters[attributes][size]\", \"M,S\")\n                            .build();\n\nApiCollection<ProductVariant> variantCollection = adminApi.productVariants().all(Identifier.fromId(1), options);\n\nfor (ProductVariant variant : variantCollection.getEntities()) {\n    System.out.println(variant.getReferenceKey());\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "createProductVariant",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Variants"
        ],
        "summary": "Create a new shop product variant",
        "description": "This endpoint can be used to create a new product variant. Optionally, prices can be created within the same request. Creating a product variant will also trigger the product state evaluation process.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/overview#create-product-variant).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/UpdateVariantIfExists"
          },
          {
            "$ref": "#/components/parameters/VariantWith"
          },
          {
            "$ref": "#/components/parameters/IgnoreAttributeLocks"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductVariant"
              },
              "examples": {
                "Complete Variant": {
                  "$ref": "#/components/examples/CompleteVariantRequest"
                },
                "Minimal Variant": {
                  "$ref": "#/components/examples/MinimalVariantRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product variant was successfully updated.\nThis status code is returned when `updateIfExists=true` and a variant with the given reference key exists.\n",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariant"
                },
                "examples": {
                  "Complete Variant": {
                    "$ref": "#/components/examples/CompleteVariantResponse"
                  },
                  "Minimal Variant": {
                    "$ref": "#/components/examples/MinimalVariantResponse"
                  }
                }
              }
            }
          },
          "201": {
            "description": "Product variant was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariant"
                },
                "examples": {
                  "Complete Variant": {
                    "$ref": "#/components/examples/CompleteVariantResponse"
                  },
                  "Minimal Variant": {
                    "$ref": "#/components/examples/MinimalVariantResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newProductVariant = {\n  \"referenceKey\": \"M0001-black-M\",\n  \"ean\": \"0000007619991\",\n  \"attributes\": [\n    {\n      \"name\": \"size\",\n      \"type\": \"simple\",\n      \"value\": \"M\"\n    },\n    {\n      \"name\": \"season\",\n      \"type\": \"simpleList\",\n      \"value\": [\"autumn\", \"winter\"]\n    },\n    {\n      \"name\": \"collection\",\n      \"type\": \"localizedString\",\n      \"value\": {\n        \"de_DE\": \"einzigartig\",\n        \"en_GB\": \"unique\"\n      }\n    },\n    {\n      \"name\": \"color\",\n      \"type\": \"localizedStringList\",\n      \"value\": [\n        {\n          \"de_DE\": \"weiß\",\n          \"en_GB\": \"white\"\n        },\n        {\n          \"de_DE\": \"schwarz\",\n          \"en_GB\": \"black\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dimensions\",\n      \"type\": \"advanced\",\n      \"value\": {\n        \"height\": 100,\n        \"width\": 80,\n        \"unit\": \"cm\"\n      }\n    },\n    {\n      \"name\": \"material\",\n      \"type\": \"advancedList\",\n      \"value\": [\n        {\n          \"name\": \"wool\",\n          \"percentage\": 80\n        },\n        {\n          \"name\": \"cotton\",\n          \"percentage\": 20\n        }\n      ]\n    }\n  ],\n  \"prices\": [\n    {\n      \"price\": 80,\n      \"oldPrice\": 100,\n      \"recommendedRetailPrice\": 90,\n      \"buyingPrice\": 70,\n      \"tax\": 19.0,\n      \"countryCode\": \"DE\",\n      \"currencyCode\": \"EUR\",\n      \"groupKey\": \"myGroupKey\",\n      \"promotionKey\": \"myPromotionKey\",\n      \"unitPrice\": {\n        \"unit\": \"ml\",\n        \"amount\": 100,\n        \"price\": 399\n      },\n      \"validFrom\": \"2021-09-23T11:30:58+00:00\",\n      \"validTo\": null,\n      \"merchantReferenceKey\": \"merchant-1\"\n    }\n  ],\n  \"stocks\": [\n    {\n      \"quantity\": 17,\n      \"warehouseReferenceKey\": \"myWarehouse\",\n      \"changedAt\": \"2020-07-23T11:30:58+00:00\",\n      \"sellableWithoutStock\": false,\n      \"merchantReferenceKey\": \"merchant-1\"\n    }\n  ],\n  \"customData\": {\n      \"isValid\": true,\n      \"name\": 'ayou',\n      \"score\": 100,\n      \"some-json\": {\n          \"de_DE\": { \"color\": \"weiss\" },\n          \"en_GB\": { \"color\": \"white\" }\n      }\n  },\n  \"isComposite\": false\n};\n\nlet response = await adminApi.apis.Variants.createProductVariant({productIdentifier: 1}, {requestBody: newProductVariant});\nlet createdProductVariant = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$variant = new ProductVariant();\n$variant->referenceKey = \"myReferenceKey\";\n$variant->ean = \"0000007738357\";\n\n$attribute = new Attribute();\n$attribute->type = \"simple\";\n$attribute->name = \"size\";\n$attribute->value = \"M\";\n\n$seasonAttribute = new Attribute();\n$seasonAttribute->name = 'season';\n$seasonAttribute->type = 'simpleList';\n$seasonAttribute->value = ['autumn', 'winter'];\n\n$collectionAttribute = new Attribute();\n$collectionAttribute->name = 'collection';\n$collectionAttribute->type = 'localizedString';\n$collectionAttribute->value = ['de_DE' => 'einzigartig', 'en_GB' => 'unique'];\n\n$colorAttribute = new Attribute();\n$colorAttribute->name = 'color';\n$colorAttribute->type = 'localizedStringList';\n$colorAttribute->value = [\n    ['de_DE' => 'weiß', 'en_GB' => 'white'],\n    ['de_DE' => 'schwarz', 'en_GB' => 'black'],\n];\n\n$dimensionsAttribute = new Attribute();\n$dimensionsAttribute->name = 'dimensions';\n$dimensionsAttribute->type = 'advanced';\n$dimensionsAttribute->value = [\n  'height' => 100,\n  'width' => 80,\n  'unit' => 'cm',\n];\n\n$materialAttribute = new Attribute();\n$materialAttribute->name = 'material';\n$materialAttribute->type = 'advancedList';\n$materialAttribute->value = [\n  ['name' => 'wool', 'percentage' => 80],\n  ['name' => 'cotton', 'percentage' => 20],\n];\n\n$price = new ProductVariantPrice();\n$price->price = 80;\n$price->oldPrice = 100;\n$price->recommendedRetailPrice = 90;\n$price->buyingPrice = 70;\n$price->tax = 19.0;\n$price->countryCode = \"DE\";\n$price->currencyCode = \"EUR\";\n$price->groupKey = \"myGroupKey\";\n$price->promotionKey = \"myPromotionKey\";\n\n$unitPrice = new ProductVariantUnitPrice();\n$unitPrice->unit = 'ml';\n$unitPrice->amount = 100;\n$unitPrice->price = 399;\n$price->unitPrice = $unitPrice;\n\n$price->validFrom = \"2021-09-23T11:30:58+00:00\";\n$price->validTo = null;\n$price->merchantReferenceKey = \"merchant-1\";\n\n$stock = new ProductVariantStock();\n$stock->quantity = 17;\n$stock->warehouseReferenceKey = 'myWarehouse';\n$stock->changedAt = '2020-07-23T11:30:58+00:00';\n$stock->sellableWithoutStock = false;\n$stock->merchantReferenceKey = 'merchant-1';\n\n$variant->attributes = [$attribute, $seasonAttribute, $collectionAttribute, $colorAttribute, $dimensionsAttribute, $materialAttribute];\n\n$variant->prices = [$price];\n$variant->stocks = [$stock];\n$variant->customData = (object) [\n  'isValid' => true,\n  'name' => 'ayou',\n  'score' => 100,\n  'some-json' => [\n    'de_DE' => [\n      'color' => 'weiss'\n    ],\n    'en_GB' => [\n      'color' => 'white'\n    ]\n  ]\n];\n\n$variant->isComposite = false;\n\n$variant = $adminApi->productVariants->create(Identifier::fromId(1), $variant);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ProductVariant variant = new ProductVariant();\nvariant.setReferenceKey(\"myReferenceKey\");\nvariant.setEan(\"0000007738357\");\n\nvar attributes = new ArrayList<Attribute>();\n\nvar attribute = new Attribute();\nattribute.setType(AttributeType.VALUE_SIMPLE);\nattribute.setName(\"size\");\nattribute.setValue(\"M\");\nattributes.add(attribute);\n\nvar season = new Attribute();\nseason.setName(\"season\");\nseason.setType(AttributeType.VALUE_SIMPLELIST);\nseason.setValue(seasons);\nattributes.add(season);\n\nvar collectionAttribute = new Attribute();\ncollectionAttribute.setName(\"collection\");\ncollectionAttribute.setType(AttributeType.VALUE_LOCALIZEDSTRING);\ncollectionAttribute.setValue(collection);\nattributes.add(collection);\n\nvar whiteColor = new HashMap<String, String>();\nwhiteColor.put(\"de_DE\", \"weiß\");\nwhiteColor.put(\"en_GB\", \"white\");\n\nvar blackColor = new HashMap<String, String>();\nblackColor.put(\"de_DE\", \"schwarz\");\nblackColor.put(\"en_GB\", \"black\");\n\nvar colors = new ArrayList<HashMap<String, String>>();\ncolors.add(whiteColor);\ncolors.add(blackColor);\n\nvar colorAttribute = new Attribute();\ncolorAttribute.setName(\"color\");\ncolorAttribute.setType(AttributeType.VALUE_LOCALIZEDSTRINGLIST);\ncolorAttribute.setValue(colors);\nattributes.add(colorAttribute);\n\nvar dimensions = new HashMap<String, Object>();\ndimensions.put(\"height\", 100);\ndimensions.put(\"width\", 30);\ndimensions.put(\"unit\", \"cm\");\n\nvar dimensionsAttribute = new Attribute();\ndimensionsAttribute.setName(\"dimensions\");\ndimensionsAttribute.setType(AttributeType.VALUE_ADVANCED);\ndimensionsAttribute.setValue(dimensions);\nattributes.add(dimensionsAttribute);\n\nvar wool = new HashMap<String, Object>();\nwool.put(\"name\", \"wool\");\nwool.put(\"percentage\", 80);\n\nvar cotton = new HashMap<String, Object>();\ncotton.put(\"name\", \"cotton\");\ncotton.put(\"percentage\", 20);\n\nvar materials = new ArrayList<HashMap<String, Object>>();\nmaterials.add(wool);\nmaterials.add(cotton); \n\nvar materialAttribute = new Attribute();\nmaterialAttribute.setName(\"material\");\nmaterialAttribute.setType(AttributeType.VALUE_ADVANCEDLIST);\nmaterialAttribute.setValue(materials);\nattributes.add(materialAttribute);\n\nvar prices = new ArrayList<ProductVariantPrice>();\n\nvar price = new ProductVariantPrice();\nprice.setPrice(80);\nprice.setOldPrice(100);\nprice.setRecommendedRetailPrice(90);\nprice.setBuyingPrice(70);\nprice.setTax(19.0);\nprice.setCurrencyCode(\"EUR\");\nprice.setCountryCode(\"DE\");\nprice.setGroupKey(\"myGroupKey\");\nprice.setPromotionKey(\"myPromotionKey\");\nprice.setValidFrom(java.time.Instant.parse(\"2021-09-23T11:30:58+00:00\"));\n\nvar unitPrice = new ProductVariantUnitPrice();\nunitPrice.setUnit(\"ml\");\nunitPrice.setAmount(100);\nunitPrice.setPrice(399);\nprice.setUnitPrice(unitPrice);\n\nprice.setMerchantReferenceKey(\"merchant-1\");\n\nprices.add(price);\n\nvar stocks = new ArrayList<ProductVariantStock>();\n\nProductVariantStock stock = new ProductVariantStock();\nstock.setQuantity(17);\nstock.setWarehouseReferenceKey(\"myWarehouse\");\nstock.setChangedAt(java.time.Instant.parse(\"2020-07-23T11:30:58+00:00\"));\nstock.setMerchantReferenceKey(\"merchant-1\");\n\nstocks.add(stock);\n\nMap<String, String> deColor = new HashMap<>();\ndeColor.put(\"color\", \"schwarz\");\n\nMap<String, String> enColor = new HashMap<>();\nenColor.put(\"color\", \"black\");\n\n// Create the main map for the JSON\nMap<String, Map<String, String>> someJson = new HashMap<>();\nsomeJson.put(\"de_DE\", deColor);\nsomeJson.put(\"en_GB\", enColor);\n\nMap<String, String> customData = new HashMap<>();\ncustomData.put(\"isValid\", true);\ncustomData.put(\"name\", \"ayou\");\ncustomData.put(\"score\", 100);\ncustomData.put(\"some-json\", someJson);\n\nvariant.setAttributes(attributes);\nvariant.setPrices(prices);\nvariant.setStocks(stocks);\nvariant.setCustomData(customData);\nvariant = adminApi.productVariants().create(Identifier.fromId(1), variant);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/variants/{variantIdentifier}": {
      "get": {
        "operationId": "getProductVariant",
        "x-rateLimit": {
          "scope": "productRead"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Variants"
        ],
        "summary": "Get a product variant",
        "description": "This endpoint can be used to retrieve a single product variant.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/overview#get-product-variant).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/VariantWith"
          }
        ],
        "responses": {
          "200": {
            "description": "Product variant",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariant"
                },
                "examples": {
                  "Complete Variant": {
                    "$ref": "#/components/examples/CompleteVariantResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.Variants.getProductVariant({\n  productIdentifier: 1,\n  variantIdentifier: 1,\n  with: \"attributes,prices,prices.customData,customData\"\n});\n\nlet productVariant = response.body;\n\nproductVariant.prices.forEach(\nprice => console.log(price.price)\n);\nconsole.log(productVariant.customData)\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'with' => 'attributes,prices,prices.customData,customData'\n];\n\n$variant = $adminApi->productVariants->get(Identifier::fromId(1), Identifier::fromId(1), $options);\n\nforeach ($variant->prices as $price) {\n    echo $price->price;\n}\nprint_r($variant->customData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                            .addOption(\"with\", \"attributes,prices,prices.customData,customData\")\n                            .build();\n\nProductVariant variant = adminApi.productVariants().get(Identifier.fromId(1), Identifier.fromId(1), options);\n\nfor (ProductVariantPrice price : variant.getPrices()) {\n    System.out.println(price.getPrice());\n}\nSystem.out.println(variant.getCustomData());\n"
          }
        ]
      },
      "put": {
        "operationId": "updateProductVariant",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Variants"
        ],
        "summary": "Update an existing product variant",
        "description": "This endpoint can be used to update/replace an existing product variant. It does not support partial updates.\n\nIn general, this endpoint replaces the product variant with the provided information, meaning not provided properties will get deleted, except for nested entities: `attributes`, `prices`, `stocks`, `customData`, `relatedVariants`. This logic is only applied to them if they are part of the payload. The attribute locking behavior can be controlled via the `ignoreAttributeLocks` parameter/option.\n\nWhen the prices contain only the future price the existing current active price will not be deleted. All the future prices not provided in the request will be deleted.\n\nIf you need to create / update multiple prices of the same variant, please use this endpoint in favor of `createProductVariantPrice` endpoint. See example `UpdateVariantPricesRequest`.\n\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/overview#update-product-variant).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/VariantWith"
          },
          {
            "$ref": "#/components/parameters/IgnoreAttributeLocks"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductVariant"
              },
              "examples": {
                "Complete Variant": {
                  "$ref": "#/components/examples/CompleteVariantRequest"
                },
                "Minimal Variant": {
                  "$ref": "#/components/examples/MinimalVariantRequest"
                },
                "Variant Prices Only": {
                  "value": {
                    "referenceKey": "M0001-black-M",
                    "ean": "0000007619991",
                    "prices": [
                      {
                        "price": 80,
                        "oldPrice": 100,
                        "recommendedRetailPrice": 90,
                        "buyingPrice": 70,
                        "tax": 19,
                        "countryCode": "DE",
                        "currencyCode": "EUR",
                        "groupKey": "myGroupKey",
                        "promotionKey": "myPromotionKey",
                        "unitPrice": {
                          "unit": "ml",
                          "amount": 100,
                          "price": 399
                        },
                        "validFrom": "2021-09-23T11:30:58+00:00",
                        "validTo": null,
                        "merchantReferenceKey": "merchant-1"
                      },
                      {
                        "price": 70,
                        "oldPrice": 50,
                        "recommendedRetailPrice": 90,
                        "buyingPrice": 70,
                        "tax": 19,
                        "countryCode": "AT",
                        "currencyCode": "EUR",
                        "groupKey": "myGroupKey",
                        "promotionKey": "myPromotionKey",
                        "unitPrice": {
                          "unit": "ml",
                          "amount": 100,
                          "price": 399
                        },
                        "validFrom": "2021-09-23T11:30:58+00:00",
                        "validTo": null,
                        "merchantReferenceKey": "merchant-1"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product variant was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariant"
                },
                "examples": {
                  "Complete Variant": {
                    "$ref": "#/components/examples/CompleteVariantResponse"
                  },
                  "Minimal Variant": {
                    "$ref": "#/components/examples/MinimalVariantResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.Variants.getProductVariant({\n  productIdentifier: 1,\n  variantIdentifier: 1,\n  with: \"attributes\"\n});\n\nlet productVariant = response.body;\nlet key = productVariant.attributes.findIndex(attribute => attribute.name === \"size\");\n\nproductVariant.attributes[key].value = \"S\";\n\nclient.apis.Variants.updateProductVariant(\n  {productIdentifier: 1, variantIdentifier: productVariant.id, ignoreAttributeLocks: true},\n  {requestBody: productVariant}\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'with' => 'attributes',\n];\n\n$variant = $adminApi->productVariants->get(Identifier::fromId(1), Identifier::fromId(1), $options);\n\n$key = array_search('size', array_column($variant->attributes, 'name'));\n\n$variant->attributes[$key]->value = \"S\";\n\n$options = [\n    'ignoreAttributeLocks' => true,\n];\n\n$adminApi->productVariants->update(Identifier::fromId(1), Identifier::fromId($variant->id), $variant, $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                            .addOption(\"with\", \"attributes\")\n                            .addOption(\"ignoreAttributeLocks\", true)\n                            .build();\n\nProductVariant variant = adminApi.productVariants().get(Identifier.fromId(1), Identifier.fromId(1), options);\n\nvar sizeAttribute = variant.getAttributes()\n            .stream()\n            .filter(a -> a.getName().equals(\"size\"))\n            .findFirst()\n            .get();\n\nsizeAttribute.setValue(\"S\");\n\nadminApi.productVariants().update(Identifier.fromId(1), Identifier.fromId(variant.getId()), variant);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteProductVariant",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Variants"
        ],
        "summary": "Delete a product variant",
        "description": "This endpoint can be used to delete a product variant along with all its dependencies.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/overview#delete-product-variant).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Product variant was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "// Delete by ID\nadminApi.apis.Variants.deleteProductVariant({productIdentifier: 1, variantIdentifier: 1});\n\n// Delete by Reference key\nadminApi.apis.Variants.deleteProductVariant({productIdentifier: \"key=product-key\", variantIdentifier: \"key=variant-key\"});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "// Delete by ID\n$adminApi->productVariants->delete(Identifier::fromId(1), Identifier::fromId(1));\n\n// Delete by Reference key\n$adminApi->productVariants->delete(Identifier::fromKey(\"product-key\"), Identifier::fromKey(\"variant-key\"));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "// Delete by ID\nadminApi.productVariants().delete(Identifier.fromId(1), Identifier.fromId(1));\n\n// Delete by Reference key\nadminApi.productVariants().delete(Identifier.fromKey(\"product-key\"), Identifier.fromKey(\"variant-key\"));\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/custom-data": {
      "get": {
        "operationId": "getProductCustomData",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductCustomData"
        ],
        "summary": "Get custom data for a product",
        "description": "This endpoint can be used to get custom data for a product.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Custom data of a product",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Product Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await AdminApi.apis.ProductCustomData.getProductCustomData({productIdentifier: 1});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->products->getCustomData(Identifier::fromId(1));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.products().getCustomData(Identifier.fromId(1));\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateProductCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductCustomData"
        ],
        "summary": "Create or update custom data for a product",
        "description": "This endpoint can be used to create custom data for a product.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-or-update-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "Product Custom Data": {
                  "$ref": "#/components/examples/CustomDataRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Product custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Product Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n  \"isValid\": true,\n  \"name\": \"ayou\",\n  \"score\": 100,\n  \"someJson\": {\n    \"de_DE\": {\n      \"color\": \"weiss\"\n    },\n    \"en_GB\": {\n      \"color\": \"white\"\n    }\n  }\n};\nawait adminApi.apis.ProductCustomData.createOrUpdateProductCustomData({productIdentifier: 1}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n$entityCustomData->score = 10;\n$entityCustomData->name = 'ayou';\n$entityCustomData->someJson = (object) [\n  'de_DE' => [\n    'color' => 'schwarz'\n  ],\n  'en_GB' => [\n    'color' => 'black'\n  ]\n];\n\n$adminApi->products->createOrUpdateCustomData(Identifier::fromId(1), $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new entityCustomData();\nentityCustomData.put(\"isValid\", true);\nentityCustomData.put(\"score\", 100);\nentityCustomData.put(\"name\", \"ayou\");\n\nvar deColorObject = new HashMap<String, String>();\ndeColorObject.put(\"color\", \"weiss\");\n\nvar enColorObject = new HashMap<String, String>();\nenColorObject.put(\"color\", \"white\");\n\nEntityCustomData someJson = new HashMap<>();\nsomeJson.put(\"de_DE\", deColorObject);\nsomeJson.put(\"en_GB\", enColorObject);\n\nentityCustomData.put(\"someJson\", someJson);\n\nadminApi.products().createOrUpdateCustomData(Identifier.fromId(1), entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteProductCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductCustomData"
        ],
        "summary": "Delete custom data for a product",
        "description": "This endpoint can be used to delete custom data for a product.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Product custom data was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await AdminApi.apis.ProductCustomData.deleteProductCustomData({productIdentifier: 1});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->products->deleteCustomData(Identifier::fromId(1));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.products().deleteCustomData(Identifier.fromId(1));\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/custom-data/{key}": {
      "get": {
        "operationId": "getProductCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductCustomData"
        ],
        "summary": "Get data of a key in custom data for a product",
        "description": "This endpoint can be used to get custom data of key for a product.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Custom data of a key for a product",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Product Custom Data For Key": {
                    "$ref": "#/components/examples/CustomDataResponseForKey"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.ProductCustomData.getProductCustomDataForKey({productIdentifier: 1, key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->products->getCustomDataForKey(Identifier::fromId(1), 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.products().getCustomDataForKey(Identifier.fromId(1), \"isValid\");\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateProductCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductCustomData"
        ],
        "summary": "Create or update specific key of custom data for a product",
        "description": "This endpoint can be used to create or update specific key of custom data for a product.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-or-update-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "Product Custom Data For Key": {
                  "$ref": "#/components/examples/CustomDataRequestForKey"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Key of a product custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Product Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n    isValid: true\n};\n\nawait AdminApi.apis.ProductCustomData.createOrUpdateProductCustomDataForKey({productIdentifier: 1, key: 'isValid'}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n\n$adminApi->products->createOrUpdateCustomDataForKey(Identifier::fromId(1), 'isValid', $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new EntityCustomData();\nentityCustomData.put(\"isValid\", true);\n\nadminApi.products().createOrUpdateCustomDataForKey(Identifier.fromId(1), \"isValid\", entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteProductCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductCustomData"
        ],
        "summary": "Delete a key of custom data for a product",
        "description": "This endpoint can be used to delete a key of custom data for a product.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "204": {
            "description": "Key of a product custom data was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await AdminApi.apis.ProductCustomData.deleteProductCustomDataForKey({productIdentifier: 1, key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->products->deleteCustomDataForKey(Identifier::fromId(1), 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.products().deleteCustomDataForKey(Identifier.fromId(1), \"isValid\");\n"
          }
        ]
      }
    },
    "/products/composite/bulk-requests": {
      "post": {
        "operationId": "createCompositeProductBulkRequest",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "CompositeProducts"
        ],
        "summary": "Create a new bulk request.",
        "description": "This endpoint can be used to create a new bulk request for creating and updating composite products.\n\nEvery bulk request is defined by list of operations and optional callbacks, which will be called every time request\nor operation statuses are changed.\n\nLarge bulk requests can be split into multiple chunks. Create the bulk request with `callbacks.requestStatus` set to\n`incomplete`, then use the returned `key` as `callbacks.bulkRequestKey` when submitting additional chunks. Use\nthe same `callbacks.bulkRequestKey` and set `callbacks.requestStatus` to `complete` for the final chunk so the request\ncan be queued for processing. Completed bulk requests cannot be extended, and duplicate operation keys from earlier\nchunks of the same bulk request are not checked again when extending it.\n\nA single operation represents an API call to one of the following endpoints:\n* POST /products/composite\n* PUT /products/composite/{productIdentifier}\n\nThe execution order is not guaranteed. It means, that operations might be executed in a different order than defined in the request body.\n\nSee more details in the [Developer Guide](/en/core-documentation/welcome-to-scayle/introduction/apis/bulk-requests#create-composite-product-bulk-request).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBulkRequest"
              },
              "examples": {
                "CreateBulkRequest": {
                  "value": {
                    "callbacks": {
                      "requestUrl": "https://example.com/api/internal/callback/request",
                      "operationUrl": "https://client.aboutyou.cloud/api/internal/callback/operation",
                      "requestStatus": "complete"
                    },
                    "operations": [
                      {
                        "key": "create-composite-product",
                        "url": "/products/composite",
                        "method": "POST",
                        "headers": {
                          "X-Merchant-Key": "M0001-black"
                        },
                        "body": {
                          "referenceKey": "M0001-black",
                          "name": {
                            "de_DE": "Blaues Shirt",
                            "en_GB": "Blue Shirt"
                          },
                          "state": "draft",
                          "master": {
                            "referenceKey": "M0001",
                            "categories": {
                              "paths": [
                                [
                                  "Fashion",
                                  "Men",
                                  "Shirts"
                                ]
                              ]
                            }
                          }
                        }
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "callbacks": {
          "bulk-request-status-changed": {
            "{$request.body#/callbacks.requestUrl}": {
              "post": {
                "description": "The callback will be triggered when request status is changed.\n",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/BulkRequestStatusChangedEvent"
                      },
                      "examples": {
                        "BulkRequestStatusChanged": {
                          "$ref": "#/components/examples/BulkRequestStatusChangedCallback"
                        }
                      }
                    }
                  }
                },
                "responses": {
                  "201": {
                    "description": "The callback was received by the client.\n"
                  }
                }
              }
            }
          },
          "bulk-operation-status-changed": {
            "{$request.body#/callbacks.operationUrl}": {
              "post": {
                "description": "The callback will be triggered when operation status is changed.\n",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/BulkOperationStatusChangedEvent"
                      },
                      "examples": {
                        "BulkOperationStatusChanged": {
                          "$ref": "#/components/examples/CompositeProductBulkOperationStatusChangedCallback"
                        }
                      }
                    }
                  }
                },
                "responses": {
                  "201": {
                    "description": "The callback was received by the client.\n"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Bulk request was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkRequest"
                },
                "examples": {
                  "CreateBulkRequestResponse": {
                    "$ref": "#/components/examples/CreateBulkRequestResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const newBulkRequest = {\n  \"callbacks\": {\n      \"requestUrl\": \"https://example.com/request\",\n      \"operationUrl\": \"https://example.com/operation\",\n      \"requestStatus\": \"complete\"\n  },\n  \"operations\": [\n      {\n          \"key\": \"o1\",\n          \"url\": \"/products/composite\",\n          \"method\": \"POST\",\n          \"body\": {\n              \"referenceKey\": \"M0001-black\",\n              \"name\": {\n                  \"de_DE\": \"Blaues Shirt\",\n                  \"en_GB\": \"Blue Shirt\"\n              },\n              \"state\": \"draft\",\n              \"master\": {\n                  \"referenceKey\": \"M0001\",\n                  \"categories\": {\n                      \"paths\": [\n                          [\"Fashion\", \"Men\", \"Shirts\"]\n                      ]\n                  }\n              }\n          }\n      }\n  ]\n};\n\nconst response = await client.apis.Products.createCompositeProductBulkRequest({}, {requestBody: newBulkRequest});\nconst bulkRequest = response.body;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "CreateBulkRequest newBulkRequest = new CreateBulkRequest();\n\nBulkRequestCallbacks bulkRequestCallbacks = new BulkRequestCallbacks();\nbulkRequestCallbacks.setRequestUrl(\"https://example.com/request\");\nbulkRequestCallbacks.setOperationUrl(\"https://example.com/operation\");\nbulkRequestCallbacks.setRequestStatus(\"complete\");\n\nnewBulkRequest.setCallbacks(bulkRequestCallbacks);\n\nCreateBulkOperation bulkOperation = new CreateBulkOperation();\nbulkOperation.setKey(\"o1\");\nbulkOperation.setUrl(\"/products/composite\");\nbulkOperation.setMethod(\"POST\");\n\nHashMap<String, Object> body = new HashMap<>();\n\nbody.put(\"referenceKey\", \"M0001-black\");\n\nHashMap<String, String> name = new HashMap<>();\nname.put(\"de_DE\", \"Blaues Shirt\");\nname.put(\"en_GB\", \"Blue Shirt\");\nbody.put(\"name\", name);\n\nbody.put(\"state\", \"draft\");\n\nHashMap<String, Object> master = new HashMap<>();\nmaster.put(\"referenceKey\", \"M0001\");\n\nHashMap<String, List<List<String>>> categories = new HashMap<>();\ncategories.put(\"paths\", List.of(List.of(\"Fashion\", \"Men\", \"Shirts\")));\nmaster.put(\"categories\", categories);\n\nbody.put(\"master\", master);\n\nbulkOperation.setBody(body);\n\nconst operations = new ArrayList<CreateBulkOperation>();\noperations.add(bulkOperation);\n\nnewBulkRequest.setOperations(operations);\n\nBulkRequest bulkRequest = adminApi.products().createCompositeProductBulkRequest(newBulkRequest);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$newBulkRequest = new CreateBulkRequest();\n\n$bulkRequestCallbacks = new BulkRequestCallbacks();\n$bulkRequestCallbacks->requestUrl = 'https://example.com/request';\n$bulkRequestCallbacks->operationUrl = 'https://example.com/operation';\n$bulkRequestCallbacks->requestStatus = 'complete';\n\n$newBulkRequest->callbacks = $bulkRequestCallbacks;\n\n$bulkOperation = new CreateBulkOperation();\n$bulkOperation->key = 'o1';\n$bulkOperation->url = '/products/composite';\n$bulkOperation->method = 'POST';\n$bulkOperation->body = (object) [\n    'referenceKey' => 'M0001-black',\n    'name' => [\n        'de_DE' => 'Blaues Shirt',\n        'en_GB' => 'Blue Shirt'\n    ],\n    'state' => 'draft',\n    'master' => [\n        'referenceKey' => 'M0001',\n        'categories' => [\n            'paths' => [\n                ['Fashion', 'Men', 'Shirts']\n            ]\n        ]\n    ]\n];\n\n$newBulkRequest->operations = [$bulkOperation];\n\n$bulkRequest = $adminApi->products->createCompositeProductBulkRequest($newBulkRequest);\n"
          }
        ]
      }
    },
    "/products/composite": {
      "post": {
        "operationId": "createCompositeProduct",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-bulkRequest": {
          "scope": "compositeProductWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "CompositeProducts"
        ],
        "summary": "Create a new shop composite product",
        "description": "This endpoint can be used to create a composite product that will later be displayed in the storefront for customers\nto purchase. See more details in the [Developer Guide](/en/core-documentation/the-basics/products/composite-products#create-a-composite-product).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/IgnoreMasterIfExistCreate"
          },
          {
            "$ref": "#/components/parameters/UpdateIfExists"
          },
          {
            "$ref": "#/components/parameters/ProductWith"
          },
          {
            "$ref": "#/components/parameters/IgnoreAttributeLocks"
          },
          {
            "$ref": "#/components/parameters/IgnoreCategoryLocks"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Product"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "variants": {
                        "type": "array",
                        "items": {
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/ProductVariant"
                            },
                            {
                              "type": "object",
                              "required": [
                                "referenceKey",
                                "relatedVariants"
                              ],
                              "properties": {
                                "relatedVariants": {
                                  "minItems": 2
                                }
                              }
                            }
                          ]
                        }
                      }
                    }
                  }
                ]
              },
              "examples": {
                "Complete Product": {
                  "$ref": "#/components/examples/CompleteCompositeProductRequest"
                },
                "Minimal Draft Product": {
                  "$ref": "#/components/examples/MinimalDraftProductRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Composite product was successfully updated.\nThis status code is returned when `updateIfExists=true` and a composite product with the given reference key exists.\n",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Product"
                    },
                    {
                      "type": "object",
                      "required": [
                        "referenceKey",
                        "state",
                        "name",
                        "master",
                        "isComposite"
                      ],
                      "properties": {
                        "variants": {
                          "type": "array",
                          "items": {
                            "allOf": [
                              {
                                "$ref": "#/components/schemas/ProductVariant"
                              },
                              {
                                "required": [
                                  "referenceKey",
                                  "relatedVariants",
                                  "isComposite"
                                ]
                              }
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "Complete Product": {
                    "$ref": "#/components/examples/CompleteProductResponse"
                  },
                  "Minimal Draft Product": {
                    "$ref": "#/components/examples/MinimalDraftProductResponse"
                  }
                }
              }
            }
          },
          "201": {
            "description": "Composite product was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Product"
                    },
                    {
                      "type": "object",
                      "required": [
                        "referenceKey",
                        "state",
                        "name",
                        "master",
                        "isComposite"
                      ],
                      "properties": {
                        "variants": {
                          "type": "array",
                          "items": {
                            "allOf": [
                              {
                                "$ref": "#/components/schemas/ProductVariant"
                              },
                              {
                                "required": [
                                  "referenceKey",
                                  "relatedVariants",
                                  "isComposite"
                                ]
                              }
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "Complete Product": {
                    "$ref": "#/components/examples/CompleteProductResponse"
                  },
                  "Minimal Draft Product": {
                    "$ref": "#/components/examples/MinimalDraftProductResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          },
          "503": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newProduct = {\n  \"referenceKey\": \"M0001-black\",\n  \"name\": {\n    \"de_DE\": \"FCB Trikot\",\n    \"en_GB\": \"FCB Jersey\"\n  },\n  \"state\": \"live\",\n  \"master\": {\n    \"referenceKey\": \"M0001\",\n    \"categories\": {\n      \"paths\": [\n        [\n          \"Fashion\",\n          \"Men\",\n          \"Shirts\"\n        ]\n      ]\n    },\n    \"attributes\": [\n      {\n        \"name\": \"sleeve_length\",\n        \"type\": \"localizedString\",\n        \"value\": {\n          \"de_DE\": \"Langarm\",\n          \"en_GB\": \"long-sleeved\"\n        }\n      }\n    ]\n  },\n  \"attributes\": [\n    {\n      \"name\": \"color\",\n      \"type\": \"localizedStringList\",\n      \"value\": [\n        {\n          \"de_DE\": \"blau\",\n          \"en_GB\": \"blue\"\n        },\n        {\n          \"de_DE\": \"schwarz\",\n          \"en_GB\": \"black\"\n        }\n      ]\n    }\n  ],\n  \"variants\": [\n    {\n      \"referenceKey\": \"M0001-black-bundle-1\",\n      \"attributes\": [\n        {\n          \"name\": \"size\",\n          \"type\": \"simple\",\n          \"value\": \"M\"\n        },\n        {\n          \"name\": \"logo\",\n          \"type\": \"simple\",\n          \"value\": \"meister_logo\"\n        },\n        {\n          \"name\": \"name_flock\",\n          \"type\": \"simple\",\n          \"value\": \"25_mueller\"\n        }\n      ],\n      \"prices\": [\n        {\n          \"price\": 9999,\n          \"tax\": 19.0,\n          \"currencyCode\": \"EUR\",\n          \"countryCode\": \"DE\",\n          \"oldPrice\": 10999,\n          \"recommendedRetailPrice\": 10999,\n          \"groupKey\": \"myGroupKey\",\n          \"promotionKey\": \"myPromotionKey\",\n          \"unitPrice\": {\n            \"unit\": \"ml\",\n            \"amount\": 100,\n            \"price\": 399\n          },\n          \"validFrom\": \"2021-09-23T11:30:58+00:00\",\n          \"validTo\": null\n        }\n      ],\n      \"relatedVariants\": [\n        {\n          \"variantReferenceKey\": \"M0001-black-s\",\n          \"isMainVariant\": true\n        },\n        {\n          \"variantReferenceKey\": \"L0001-meister\",\n          \"isMainVariant\": false\n        },\n        {\n          \"variantReferenceKey\": \"NF0001-mueller\",\n          \"isMainVariant\": false\n        }\n      ],\n      \"customData\": {\n        \"isValid\": true,\n        \"name\": \"fcb\",\n        \"score\": 100,\n        \"some-json\": {\n          \"de_DE\": {\n            \"color\": \"schwarz\"\n          },\n          \"en_GB\": {\n            \"color\": \"black\"\n          }\n        }\n      }\n    }\n  ],\n  \"images\": [\n    {\n      \"assetUrl\": \"images/084dace7d7ff691e97982fa554113c29\",\n      \"attributes\": [\n        {\n          \"name\": \"view\",\n          \"type\": \"simple\",\n          \"value\": \"front\"\n        }\n      ]\n    }\n  ]\n};\n\nlet response = await adminApi.apis.CompositeProducts.createCompositeProduct({}, {requestBody: newProduct});\nlet createdProduct = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$product = new Product();\n$product->referenceKey = 'myReferenceKey';\n$product->name = [\n    'de_DE' => 'Mein Produkt',\n    'en_GB' => 'My Product',\n];\n$product->state = 'live';\n$product->customData = (object) ['additionalDetals' => 'details'];\n\n$categories = new ProductMasterCategories();\n$categories->paths = [\n    [\n        'Fashion',\n        'Women',\n        'Shirts',\n    ],\n];\n\n$master = new Master();\n$master->referenceKey = 'myMasterReferenceKey';\n$master->categories = $categories;\n\n$product->master = $master;\n\n$productColor = new Attribute();\n$productColor->type = \"localizedStringList\";\n$productColor->name = 'color';\n$productColor->value = [\n    [\n        'de_DE' => 'rot',\n        'en_GB' => 'red',\n    ],\n    [\n        'de_DE' => 'blau',\n        'en_GB' => 'blue',\n    ],\n];\n\n$product->attributes = [$productColor];\n\n$variant = new ProductVariant();\n$variant->referenceKey = 'myVariantKey';\n\n$variantSize = new Attribute();\n$variantSize->type = \"simple\";\n$variantSize->name = 'size';\n$variantSize->value = 'M';\n\n$variant->attributes = [$variantSize];\n\n$price = new ProductVariantPrice();\n$price->price = 2499;\n$price->tax = 19.0;\n$price->currencyCode = \"EUR\";\n$price->countryCode = \"DE\";\n\n$variant->prices = [$price];\n\n$mainRelatedProductVariant = new RelatedProductVariant();\n$mainRelatedProductVariant->variantReferenceKey = 'anExistingRealVariantKey';\n$mainRelatedProductVariant->isMainVariant = true;\n\n$relatedProductVariant = new RelatedProductVariant();\n$relatedProductVariant->variantReferenceKey = 'anotherExistingRealVariantKey';\n$relatedProductVariant->isMainVariant = false;\n\n$variant->relatedVariants = [$mainRelatedProductVariant, $relatedProductVariant];\n\n$product->variants = [$variant];\n\n$image = new ProductImage();\n$imageSource = new AssetSource();\n$imageSource->url = 'https://example.com/image.jpg';\n$image->source = $imageSource;\n\n$product->images = [$image];\n\n$createdProduct = $adminApi->products->createComposite($product);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Product product = new Product();\n\nMap<String, String> name = new HashMap<>();\nname.put(\"de_DE\", \"FCB Trikot\");\nname.put(\"en_GB\", \"FCB Jersey\");\n\nvar categories = new ProductMasterCategories();\nvar categoryPaths = new ArrayList<List<String>>();\nvar categoryPath = new ArrayList<String>();\ncategoryPath.add(\"Fashion\");\ncategoryPath.add(\"Women\");\ncategoryPath.add(\"Shirts\");\ncategoryPaths.add(categoryPath);\ncategories.setPaths(categoryPaths);\n\nvar master = new Master();\nmaster.setReferenceKey(\"myMasterReferenceKey\");\nmaster.setCategories(categories);\n\nMap<String, String> customData = new HashMap<>();\ncustomData.put(\"additionalDetails\", \"details\");\n\nproduct.setMaster(master);\nproduct.setReferenceKey(\"myReferenceKey\");\nproduct.setName(name);\nproduct.setState(ProductStateEnum.VALUE_LIVE);\nproduct.setCustomData(customData);\n\nvar colorAttribute = new Attribute();\ncolorAttribute.setType(AttributeType.VALUE_LOCALIZEDSTRINGLIST);\ncolorAttribute.setName(\"color\");\n\nList<Map<String, String>> colors = new ArrayList<>();\n\nMap<String, String> red = new HashMap<>();\nred.put(\"de_DE\", \"rot\");\nred.put(\"en_GB\", \"red\");\n\nMap<String, String> blue = new HashMap<>();\nblue.put(\"de_DE\", \"blau\");\nblue.put(\"en_GB\", \"blue\");\n\ncolors.add(red);\ncolors.add(blue);\n\ncolorAttribute.setValue(colors);\n\nvar productAttributes = new ArrayList<Attribute>();\nproductAttributes.add(colorAttribute);\n\nproduct.setAttributes(productAttributes);\n\nProductVariant variant = new ProductVariant();\nvariant.setReferenceKey(\"myVariantKey\");\n\nvar sizeAttribute = new Attribute();\nsizeAttribute.setType(AttributeType.VALUE_SIMPLE);\nsizeAttribute.setName(\"size\");\nsizeAttribute.setValue(\"M\");\n\nvar variantAttributes = new ArrayList<Attribute>();\nvariantAttributes.add(sizeAttribute);\n\nvariant.setAttributes(variantAttributes);\n\nvar prices = new ArrayList<ProductVariantPrice>();\n\nvar price = new ProductVariantPrice();\nprice.setPrice(2499);\nprice.setTax(19.0);\nprice.setCurrencyCode(\"EUR\");\nprice.setCountryCode(\"DE\");\n\nprices.add(price);\n\nvariant.setPrices(prices);\n\nvar relatedVariants = new ArrayList<RelatedProductVariant>();\n\nvar mainRelatedProductVariant = new RelatedProductVariant();\nmainRelatedProductVariant.setVariantReferenceKey('anExistingRealVariantKey');\nmainRelatedProductVariant.setIsMainVariant(true);\n\nvar relatedProductVariant = new RelatedProductVariant();\nrelatedProductVariant.setVariantReferenceKey('anotherExistingRealVariantKey');\nrelatedProductVariant.setIsMainVariant(false);\n\nrelatedVariants.add(mainRelatedProductVariant);\nrelatedVariants.add(relatedProductVariant);\n\nvariant.setRelatedVariants(relatedVariants);\n\nvar variants = new ArrayList<ProductVariant>();\nvariants.add(variant);\n\nproduct.setVariants(variants);\n\nvar image = new ProductImage();\nvar imageSource = new AssetSource();\nimageSource.setUrl(\"https://example.com/image.jpg\");\nimage.setSource(imageSource);\n\nvar images = new ArrayList<ProductImage>();\nimages.add(image);\n\nproduct.setImages(images);\n\nProduct createdProduct = adminApi.products().createComposite(product);\n"
          }
        ]
      }
    },
    "/products/composite/{productIdentifier}": {
      "put": {
        "operationId": "updateCompositeProduct",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-bulkRequest": {
          "scope": "compositeProductWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "CompositeProducts"
        ],
        "summary": "Update an existing composite product",
        "description": "This endpoint can be used to update/replace an existing composite product. It does not support partial updates.\nIn general, this endpoint replaces the composite product with the provided information, meaning not provided properties will get deleted, except for nested entities. This logic is only applied to them if they are part of the payload. The attribute locking behavior can be controlled via the `ignoreAttributeLocks` parameter/option.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/composite-products#update-a-composite-product).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/ProductWith"
          },
          {
            "$ref": "#/components/parameters/IgnoreAttributeLocks"
          },
          {
            "$ref": "#/components/parameters/IgnoreCategoryLocks"
          },
          {
            "$ref": "#/components/parameters/IgnoreMasterIfExistUpdate"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Product"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "variants": {
                        "type": "array",
                        "items": {
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/ProductVariant"
                            },
                            {
                              "type": "object",
                              "required": [
                                "referenceKey",
                                "relatedVariants"
                              ],
                              "properties": {
                                "relatedVariants": {
                                  "minItems": 2
                                }
                              }
                            }
                          ]
                        }
                      }
                    }
                  }
                ]
              },
              "examples": {
                "Complete Product": {
                  "$ref": "#/components/examples/CompleteCompositeProductRequest"
                },
                "Minimal Draft Product": {
                  "$ref": "#/components/examples/MinimalDraftProductResponse"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Product"
                    },
                    {
                      "type": "object",
                      "required": [
                        "referenceKey",
                        "state",
                        "name",
                        "master",
                        "isComposite"
                      ],
                      "properties": {
                        "variants": {
                          "type": "array",
                          "items": {
                            "allOf": [
                              {
                                "$ref": "#/components/schemas/ProductVariant"
                              },
                              {
                                "required": [
                                  "referenceKey",
                                  "relatedVariants",
                                  "isComposite"
                                ]
                              }
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "Complete Product": {
                    "$ref": "#/components/examples/CompleteProductResponse"
                  },
                  "Minimal Draft Product": {
                    "$ref": "#/components/examples/MinimalDraftProductResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          },
          "503": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Products.getProduct({productIdentifier: 1});\nlet product = response.body;\n\nproduct.name = {\n    de_DE: \"FCB Trikot\",\n    en_GB: \"FCB Jersey\"\n};\n\nadminApi.apis.CompositeProducts.updateCompositeProduct({productIdentifier: product.id, ignoreAttributeLocks: true}, {requestBody: product});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$product = $adminApi->products->get(Identifier::fromId(1));\n\n$product->name = [\n    'de_DE' => 'FCB Trikot',\n    'en_GB' => 'FCB Jersey'\n];\n\n$options = [\n    'ignoreAttributeLocks' => true\n];\n\n$updatedProduct = $adminApi->products->updateComposite(Identifier::fromId($product->id), $product, $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                      .addOption(\"with\", \"attributes\")\n                      .build();\n\nProduct product = adminApi.products().get(Identifier.fromKey(\"my-key\"), options);\n\nMap<String, String> newName = new HashMap<>();\nnewName.put(\"de_DE\", \"FCB Trikot\");\nnewName.put(\"en_GB\", \"FCB Jersey\");\n\nproduct.setName(newName);\n\noptions = ApiOptions.builder()\n  .addOption(\"ignoreAttributeLocks\", true)\n  .build();\n\nProduct updatedProduct = adminApi.products().updateComposite(Identifier.fromId(product.getId()), product, options);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteCompositeProduct",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "CompositeProducts"
        ],
        "summary": "Delete a composite product",
        "description": "This endpoint can be used to delete a composite product along with all its dependencies.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/composite-products#delete-a-composite-product).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Composite product was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "adminApi.apis.CompositeProducts.deleteCompositeProduct({ productIdentifier: 23772 });\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->products->deleteComposite(Identifier::fromId(1));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.products().deleteComposite(Identifier.fromId(1));\n"
          }
        ]
      }
    },
    "/products/composite/{productIdentifier}/variants": {
      "post": {
        "operationId": "createCompositeProductVariant",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "CompositeProductVariants"
        ],
        "summary": "Create a new shop composite product variant",
        "description": "This endpoint can be used to create a new composite product variant. Optionally, prices can be created within the same request.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/composite-products#create-a-composite-product-variant).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/UpdateVariantIfExists"
          },
          {
            "$ref": "#/components/parameters/CompositeVariantWith"
          },
          {
            "$ref": "#/components/parameters/IgnoreAttributeLocks"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProductVariant"
                  },
                  {
                    "type": "object",
                    "required": [
                      "referenceKey",
                      "relatedVariants"
                    ],
                    "properties": {
                      "relatedVariants": {
                        "minItems": 2
                      }
                    }
                  }
                ]
              },
              "examples": {
                "Complete Composite Variant": {
                  "$ref": "#/components/examples/CompleteCompositeVariantRequest"
                },
                "Minimal Composite Variant": {
                  "$ref": "#/components/examples/MinimalCompositeVariantRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Composite product variant was successfully updated.\nThis status code is returned when `updateIfExists=true` and a variant with the given reference key exists.\n",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ProductVariant"
                    },
                    {
                      "required": [
                        "referenceKey",
                        "relatedVariants",
                        "isComposite"
                      ]
                    }
                  ]
                },
                "examples": {
                  "Complete Composite Variant": {
                    "$ref": "#/components/examples/CompleteVariantResponse"
                  },
                  "Minimal Composite Variant": {
                    "$ref": "#/components/examples/MinimalCompositeVariantResponse"
                  }
                }
              }
            }
          },
          "201": {
            "description": "Composite product variant was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ProductVariant"
                    },
                    {
                      "required": [
                        "referenceKey",
                        "relatedVariants",
                        "isComposite"
                      ]
                    }
                  ]
                },
                "examples": {
                  "Complete Composite Variant": {
                    "$ref": "#/components/examples/CompleteVariantResponse"
                  },
                  "Minimal Composite Variant": {
                    "$ref": "#/components/examples/MinimalCompositeVariantResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "503": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newProductVariant = {\n  \"referenceKey\": \"M0001-black-bundle-1\",\n  \"attributes\": [\n    {\n      \"name\": \"size\",\n      \"type\": \"simple\",\n      \"value\": \"M\"\n    },\n    {\n      \"name\": \"logo\",\n      \"type\": \"simple\",\n      \"value\": \"meister_logo\"\n    },\n    {\n      \"name\": \"name_flock\",\n      \"type\": \"simple\",\n      \"value\": \"25_mueller\"\n    }\n  ],\n  \"prices\": [\n    {\n      \"price\": 9999,\n      \"tax\": 19.0,\n      \"currencyCode\": \"EUR\",\n      \"countryCode\": \"DE\",\n      \"oldPrice\": 10999,\n      \"recommendedRetailPrice\": 10999,\n      \"groupKey\": \"myGroupKey\",\n      \"promotionKey\": \"myPromotionKey\",\n      \"unitPrice\": {\n        \"unit\": \"ml\",\n        \"amount\": 100,\n        \"price\": 399\n      },\n      \"validFrom\": \"2021-09-23T11:30:58+00:00\",\n      \"validTo\": null\n    }\n  ],\n  \"relatedVariants\": [\n    {\n      \"variantReferenceKey\": \"M0001-black-s\",\n      \"isMainVariant\": true\n    },\n    {\n      \"variantReferenceKey\": \"L0001-meister\",\n      \"isMainVariant\": false\n    },\n    {\n      \"variantReferenceKey\": \"NF0001-mueller\",\n      \"isMainVariant\": false\n    }\n  ],\n  \"customData\": {\n    \"isValid\": true,\n    \"name\": \"fcb\",\n    \"score\": 100,\n    \"some-json\": {\n      \"de_DE\": {\n        \"color\": \"schwarz\"\n      },\n      \"en_GB\": {\n        \"color\": \"black\"\n      }\n    }\n  }\n};\n\nlet response = await client.apis.CompositeProductVariants.createCompositeProductVariant({productIdentifier: 1}, {requestBody: newProductVariant});\nlet createdProductVariant = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$variant = new ProductVariant();\n$variant->referenceKey = \"M0001-black-bundle-1\";\n$variant->ean = \"0000007738357\";\n\n$sizeAttribute = new Attribute();\n$sizeAttribute->type = \"simple\";\n$sizeAttribute->name = \"size\";\n$sizeAttribute->value = \"M\";\n\n$logoAttribute = new Attribute();\n$logoAttribute->type = \"simple\";\n$logoAttribute->name = \"logo\";\n$logoAttribute->value = \"meister_logo\";\n\n$nameFlockAttribute = new Attribute();\n$nameFlockAttribute->type = \"simple\";\n$nameFlockAttribute->name = \"name_flock\";\n$nameFlockAttribute->value = \"25_mueller\";\n\n$price = new ProductVariantPrice();\n$price->price = 9999;\n$price->oldPrice = 10999;\n$price->tax = 19.0;\n$price->currencyCode = \"EUR\";\n$price->countryCode = \"DE\";\n$price->recommendedRetailPrice = 5500;\n$price->groupKey = \"myGroupKey\";\n$price->promotionKey = \"myPromotionKey\";\n$price->validFrom = \"2021-09-23T11:30:58+00:00\";\n\n$variant->attributes = [$sizeAttribute, $logoAttribute, $nameFlockAttribute];\n$variant->prices = [$price];\n$variant->customData = (object) [\n  'isValid' => true, \n  'name' => 'fcb', \n  'score' => 100, \n  'some-json' => [\n    'de_DE' => [\n      'color' => 'schwarz'\n    ],\n    'en_GB' => [\n      'color' => 'black'\n    ]\n  ]\n];\n\n$mainRelatedProductVariant = new RelatedProductVariant();\n$mainRelatedProductVariant->variantReferenceKey = 'M0001-black-s';\n$mainRelatedProductVariant->isMainVariant = true;\n\n$relatedProductVariant = new RelatedProductVariant();\n$relatedProductVariant->variantReferenceKey = 'L0001-meister';\n$relatedProductVariant->isMainVariant = false;\n\n$anotherRelatedProductVariant = new RelatedProductVariant();\n$anotherRelatedProductVariant->variantReferenceKey = 'NF0001-mueller';\n$anotherRelatedProductVariant->isMainVariant = false;\n\n$variant->relatedVariants = [$mainRelatedProductVariant, $relatedProductVariant, $anotherRelatedProductVariant];\n\n$variant = $adminApi->productVariants->createComposite(Identifier::fromId(1), $variant);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ProductVariant variant = new ProductVariant();\nvariant.setReferenceKey(\"M0001-black-bundle-1\");\nvariant.setEan(\"0000007738357\");\n\nvar attributes = new ArrayList<Attribute>();\n\nvar sizeAttribute = new Attribute();\nsizeAttribute.setType(AttributeType.VALUE_SIMPLE);\nsizeAttribute.setName(\"size\");\nsizeAttribute.setValue(\"M\");\nattributes.add(sizeAttribute);\n\nvar logoAttribute = new Attribute();\nlogoAttribute.setType(AttributeType.VALUE_SIMPLE);\nlogoAttribute.setName(\"logo\");\nlogoAttribute.setValue(\"meister_logo\");\nattributes.add(logoAttribute);\n\nvar nameFlockAttribute = new Attribute();\nnameFlockAttribute.setType(AttributeType.VALUE_SIMPLE);\nnameFlockAttribute.setName(\"name_flock\");\nnameFlockAttribute.setValue(\"25_mueller\");\nattributes.add(nameFlockAttribute);\n\nvar prices = new ArrayList<ProductVariantPrice>();\n\nvar price = new ProductVariantPrice();\nprice.setPrice(9999);\nprice.setOldPrice(10999);\nprice.setTax(19.0);\nprice.setCurrencyCode(\"EUR\");\nprice.setCountryCode(\"DE\");\nprice.setRecommendedRetailPrice(10999);\nprice.setGroupKey(\"myGroupKey\");\nprice.setPromotionKey(\"myPromotionKey\");\nprice.setValidFrom(java.time.Instant.parse(\"2021-09-23T11:30:58+00:00\"));\nprices.add(price);\n\nMap<String, String> deColor = new HashMap<>();\ndeColor.put(\"color\", \"schwarz\");\n\nMap<String, String> enColor = new HashMap<>();\nenColor.put(\"color\", \"black\");\n\n// Create the main map for the JSON\nMap<String, Map<String, String>> someJson = new HashMap<>();\nsomeJson.put(\"de_DE\", deColor);\nsomeJson.put(\"en_GB\", enColor);\n\nMap<String, Object> customData = new HashMap<>();\ncustomData.put(\"some-json\", someJson);\n\nvariant.setAttributes(attributes);\nvariant.setPrices(prices);\nvariant.setCustomData(customData);\n\nvar relatedVariants = new ArrayList<RelatedProductVariant>();\n\nvar mainRelatedProductVariant = new RelatedProductVariant();\nmainRelatedProductVariant.setVariantReferenceKey(\"M0001-black-s\");\nmainRelatedProductVariant.setIsMainVariant(true);\n\nvar relatedProductVariant = new RelatedProductVariant();\nrelatedProductVariant.setVariantReferenceKey(\"L0001-meister\");\nrelatedProductVariant.setIsMainVariant(false);\n\nvar anotherRelatedProductVariant = new RelatedProductVariant();\nanotherRelatedProductVariant.setVariantReferenceKey(\"NF0001-mueller\");\nanotherRelatedProductVariant.setIsMainVariant(false);\n\nrelatedVariants.add(mainRelatedProductVariant);\nrelatedVariants.add(relatedProductVariant);\nrelatedVariants.add(anotherRelatedProductVariant);\n\nvariant.setRelatedVariants(relatedVariants);\n\nvariant = adminApi.productVariants().createComposite(Identifier.fromId(1), variant);\n"
          }
        ]
      }
    },
    "/products/composite/{productIdentifier}/variants/{variantIdentifier}": {
      "put": {
        "operationId": "updateCompositeProductVariant",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "CompositeProductVariants"
        ],
        "summary": "Update an existing composite product variant",
        "description": "This endpoint can be used to update/replace an existing composite product variant. It does not support partial updates.\nIn general, this endpoint replaces the composite product variant with the provided information, meaning not provided properties will get deleted, except for nested entities. This logic is only applied to them if they are part of the payload. The attribute locking behavior can be controlled via the ignoreAttributeLocks parameter/option.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/composite-products#update-a-composite-product-variant).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/CompositeVariantWith"
          },
          {
            "$ref": "#/components/parameters/IgnoreAttributeLocks"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProductVariant"
                  },
                  {
                    "type": "object",
                    "required": [
                      "referenceKey",
                      "relatedVariants"
                    ],
                    "properties": {
                      "relatedVariants": {
                        "minItems": 2
                      }
                    }
                  }
                ]
              },
              "examples": {
                "Complete Variant": {
                  "$ref": "#/components/examples/CompleteCompositeVariantRequest"
                },
                "Minimal Variant": {
                  "$ref": "#/components/examples/MinimalCompositeVariantRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Composite product variant was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ProductVariant"
                    },
                    {
                      "required": [
                        "referenceKey",
                        "relatedVariants",
                        "isComposite"
                      ]
                    }
                  ]
                },
                "examples": {
                  "Complete Variant": {
                    "$ref": "#/components/examples/CompleteVariantResponse"
                  },
                  "Minimal Variant": {
                    "$ref": "#/components/examples/MinimalCompositeVariantResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "503": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Variants.getProductVariant({\n    productIdentifier: 1,\n    variantIdentifier: 1,\n    with: \"attributes\"\n});\n\nlet productVariant = response.body;\nlet key = productVariant.attributes.findIndex(attribute => attribute.name === \"size\");\n\nproductVariant.attributes[key].value = \"M\";\n\nclient.apis.CompositeProductVariants.updateCompositeProductVariant(\n    {productIdentifier: 1, variantIdentifier: productVariant.id, ignoreAttributeLocks: true},\n    {requestBody: productVariant}\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'with' => 'attributes',\n];\n\n$variant = $adminApi->productVariants->get(Identifier::fromId(1), Identifier::fromId(1), $options);\n\n$key = array_search('size', array_column($variant->attributes, 'name'));\n\n$variant->attributes[$key]->value = \"M\";\n\n$options = [\n    'ignoreAttributeLocks' => true,\n];\n\n$adminApi->productVariants->updateComposite(Identifier::fromId(1), Identifier::fromId($variant->id), $variant, $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                            .addOption(\"with\", \"attributes\")\n                            .addOption(\"ignoreAttributeLocks\", true)\n                            .build();\n\nProductVariant variant = adminApi.productVariants().get(Identifier.fromId(1), Identifier.fromId(1), options);\n\nvar sizeAttribute = variant.getAttributes()\n            .stream()\n            .filter(a -> a.getName().equals(\"size\"))\n            .findFirst()\n            .get();\n\nsizeAttribute.setValue(\"M\");\n\nadminApi.productVariants().updateComposite(Identifier.fromId(1), Identifier.fromId(variant.getId()), variant);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteCompositeProductVariant",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "CompositeProductVariants"
        ],
        "summary": "Delete a composite product variant",
        "description": "This endpoint can be used to delete a composite product variant along with all its dependencies.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/composite-products#delete-a-composite-product-variant).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Composite product variant was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "// Delete by ID\nclient.apis.CompositeProductVariants.deleteCompositeProductVariant({productIdentifier: 1, variantIdentifier: 1});\n\n// Delete by reference key\nclient.apis.CompositeProductVariants.deleteCompositeProductVariant({productIdentifier: \"key=product-key\", variantIdentifier: \"key=variant-key\"});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "// Delete by ID\n$adminApi->productVariants->deleteComposite(Identifier::fromId(1), Identifier::fromId(1));\n\n// Delete by reference key\n$adminApi->productVariants->deleteComposite(Identifier::fromKey(\"product-key\"), Identifier::fromKey(\"variant-key\"));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "// Delete by ID\nadminApi.productVariants().deleteComposite(Identifier.fromId(1), Identifier.fromId(1));\n\n// Delete by reference key\nadminApi.productVariants().deleteComposite(Identifier.fromKey(\"product-key\"), Identifier.fromKey(\"variant-key\"));\n"
          }
        ]
      }
    },
    "/products/first-live-at": {
      "put": {
        "operationId": "updateProductsFirstLiveAt",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Products"
        ],
        "summary": "Create or update first live at for all the variants of a product.",
        "description": "This endpoint can be used to update or create first live at for all the variants of the products \nand shop countries provided in the request. See more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-products#update-a-products-first-live-at).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductsFirstLiveAt"
              },
              "examples": {
                "Products first Live at": {
                  "$ref": "#/components/examples/ProductsFirstLiveAtRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "First live at for all the variants of the products and shop countries provided in the request are updated or created.\n"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let productsFirstLiveAt = {\n  \"shopKey\": \"ms\",\n  \"countryCodes\": [\n    \"DE\",\n    \"AT\",\n    \"CH\"\n  ],\n  \"products\": [\n    {\n      \"productId\": 1,\n      \"firstLiveAt\": \"2023-07-20T11:30:58+00:00\"\n    },\n    {\n      \"productId\": 2,\n      \"firstLiveAt\": \"2020-07-19T12:20:11+00:00\"\n    }\n  ]\n};\n\nlet response = await client.apis.Products.updateProductsFirstLiveAt({}, {requestBody: productsFirstLiveAt});\nlet productsFirstLiveAt = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$productsFirstLiveAt = new ProductsFirstLiveAt();\n$productsFirstLiveAt->shopKey = 'ms';\n$productsFirstLiveAt->countryCodes = ['DE', 'AT', 'CH'];\n$productsFirstLiveAt->products = [\n  ['productId' => 1, 'firstLiveAt' => '2023-07-20T11:30:58+00:00'],\n  ['productId' => 2, 'firstLiveAt' => '2020-07-19T12:20:11+00:00']\n];\n$productsFirstLiveAt = $adminApi->productsFirstLiveAts->updateProductsFirstLiveAt($productsFirstLiveAt);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var productsFirstLiveAt = new ProductsFirstLiveAt();\nproductsFirstLiveAt.setShopKey(\"sc\");\n\nList<String> countryCodes = new ArrayList<>();\ncountryCodes.add(\"DE\");\ncountryCodes.add(\"AT\");\ncountryCodes.add(\"CH\");\n\nproductsFirstLiveAt.setCountryCodes(countryCodes);\n\nList<Object> productList = new ArrayList<>();\n\nMap<String, Object> item1 = new HashMap<>();\nitem1.put(\"productId\", 1);\nitem1.put(\"firstLiveAt\", \"2023-07-20T11:30:58+00:00\");\nproductList.add(item1);\n\nMap<String, Object> item2 = new HashMap<>();\nitem2.put(\"productId\", 2);\nitem2.put(\"firstLiveAt\", \"2020-07-19T12:20:11+00:00\");\nproductList.add(item2);\n\nproductsFirstLiveAt.setProducts(productList);\n\nadminApi.productsFirstLiveAts().updateProductsFirstLiveAt(productsFirstLiveAt);\n"
          }
        ]
      }
    },
    "/products/bulk-requests": {
      "post": {
        "operationId": "createProductBulkRequest",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Products"
        ],
        "summary": "Create a new bulk request.",
        "description": "This endpoint can be used to create a new bulk request for creating and updating products.\n\nEvery bulk request is defined by list of operations and optional callbacks, which will be called every time request\nor operation statuses are changed.\n\nLarge bulk requests can be split into multiple chunks. Create the bulk request with `callbacks.requestStatus` set to\n`incomplete`, then use the returned `key` as `callbacks.bulkRequestKey` when submitting additional chunks. Use\nthe same `callbacks.bulkRequestKey` and set `callbacks.requestStatus` to `complete` for the final chunk so the request\ncan be queued for processing. Completed bulk requests cannot be extended, and duplicate operation keys from earlier\nchunks of the same bulk request are not checked again when extending it.\n\nA single operation represents an API call to one of the following endpoints:\n* POST /products\n* PUT /products/{productIdentifier}\n\nThe execution order is not guaranteed. It means, that operations might be executed in a different order than defined in the request body.\n\nSee more details in the [Developer Guide](/en/core-documentation/welcome-to-scayle/introduction/apis/bulk-requests#create-product-bulk-request).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBulkRequest"
              },
              "examples": {
                "CreateBulkRequest": {
                  "$ref": "#/components/examples/CreateBulkRequest"
                }
              }
            }
          }
        },
        "callbacks": {
          "bulk-request-status-changed": {
            "{$request.body#/callbacks.requestUrl}": {
              "post": {
                "description": "The callback will be triggered when request status is changed.\n",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/BulkRequestStatusChangedEvent"
                      },
                      "examples": {
                        "BulkRequestStatusChanged": {
                          "$ref": "#/components/examples/BulkRequestStatusChangedCallback"
                        }
                      }
                    }
                  }
                },
                "responses": {
                  "201": {
                    "description": "The callback was received by the client.\n"
                  }
                }
              }
            }
          },
          "bulk-operation-status-changed": {
            "{$request.body#/callbacks.operationUrl}": {
              "post": {
                "description": "The callback will be triggered when operation status is changed.\n",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/BulkOperationStatusChangedEvent"
                      },
                      "examples": {
                        "BulkOperationStatusChanged": {
                          "$ref": "#/components/examples/ProductBulkOperationStatusChangedCallback"
                        }
                      }
                    }
                  }
                },
                "responses": {
                  "201": {
                    "description": "The callback was received by the client.\n"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Bulk request was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkRequest"
                },
                "examples": {
                  "CreateBulkRequestResponse": {
                    "$ref": "#/components/examples/CreateBulkRequestResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const newBulkRequest = {\n  \"callbacks\": {\n      \"requestUrl\": \"https://example.com/request\",\n      \"operationUrl\": \"https://example.com/operation\",\n      \"requestStatus\": \"complete\"\n  },\n  \"operations\": [\n      {\n          \"key\": \"o1\",\n          \"url\": \"/products\",\n          \"method\": \"POST\",\n          \"body\": {\n              \"referenceKey\": \"M0001-black\",\n              \"name\": {\n                  \"de_DE\": \"Blaues Shirt\",\n                  \"en_GB\": \"Blue Shirt\"\n              },\n              \"state\": \"draft\",\n              \"master\": {\n                  \"referenceKey\": \"M0001\",\n                  \"categories\": {\n                      \"paths\": [\n                          [\"Fashion\", \"Men\", \"Shirts\"]\n                      ]\n                  }\n              }\n          }\n      }\n  ]\n};\n\nconst response = await client.apis.Products.createProductBulkRequest({}, {requestBody: newBulkRequest});\nconst bulkRequest = response.body;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "CreateBulkRequest newBulkRequest = new CreateBulkRequest();\n\nBulkRequestCallbacks bulkRequestCallbacks = new BulkRequestCallbacks();\nbulkRequestCallbacks.setRequestUrl(\"https://example.com/request\");\nbulkRequestCallbacks.setOperationUrl(\"https://example.com/operation\");\nbulkRequestCallbacks.setRequestStatus(\"complete\");\n\nnewBulkRequest.setCallbacks(bulkRequestCallbacks);\n\nCreateBulkOperation bulkOperation = new CreateBulkOperation();\nbulkOperation.setKey(\"o1\");\nbulkOperation.setUrl(\"/products\");\nbulkOperation.setMethod(\"POST\");\n\nHashMap<String, Object> body = new HashMap<>();\n\nbody.put(\"referenceKey\", \"M0001-black\");\n\nHashMap<String, String> name = new HashMap<>();\nname.put(\"de_DE\", \"Blaues Shirt\");\nname.put(\"en_GB\", \"Blue Shirt\");\nbody.put(\"name\", name);\n\nbody.put(\"state\", \"draft\");\n\nHashMap<String, Object> master = new HashMap<>();\nmaster.put(\"referenceKey\", \"M0001\");\n\nHashMap<String, List<List<String>>> categories = new HashMap<>();\ncategories.put(\"paths\", List.of(List.of(\"Fashion\", \"Men\", \"Shirts\")));\nmaster.put(\"categories\", categories);\n\nbody.put(\"master\", master);\n\nbulkOperation.setBody(body);\n\nconst operations = new ArrayList<CreateBulkOperation>();\noperations.add(bulkOperation);\n\nnewBulkRequest.setOperations(operations);\n\nBulkRequest bulkRequest = adminApi.products().createBulkRequest(newBulkRequest);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$newBulkRequest = new CreateBulkRequest();\n\n$bulkRequestCallbacks = new BulkRequestCallbacks();\n$bulkRequestCallbacks->requestUrl = 'https://example.com/request';\n$bulkRequestCallbacks->operationUrl = 'https://example.com/operation';\n$bulkRequestCallbacks->requestStatus = 'complete';\n\n$newBulkRequest->callbacks = $bulkRequestCallbacks;\n\n$bulkOperation = new CreateBulkOperation();\n$bulkOperation->key = 'o1';\n$bulkOperation->url = '/products';\n$bulkOperation->method = 'POST';\n$bulkOperation->body = (object) [\n    'referenceKey' => 'M0001-black',\n    'name' => [\n        'de_DE' => 'Blaues Shirt',\n        'en_GB' => 'Blue Shirt'\n    ],\n    'state' => 'draft',\n    'master' => [\n        'referenceKey' => 'M0001',\n        'categories' => [\n            'paths' => [\n                ['Fashion', 'Men', 'Shirts']\n            ]\n        ]\n    ]\n];\n\n$newBulkRequest->operations = [$bulkOperation];\n\n$bulkRequest = $adminApi->products->createBulkRequest($newBulkRequest);\n"
          }
        ]
      }
    },
    "/products/sellable-timeframes": {
      "put": {
        "operationId": "batchProcessProductSellableTimeframes",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Products"
        ],
        "summary": "Create, update and/or delete product sellable timeframes",
        "description": "This endpoint can be used to create, update and/or delete product sellable timeframes for multiple products and shop countries.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-products#product-sellable-timeframes).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "minItems": 1,
                "maxItems": 1000,
                "items": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ProductSellableTimeframe"
                    },
                    {
                      "type": "object",
                      "required": [
                        "productId"
                      ]
                    }
                  ]
                }
              },
              "examples": {
                "BatchProcessProductSellableTimeframesRequest": {
                  "$ref": "#/components/examples/BatchProcessProductSellableTimeframesRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Product sellable timeframes were successfully created, updated and/or deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const sellableTimeframes = [\n  {\n    productId: 12345,\n    shopKey: \"ay\",\n    countryCode: \"DE\",\n    sellableFrom: \"2025-01-01T00:00:00Z\",\n    sellableTo: \"2025-12-31T23:59:59Z\"\n  },\n  // This is an example of how to remove a product's sellable timeframe, e.g. by setting sellableFrom and sellableTo to null\n  {\n    productId: 67890,\n    shopKey: \"ay\",\n    countryCode: \"AT\",\n    sellableFrom: null,\n    sellableTo: null\n  }\n];\n\nconst response = await client.apis.Products.batchProcessProductSellableTimeframes({}, {requestBody: sellableTimeframes});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$sellableTimeframes = [];\n\n$timeframe1 = new ProductSellableTimeframe();\n$timeframe1->productId = 12345;\n$timeframe1->shopKey = 'DE';\n$timeframe1->countryCode = 'de';\n$timeframe1->sellableFrom = '2025-01-01T00:00:00Z';\n$timeframe1->sellableTo = '2025-12-31T23:59:59Z';\n\n// This is an example of how to remove a product's sellable timeframe, e.g. by setting sellableFrom and sellableTo to null\n$timeframe2 = new ProductSellableTimeframe();\n$timeframe2->productId = 67890;\n$timeframe2->shopKey = 'ay';\n$timeframe2->countryCode = 'AT';\n$timeframe2->sellableFrom = null;\n$timeframe2->sellableTo = null;\n\n$sellableTimeframes = [$timeframe1, $timeframe2];\n\n$adminApi->productSellableTimeframes->batchProcess($sellableTimeframes);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "List<ProductSellableTimeframe> timeframes = new ArrayList<>();\n\nProductSellableTimeframe timeframe1 = new ProductSellableTimeframe();\ntimeframe1.setProductId(12345);\ntimeframe1.setShopKey(\"ay\");\ntimeframe1.setCountryCode(\"DE\");\ntimeframe1.setSellableFrom(java.time.Instant.parse(\"2025-01-01T00:00:00+00:00\"));\ntimeframe1.setSellableTo(java.time.Instant.parse(\"2025-12-31T23:59:59+00:00\"));\n\n// This is an example of how to remove a product's sellable timeframe, e.g. by setting sellableFrom and sellableTo to null\nProductSellableTimeframe timeframe2 = new ProductSellableTimeframe();\ntimeframe2.setProductId(67890);\ntimeframe2.setShopKey(\"ay\");\ntimeframe2.setCountryCode(\"AT\");\ntimeframe2.setSellableFrom(null);\ntimeframe2.setSellableTo(null);\n\ntimeframes.add(timeframe1);\ntimeframes.add(timeframe2);\n\nadminApi.productSellableTimeframes().batchProcess(timeframes);\n"
          }
        ]
      }
    },
    "/product-masters/{productMasterIdentifier}/master-categories": {
      "put": {
        "operationId": "updateProductMasterMasterCategories",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "categories",
          "products"
        ],
        "tags": [
          "ProductMaster"
        ],
        "summary": "Update the master categories of product master",
        "description": "This endpoint can be used to update the assigned master categories of a product master.\nThis will affect all products sharing the same style_key that is equal to the product masters reference key.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-product-master-and-category-master-data#update-the-master-categories-of-product-master).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductMasterIdentifier"
          },
          {
            "$ref": "#/components/parameters/IgnoreCategoryLocks"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductMasterCategories"
              },
              "examples": {
                "Product Master Category": {
                  "$ref": "#/components/examples/ProductMasterCategoriesRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product master categories were successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ProductMasterCategories"
                      }
                    }
                  }
                },
                "examples": {
                  "Complete Product": {
                    "$ref": "#/components/examples/ProductMasterCategoriesResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let categories = {\n    paths: [\n        [\n            \"Fashion\",\n            \"Men\",\n            \"Shirts\"\n        ]\n    ]\n}\n\nlet response = await client.apis.Masters.updateProductMasterMasterCategories(\n    {productMasterIdentifier: \"masterReferenceKey\"},\n    {requestBody: categories}\n);\n\nlet updatedCategories = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$categories = new ProductMasterCategories();\n$categories->paths = [\n    [\n        'Fashion',\n        'Men',\n        'Shirts'\n    ]\n];\n\n$updatedCategories = $adminApi->masters->updateProductMasterMasterCategories('masterReferenceKey', $categories);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var categories = new ProductMasterCategories();\nvar categoryPaths = new ArrayList<List<String>>();\nvar categoryPath = new ArrayList<String>();\n\ncategoryPath.add(\"Fashion\");\ncategoryPath.add(\"Men\");\ncategoryPath.add(\"Shirts\");\ncategoryPaths.add(categoryPath);\n\ncategories.setPaths(categoryPaths);\n\nvar updatedCategories = adminApi.masters().updateProductMasterMasterCategories(\"masterReferenceKey\", categories);\n"
          }
        ]
      }
    },
    "/product-masters/{productMasterIdentifier}/attributes": {
      "get": {
        "operationId": "getProductMasterAttributes",
        "x-rateLimit": {
          "scope": "productRead"
        },
        "x-resources": [
          "categories",
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Get product master attributes",
        "description": "This endpoint can be used to retrieve a collection of product master attributes (style level).\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-product-master-and-category-master-data#get-a-collection-of-product-master-attributes).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductMasterIdentifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of product master attributes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Attribute"
                      }
                    }
                  }
                },
                "examples": {
                  "Attribute Collection": {
                    "$ref": "#/components/examples/AttributeCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.Attributes.getProductMasterAttributes({ productMasterIdentifier: 1 });\nlet productMasterAttributes = response.body.entities;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$productMasterAttributeCollection = $adminApi->masters->allAttributes(Identifier::fromId(1));\n$productMasterAttributes = $productMasterAttributeCollection->getEntities();\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<Attribute> productMasterAttributeCollection = adminApi.masters().allAttributes(Identifier.fromId(1));\nList<Attribute> productMasterAttributes = productMasterAttributeCollection.getEntities();\n"
          }
        ]
      },
      "post": {
        "operationId": "updateOrCreateProductMasterAttribute",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "categories",
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Update or create a product master attribute",
        "description": "This endpoint can be used to create a new product master attribute. If an attribute with the same name has already been assigned to the product master, then its value will be replaced with the given one.\n\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-product-master-and-category-master-data#create-or-update-a-product-master-attribute).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductMasterIdentifier"
          },
          {
            "$ref": "#/components/parameters/IgnoreAttributeLocks"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Attribute"
              },
              "examples": {
                "Simple Attribute": {
                  "$ref": "#/components/examples/SimpleAttributeRequest"
                },
                "Simple List Attribute": {
                  "$ref": "#/components/examples/SimpleListAttributeRequest"
                },
                "Localized String Attribute": {
                  "$ref": "#/components/examples/LocalizedStringAttributeRequest"
                },
                "Localized String List Attribute": {
                  "$ref": "#/components/examples/LocalizedStringListAttributeRequest"
                },
                "Advanced Attribute": {
                  "$ref": "#/components/examples/AdvancedAttributeRequest"
                },
                "Advanced List Attribute": {
                  "$ref": "#/components/examples/AdvancedListAttributeRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product master attribute was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Attribute"
                },
                "examples": {
                  "Simple Attribute": {
                    "$ref": "#/components/examples/SimpleAttributeResponse"
                  },
                  "Simple List Attribute": {
                    "$ref": "#/components/examples/SimpleListAttributeResponse"
                  },
                  "Localized String Attribute": {
                    "$ref": "#/components/examples/LocalizedStringAttributeResponse"
                  },
                  "Localized String List Attribute": {
                    "$ref": "#/components/examples/LocalizedStringListAttributeResponse"
                  },
                  "Advanced Attribute": {
                    "$ref": "#/components/examples/AdvancedAttributeResponse"
                  },
                  "Advanced List Attribute": {
                    "$ref": "#/components/examples/AdvancedListAttributeResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "// Simple Attribute\nconst attribute = {\n    \"name\": \"size\",\n    \"type\": \"simple\",\n    \"value\": \"M\"\n};\n\nconst response = await adminApi.apis.Attributes.updateOrCreateProductMasterAttribute(\n    {productMasterIdentifier: 1},\n    {requestBody: attribute}\n);\n\nconst createdAttribute = response.body;\n\n// Simple List Attribute\nconst attribute = {\n  \"name\": \"season\",\n  \"type\": \"simpleList\",\n  \"value\": [\"autumn\", \"winter\"]\n};\n\nconst response = await adminApi.apis.Attributes.updateOrCreateProductMasterAttribute(\n  {productMasterIdentifier: 1},\n  {requestBody: attribute}\n);\n\nconst createdAttribute = response.body;\n\n//Localized String Attribute\nconst attribute = {\n    \"name\": \"collection\",\n    \"type\": \"localizedList\",\n    \"value\": {\n      \"de_DE\": \"einzigartig\", \n      \"en_GB\": \"unique\"\n    }\n};\n\nconst response = await adminApi.apis.Attributes.updateOrCreateProductMasterAttribute(\n    {productMasterIdentifier: 1},\n    {requestBody: attribute}\n);\n\nconst createdAttribute = response.body;\n\n// Localized String List Attribute\nconst attribute = {\n    \"name\": \"color\",\n    \"type\": \"localizedStringList\",\n    \"value\": [\n        {\"de_DE\": \"weiß\", \"en_GB\": \"white\"},\n        {\"de_DE\": \"schwarz\", \"en_GB\": \"black\"}\n    ]\n};\n\nconst response = await adminApi.apis.Attributes.updateOrCreateProductMasterAttribute(\n    {productMasterIdentifier: 1},\n    {requestBody: attribute}\n);\n\nconst createdAttribute = response.body;\n\n// Advanced Attribute\nconst attribute = {\n  \"name\": \"dimensions\",\n  \"type\": \"advanced\",\n  \"value\": {\n      \"height\": 100,\n      \"width\": 30,\n      \"unit\": \"cm\"\n  }\n};\n\nconst response = await adminApi.apis.Attributes.updateOrCreateProductMasterAttribute(\n  {productMasterIdentifier: 1},\n  {requestBody: attribute}\n);\n\nconst createdAttribute = response.body;\n\n// Advanced List Attribute\nconst attribute = {\n  \"name\": \"material\",\n  \"type\": \"advancedList\",\n  \"value\": [\n      {\n          \"name\": \"wool\",\n          \"percentage\": 80\n      },\n      {\n          \"name\": \"cotton\",\n          \"percentage\": 20\n      }\n  ]   \n};\n\nconst response = await adminApi.apis.Attributes.updateOrCreateProductMasterAttribute(\n  {productMasterIdentifier: 1},\n  {requestBody: attribute}\n);\n\nconst createdAttribute = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "// Simple Attribute\n$attribute = new Attribute();\n$attribute->name = 'size';\n$attribute->type = 'simple';\n$attribute->value = 'M';\n\n$createdAttribute = $adminApi->masters->updateOrCreateAttribute(Identifier::fromId(1), $attribute);\n\n// Simple List Attribute\n$attribute = new Attribute();\n$attribute->name = 'season';\n$attribute->type = 'simpleList';\n$attribute->value = ['autumn', 'winter'];\n\n$createdAttribute = $adminApi->masters->updateOrCreateAttribute(Identifier::fromId(1), $attribute);\n\n// Localized String Attribute\n$attribute = new Attribute();\n$attribute->name = 'collection';\n$attribute->type = 'localizedString';\n$attribute->value = ['de_DE' => 'einzigartig', 'en_GB' => 'unique'];\n\n$createdAttribute = $adminApi->masters->updateOrCreateAttribute(Identifier::fromId(1), $attribute);\n\n// Localized String List Attribute\n$attribute = new Attribute();\n$attribute->name = 'color';\n$attribute->type = 'localizedStringList';\n$attribute->value = [\n  ['de_DE' => 'weiß', 'en_GB' => 'white'],\n  ['de_DE' => 'schwarz', 'en_GB' => 'black'],\n];\n\n$createdAttribute = $adminApi->masters->updateOrCreateAttribute(Identifier::fromId(1), $attribute);\n\n// Advanced Attribute\n$attribute = new Attribute();\n$attribute->name = 'dimensions';\n$attribute->type = 'advanced';\n$attribute->value = [\n  'height' => 100,\n  'width' => 30,\n  'unit' => 'cm',\n];\n\n$createdAttribute = $adminApi->masters->updateOrCreateAttribute(Identifier::fromId(1), $attribute);\n\n// Advanced List Attribute\n$attribute = new Attribute();\n$attribute->name = 'material';\n$attribute->type = 'advancedList';\n$attribute->value = [\n  ['name' => 'wool', 'percentage' => 80],\n  ['name' => 'cotton', 'percentage' => 20],\n];\n\n$createdAttribute = $adminApi->masters->updateOrCreateAttribute(Identifier::fromId(1), $attribute);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "// Simple Attribute\nvar attribute = new Attribute();\nattribute.setName(\"size\");\nattribute.setType(AttributeType.VALUE_SIMPLE);\nattribute.setValue(\"M\");\n\nvar createdAttribute = adminApi.masters().updateOrCreateAttribute(Identifier.fromId(1), attribute);\n\n// Simple List Attribute\nvar seasons = new ArrayList<String>();\nseasons.add(\"autumn\");\nseasons.add(\"winter\");\n\nvar attribute = new Attribute();\nattribute.setName(\"season\");\nattribute.setType(AttributeType.VALUE_SIMPLELIST);\nattribute.setValue(seasons);\n\nvar createdAttribute = adminApi.masters().updateOrCreateAttribute(Identifier.fromId(1), attribute);\n\n// Localized String Attribute\nvar collection = new HashMap<String, String>();\ncollection.put(\"de_DE\", \"einzigartig\");\ncollection.put(\"en_GB\", \"unique\");\n\nvar attribute = new Attribute();\nattribute.setName(\"collection\");\nattribute.setType(AttributeType.VALUE_LOCALIZEDSTRING);\nattribute.setValue(collection);\n\nvar createdAttribute = adminApi.masters().updateOrCreateAttribute(Identifier.fromId(1), attribute);\n\n// Localized String List Attribute\nvar whiteColor = new HashMap<String, String>();\nwhiteColor.put(\"de_DE\", \"weiß\");\nwhiteColor.put(\"en_GB\", \"white\");\n\nvar blackColor = new HashMap<String, String>();\nblackColor.put(\"de_DE\", \"schwarz\");\nblackColor.put(\"en_GB\", \"black\");\n\nvar colors = new ArrayList<HashMap<String, String>>();\ncolors.add(whiteColor);\ncolors.add(blackColor);\n\nvar attribute = new Attribute();\nattribute.setName(\"color\");\nattribute.setType(AttributeType.VALUE_LOCALIZEDSTRINGLIST);\nattribute.setValue(colors);\n\nvar createdAttribute = adminApi.masters().updateOrCreateAttribute(Identifier.fromId(1), attribute);\n\n// Advanced Attribute\nvar dimensions = new HashMap<String, Object>();\ndimensions.put(\"height\", 100);\ndimensions.put(\"width\", 30);\ndimensions.put(\"unit\", \"cm\");\n\nvar attribute = new Attribute();\nattribute.setName(\"dimensions\");\nattribute.setType(AttributeType.VALUE_ADVANCED);\nattribute.setValue(dimensions);\n\nvar createdAttribute = adminApi.masters().updateOrCreateAttribute(Identifier.fromId(1), attribute);\n\n// Advanced List Attribute\nvar wool = new HashMap<String, Object>();\nwool.put(\"name\", \"wool\");\nwool.put(\"percentage\", 80);\n\nvar cotton = new HashMap<String, Object>();\ncotton.put(\"name\", \"cotton\");\ncotton.put(\"percentage\", 20);\n\nvar materials = new ArrayList<HashMap<String, Object>>();\nmaterials.add(wool);\nmaterials.add(cotton); \n\nvar attribute = new Attribute();\nattribute.setName(\"material\");\nattribute.setType(AttributeType.VALUE_ADVANCEDLIST);\nattribute.setValue(materials);\n\nvar createdAttribute = adminApi.masters().updateOrCreateAttribute(Identifier.fromId(1), attribute);\n"
          }
        ]
      }
    },
    "/product-masters/{productMasterIdentifier}/attributes/{attributeGroupName}": {
      "get": {
        "operationId": "getProductMasterAttribute",
        "x-rateLimit": {
          "scope": "productRead"
        },
        "x-resources": [
          "categories",
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Get a product master attribute",
        "description": "This endpoint can be used to get a product master attribute.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-product-master-and-category-master-data#get-a-product-master-attribute).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductMasterIdentifier"
          },
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          }
        ],
        "responses": {
          "200": {
            "description": "Product master attribute",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Attribute"
                },
                "examples": {
                  "Simple Attribute": {
                    "$ref": "#/components/examples/SimpleAttributeResponse"
                  },
                  "Simple List Attribute": {
                    "$ref": "#/components/examples/SimpleListAttributeResponse"
                  },
                  "Localized String Attribute": {
                    "$ref": "#/components/examples/LocalizedStringAttributeResponse"
                  },
                  "Localized String List Attribute": {
                    "$ref": "#/components/examples/LocalizedStringListAttributeResponse"
                  },
                  "Advanced Attribute": {
                    "$ref": "#/components/examples/AdvancedAttributeResponse"
                  },
                  "Advanced List Attribute": {
                    "$ref": "#/components/examples/AdvancedListAttributeResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.Attributes.getProductMasterAttribute({\n    productMasterIdentifier: 1,\n    attributeGroupName: \"material\"\n});\n\nlet productMasterAttribute = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$productMasterAttribute = $adminApi->masters->getAttribute(Identifier::fromId(1), 'material');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Attribute productMasterAttribute = adminApi.masters().getAttribute(Identifier.fromId(1), \"material\");\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteProductMasterAttribute",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "categories",
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Delete a product master attribute.",
        "description": "This endpoint can be used to delete a product master attribute of the given group.\nUse the `IgnoreAttributeLocks=true` query parameter to delete locked attributes.\nUse the `lockAttributeGroup=true` query parameter to lock the deleted attribute group.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-product-master-and-category-master-data#delete-a-product-master-attribute).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductMasterIdentifier"
          },
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          },
          {
            "$ref": "#/components/parameters/IgnoreAttributeLocks"
          },
          {
            "$ref": "#/components/parameters/LockAttributeGroup"
          }
        ],
        "responses": {
          "204": {
            "description": "Product master attribute was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "adminApi.apis.Attributes.deleteProductMasterAttribute({\n  productMasterIdentifier: 1,\n  attributeGroupName: \"material\",\n  ignoreAttributeLocks: true\n});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'ignoreAttributeLocks' => true\n];\n\n$adminApi->masters->deleteAttribute(Identifier::fromId(1), 'material', $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n    .addOption(\"ignoreAttributeLocks\", true)\n    .build();\n\nadminApi.masters().deleteAttribute(Identifier.fromId(1), \"material\", options);\n"
          }
        ]
      }
    },
    "/product-masters/{productMasterIdentifier}/attributes/{attributeGroupName}/unlock": {
      "post": {
        "operationId": "unlockProductMasterAttributeGroup",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Unlock a attribute group for a product master.",
        "description": "This endpoint can be used to unlock a attribute group for a product master. \nWhen shopCountries are specified in the request payload, then the lock is removed only for the specified shop countries.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-products#unlock-a-product-master-attribute-group).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductMasterIdentifier"
          },
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/ShopCountriesToUnlock"
                  },
                  {
                    "type": "object"
                  }
                ]
              },
              "examples": {
                "shop country specific unlock": {
                  "$ref": "#/components/examples/shopCountrySpecificUnlockRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Attribute group successfully unlocked for the product master."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let shopCountriesToUnlock = {\n\"shopCountries\": [\n  {\n    \"shopKey\": \"ay\",\n    \"countryCode\": \"de\"\n  },\n  {\n    \"shopKey\": \"ay\",\n    \"countryCode\": \"fr\"\n  }\n]\n};\n\nclient.apis.Masters.unlockAttributeGroup({productMasterIdentifier: 1, attributeGroup: \"my-attribute-group\", requestBody: shopCountriesToUnlock});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCountry = new ShopCountryToUnlock();\n$shopCountry->setCountryCode(\"DE\");\n$shopCountry->setShopKey(\"ay\");\n$shopCountriesToUnlock = new ShopCountriesToUnlock();\n$shopCountriesToUnlock->setShopCountries([$shopCountry]);\n\n$adminApi->masters->unlockAttributeGroup(Identifier::fromId(1), \"color\", $shopCountriesToUnlock);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var shopCountry = new ShopCountryToUnlock();\nshopCountry.setCountryCode(\"DE\");\nshopCountry.setShopKey(\"ay\");\nvar shopCountriesToUnlock = new ShopCountriesToUnlock();\nshopCountriesToUnlock.setShopCountries(Arrays.asList(shopCountry));\n\nadminApi.masters().unlockAttributeGroup(Identifier.fromId(1), \"color\", shopCountriesToUnlock);\n"
          }
        ]
      }
    },
    "/variants/{variantIdentifier}/custom-data": {
      "get": {
        "operationId": "getProductVariantCustomData",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductVariantCustomData"
        ],
        "summary": "Get custom data for a product variant",
        "description": "This endpoint can be used to get custom data for a product variant.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Custom data of a product variant",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Shop Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.ProductVariantCustomData.getProductVariantCustomData({variantIdentifier: 1});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->productVariants->getCustomData(Identifier::fromId(1));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.productVariants().getCustomData(Identifier.fromId(1));\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateProductVariantCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductVariantCustomData"
        ],
        "summary": "Create or update custom data for a product variant",
        "description": "This endpoint can be used to create custom data for a product variant.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-or-update-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "Product Variant Custom Data": {
                  "$ref": "#/components/examples/CustomDataRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "product variant custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Shop Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n  \"isValid\": true,\n  \"name\": \"ayou\",\n  \"score\": 100,\n  \"someJson\": {\n    \"de_DE\": {\n      \"color\": \"weiss\"\n    },\n    \"en_GB\": {\n      \"color\": \"white\"\n    }\n  }\n};\nawait adminApi.apis.ProductVariantCustomData.createOrUpdateProductVariantCustomData({variantIdentifier: 1}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n$entityCustomData->score = 10;\n$entityCustomData->name = 'ayou';\n$entityCustomData->someJson = (object) [\n  'de_DE' => [\n    'color' => 'schwarz'\n  ],\n  'en_GB' => [\n    'color' => 'black'\n  ]\n];\n\n$adminApi->productVariants->createOrUpdateCustomData(Identifier::fromId(1), $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new entityCustomData();\nentityCustomData.put(\"isValid\", true);\nentityCustomData.put(\"score\", 100);\nentityCustomData.put(\"name\", \"ayou\");\n\nvar deColorObject = new HashMap<String, String>();\ndeColorObject.put(\"color\", \"weiss\");\n\nvar enColorObject = new HashMap<String, String>();\nenColorObject.put(\"color\", \"white\");\n\nEntityCustomData someJson = new HashMap<>();\nsomeJson.put(\"de_DE\", deColorObject);\nsomeJson.put(\"en_GB\", enColorObject);\n\nentityCustomData.put(\"someJson\", someJson);\n\nadminApi.productVariants().createOrUpdateCustomData(Identifier.fromId(1), entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteProductVariantCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductVariantCustomData"
        ],
        "summary": "Delete custom data for a product variant",
        "description": "This endpoint can be used to delete custom data for a product variant.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Product variant custom data was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.ProductVariantCustomData.deleteProductVariantCustomData({variantIdentifier: 1});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->productVariants->deleteCustomData(Identifier::fromId(1));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.productVariants().deleteCustomData(Identifier.fromId(1));\n"
          }
        ]
      }
    },
    "/variants/{variantIdentifier}/custom-data/{key}": {
      "get": {
        "operationId": "getProductVariantCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductVariantCustomData"
        ],
        "summary": "Get product variant custom data for a specific key",
        "description": "This endpoint can be used to get product variant custom data for a specific key.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Product variant custom data for a specific key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Shop Custom Data For Key": {
                    "$ref": "#/components/examples/CustomDataResponseForKey"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.ProductVariantCustomData.getProductVariantCustomDataForKey({variantIdentifier: 1, key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->productVariants->getCustomDataForKey(Identifier::fromId(1), 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.productVariants().getCustomDataForKey(Identifier.fromId(1), \"isValid\");\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateProductVariantCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductVariantCustomData"
        ],
        "summary": "Create or update specific key of custom data of a product variant",
        "description": "This endpoint can be used to create or update shop custom data for a specific key.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-or-update-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "ProductVariant Custom Data For Key": {
                  "$ref": "#/components/examples/CustomDataRequestForKey"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "product variant custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Shop Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n    isValid: true\n};\n\nawait adminApi.apis.ProductVariantCustomData.createOrUpdateProductVariantCustomDataForKey({variantIdentifier: 1, key: 'isValid'}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n\n$adminApi->productVariants->createOrUpdateCustomDataForKey(Identifier::fromId(1), 'isValid', $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new EntityCustomData();\nentityCustomData.put(\"isValid\", true);\n\nadminApi.productVariants().createOrUpdateCustomDataForKey(Identifier.fromId(1), \"isValid\", entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteProductVariantCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductVariantCustomData"
        ],
        "summary": "Delete product variant custom data for a specific key",
        "description": "This endpoint can be used to delete a product variant custom data for a specific key.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "204": {
            "description": "Product variant custom data for a specific key was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.ProductVariantCustomData.deleteProductVariantCustomDataForKey({variantIdentifier: 1, key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->productVariants->deleteCustomDataForKey(Identifier::fromId(1), 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.productVariants().deleteCustomDataForKey(Identifier.fromId(1), \"isValid\");\n"
          }
        ]
      }
    },
    "/variants/{variantIdentifier}/prices": {
      "get": {
        "operationId": "getProductVariantPrices",
        "x-rateLimit": {
          "scope": "pricesRead"
        },
        "x-resources": [
          "prices"
        ],
        "tags": [
          "Prices"
        ],
        "summary": "Get all product variant prices",
        "description": "This endpoint can be used to retrieve a collection of product variant price entities. The endpoint will respond with active and future prices. Prices from the past will not be returned.\nWhen `with=customData` is provided, returned price entities include their custom data (`customData`).\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/pricing-promotions/manage-prices#get-a-collection-of-prices).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/VariantPriceWith"
          }
        ],
        "responses": {
          "200": {
            "description": "List of product variant prices",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ProductVariantPrice"
                      }
                    }
                  }
                },
                "examples": {
                  "Product Variant Price Collection": {
                    "$ref": "#/components/examples/VariantPriceCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Prices.getProductVariantPrices({variantIdentifier: 1, with: \"customData\"});\nlet prices = response.body.entities;\n\nprices.forEach(\n    price => console.log(price.price)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'with' => 'customData',\n];\n\n$priceCollection = $adminApi->productVariantPrices->all(Identifier::fromId(1), $options);\n\nforeach ($priceCollection->getEntities() as $prices) {\n    echo $prices->price;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions listOptions = ApiOptions.builder()\n    .addOption(\"with\", \"customData\")\n    .build();\n\nApiCollection<ProductVariantPrice> priceCollection = adminApi.productVariantPrices().all(Identifier.fromId(1), listOptions);\n\nfor (ProductVariantPrice price : priceCollection.getEntities()) {\n    System.out.println(price.getPrice());\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "createProductVariantPrice",
        "x-rateLimit": {
          "scope": "pricesWrite"
        },
        "x-bulkRequest": {
          "scope": "pricesWrite"
        },
        "x-resources": [
          "prices"
        ],
        "tags": [
          "Prices"
        ],
        "summary": "Update or create a product variant price",
        "description": "This endpoint can be used to create a new product variant price. If there is an already existing price for the same validation timeframe, it will get updated.\nIf multiple prices of the same variant are to be created then use [update-variant](/en/core-documentation/the-basics/products/manage-products-via-api/overview#update-product-variant) endpoint which supports sending multiple prices at once.\nYou may supply `customData` on the price; it must be a non-empty object when provided.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/pricing-promotions/manage-prices#createupdate-a-price).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/VariantPriceWith"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductVariantPrice"
              },
              "examples": {
                "Price": {
                  "$ref": "#/components/examples/VariantPriceRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product variant price was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariantPrice"
                },
                "examples": {
                  "Price": {
                    "$ref": "#/components/examples/VariantPriceResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newPrice = {\n  \"price\": 80,\n  \"oldPrice\": 100,\n  \"recommendedRetailPrice\": 90,\n  \"buyingPrice\": 70,\n  \"tax\": 19.0,\n  \"countryCode\": \"DE\",\n  \"currencyCode\": \"EUR\",\n  \"groupKey\": \"myGroupKey\",\n  \"promotionKey\": \"myPromotionKey\",\n  \"unitPrice\": {\n    \"unit\": \"ml\",\n    \"amount\": 100,\n    \"price\": 399\n  },\n  \"validFrom\": \"2021-09-23T11:30:58+00:00\",\n  \"validTo\": null,\n  \"merchantReferenceKey\": \"merchant-1\",\n  \"customData\": {\n    \"pricingNote\": \"margin-protected\",\n    \"channel\": \"b2c\"\n  }\n};\n\nlet response = await client.apis.Prices.createProductVariantPrice(\n    {variantIdentifier: 1},\n    {requestBody: newPrice}\n);\n\nlet createdPrice = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$price = new ProductVariantPrice();\n$price->price = 80;\n$price->oldPrice = 100;\n$price->recommendedRetailPrice = 90;\n$price->buyingPrice = 70;\n$price->tax = 19.0;\n$price->groupKey = 'myGroupKey';\n$price->promotionKey = 'myPromotionKey';\n$price->currencyCode = 'EUR';\n$price->countryCode = 'DE';\n$price->merchantReferenceKey = 'merchant-1';\n$price->validFrom = '2021-09-23T11:30:58+00:00';\n\n$unitPrice = new ProductVariantUnitPrice();\n$unitPrice->unit = 'ml';\n$unitPrice->amount = 100;\n$unitPrice->price = 249;\n\n$price->unitPrice = $unitPrice;\n\n$price->customData = (object) ['pricingNote' => 'margin-protected', 'channel' => 'b2c'];\n\n$price = $adminApi->productVariantPrices->create(Identifier::fromId(1), $price);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ProductVariantPrice price = new ProductVariantPrice();\nprice.setPrice(80);\nprice.setOldPrice(100);\nprice.setRecommendedRetailPrice(90);\nprice.setTax(19.0);\nprice.setGroupKey(19.0);\nprice.setPromotionKey(\"myPromotionKey\");\nprice.setCurrencyCode(\"EUR\");\nprice.setCountryCode(\"DE\");\nprice.setMerchantReferenceKey(\"merchant-1\");\nprice.setValidFrom(java.time.Instant.parse(\"2021-09-23T11:30:58+00:00\"));\n\nProductVariantUnitPrice unitPrice = new ProductVariantUnitPrice();\nunitPrice.setUnit(\"ml\");\nunitPrice.setAmount(100);\nunitPrice.setPrice(249);\n\nprice.setUnitPrice(unitPrice);\n\njava.util.Map<String, Object> priceCustomData = new java.util.HashMap<>();\npriceCustomData.put(\"pricingNote\", \"margin-protected\");\npriceCustomData.put(\"channel\", \"b2c\");\nprice.setCustomData(priceCustomData);\n\nprice = adminApi.productVariantPrices().create(Identifier.fromId(1), price);\n"
          }
        ]
      }
    },
    "/variants/{variantIdentifier}/prices/{priceKey}": {
      "delete": {
        "operationId": "deleteProductVariantPrice",
        "x-rateLimit": {
          "scope": "pricesWrite"
        },
        "x-resources": [
          "prices"
        ],
        "tags": [
          "Prices"
        ],
        "summary": "Delete a product variant price",
        "description": "This endpoint can be used to delete a product variant's price.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/pricing-promotions/manage-prices#delete-a-product-variant-price).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/PriceKey"
          }
        ],
        "responses": {
          "204": {
            "description": "Product variant's price was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.Prices.deleteProductVariantPrice({variantIdentifier: 1, priceKey: '1-10'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->productVariantPrices->delete(Identifier::fromId(1), '1-10');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.productVariantPrices().delete(Identifier.fromId(1), \"1-10\");\n"
          }
        ]
      }
    },
    "/variants/{variantIdentifier}/prices/{priceKey}/custom-data": {
      "get": {
        "operationId": "getProductVariantPriceCustomData",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "prices"
        ],
        "tags": [
          "ProductVariantPriceCustomData"
        ],
        "summary": "Get custom data for a product variant price",
        "description": "This endpoint can be used to get custom data for a product variant price.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/PriceKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Custom data of a product variant price",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Product variant price custom data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.ProductVariantPriceCustomData.getProductVariantPriceCustomData({variantIdentifier: 1, priceKey: '1-100'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->productVariantPrices->getCustomData(Identifier::fromId(1), '1-100');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.productVariantPrices().getCustomData(Identifier.fromId(1), \"1-100\");\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateProductVariantPriceCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "prices"
        ],
        "tags": [
          "ProductVariantPriceCustomData"
        ],
        "summary": "Create or update custom data for a product variant price",
        "description": "This endpoint can be used to create or update custom data for a product variant price.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-or-update-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/PriceKey"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "Product variant price custom data": {
                  "$ref": "#/components/examples/CustomDataRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Product variant price custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Product variant price custom data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n  \"isValid\": true,\n  \"name\": \"ayou\",\n  \"score\": 100,\n  \"someJson\": {\n    \"de_DE\": {\n      \"color\": \"weiss\"\n    },\n    \"en_GB\": {\n      \"color\": \"white\"\n    }\n  }\n};\nawait adminApi.apis.ProductVariantPriceCustomData.createOrUpdateProductVariantPriceCustomData({variantIdentifier: 1, priceKey: '1-100'}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n$entityCustomData->score = 10;\n$entityCustomData->name = 'ayou';\n$entityCustomData->someJson = (object) [\n  'de_DE' => [\n    'color' => 'schwarz'\n  ],\n  'en_GB' => [\n    'color' => 'black'\n  ]\n];\n\n$adminApi->productVariantPrices->createOrUpdateCustomData(Identifier::fromId(1), '1-100', $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap;\nimport java.util.Map;\n\nvar entityCustomData = new EntityCustomData();\nentityCustomData.put(\"isValid\", true);\nentityCustomData.put(\"score\", 100);\nentityCustomData.put(\"name\", \"ayou\");\n\nvar deColorObject = new HashMap<String, String>();\ndeColorObject.put(\"color\", \"weiss\");\n\nvar enColorObject = new HashMap<String, String>();\nenColorObject.put(\"color\", \"white\");\n\nEntityCustomData someJson = new HashMap<>();\nsomeJson.put(\"de_DE\", deColorObject);\nsomeJson.put(\"en_GB\", enColorObject);\n\nentityCustomData.put(\"someJson\", someJson);\n\nadminApi.productVariantPrices().createOrUpdateCustomData(Identifier.fromId(1), \"1-100\", entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteProductVariantPriceCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "prices"
        ],
        "tags": [
          "ProductVariantPriceCustomData"
        ],
        "summary": "Delete custom data for a product variant price",
        "description": "This endpoint can be used to delete custom data for a product variant price.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/PriceKey"
          }
        ],
        "responses": {
          "204": {
            "description": "Product variant price custom data was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.ProductVariantPriceCustomData.deleteProductVariantPriceCustomData({variantIdentifier: 1, priceKey: '1-100'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->productVariantPrices->deleteCustomData(Identifier::fromId(1), '1-100');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.productVariantPrices().deleteCustomData(Identifier.fromId(1), \"1-100\");\n"
          }
        ]
      }
    },
    "/variants/{variantIdentifier}/prices/{priceKey}/custom-data/{key}": {
      "get": {
        "operationId": "getProductVariantPriceCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "prices"
        ],
        "tags": [
          "ProductVariantPriceCustomData"
        ],
        "summary": "Get product variant price custom data for a specific key",
        "description": "This endpoint can be used to get product variant price custom data for a specific key.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/PriceKey"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Product variant price custom data for a specific key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Product variant price custom data for key": {
                    "$ref": "#/components/examples/CustomDataResponseForKey"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.ProductVariantPriceCustomData.getProductVariantPriceCustomDataForKey({variantIdentifier: 1, priceKey: '1-100', key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->productVariantPrices->getCustomDataForKey(Identifier::fromId(1), '1-100', 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.productVariantPrices().getCustomDataForKey(Identifier.fromId(1), \"1-100\", \"isValid\");\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateProductVariantPriceCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "prices"
        ],
        "tags": [
          "ProductVariantPriceCustomData"
        ],
        "summary": "Create or update a specific key of custom data for a product variant price",
        "description": "This endpoint can be used to create or update a specific key of custom data for a product variant price.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-or-update-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/PriceKey"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "Product variant price custom data for key": {
                  "$ref": "#/components/examples/CustomDataRequestForKey"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Product variant price custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Product variant price custom data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n    isValid: true\n};\n\nawait adminApi.apis.ProductVariantPriceCustomData.createOrUpdateProductVariantPriceCustomDataForKey({variantIdentifier: 1, priceKey: '1-100', key: 'isValid'}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n\n$adminApi->productVariantPrices->createOrUpdateCustomDataForKey(Identifier::fromId(1), '1-100', 'isValid', $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var entityCustomData = new EntityCustomData();\nentityCustomData.put(\"isValid\", true);\n\nadminApi.productVariantPrices().createOrUpdateCustomDataForKey(Identifier.fromId(1), \"1-100\", \"isValid\", entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteProductVariantPriceCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "prices"
        ],
        "tags": [
          "ProductVariantPriceCustomData"
        ],
        "summary": "Delete product variant price custom data for a specific key",
        "description": "This endpoint can be used to delete product variant price custom data for a specific key.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/PriceKey"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "204": {
            "description": "Product variant price custom data for a specific key was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.ProductVariantPriceCustomData.deleteProductVariantPriceCustomDataForKey({variantIdentifier: 1, priceKey: '1-100', key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->productVariantPrices->deleteCustomDataForKey(Identifier::fromId(1), '1-100', 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.productVariantPrices().deleteCustomDataForKey(Identifier.fromId(1), \"1-100\", \"isValid\");\n"
          }
        ]
      }
    },
    "/variants/prices/bulk-requests": {
      "post": {
        "operationId": "createProductVariantPriceBulkRequest",
        "x-rateLimit": {
          "scope": "pricesWrite"
        },
        "x-resources": [
          "prices"
        ],
        "tags": [
          "Prices"
        ],
        "summary": "Create a new bulk request.",
        "description": "This endpoint can be used to create a new bulk request for creating and updating variant prices.\n\nEvery bulk request is defined by list of operations and optional callbacks, which will be called every time request\nor operation statuses are changed.\n\nLarge bulk requests can be split into multiple chunks. Create the bulk request with `callbacks.requestStatus` set to\n`incomplete`, then use the returned `key` as `callbacks.bulkRequestKey` when submitting additional chunks. Use\nthe same `callbacks.bulkRequestKey` and set `callbacks.requestStatus` to `complete` for the final chunk so the request\ncan be queued for processing. Completed bulk requests cannot be extended, and duplicate operation keys from earlier\nchunks of the same bulk request are not checked again when extending it.\n\nA single operation represents an API call to one of the following endpoints:\n* POST /variants/{variantIdentifier}/prices\n\nThe execution order is not guaranteed. It means, that operations might be executed in a different order than defined in the request body.\n\nSee more details in the [Developer Guide](/en/core-documentation/welcome-to-scayle/introduction/apis/bulk-requests#create-product-variant-price-bulk-request).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBulkRequest"
              },
              "examples": {
                "CreateBulkRequest": {
                  "value": {
                    "callbacks": {
                      "requestUrl": "https://example.com/api/internal/callback/request",
                      "operationUrl": "https://client.aboutyou.cloud/api/internal/callback/operation",
                      "requestStatus": "complete"
                    },
                    "operations": [
                      {
                        "key": "create-product-variant-price",
                        "url": "/variants/123/prices",
                        "method": "POST",
                        "headers": {
                          "X-Merchant-Key": "M0001-black"
                        },
                        "body": {
                          "price": 80,
                          "oldPrice": 100,
                          "recommendedRetailPrice": 90,
                          "buyingPrice": 70,
                          "tax": 19,
                          "countryCode": "DE",
                          "currencyCode": "EUR",
                          "groupKey": "myGroupKey",
                          "promotionKey": "myPromotionKey",
                          "unitPrice": {
                            "unit": "ml",
                            "amount": 100,
                            "price": 399
                          },
                          "validFrom": "2021-09-23T11:30:58+00:00",
                          "validTo": null,
                          "merchantReferenceKey": "merchant-1"
                        }
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "callbacks": {
          "bulk-request-status-changed": {
            "{$request.body#/callbacks.requestUrl}": {
              "post": {
                "description": "The callback will be triggered when request status is changed.\n",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/BulkRequestStatusChangedEvent"
                      },
                      "examples": {
                        "BulkRequestStatusChanged": {
                          "$ref": "#/components/examples/BulkRequestStatusChangedCallback"
                        }
                      }
                    }
                  }
                },
                "responses": {
                  "201": {
                    "description": "The callback was received by the client.\n"
                  }
                }
              }
            }
          },
          "bulk-operation-status-changed": {
            "{$request.body#/callbacks.operationUrl}": {
              "post": {
                "description": "The callback will be triggered when operation status is changed.\n",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/BulkOperationStatusChangedEvent"
                      },
                      "examples": {
                        "BulkOperationStatusChanged": {
                          "$ref": "#/components/examples/ProductVariantPriceBulkOperationStatusChangedCallback"
                        }
                      }
                    }
                  }
                },
                "responses": {
                  "201": {
                    "description": "The callback was received by the client.\n"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Bulk request was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkRequest"
                },
                "examples": {
                  "CreateBulkRequestResponse": {
                    "$ref": "#/components/examples/CreateBulkRequestResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const newBulkRequest = {\n  \"callbacks\": {\n      \"requestUrl\": \"https://example.com/request\",\n      \"operationUrl\": \"https://example.com/operation\",\n      \"requestStatus\": \"complete\"\n  },\n  \"operations\": [\n      {\n          \"key\": \"o1\",\n          \"url\": \"/variants/123/prices\",\n          \"method\": \"POST\",\n          \"body\": {\n            \"price\": 80,\n            \"oldPrice\": 100,\n            \"recommendedRetailPrice\": 90,\n            \"buyingPrice\": 70,\n            \"tax\": 19.0,\n            \"countryCode\": \"DE\",\n            \"currencyCode\": \"EUR\",\n            \"groupKey\": \"myGroupKey\",\n            \"promotionKey\": \"myPromotionKey\",\n            \"unitPrice\": {\n              \"unit\": \"ml\",\n              \"amount\": 100,\n              \"price\": 399\n            },\n            \"validFrom\": \"2021-09-23T11:30:58+00:00\",\n            \"validTo\": null,\n            \"merchantReferenceKey\": \"merchant-1\"\n          }\n      }\n  ]\n};\n\nconst response = await client.apis.Prices.createProductVariantPriceBulkRequest({}, {requestBody: newBulkRequest});\nconst bulkRequest = response.body;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "CreateBulkRequest newBulkRequest = new CreateBulkRequest();\n\nBulkRequestCallbacks bulkRequestCallbacks = new BulkRequestCallbacks();\nbulkRequestCallbacks.setRequestUrl(\"https://example.com/request\");\nbulkRequestCallbacks.setOperationUrl(\"https://example.com/operation\");\nbulkRequestCallbacks.setRequestStatus(\"complete\");\n\nnewBulkRequest.setCallbacks(bulkRequestCallbacks);\n\nCreateBulkOperation bulkOperation = new CreateBulkOperation();\nbulkOperation.setKey(\"o1\");\nbulkOperation.setUrl(\"/variants/123/prices\");\nbulkOperation.setMethod(\"POST\");\n\nHashMap<String, Object> body = new HashMap<>();\n\nbody.put(\"price\", 80);\nbody.put(\"oldPrice\", 100);\nbody.put(\"recommendedRetailPrice\", 90);\nbody.put(\"buyingPrice\", 70);\nbody.put(\"tax\", 19.0);\nbody.put(\"countryCode\", \"DE\");\nbody.put(\"currencyCode\", \"EUR\");\nbody.put(\"groupKey\", \"myGroupKey\");\nbody.put(\"promotionKey\", \"myPromotionKey\");\n\nHashMap<String, Object> unitPrice = new HashMap<>();\nunitPrice.put(\"unit\", \"ml\");\nunitPrice.put(\"amount\", 100);\nunitPrice.put(\"price\", 399);\nbody.put(\"unitPrice\", unitPrice);\n\nbody.put(\"validFrom\", \"2021-09-23T11:30:58+00:00\");\nbody.put(\"validTo\", null);\n\nbody.put(\"merchantReferenceKey\", \"merchant-1\");\n\nbulkOperation.setBody(body);\n\nconst operations = new ArrayList<CreateBulkOperation>();\noperations.add(bulkOperation);\n\nnewBulkRequest.setOperations(operations);\n\nBulkRequest bulkRequest = adminApi.productVariantPrices().createBulkRequest(newBulkRequest);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$newBulkRequest = new CreateBulkRequest();\n\n$bulkRequestCallbacks = new BulkRequestCallbacks();\n$bulkRequestCallbacks->requestUrl = 'https://example.com/request';\n$bulkRequestCallbacks->operationUrl = 'https://example.com/operation';\n$bulkRequestCallbacks->requestStatus = 'complete';\n\n$newBulkRequest->callbacks = $bulkRequestCallbacks;\n\n$bulkOperation = new CreateBulkOperation();\n$bulkOperation->key = 'o1';\n$bulkOperation->url = '/variants/prices/123';\n$bulkOperation->method = 'POST';\n$bulkOperation->body = (object) [\n    'price' => 80,\n    'oldPrice' => 100,\n    'recommendedRetailPrice' => 90,\n    'buyingPrice' => 70,\n    'tax' => 19.0,\n    'countryCode' => 'DE',\n    'currencyCode' => 'EUR',\n    'groupKey' => 'myGroupKey',\n    'promotionKey' => 'myPromotionKey',\n    'unitPrice' => [\n        'unit' => 'ml',\n        'amount' => 100,\n        'price' => 399\n    ],\n    'validFrom' => '2021-09-23T11:30:58+00:00',\n    'validTo' => null,\n    'merchantReferenceKey' => 'merchant-1'\n];\n\n$newBulkRequest->operations = [$bulkOperation];\n\n$bulkRequest = $adminApi->productVariantPrices->createBulkRequest($newBulkRequest);\n"
          }
        ]
      }
    },
    "/variants/{variantIdentifier}/stocks": {
      "get": {
        "operationId": "getProductVariantStocks",
        "x-rateLimit": {
          "scope": "stocksRead"
        },
        "x-resources": [
          "stocks"
        ],
        "tags": [
          "Stocks"
        ],
        "summary": "Get product variant stock information",
        "description": "This endpoint can be used to retrieve a collection of the latest product variant stock information. The response will contain the current quantity for each warehouse.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/stock#get-a-stock-collection).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of product variant quantities",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ProductVariantStock"
                      }
                    }
                  }
                },
                "examples": {
                  "Variant Quantity": {
                    "$ref": "#/components/examples/VariantStockCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.Stocks.getProductVariantStocks({variantIdentifier: 1});\nlet stocks = response.body.entities;\n\nstocks.forEach(\n    stock => console.log(stock.warehouseReferenceKey + ':' + stock.quantity)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$stockCollection = $adminApi->productVariantStocks->all(Identifier::fromId(1));\n\nforeach ($stockCollection->getEntities() as $stock) {\n    echo $stock->warehouseReferenceKey . ': '. $stock->quantity;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<ProductVariantStock> stockCollection = adminApi.productVariantStocks().all(Identifier.fromId(1));\n\nfor (ProductVariantStock stock : stockCollection.getEntities()) {\n    System.out.println(stock.getWarehouseReferenceKey() + \": \" + stock.getQuantity());\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "createProductVariantStock",
        "x-rateLimit": {
          "scope": "stocksWrite"
        },
        "x-bulkRequest": {
          "scope": "stocksWrite"
        },
        "x-resources": [
          "stocks"
        ],
        "tags": [
          "Stocks"
        ],
        "summary": "Create new product variant stock information",
        "description": "This endpoint can be used to update the current quantity of a product variant.\n\nNote that warehouse with the key provided in `warehouseReferenceKey` should be created in advance and must be linked to a shop country (so the stock can be used by the specific shop country).\n\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/stock#create-stock-information).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductVariantStock"
              },
              "examples": {
                "Variant Quantity": {
                  "$ref": "#/components/examples/VariantStockRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Product variant stock was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariantStock"
                },
                "examples": {
                  "Variant Quantity": {
                    "$ref": "#/components/examples/VariantStockResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newStock = {\n  quantity: 10,\n  warehouseReferenceKey: \"myWarehouse\",\n  changedAt: \"2020-07-23T11:30:58+00:00\",\n  merchantReferenceKey: \"merchant-1\",\n  expectedAvailabilityAt: \"2020-07-24\"\n};\n\nlet response = await adminApi.apis.Stocks.createProductVariantStock(\n  {variantIdentifier: 1},\n  {requestBody: newStock}\n);\n\nlet createdStock = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$stock = new ProductVariantStock();\n$stock->quantity = 10;\n$stock->warehouseReferenceKey = 'myWarehouse';\n$stock->changedAt = '2020-07-23T11:30:58+00:00';\n$stock->merchantReferenceKey = 'merchant-1';\n$stock->expectedAvailabilityAt = '2020-07-24';\n\n$stock = $adminApi->productVariantStocks->create(Identifier::fromId(1), $stock);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ProductVariantStock stock = new ProductVariantStock();\nstock.setQuantity(10);\nstock.setWarehouseReferenceKey(\"myWarehouse\");\nstock.setChangedAt(java.time.Instant.parse(\"2020-07-23T11:30:58+00:00\"));\nstock.setMerchantReferenceKey(\"merchant-1\");\nstock.setExpectedAvailabilityAt(\"2020-07-24\");\n\nstock = adminApi.productVariantStocks().create(Identifier.fromId(1), stock);\n"
          }
        ]
      }
    },
    "/variants/stocks/bulk-requests": {
      "post": {
        "operationId": "createProductVariantStockBulkRequest",
        "x-rateLimit": {
          "scope": "stocksWrite"
        },
        "x-resources": [
          "stocks"
        ],
        "tags": [
          "Stocks"
        ],
        "summary": "Create a new bulk request.",
        "description": "This endpoint can be used to create a new bulk request for creating and updating variant stocks.\n\nEvery bulk request is defined by list of operations and optional callbacks, which will be called every time request\nor operation statuses are changed.\n\nLarge bulk requests can be split into multiple chunks. Create the bulk request with `callbacks.requestStatus` set to\n`incomplete`, then use the returned `key` as `callbacks.bulkRequestKey` when submitting additional chunks. Use\nthe same `callbacks.bulkRequestKey` and set `callbacks.requestStatus` to `complete` for the final chunk so the request\ncan be queued for processing. Completed bulk requests cannot be extended, and duplicate operation keys from earlier\nchunks of the same bulk request are not checked again when extending it.\n\nA single operation represents an API call to one of the following endpoints:\n* POST /variants/{variantIdentifier}/stocks\n\nThe execution order is not guaranteed. It means, that operations might be executed in a different order than defined in the request body.\n\nSee more details in the [Developer Guide](/en/core-documentation/welcome-to-scayle/introduction/apis/bulk-requests#create-product-variant-stock-bulk-request).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBulkRequest"
              },
              "examples": {
                "CreateBulkRequest": {
                  "$ref": "#/components/examples/VariantBulkStockRequest"
                }
              }
            }
          }
        },
        "callbacks": {
          "bulk-request-status-changed": {
            "{$request.body#/callbacks.requestUrl}": {
              "post": {
                "description": "The callback will be triggered when request status is changed.\n",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/BulkRequestStatusChangedEvent"
                      },
                      "examples": {
                        "BulkRequestStatusChanged": {
                          "$ref": "#/components/examples/BulkRequestStatusChangedCallback"
                        }
                      }
                    }
                  }
                },
                "responses": {
                  "201": {
                    "description": "The callback was received by the client.\n"
                  }
                }
              }
            }
          },
          "bulk-operation-status-changed": {
            "{$request.body#/callbacks.operationUrl}": {
              "post": {
                "description": "The callback will be triggered when operation status is changed.\n",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/BulkOperationStatusChangedEvent"
                      },
                      "examples": {
                        "BulkOperationStatusChanged": {
                          "$ref": "#/components/examples/ProductVariantStockBulkOperationStatusChangedCallback"
                        }
                      }
                    }
                  }
                },
                "responses": {
                  "201": {
                    "description": "The callback was received by the client.\n"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Bulk request was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkRequest"
                },
                "examples": {
                  "CreateBulkRequestResponse": {
                    "$ref": "#/components/examples/CreateBulkRequestResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const newBulkRequest = {\n   \"callbacks\": {\n       \"requestUrl\": \"https://example.com/request\",\n       \"operationUrl\": \"https://example.com/operation\",\n       \"requestStatus\": \"complete\"\n   },\n   \"operations\": [\n       {\n           \"key\": \"o1\",\n           \"url\": \"/variants/123/stocks\",\n           \"method\": \"POST\",\n           \"body\": {\n              \"warehouseReferenceKey\": \"DefaultWarehouse\",\n              \"sellableWithoutStock\": true,\n              \"quantity\": 50,\n              \"changedAt\": \"2024-06-23T11:30:58+00:00\",\n              \"merchantReferenceKey\": \"merchant-1\"\n           }\n       }\n   ]\n };\n\n const response = await client.apis.Stocks.createProductVariantStockBulkRequest({}, {requestBody: newBulkRequest});\n const bulkRequest = response.body;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "CreateBulkRequest newBulkRequest = new CreateBulkRequest();\n\nBulkRequestCallbacks bulkRequestCallbacks = new BulkRequestCallbacks();\nbulkRequestCallbacks.setRequestUrl(\"https://example.com/request\");\nbulkRequestCallbacks.setOperationUrl(\"https://example.com/operation\");\nbulkRequestCallbacks.setRequestStatus(\"complete\");\n\nnewBulkRequest.setCallbacks(bulkRequestCallbacks);\n\nCreateBulkOperation bulkOperation = new CreateBulkOperation();\nbulkOperation.setKey(\"o1\");\nbulkOperation.setUrl(\"/variants/123/stocks\");\nbulkOperation.setMethod(\"POST\");\n\nHashMap<String, Object> body = new HashMap<>();\n\nbody.put(\"quantity\", 80);\nbody.put(\"warehouseReferenceKey\", \"myWarehouseKey\");\nbody.put(\"changedAt\", \"2024-08-01T10:00:00+00:00\");\nbody.put(\"sellableWithoutStock\", false);\nbody.put(\"merchantReferenceKey\", \"merchant-1\");\n\nbulkOperation.setBody(body);\n\nconst operations = new ArrayList<CreateBulkOperation>();\noperations.add(bulkOperation);\n\nnewBulkRequest.setOperations(operations);\n\nBulkRequest bulkRequest = adminApi.productVariantStocks().createBulkRequest(newBulkRequest);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$newBulkRequest = new CreateBulkRequest();\n\n$bulkRequestCallbacks = new BulkRequestCallbacks();\n$bulkRequestCallbacks->requestUrl = 'https://example.com/request';\n$bulkRequestCallbacks->operationUrl = 'https://example.com/operation';\n$bulkRequestCallbacks->requestStatus = 'complete';\n\n$newBulkRequest->callbacks = $bulkRequestCallbacks;\n\n$bulkOperation = new CreateBulkOperation();\n$bulkOperation->key = 'o1';\n$bulkOperation->url = '/variants/stocks/123';\n$bulkOperation->method = 'POST';\n$bulkOperation->body = (object) [\n    'warehouseReferenceKey' => 'DefaultWarehouse',\n    'sellableWithoutStock' => false,\n    'quantity' => 50,\n    'changedAt' => '2024-06-23T11:30:58+00:00',\n    'merchantReferenceKey' => 'merchant-1'\n];\n\n$newBulkRequest->operations = [$bulkOperation];\n$bulkRequest = $adminApi->productVariantStocks->createBulkRequest($newBulkRequest);\n"
          }
        ]
      }
    },
    "/variants/{variantIdentifier}/stocks/sellableWithoutStock": {
      "put": {
        "operationId": "setSellableWithoutStock",
        "x-rateLimit": {
          "scope": "stocksWrite"
        },
        "x-resources": [
          "stocks"
        ],
        "tags": [
          "Stocks"
        ],
        "summary": "Manage sellableWithoutStock for a given variant",
        "description": "This endpoint can be used to create or update sellableWithoutStock information of a product variant.\n\nNote that warehouse with the key provided in `warehouseReferenceKey` should be created in advance and must be linked to a shop country (so the sellableWithoutStock info can be used by the specific shop country).\n\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/stock#set-sellable-without-stock-flag).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SellableWithoutStock"
              },
              "examples": {
                "Sellable without stock": {
                  "$ref": "#/components/examples/SellableWithoutStockRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Sellable without stock information was successfully set for variant.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SellableWithoutStock"
                },
                "examples": {
                  "Sellable without stock": {
                    "$ref": "#/components/examples/SellableWithoutStockResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newSellableWithoutStock = {\n  warehouseReferenceKey: \"myWarehouse\",\n  merchantReferenceKey: \"merchant-1\",\n  sellableWithoutStock: true\n};\n\nlet response = await adminApi.apis.Stocks.setSellableWithoutStock(\n  {variantIdentifier: 1},\n  {requestBody: newSellableWithoutStock}\n);\n\nlet sellableWithoutStock = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$sellableWithoutStock = new SellableWithoutStock();\n$sellableWithoutStock->sellableWithoutStock = true;\n$sellableWithoutStock->warehouseReferenceKey = 'myWarehouse';\n$sellableWithoutStock->merchantReferenceKey = 'merchant-1';\n\n$sellableWithoutStock = $adminApi->sellableWithoutStocks->setSellableWithoutStock(Identifier::fromId(1), $sellableWithoutStock);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "SellableWithoutStock sellableWithoutStock = new SellableWithoutStock();\nsellableWithoutStock.setSellableWithoutStock(true);\nsellableWithoutStock.setWarehouseReferenceKey(\"myWarehouse\");\nsellableWithoutStock.setMerchantReferenceKey(\"merchant-1\");\n\nsellableWithoutStock = adminApi.sellableWithoutStocks().setSellableWithoutStock(Identifier.fromId(1), sellableWithoutStock);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/attributes": {
      "get": {
        "operationId": "getProductAttributes",
        "x-rateLimit": {
          "scope": "productRead"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Get product attributes",
        "description": "This endpoint can be used to retrieve a collection of product attributes.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-products#get-a-collection-of-product-attributes).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of product attributes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Attribute"
                      }
                    }
                  }
                },
                "examples": {
                  "Attribute Collection": {
                    "$ref": "#/components/examples/AttributeCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Attributes.getProductAttributes({productIdentifier: 1});\nlet productAttributes = response.body.entities;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$productAttributeCollection = $adminApi->products->allAttributes(Identifier::fromId(1));\n$productAttributes = $productAttributeCollection->getEntities();\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<Attribute> productAttributeCollection = adminApi.products().allAttributes(Identifier.fromId(1));\nList<Attribute> productAttributes = productAttributeCollection.getEntities();\n"
          }
        ]
      },
      "post": {
        "operationId": "updateOrCreateProductAttribute",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Update or create a product attribute",
        "description": "This endpoint can be used to create a new product attribute. If an attribute with the same name has already been assigned to the product, then its value will be replaced with the given one.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-products#create-or-update-a-product-attribute).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/IgnoreAttributeLocks"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Attribute"
              },
              "examples": {
                "Simple Attribute": {
                  "$ref": "#/components/examples/SimpleAttributeRequest"
                },
                "Simple List Attribute": {
                  "$ref": "#/components/examples/SimpleListAttributeRequest"
                },
                "Localized String Attribute": {
                  "$ref": "#/components/examples/LocalizedStringAttributeRequest"
                },
                "Localized String List Attribute": {
                  "$ref": "#/components/examples/LocalizedStringListAttributeRequest"
                },
                "Advanced Attribute": {
                  "$ref": "#/components/examples/AdvancedAttributeRequest"
                },
                "Advanced List Attribute": {
                  "$ref": "#/components/examples/AdvancedListAttributeRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product attribute was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Attribute"
                },
                "examples": {
                  "Simple Attribute": {
                    "$ref": "#/components/examples/SimpleAttributeResponse"
                  },
                  "Simple List Attribute": {
                    "$ref": "#/components/examples/SimpleListAttributeResponse"
                  },
                  "Localized String Attribute": {
                    "$ref": "#/components/examples/LocalizedStringAttributeResponse"
                  },
                  "Localized String List Attribute": {
                    "$ref": "#/components/examples/LocalizedStringListAttributeResponse"
                  },
                  "Advanced Attribute": {
                    "$ref": "#/components/examples/AdvancedAttributeResponse"
                  },
                  "Advanced List Attribute": {
                    "$ref": "#/components/examples/AdvancedListAttributeResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "// Simple Attribute\nlet attribute = {\n  \"name\": \"size\",\n  \"type\": \"simple\",\n  \"value\": \"M\"\n};\n\nlet response = await client.apis.Attributes.updateOrCreateProductAttribute(\n  {productIdentifier: 1},\n  {requestBody: attribute}\n);\n\nlet createdAttribute = response.body;\n\n// Simple List Attribute\nlet attribute = {\n  \"name\": \"season\",\n  \"type\": \"simpleList\",\n  \"value\": [\"autumn\", \"winter\"]\n};\n\nlet response = await client.apis.Attributes.updateOrCreateProductAttribute(\n  {productIdentifier: 1},\n  {requestBody: attribute}\n);\n\nlet createdAttribute = response.body;\n\n// Localized String Attribute\nlet attribute = {\n  \"name\": \"collection\",\n  \"type\": \"localizedString\",\n  \"value\": {\"de_DE\": \"einzigartig\", \"en_GB\": \"unique\"}\n};\n\nlet response = await client.apis.Attributes.updateOrCreateProductAttribute(\n  {productIdentifier: 1},\n  {requestBody: attribute}\n);\n\nlet createdAttribute = response.body;\n\n//Localized String List Attribute\nlet attribute = {\n  \"name\": \"color\",\n  \"type\": \"localizedStringList\",\n  \"value\": [\n      {\"de_DE\": \"weiß\", \"en_GB\": \"white\"},\n      {\"de_DE\": \"schwarz\", \"en_GB\": \"black\"},\n  ]\n};\n\nlet response = await client.apis.Attributes.updateOrCreateProductAttribute(\n  {productIdentifier: 1},\n  {requestBody: attribute}\n);\n\nlet createdAttribute = response.body;\n\n// Advanced Attribute\nlet attribute = {\n  \"name\": \"dimensions\",\n  \"type\": \"advanced\",\n  \"value\": {\n      \"height\": 100,\n      \"width\": 30,\n      \"unit\": \"cm\"\n  }\n};\n\nlet response = await client.apis.Attributes.updateOrCreateProductAttribute(\n  {productIdentifier: 1},\n  {requestBody: attribute}\n);\n\nlet createdAttribute = response.body;\n\n// Advanced List Attribute\nlet attribute = {\n  \"name\": \"material\",\n  \"type\": \"advancedList\",\n  \"value\": [\n      {\n          \"name\": \"wool\",\n          \"percentage\": 80\n      },\n      {\n          \"name\": \"cotton\",\n          \"percentage\": 20\n      }\n  ]   \n};\n\nlet response = await client.apis.Attributes.updateOrCreateProductAttribute(\n  {productIdentifier: 1},\n  {requestBody: attribute}\n);\n\nlet createdAttribute = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "// Simple Attribute\n$attribute = new Attribute();\n$attribute->name = 'size';\n$attribute->type = 'simple';\n$attribute->value = 'M';\n\n$createdAttribute = $adminApi->products->updateOrCreateAttribute(Identifier::fromId(1), $attribute);\n\n// Simple List Attribute\n$attribute = new Attribute();\n$attribute->name = 'season';\n$attribute->type = 'simpleList';\n$attribute->value = ['autumn', 'winter'];\n\n$createdAttribute = $adminApi->products->updateOrCreateAttribute(Identifier::fromId(1), $attribute);\n\n// Localized String Attribute\n$attribute = new Attribute();\n$attribute->name = 'collection';\n$attribute->type = 'localizedString';\n$attribute->value = ['de_DE' => 'einzigartig', 'en_GB' => 'unique'];\n\n$createdAttribute = $adminApi->products->updateOrCreateAttribute(Identifier::fromId(1), $attribute);\n\n// Localized String List Attribute\n$attribute = new Attribute();\n$attribute->name = 'color';\n$attribute->type = 'localizedStringList';\n$attribute->value = [\n    ['de_DE' => 'weiß', 'en_GB' => 'white'],\n    ['de_DE' => 'schwarz', 'en_GB' => 'black'],\n];\n\n$createdAttribute = $adminApi->products->updateOrCreateAttribute(Identifier::fromId(1), $attribute);\n\n// Advanced Attribute\n$attribute = new Attribute();\n$attribute->name = 'dimensions';\n$attribute->type = 'advanced';\n$attribute->value = [\n  'height' => 100,\n  'width' => 30,\n  'unit' => 'cm',\n];\n\n$createdAttribute = $adminApi->products->updateOrCreateAttribute(Identifier::fromId(1), $attribute);\n\n// Advanced List Attribute\n$attribute = new Attribute();\n$attribute->name = 'material';\n$attribute->type = 'advancedList';\n$attribute->value = [\n  ['name' => 'wool', 'percentage' => 80],\n  ['name' => 'cotton', 'percentage' => 20],\n];\n\n$createdAttribute = $adminApi->products->updateOrCreateAttribute(Identifier::fromId(1), $attribute);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "// Simple Attribute\nvar attribute = new Attribute();\nattribute.setName(\"size\");\nattribute.setType(AttributeType.VALUE_SIMPLE);\nattribute.setValue(\"M\");\n\nvar createdAttribute = adminApi.products().updateOrCreateAttribute(Identifier.fromId(1), attribute);\n\n// Simple List Attribute\nvar seasons = new ArrayList<String>();\nseasons.add(\"autumn\");\nseasons.add(\"winter\");\n\nvar attribute = new Attribute();\nattribute.setName(\"season\");\nattribute.setType(AttributeType.VALUE_SIMPLELIST);\nattribute.setValue(seasons);\n\nvar createdAttribute = adminApi.products().updateOrCreateAttribute(Identifier.fromId(1), attribute);\n\n// Localized String Attribute\nvar collection = new HashMap<String, String>();\ncollection.put(\"de_DE\", \"einzigartig\");\ncollection.put(\"en_GB\", \"unique\");\n\nvar attribute = new Attribute();\nattribute.setName(\"collection\");\nattribute.setType(AttributeType.VALUE_LOCALIZEDSTRING);\nattribute.setValue(collection);\n\nvar createdAttribute = adminApi.products().updateOrCreateAttribute(Identifier.fromId(1), attribute);\n\n// Localized String List Attribute\nvar whiteColor = new HashMap<String, String>();\nwhiteColor.put(\"de_DE\", \"weiß\");\nwhiteColor.put(\"en_GB\", \"white\");\n\nvar blackColor = new HashMap<String, String>();\nblackColor.put(\"de_DE\", \"schwarz\");\nblackColor.put(\"en_GB\", \"black\");\n\nvar colors = new ArrayList<HashMap<String, String>>();\ncolors.add(whiteColor);\ncolors.add(blackColor);\n\nvar attribute = new Attribute();\nattribute.setName(\"color\");\nattribute.setType(AttributeType.VALUE_LOCALIZEDSTRINGLIST);\nattribute.setValue(colors);\n\nvar createdAttribute = adminApi.products().updateOrCreateAttribute(Identifier.fromId(1), attribute);\n\n// Advanced Attribute\nvar dimensions = new HashMap<String, Object>();\ndimensions.put(\"height\", 100);\ndimensions.put(\"width\", 30);\ndimensions.put(\"unit\", \"cm\");\n\nvar attribute = new Attribute();\nattribute.setName(\"dimensions\");\nattribute.setType(AttributeType.VALUE_ADVANCED);\nattribute.setValue(dimensions);\n\nvar createdAttribute = adminApi.products().updateOrCreateAttribute(Identifier.fromId(1), attribute);\n\n// Advanced List Attribute\nvar wool = new HashMap<String, Object>();\nwool.put(\"name\", \"wool\");\nwool.put(\"percentage\", 80);\n\nvar cotton = new HashMap<String, Object>();\ncotton.put(\"name\", \"cotton\");\ncotton.put(\"percentage\", 20);\n\nvar materials = new ArrayList<HashMap<String, Object>>();\nmaterials.add(wool);\nmaterials.add(cotton); \n\nvar attribute = new Attribute();\nattribute.setName(\"material\");\nattribute.setType(AttributeType.VALUE_ADVANCEDLIST);\nattribute.setValue(materials);\n\nvar createdAttribute = adminApi.products().updateOrCreateAttribute(Identifier.fromId(1), attribute);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/attributes/{attributeGroupName}": {
      "get": {
        "operationId": "getProductAttribute",
        "x-rateLimit": {
          "scope": "productRead"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Get a product attribute",
        "description": "This endpoint can be used to get a product attribute.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-products#get-a-product-attribute).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          }
        ],
        "responses": {
          "200": {
            "description": "Product attribute",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Attribute"
                },
                "examples": {
                  "Simple Attribute": {
                    "$ref": "#/components/examples/SimpleAttributeResponse"
                  },
                  "Simple List Attribute": {
                    "$ref": "#/components/examples/SimpleListAttributeResponse"
                  },
                  "Localized String Attribute": {
                    "$ref": "#/components/examples/LocalizedStringAttributeResponse"
                  },
                  "Localized String List Attribute": {
                    "$ref": "#/components/examples/LocalizedStringListAttributeResponse"
                  },
                  "Advanced Attribute": {
                    "$ref": "#/components/examples/AdvancedAttributeResponse"
                  },
                  "Advanced List Attribute": {
                    "$ref": "#/components/examples/AdvancedListAttributeResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Attributes.getProductAttribute({\n    productIdentifier: 1,\n    attributeGroupName: \"material\"\n});\n\nlet productAttribute = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$productAttribute = $adminApi->products->getAttribute(Identifier::fromId(1), 'material');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Attribute productAttribute = adminApi.products().getAttribute(Identifier.fromId(1), \"material\");\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteProductAttribute",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Delete a product attribute",
        "description": "This endpoint can be used to delete a product attribute of the given group.\nUse the `ignoreAttributeLocks=true` query parameter to delete locked attributes.\nUse the `lockAttributeGroup=true` query parameter to lock the deleted attribute group.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-products#delete-a-product-attribute).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          },
          {
            "$ref": "#/components/parameters/IgnoreAttributeLocks"
          },
          {
            "$ref": "#/components/parameters/LockAttributeGroup"
          }
        ],
        "responses": {
          "204": {
            "description": "Product attribute was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "client.apis.Attributes.deleteProductAttribute({\n    productIdentifier: 1,\n    attributeGroupName: \"material\",\n    ignoreAttributeLocks: true\n});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'ignoreAttributeLocks' => true\n];\n\n$adminApi->products->deleteAttribute(Identifier::fromId(1), 'material', $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n    .addOption(\"ignoreAttributeLocks\", true)\n    .build();\n\nadminApi.products().deleteAttribute(Identifier.fromId(1), \"material\", options);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/attributes/{attributeGroupName}/unlock": {
      "post": {
        "operationId": "unlockProductAttributeGroup",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Unlock a attribute group for a product.",
        "description": "This endpoint can be used to unlock a attribute group for a product. \nWhen shopCountries are specified in the request payload, then the lock is removed only for the specified shop countries.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-products#unlock-a-product-attribute-group).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/ShopCountriesToUnlock"
                  },
                  {
                    "type": "object"
                  }
                ]
              },
              "examples": {
                "shop country specific unlock": {
                  "$ref": "#/components/examples/shopCountrySpecificUnlockRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Attribute group successfully unlocked for the product."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let shopCountriesToUnlock = {\n\"shopCountries\": [\n  {\n    \"shopKey\": \"ay\",\n    \"countryCode\": \"de\"\n  },\n  {\n    \"shopKey\": \"ay\",\n    \"countryCode\": \"fr\"\n  }\n]\n};\n\nclient.apis.Products.unlockAttributeGroup({productIdentifier: 1, attributeGroup: \"my-attribute-group\", requestBody: shopCountriesToUnlock});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCountry = new ShopCountryToUnlock();\n$shopCountry->setCountryCode(\"DE\");\n$shopCountry->setShopKey(\"ay\");\n$shopCountriesToUnlock = new ShopCountriesToUnlock();\n$shopCountriesToUnlock->setShopCountries([$shopCountry]);\n\n$adminApi->products->unlockAttributeGroup(Identifier::fromId(1), \"color\", $shopCountriesToUnlock);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var shopCountry = new ShopCountryToUnlock();\nshopCountry.setCountryCode(\"DE\");\nshopCountry.setShopKey(\"ay\");\nvar shopCountriesToUnlock = new ShopCountriesToUnlock();\nshopCountriesToUnlock.setShopCountries(Arrays.asList(shopCountry));\n\nadminApi.products().unlockAttributeGroup(Identifier.fromId(1), \"color\", shopCountriesToUnlock);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/variants/{variantIdentifier}/attributes": {
      "get": {
        "operationId": "getProductVariantAttributes",
        "x-rateLimit": {
          "scope": "productRead"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Get product variant attributes",
        "description": "This endpoint can be used to retrieve a collection of product variant attributes.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/overview#get-a-collection-of-variant-attributes).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of product variant attributes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Attribute"
                      }
                    }
                  }
                },
                "examples": {
                  "Attribute Collection": {
                    "$ref": "#/components/examples/AttributeCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Attributes.getProductVariantAttributes({productIdentifier: 1, variantIdentifier: 2});\nlet variantAttributes = response.body.entities;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$variantAttributeCollection = $adminApi->productVariants->allAttributes(Identifier::fromId(1), Identifier::fromId(2));\n$variantAttributes = $variantAttributeCollection->getEntities();\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<Attribute> variantAttributeCollection = adminApi.productVariants().allAttributes(Identifier.fromId(1), Identifier.fromId(2));\nList<Attribute> variantAttributes = variantAttributeCollection.getEntities();\n"
          }
        ]
      },
      "post": {
        "operationId": "updateOrCreateProductVariantAttribute",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Update or create a product variant attribute",
        "description": "This endpoint can be used to create a new product variant attribute. If an attribute with the same name has already been assigned to the product variant, then its value will be replaced with the given one.\n\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/overview#create-or-update-a-variant-attribute).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/IgnoreAttributeLocks"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Attribute"
              },
              "examples": {
                "Simple Attribute": {
                  "$ref": "#/components/examples/SimpleAttributeRequest"
                },
                "Simple List Attribute": {
                  "$ref": "#/components/examples/SimpleListAttributeRequest"
                },
                "Localized String Attribute": {
                  "$ref": "#/components/examples/LocalizedStringAttributeRequest"
                },
                "Localized String List Attribute": {
                  "$ref": "#/components/examples/LocalizedStringListAttributeRequest"
                },
                "Advanced Attribute": {
                  "$ref": "#/components/examples/AdvancedAttributeRequest"
                },
                "Advanced List Attribute": {
                  "$ref": "#/components/examples/AdvancedListAttributeRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product variant attribute was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Attribute"
                },
                "examples": {
                  "Simple Attribute": {
                    "$ref": "#/components/examples/SimpleAttributeResponse"
                  },
                  "Simple List Attribute": {
                    "$ref": "#/components/examples/SimpleListAttributeResponse"
                  },
                  "Localized String Attribute": {
                    "$ref": "#/components/examples/LocalizedStringAttributeResponse"
                  },
                  "Localized String List Attribute": {
                    "$ref": "#/components/examples/LocalizedStringListAttributeResponse"
                  },
                  "Advanced Attribute": {
                    "$ref": "#/components/examples/AdvancedAttributeResponse"
                  },
                  "Advanced List Attribute": {
                    "$ref": "#/components/examples/AdvancedListAttributeResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "// Simple Attribute\nlet attribute = {\n    \"name\": \"size\",\n    \"type\": \"simple\",\n    \"value\": \"M\"\n};\n\nlet response = await client.apis.Attributes.updateOrCreateProductVariantAttribute(\n    {productIdentifier: 1, variantIdentifier: 1},\n    {requestBody: attribute}\n);\n\nlet createdAttribute = response.body;\n\n// Simple List Attribute\nlet attribute = {\n    \"name\": \"season\",\n    \"type\": \"simpleList\",\n    \"value\": [\"autumn\", \"winter\"]\n};\n\nlet response = await client.apis.Attributes.updateOrCreateProductVariantAttribute(\n    {productIdentifier: 1, variantIdentifier: 1},\n    {requestBody: attribute}\n);\n\nlet createdAttribute = response.body;\n\n// Localized String Attribute\nlet attribute = {\n    \"name\": \"collection\",\n    \"type\": \"localizedString\",\n    \"value\": {\"de_DE\": \"einzigartig\", \"en_GB\": \"unique\"}\n};\n\nlet response = await client.apis.Attributes.updateOrCreateProductVariantAttribute(\n    {productIdentifier: 1, variantIdentifier: 1},\n    {requestBody: attribute}\n);\n\nlet createdAttribute = response.body;\n\n// Localized String List Attribute\nlet attribute = {\n    \"name\": \"color\",\n    \"type\": \"localizedStringList\",\n    \"value\": [\n        {\"de_DE\": \"weiß\", \"en_GB\": \"white\"},\n        {\"de_DE\": \"schwarz\", \"en_GB\": \"black\"},\n    ]\n};\n\nlet response = await client.apis.Attributes.updateOrCreateProductVariantAttribute(\n    {productIdentifier: 1, variantIdentifier: 1},\n    {requestBody: attribute}\n);\n\nlet createdAttribute = response.body;\n\n// Advanced Attribute\nlet attribute = {\n    \"name\": \"dimensions\",\n    \"type\": \"advanced\",\n    \"value\": {\n        \"height\": 100,\n        \"width\": 30,\n        \"unit\": \"cm\"\n    }\n};\n\nlet response = await client.apis.Attributes.updateOrCreateProductVariantAttribute(\n    {productIdentifier: 1, variantIdentifier: 1},\n    {requestBody: attribute}\n);\n\nlet createdAttribute = response.body;\n\n// Advanced List Attribute\nlet attribute = {\n  \"name\": \"material\",\n  \"type\": \"advancedList\",\n  \"value\": [\n      {\n          \"name\": \"wool\",\n          \"percentage\": 80\n      },\n      {\n          \"name\": \"cotton\",\n          \"percentage\": 20\n      }\n  ]   \n};\n\nlet response = await client.apis.Attributes.updateOrCreateProductVariantAttribute(\n  {productIdentifier: 1, variantIdentifier: 1},\n  {requestBody: attribute}\n);\n\nlet createdAttribute = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "// Simple Attribute\n$attribute = new Attribute();\n$attribute->name = 'size';\n$attribute->type = 'simple';\n$attribute->value = 'M';\n\n$createdAttribute = $adminApi->productVariants->updateOrCreateAttribute(\n    Identifier::fromId(1),\n    Identifier::fromId(1),\n    $attribute\n);\n\n// Simple List Attribute\n$attribute = new Attribute();\n$attribute->name = 'season';\n$attribute->type = 'simpleList';\n$attribute->value = ['autumn', 'winter'];\n\n$createdAttribute = $adminApi->productVariants->updateOrCreateAttribute(\n  Identifier::fromId(1),\n  Identifier::fromId(1),\n  $attribute\n);\n\n// Localized String Attribute\n$attribute = new Attribute();\n$attribute->name = 'collection';\n$attribute->type = 'localizedString';\n$attribute->value = ['de_DE' => 'einzigartig', 'en_GB' => 'unique'];\n\n$createdAttribute = $adminApi->productVariants->updateOrCreateAttribute(\n  Identifier::fromId(1),\n  Identifier::fromId(1),\n  $attribute\n);\n\n// Localized String List Attribute\n$attribute = new Attribute();\n$attribute->name = 'color';\n$attribute->type = 'localizedStringList';\n$attribute->value = [\n    ['de_DE' => 'weiß', 'en_GB' => 'white'],\n    ['de_DE' => 'schwarz', 'en_GB' => 'black'],\n];\n\n$createdAttribute = $adminApi->productVariants->updateOrCreateAttribute(\n    Identifier::fromId(1),\n    Identifier::fromId(1),\n    $attribute\n);\n\n// Advanced Attribute\n$attribute = new Attribute();\n$attribute->name = 'dimensions';\n$attribute->type = 'advanced';\n$attribute->value = [\n    'height' => 100,\n    'width' => 30,\n    'unit' => 'cm',\n];\n\n$createdAttribute = $adminApi->productVariants->updateOrCreateAttribute(\n    Identifier::fromId(1),\n    Identifier::fromId(1),\n    $attribute\n);\n\n// Advanced List Attribute\n$attribute = new Attribute();\n$attribute->name = 'material';\n$attribute->type = 'advancedList';\n$attribute->value = [\n    ['name' => 'wool', 'percentage' => 80],\n    ['name' => 'cotton', 'percentage' => 20],\n];\n\n$createdAttribute = $adminApi->productVariants->updateOrCreateAttribute(\n    Identifier::fromId(1),\n    Identifier::fromId(1),\n    $attribute\n);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "// Simple Attribute\nvar attribute = new Attribute();\nattribute.setName(\"size\");\nattribute.setType(AttributeType.VALUE_SIMPLE);\nattribute.setValue(\"M\");\n\nvar createdAttribute = adminApi.productVariants().updateOrCreateAttribute(\n    Identifier.fromId(1),\n    Identifier.fromId(1),\n    attribute\n);\n\n// Simple List Attribute\nvar seasons = new ArrayList<String>();\nseasons.add(\"autumn\");\nseasons.add(\"winter\");\n\nvar attribute = new Attribute();\nattribute.setName(\"season\");\nattribute.setType(AttributeType.VALUE_SIMPLELIST);\nattribute.setValue(seasons);\n\nvar createdAttribute = adminApi.productVariants().updateOrCreateAttribute(\n    Identifier.fromId(1),\n    Identifier.fromId(1),\n    attribute\n);\n\n// Localized String Attribute\nvar collection = new HashMap<String, String>();\ncollection.put(\"de_DE\", \"einzigartig\");\ncollection.put(\"en_GB\", \"unique\");\n\nvar attribute = new Attribute();\nattribute.setName(\"collection\");\nattribute.setType(AttributeType.VALUE_LOCALIZEDSTRING);\nattribute.setValue(collection);\n\nvar createdAttribute = adminApi.productVariants().updateOrCreateAttribute(\n    Identifier.fromId(1),\n    Identifier.fromId(1),\n    attribute\n);\n\n// Localized String List Attribute\nvar whiteColor = new HashMap<String, String>();\nwhiteColor.put(\"de_DE\", \"weiß\");\nwhiteColor.put(\"en_GB\", \"white\");\n\nvar blackColor = new HashMap<String, String>();\nblackColor.put(\"de_DE\", \"schwarz\");\nblackColor.put(\"en_GB\", \"black\");\n\nvar colors = new ArrayList<HashMap<String, String>>();\ncolors.add(whiteColor);\ncolors.add(blackColor);\n\nvar attribute = new Attribute();\nattribute.setName(\"color\");\nattribute.setType(AttributeType.VALUE_LOCALIZEDSTRINGLIST);\nattribute.setValue(colors);\n\nvar createdAttribute = adminApi.productVariants().updateOrCreateAttribute(\n    Identifier.fromId(1),\n    Identifier.fromId(1),\n    attribute\n);\n\n// Advanced Attribute\nvar dimensions = new HashMap<String, Object>();\ndimensions.put(\"height\", 100);\ndimensions.put(\"width\", 30);\ndimensions.put(\"unit\", \"cm\");\n\nvar attribute = new Attribute();\nattribute.setName(\"dimensions\");\nattribute.setType(AttributeType.VALUE_ADVANCED);\nattribute.setValue(dimensions);\n\nvar createdAttribute = adminApi.productVariants().updateOrCreateAttribute(\n    Identifier.fromId(1),\n    Identifier.fromId(1),\n    attribute\n);\n\n// Advanced List Attribute\nvar wool = new HashMap<String, Object>();\nwool.put(\"name\", \"wool\");\nwool.put(\"percentage\", 80);\n\nvar cotton = new HashMap<String, Object>();\ncotton.put(\"name\", \"cotton\");\ncotton.put(\"percentage\", 20);\n\nvar materials = new ArrayList<HashMap<String, Object>>();\nmaterials.add(wool);\nmaterials.add(cotton); \n\nvar attribute = new Attribute();\nattribute.setName(\"material\");\nattribute.setType(AttributeType.VALUE_ADVANCEDLIST);\nattribute.setValue(materials);\n\nvar createdAttribute = adminApi.productVariants().updateOrCreateAttribute(\n    Identifier.fromId(1),\n    Identifier.fromId(1),\n    attribute\n);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/variants/{variantIdentifier}/attributes/{attributeGroupName}": {
      "get": {
        "operationId": "getProductVariantAttribute",
        "x-rateLimit": {
          "scope": "productRead"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Get a product variant attribute",
        "description": "This endpoint can be used to get a product variant attribute.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/overview#get-a-variant-attribute).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          }
        ],
        "responses": {
          "200": {
            "description": "Product variant attribute",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Attribute"
                },
                "examples": {
                  "Simple Attribute": {
                    "$ref": "#/components/examples/SimpleAttributeResponse"
                  },
                  "Simple List Attribute": {
                    "$ref": "#/components/examples/SimpleListAttributeResponse"
                  },
                  "Localized String Attribute": {
                    "$ref": "#/components/examples/LocalizedStringAttributeResponse"
                  },
                  "Localized String List Attribute": {
                    "$ref": "#/components/examples/LocalizedStringListAttributeResponse"
                  },
                  "Advanced Attribute": {
                    "$ref": "#/components/examples/AdvancedAttributeResponse"
                  },
                  "Advanced List Attribute": {
                    "$ref": "#/components/examples/AdvancedListAttributeResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Attributes.getProductVariantAttribute({\n    productIdentifier: 1,\n    variantIdentifier: 2,\n    attributeGroupName: \"material\"\n});\n\nlet variantAttribute = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$variantAttribute = $adminApi->productVariants->getAttribute(Identifier::fromId(1), Identifier::fromId(2), 'material');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Attribute variantAttribute = adminApi.productVariants().getAttribute(Identifier.fromId(1), Identifier.fromId(2), \"material\");\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteProductVariantAttribute",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Delete a product variant attribute",
        "description": "This endpoint can be used to delete a product variant attribute of the given group.\nUse the `IgnoreAttributeLocks=true` query parameter to delete locked attributes.\n  Use the `LockAttributeGroup=true` query parameter to lock the attribute group.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/overview#delete-a-variant-attribute).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          },
          {
            "$ref": "#/components/parameters/IgnoreAttributeLocks"
          },
          {
            "$ref": "#/components/parameters/LockAttributeGroup"
          }
        ],
        "responses": {
          "204": {
            "description": "Product variant attribute was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "client.apis.Attributes.deleteProductVariantAttribute({\n    productIdentifier: 1,\n    variantIdentifier: 2,\n    attributeGroupName: \"material\",\n    ignoreAttributeLocks: true\n});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'ignoreAttributeLocks' => true\n];\n\n$adminApi->productVariants->deleteAttribute(Identifier::fromId(1), Identifier::fromId(2), 'material', $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n    .addOption(\"ignoreAttributeLocks\", true)\n    .build();\n\nadminApi.productVariants().deleteAttribute(Identifier.fromId(1), Identifier.fromId(2), \"material\", options);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/variants/{variantIdentifier}/attributes/{attributeGroupName}/unlock": {
      "post": {
        "operationId": "unlockProductVariantAttributeGroup",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Unlock a attribute group for a product variant.",
        "description": "This endpoint can be used to unlock a attribute group for a product variant. \nWhen shopCountries are specified in the request payload, then the lock is removed only for the specified shop countries.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/overview#unlock-a-product-variant-attribute-group).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/VariantIdentifier"
          },
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/ShopCountriesToUnlock"
                  },
                  {
                    "type": "object"
                  }
                ]
              },
              "examples": {
                "shop country specific unlock": {
                  "$ref": "#/components/examples/shopCountrySpecificUnlockRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Attribute group successfully unlocked for the product variant."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let shopCountriesToUnlock = {\n\"shopCountries\": [\n  {\n    \"shopKey\": \"ay\",\n    \"countryCode\": \"de\"\n  },\n  {\n    \"shopKey\": \"ay\",\n    \"countryCode\": \"fr\"\n  }\n]\n};\n\nclient.apis.productVariants.unlockAttributeGroup({productIdentifier: 1, VariantIdentifier: 1, attributeGroup: \"my-attribute-group\", requestBody: shopCountriesToUnlock});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCountry = new ShopCountryToUnlock();\n$shopCountry->setCountryCode(\"DE\");\n$shopCountry->setShopKey(\"ay\");\n$shopCountriesToUnlock = new ShopCountriesToUnlock();\n$shopCountriesToUnlock->setShopCountries([$shopCountry]);\n\n$adminApi->productVariants->unlockAttributeGroup(Identifier::fromId(1), Identifier::fromId(1), \"color\", $shopCountriesToUnlock);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var shopCountry = new ShopCountryToUnlock();\nshopCountry.setCountryCode(\"DE\");\nshopCountry.setShopKey(\"ay\");\nvar shopCountriesToUnlock = new ShopCountriesToUnlock();\nshopCountriesToUnlock.setShopCountries(Arrays.asList(shopCountry));\n\nadminApi.productVariants().unlockAttributeGroup(Identifier.fromId(1),  Identifier.fromId(1), \"color\", shopCountriesToUnlock);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/images/{imageIdentifier}/attributes": {
      "get": {
        "operationId": "getProductImageAttributes",
        "x-rateLimit": {
          "scope": "productRead"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Get product image attributes",
        "description": "This endpoint can be used to retrieve a collection of product image attributes.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-product-media-assets#get-a-collection-of-image-attributes).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/ImageIdentifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of product image attributes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Attribute"
                      }
                    }
                  }
                },
                "examples": {
                  "Attribute Collection": {
                    "$ref": "#/components/examples/SimpleAttributeCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Attributes.getProductImageAttributes({productIdentifier: 1, imageIdentifier: 2});\nlet imageAttributes = response.body.entities;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$imageAttributeCollection = $adminApi->productImages->allAttributes(Identifier::fromId(1), Identifier::fromId(2));\n$imageAttributes = $imageAttributeCollection->getEntities();\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<Attribute> imageAttributeCollection = adminApi.productImages().allAttributes(Identifier.fromId(1), Identifier.fromId(2));\nList<Attribute> imageAttributes = imageAttributeCollection.getEntities();\n"
          }
        ]
      },
      "post": {
        "operationId": "updateOrCreateProductImageAttribute",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Update or create a product image attribute",
        "description": "This endpoint can be used to create a new product image attribute. If an attribute with the same name has already been assigned to the image, then its value will be replaced with the given one.\n\n**Note** that product images do not support advanced or shared attributes.\n\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-product-media-assets#create-or-update-an-image-attribute).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/ImageIdentifier"
          },
          {
            "$ref": "#/components/parameters/IgnoreAttributeLocks"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Attribute"
              },
              "examples": {
                "Simple Attribute": {
                  "$ref": "#/components/examples/SimpleAttributeRequest"
                },
                "Simple List Attribute": {
                  "$ref": "#/components/examples/SimpleListAttributeRequest"
                },
                "Localized String Attribute": {
                  "$ref": "#/components/examples/LocalizedStringAttributeRequest"
                },
                "Localized String List Attribute": {
                  "$ref": "#/components/examples/LocalizedStringListAttributeRequest"
                },
                "Advanced Attribute": {
                  "$ref": "#/components/examples/AdvancedAttributeRequest"
                },
                "Advanced List Attribute": {
                  "$ref": "#/components/examples/AdvancedListAttributeRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product image attribute was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Attribute"
                },
                "examples": {
                  "Simple Attribute": {
                    "$ref": "#/components/examples/SimpleAttributeResponse"
                  },
                  "Simple List Attribute": {
                    "$ref": "#/components/examples/SimpleListAttributeResponse"
                  },
                  "Localized String Attribute": {
                    "$ref": "#/components/examples/LocalizedStringAttributeResponse"
                  },
                  "Localized String List Attribute": {
                    "$ref": "#/components/examples/LocalizedStringListAttributeResponse"
                  },
                  "Advanced Attribute": {
                    "$ref": "#/components/examples/AdvancedAttributeResponse"
                  },
                  "Advanced List Attribute": {
                    "$ref": "#/components/examples/AdvancedListAttributeResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "// Simple Attribute\nlet attribute = {\n    \"name\": \"size\",\n    \"type\": \"simple\",\n    \"value\": \"M\"\n};\n\nlet response = await client.apis.Attributes.updateOrCreateProductImageAttribute(\n    {productIdentifier: 1, imageIdentifier: 2},\n    {requestBody: attribute}\n);\n\nlet createdAttribute = response.body;\n\n// Simple List Attribute\nlet attribute = {\n  \"name\": \"season\",\n  \"type\": \"simpleList\",\n  \"value\": [\"autumn\", \"winter\"]\n};\n\nlet response = await client.apis.Attributes.updateOrCreateProductImageAttribute(\n  {productIdentifier: 1, imageIdentifier: 2},\n  {requestBody: attribute}\n);\n\nlet createdAttribute = response.body;\n\n// Localized String Attribute\nlet attribute = {\n  \"name\": \"collection\",\n  \"type\": \"localizedString\",\n  \"value\": {\"de_DE\": \"einzigartig\", \"en_GB\": \"unique\"}\n};\n\nlet response = await client.apis.Attributes.updateOrCreateProductImageAttribute(\n  {productIdentifier: 1, imageIdentifier: 2},\n  {requestBody: attribute}\n);\n\nlet createdAttribute = response.body;\n\n// Localized String List Attribute\nlet attribute = {\n  \"name\": \"color\",\n  \"type\": \"localizedStringList\",\n  \"value\": [\n      {\"de_DE\": \"weiß\", \"en_GB\": \"white\"},\n      {\"de_DE\": \"schwarz\", \"en_GB\": \"black\"},\n  ]\n};\n\nlet response = await client.apis.Attributes.updateOrCreateProductImageAttribute(\n  {productIdentifier: 1, imageIdentifier: 2},\n  {requestBody: attribute}\n);\n\nlet createdAttribute = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "// Simple Attribute\n$attribute = new Attribute();\n$attribute->name = 'size';\n$attribute->type = 'simple';\n$attribute->value = 'M';\n\n$createdAttribute = $adminApi->productImages->updateOrCreateAttribute(\n    Identifier::fromId(1),\n    Identifier::fromId(2),\n    $attribute\n);\n\n// Simple List Attribute\n$attribute = new Attribute();\n$attribute->name = 'season';\n$attribute->type = 'simpleList';\n$attribute->value = ['autumn', 'winter'];\n\n$createdAttribute = $adminApi->productImages->updateOrCreateAttribute(\n    Identifier::fromId(1),\n    Identifier::fromId(2),\n    $attribute\n);\n\n// Localized String Attribute\n$attribute = new Attribute();\n$attribute->name = 'collection';\n$attribute->type = 'localizedString';\n$attribute->value = ['de_DE' => 'einzigartig', 'en_GB' => 'unique'];\n\n$createdAttribute = $adminApi->productImages->updateOrCreateAttribute(\n    Identifier::fromId(1),\n    Identifier::fromId(2),\n    $attribute\n);\n\n// Localized String List Attribute\n$attribute = new Attribute();\n$attribute->name = 'color';\n$attribute->type = 'localizedStringList';\n$attribute->value = [\n    ['de_DE' => 'weiß', 'en_GB' => 'white'],\n    ['de_DE' => 'schwarz', 'en_GB' => 'black'],\n];\n\n$createdAttribute = $adminApi->productImages->updateOrCreateAttribute(\n    Identifier::fromId(1),\n    Identifier::fromId(2),\n    $attribute\n);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "// Simple Attribute\nvar attribute = new Attribute();\nattribute.setName(\"size\");\nattribute.setType(AttributeType.VALUE_SIMPLE);\nattribute.setValue(\"M\");\n\nvar createdAttribute = adminApi.productImages().updateOrCreateAttribute(\n    Identifier.fromId(1),\n    Identifier.fromId(2),\n    attribute\n);\n\n// Simple List Attribute\nvar seasons = new ArrayList<String>();\nseasons.add(\"autumn\");\nseasons.add(\"winter\");\n\nvar attribute = new Attribute();\nattribute.setName(\"season\");\nattribute.setType(AttributeType.VALUE_SIMPLELIST);\nattribute.setValue(seasons);\n\nvar createdAttribute = adminApi.productImages().updateOrCreateAttribute(\n    Identifier.fromId(1),\n    Identifier.fromId(2),\n    attribute\n);\n\n// Localized String Attribute\nvar collection = new HashMap<String, String>();\ncollection.put(\"de_DE\", \"einzigartig\");\ncollection.put(\"en_GB\", \"unique\");\n\nvar attribute = new Attribute();\nattribute.setName(\"collection\");\nattribute.setType(AttributeType.VALUE_LOCALIZEDSTRING);\nattribute.setValue(collection);\n\nvar createdAttribute = adminApi.productImages().updateOrCreateAttribute(\n    Identifier.fromId(1),\n    Identifier.fromId(2),\n    attribute\n);\n\n// Localized String List Attribute\nvar whiteColor = new HashMap<String, String>();\nwhiteColor.put(\"de_DE\", \"weiß\");\nwhiteColor.put(\"en_GB\", \"white\");\n\nvar blackColor = new HashMap<String, String>();\nblackColor.put(\"de_DE\", \"schwarz\");\nblackColor.put(\"en_GB\", \"black\");\n\nvar colors = new ArrayList<HashMap<String, String>>();\ncolors.add(whiteColor);\ncolors.add(blackColor);\n\nvar attribute = new Attribute();\nattribute.setName(\"color\");\nattribute.setType(AttributeType.VALUE_LOCALIZEDSTRINGLIST);\nattribute.setValue(colors);\n\nvar createdAttribute = adminApi.productImages().updateOrCreateAttribute(\n    Identifier.fromId(1),\n    Identifier.fromId(2),\n    attribute\n);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/images/{imageIdentifier}/attributes/{attributeGroupName}": {
      "get": {
        "operationId": "getProductImageAttribute",
        "x-rateLimit": {
          "scope": "productRead"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Get a product image attribute",
        "description": "This endpoint can be used to get a product image attribute.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-product-media-assets#get-an-image-attribute).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/ImageIdentifier"
          },
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          }
        ],
        "responses": {
          "200": {
            "description": "Product image attribute",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Attribute"
                },
                "examples": {
                  "Simple Attribute": {
                    "$ref": "#/components/examples/SimpleAttributeResponse"
                  },
                  "Simple List Attribute": {
                    "$ref": "#/components/examples/SimpleListAttributeResponse"
                  },
                  "Localized String Attribute": {
                    "$ref": "#/components/examples/LocalizedStringAttributeResponse"
                  },
                  "Localized String List Attribute": {
                    "$ref": "#/components/examples/LocalizedStringListAttributeResponse"
                  },
                  "Advanced Attribute": {
                    "$ref": "#/components/examples/AdvancedAttributeResponse"
                  },
                  "Advanced List Attribute": {
                    "$ref": "#/components/examples/AdvancedListAttributeResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Attributes.getProductImageAttribute({\n    productIdentifier: 1,\n    imageIdentifier: 2,\n    attributeGroupName: \"material\"\n});\n\nlet imageAttribute = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$imageAttribute = $adminApi->productImages->getAttribute(Identifier::fromId(1), Identifier::fromId(2), 'material');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Attribute imageAttribute = adminApi.productImages().getAttribute(Identifier.fromId(1), Identifier.fromId(2), \"material\");\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteProductImageAttribute",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Delete a product image attribute",
        "description": "This endpoint can be used to delete a product image attribute of the given group.\nUse the `IgnoreAttributeLocks=true` query parameter to delete locked attributes.\nUse the `lockAttributeGroup=true` query parameter to lock the deleted attribute group.\nSee more details in the [Developer Guide](/developer-guide/products/manage-product-media-assets#delete-an-image-attribute).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/ImageIdentifier"
          },
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          },
          {
            "$ref": "#/components/parameters/IgnoreAttributeLocks"
          },
          {
            "$ref": "#/components/parameters/LockAttributeGroup"
          }
        ],
        "responses": {
          "204": {
            "description": "Product image attribute was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "client.apis.Attributes.deleteProductImageAttribute({\n    productIdentifier: 1,\n    imageIdentifier: 2,\n    attributeGroupName: \"material\",\n    ignoreAttributeLocks: true\n});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'ignoreAttributeLocks' => true\n];\n\n$adminApi->productImages->deleteAttribute(Identifier::fromId(1), Identifier::fromId(2), 'material', $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n    .addOption(\"ignoreAttributeLocks\", true)\n    .build();\n\nadminApi.productImages().deleteAttribute(Identifier.fromId(1), Identifier.fromId(2), \"material\", options);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/images/{imageIdentifier}/attributes/{attributeGroupName}/unlock": {
      "post": {
        "operationId": "unlockProductImageAttributeGroup",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "Attributes"
        ],
        "summary": "Unlock a attribute group for a product image.",
        "description": "This endpoint can be used to unlock a attribute group for a product image. \nWhen shopCountries are specified in the request payload, then the lock is removed only for the specified shop countries.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/products/manage-product-media-assets#unlock-a-product-image-attribute-group).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/ImageIdentifier"
          },
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/ShopCountriesToUnlock"
                  },
                  {
                    "type": "object"
                  }
                ]
              },
              "examples": {
                "shop country specific unlock": {
                  "$ref": "#/components/examples/shopCountrySpecificUnlockRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Attribute group successfully unlocked for the product image."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let shopCountriesToUnlock = {\n\"shopCountries\": [\n  {\n    \"shopKey\": \"ay\",\n    \"countryCode\": \"de\"\n  },\n  {\n    \"shopKey\": \"ay\",\n    \"countryCode\": \"fr\"\n  }\n]\n};\n\nclient.apis.productImages.unlockAttributeGroup({productIdentifier: 1, imageIdentifier: 1, attributeGroup: \"background\", requestBody: shopCountriesToUnlock});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCountry = new ShopCountryToUnlock();\n$shopCountry->setCountryCode(\"DE\");\n$shopCountry->setShopKey(\"ay\");\n$shopCountriesToUnlock = new ShopCountriesToUnlock();\n$shopCountriesToUnlock->setShopCountries([$shopCountry]);\n\n$adminApi->productImages->unlockAttributeGroup(Identifier::fromId(1), Identifier::fromId(2), \"background\", $shopCountriesToUnlock);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var shopCountry = new ShopCountryToUnlock();\nshopCountry.setCountryCode(\"DE\");\nshopCountry.setShopKey(\"ay\");\nvar shopCountriesToUnlock = new ShopCountriesToUnlock();\nshopCountriesToUnlock.setShopCountries(Arrays.asList(shopCountry));\n\nadminApi.productImages().unlockAttributeGroup(Identifier.fromId(1),  Identifier.fromId(2), \"background\", shopCountriesToUnlock);\n"
          }
        ]
      }
    },
    "/products/{productIdentifier}/master-categories": {
      "put": {
        "operationId": "updateProductMasterCategories",
        "x-rateLimit": {
          "scope": "productWrite"
        },
        "x-resources": [
          "categories",
          "products"
        ],
        "tags": [
          "MasterCategories"
        ],
        "summary": "Update product master categories",
        "description": "This endpoint can be used to update the assigned master categories of a product.\nThis will affect all products sharing the same master.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-product-master-and-category-master-data#update-master-category).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductIdentifier"
          },
          {
            "$ref": "#/components/parameters/IgnoreCategoryLocks"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductMasterCategories"
              },
              "examples": {
                "Product Master Category": {
                  "$ref": "#/components/examples/ProductMasterCategoriesRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product master categories were successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ProductMasterCategories"
                      }
                    }
                  }
                },
                "examples": {
                  "Complete Product": {
                    "$ref": "#/components/examples/ProductMasterCategoriesResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let categories = {\n    paths: [\n        [\n            \"Fashion\",\n            \"Women\",\n            \"Shirts\"\n        ]\n    ]\n}\n\nlet response = await client.apis.MasterCategories.updateProductMasterCategories(\n    {\n        productIdentifier: 1,\n        ignoreCategoryLocks: true\n    },\n    {requestBody: categories}\n);\n\nlet updatedCategories = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$categories = new ProductMasterCategories();\n$categories->paths = [\n    [\n        'Fashion',\n        'Women',\n        'Shirts'\n    ]\n];\n\n$options = [\n    'ignoreCategoryLocks' => true\n];\n\n$updatedCategories = $adminApi->products->updateMasterCategories(1, $categories, $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var categories = new ProductMasterCategories();\nvar categoryPaths = new ArrayList<List<String>>();\nvar categoryPath = new ArrayList<String>();\n\ncategoryPath.add(\"Fashion\");\ncategoryPath.add(\"Women\");\ncategoryPath.add(\"Shirts\");\ncategoryPaths.add(categoryPath);\n\ncategories.setPaths(categoryPaths);\n\nApiOptions options = ApiOptions.builder()\n                               .addOption(\"ignoreCategoryLocks\", true)\n                               .build();\n\nvar updatedCategories = adminApi.products().updateMasterCategories(1, categories, options);\n"
          }
        ]
      }
    },
    "/attributes/{attributeGroupName}/translations": {
      "post": {
        "operationId": "updateOrCreateAttributeTranslations",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "attribute-groups"
        ],
        "tags": [
          "Translations"
        ],
        "summary": "Update or create simple attribute translations",
        "description": "This endpoint can be used to update or create simple attribute translations. A dictionary of locales and translations has to be provided.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/internationalization/translations/translate-product-data#create-simple-attribute-translations).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttributeTranslation"
              },
              "examples": {
                "Attribute Translations": {
                  "$ref": "#/components/examples/AttributeTranslationRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Attribute translations were successfully updated."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let translations = {\n    de_DE: \"deutsche Zeichenkette\",\n    en_GB: \"english string\"\n};\n\nadminApi.apis.Translations.updateOrCreateAttributeTranslations({attributeGroupName: \"color\"}, {requestBody: translations});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$translations = [\n    'de_DE' => 'deutsche Zeichenkette',\n    'en_GB' => 'english string'\n];\n\n$adminApi->attributeTranslations->updateOrCreate('color', $translations);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Map<String, String> translations = new HashMap<>();\ntranslations.put(\"de_DE\", \"deutsche Zeichenkette\");\ntranslations.put(\"en_GB\", \"english string\");\n\nadminApi.attributeTranslations().updateOrCreate(\"color\", translations);\n"
          }
        ]
      },
      "patch": {
        "operationId": "partialUpdateOrCreateAttributeTranslations",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "attribute-groups"
        ],
        "tags": [
          "Translations"
        ],
        "summary": "Partially update or create simple attribute translations",
        "description": "This endpoint can be used to partially update or create simple attribute translations. A dictionary of locales and translations has to be provided.\nTranslations for locales omitted in the payload are ignored.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/internationalization/translations/translate-product-data#partial-update-or-create-attribute-translations).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttributeTranslation"
              },
              "examples": {
                "Attribute Translations": {
                  "$ref": "#/components/examples/AttributeTranslationRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Attribute translations were successfully updated."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const translationDE = {\n    de_DE: \"deutsche Zeichenkette\"\n};\n\nadminApi.apis.Translations.partialUpdateOrCreateAttributeTranslations({attributeGroupName: \"color\"}, {requestBody: translationDE});\n\nconst translationGB = {\n    \"en_GB\": \"english string\"\n};\n\nadminApi.apis.Translations.partialUpdateOrCreateAttributeTranslations({attributeGroupName: \"color\"}, {requestBody: translationGB});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$translationDE = [\n    'de_DE' => 'deutsche Zeichenkette'\n];\n\n$adminApi->attributeTranslations->partialUpdateOrCreate('color', $translationDE);\n\n$translationGB = [\n      'en_GB' => 'english string'\n  ];\n\n  $adminApi->attributeTranslations->partialUpdateOrCreate('color', $translationGB);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Map<String, String> translationDE = new HashMap<>();\ntranslationDE.put(\"de_DE\", \"deutsche Zeichenkette\");\n\nadminApi.attributeTranslations().partialUpdateOrCreate(\"color\", translationDE);\n\nMap<String, String> translationGB = new HashMap<>();\ntranslationGB.put(\"en_GB\", \"deutsche english string\");\n\nadminApi.attributeTranslations().partialUpdateOrCreate(\"color\", translationGB);\n"
          }
        ]
      },
      "get": {
        "operationId": "getAttributeTranslations",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "attribute-groups"
        ],
        "tags": [
          "Translations"
        ],
        "summary": "Get attribute translations",
        "description": "This endpoint can be used to retrieve a collection of translations for a given simple attribute. Each entity is returned as a dictionary mapping locale to translation.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/internationalization/translations/translate-product-data#get-a-collection-of-attribute-translations).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          }
        ],
        "responses": {
          "200": {
            "description": "List of attribute translations",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AttributeTranslation"
                      }
                    }
                  }
                },
                "examples": {
                  "Attribute Translations": {
                    "$ref": "#/components/examples/AttributeTranslationCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.Translations.getAttributeTranslations({attributeGroupName: \"color\"});\nlet translations = response.body.entities;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$translationCollection = $adminApi->attributeTranslations->all('color');\n\nforeach ($translationCollection->getEntities() as $translationMap) {\n    foreach ($translationMap as $locale => $translation) {\n        echo $locale . ': ' . $translation;\n    }\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<Map<String, String>> translationCollection = adminApi.attributeTranslations().all(\"color\");\n\nfor (Map<String, String> translations : translationCollection.getEntities()) {\n    System.out.println(translations);\n}\n"
          }
        ]
      }
    },
    "/attributes/translations": {
      "post": {
        "operationId": "updateOrCreateAdvancedAttributeTranslations",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "attribute-groups"
        ],
        "tags": [
          "Translations"
        ],
        "summary": "Update, create or delete non-shared localized attribute translations",
        "description": "This endpoint can be used to update, create or delete translations of non-shared localized attributes. \nA dictionary of locales and translations has to be provided. The default locale is mandatory.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/internationalization/translations/translate-product-data#create-update-or-delete-advanced-attribute-translations).\nThis operation won't trigger webhook events.\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttributeTranslation"
              },
              "examples": {
                "AttributeTranslation": {
                  "$ref": "#/components/examples/AttributeTranslationRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Attribute translations were successfully updated."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let translations = {\n    de_DE: \"deutsche Zeichenkette\",\n    en_GB: \"english string\"\n};\n\nadminApi.apis.Translations.updateOrCreateAdvancedAttributeTranslations({requestBody: translations});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$translations = [\n    'de_DE' => 'deutsche Zeichenkette',\n    'en_GB' => 'english string'\n];\n\n$adminApi->attributeTranslations->updateOrCreateAdvanced($translations);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Map<String, String> translations = new HashMap<>();\ntranslations.put(\"de_DE\", \"deutsche Zeichenkette\");\ntranslations.put(\"en_GB\", \"english string\");\n\nadminApi.attributeTranslations().updateOrCreateAdvanced(translations);\n"
          }
        ]
      }
    },
    "/shops": {
      "post": {
        "operationId": "createShop",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "Shops"
        ],
        "summary": "Create a new shop",
        "description": "This endpoint can be used to create a new shop.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/manage-shops-api#create-your-first-shop).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Shop"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "countries": {
                        "type": "array",
                        "items": {
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/ShopCountry"
                            },
                            {
                              "type": "object",
                              "required": [
                                "countryCode",
                                "currencyCode",
                                "defaultLanguageCode",
                                "url"
                              ],
                              "properties": {
                                "currencyCode": {
                                  "nullable": false
                                }
                              }
                            }
                          ]
                        }
                      }
                    }
                  }
                ]
              },
              "examples": {
                "Minimal Shop": {
                  "$ref": "#/components/examples/MinimalShopRequestCreate"
                },
                "Complete Shop": {
                  "$ref": "#/components/examples/CompleteShopRequestCreate"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Shop was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Shop"
                },
                "examples": {
                  "Shop": {
                    "$ref": "#/components/examples/ShopResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newShop = {\n  \"key\": \"ms\",\n  \"name\": \"My Shop\",\n  \"priceGroupKey\": \"myPriceGroup\",\n  \"logoSource\": {\n    \"url\": \"https://example.com/logo.png\"\n  },\n  \"shopCategoryTreeId\": 1,\n  \"countries\": [\n    {\n      \"countryCode\": \"DE\",\n      \"currencyCode\": \"EUR\",\n      \"defaultLanguageCode\": \"de_DE\",\n      \"supportedLanguageCodes\": [\"de_DE\", \"en_GB\"],\n      \"url\": \"https://www.shop.de\"\n    }\n  ],\n  \"customData\": {\n      \"isValid\": true,\n      \"name\": 'ayou',\n      \"score\": 100,\n      \"some-json\": {\n          \"de_DE\": {\n              \"color\": \"weiss\"\n          },\n          \"en_GB\": {\n              \"color\": \"white\"\n          }\n      }\n  }\n};\n\nlet response = await client.apis.Shops.createShop({}, {requestBody: newShop});\nlet createdShop = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shop = new Shop();\n$shop->name = \"My Shop\";\n$shop->key = \"ms\";\n$shop->priceGroupKey = \"myPriceGroup\";\n\n$logo = new AssetSource();\n$logo->url = \"http://www.example.com/myLogo.png\";\n$shop->logoSource = $logo;\n$shop->shopCategoryTreeId = 1;\n\n$country = new ShopCountry();\n$country->countryCode = \"DE\";\n$country->currencyCode = \"EUR\";\n$country->defaultLanguageCode = \"de_DE\";\n$country->supportedLanguageCodes = \n  \"de_DE\",\n  \"en_GB\"\n];\n$country->url = \"http://www.example.com\";\n\n$shop->countries = [$country];\n$shop->customData = (object) [\n  'isValid' => true, \n  'name' => 'fcb', \n  'score' => 100, \n  'some-json' => [\n    'de_DE' => [\n      'color' => 'schwarz'\n    ],\n    'en_GB' => [\n      'color' => 'black'\n    ]\n  ]\n];\n\n$shop = $adminApi->shops->create($shop);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Shop shop = new Shop();\nshop.setName(\"My Shop\");\nshop.setKey(\"ms\");\nshop.setLogoUrl(\"http://www.example.com/myLogo.png\");\nshop.setPriceGroupKey(\"myPriceGroup\");\n\nvar logo = new AssetSource();\nlogo.setUrl(\"https://example.com/logo.png\");\nshop.setLogoSource(logo);\nshop.setShopCategoryTreeId(1);\n\nShopCountry country = new ShopCountry();\ncountry.setCountryCode(\"DE\");\ncountry.setCurrencyCode(\"EUR\");\ncountry.setDefaultLanguageCode(\"de_DE\");\n\nList<String> supportedLanguageCodes = new ArrayList<>();\nsupportedLanguageCodes.add(\"de_DE\");\nsupportedLanguageCodes.add(\"en_GB\");\ncountry.setSupportedLanguageCodes(supportedLanguageCodes);\n\ncountry.setUrl(\"http://www.example.com\");\n\nList<ShopCountry> countries = new ArrayList<>();\nshop.setCountries(countries);\n\nMap<String, String> deColor = new HashMap<>();\ndeColor.put(\"color\", \"schwarz\");\n\nMap<String, String> enColor = new HashMap<>();\nenColor.put(\"color\", \"black\");\n\n// Create the main map for the JSON\nMap<String, Map<String, String>> someJson = new HashMap<>();\nsomeJson.put(\"de_DE\", deColor);\nsomeJson.put(\"en_GB\", enColor);\n\nMap<String, Object> customData = new HashMap<>();\ncustomData.put(\"some-json\", someJson);\nshop.setCustomData(customData);\n\nshop = adminApi.shops().create(shop);\n"
          }
        ]
      },
      "get": {
        "operationId": "getShops",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "Shops"
        ],
        "summary": "Get shops for given filters",
        "description": "This endpoint can be used to retrieve a collection of shops. It is possible to refine the search by applying filters.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/manage-shops-api#fetch-multiple-shops).\n",
        "parameters": [
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "example": "?with=assortment",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "countries",
                  "countries.assortment",
                  "countries.warehouses",
                  "customData"
                ]
              }
            }
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/SortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/FilterPriceGroupKey"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "List of shops",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Shop"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Complete Shop Collection": {
                    "$ref": "#/components/examples/CompleteShopCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Shops.getShops({\n  \"filters[priceGroupKey]\": \"MyPriceGroupKey\"\n});\nlet shops = response.body.entities;\nshops.forEach((shop) => console.log(shop.name));\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'filters[priceGroupKey]' => 'MyPriceGroupKey'\n];\n\n$shopCollection = $adminApi->shops->all($options);\n\nforeach ($shopCollection->getEntities() as $shop) {\n    echo $shop->name;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"filters[priceGroupKey]\", \"MyPriceGroupKey\")\n                        .build();\n\nApiCollection<Shop> shopCollection = adminApi.shops().all(options);\n\nfor (Shop shop : shopCollection.getEntities()) {\n    System.out.println(shop.getName());\n}\n"
          }
        ]
      }
    },
    "/shops/{shopKey}": {
      "get": {
        "operationId": "getShop",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "Shops"
        ],
        "summary": "Get a shop by key",
        "description": "This endpoint can be used to get a single shop.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/manage-shops-api#get-a-single-shop).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "example": "?with=assortment",
            "explode": false,
            "schema": {
              "$ref": "#/paths/~1shops/get/parameters/0/schema"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A shop",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Shop"
                },
                "examples": {
                  "Complete Shop": {
                    "$ref": "#/components/examples/CompleteShopResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Shops.getShop({shopKey: \"ms\", with: \"countries.properties,countries.assortment\"});\nlet shop = response.body;\n\nshop.countries.forEach(\n    country => country.properties.forEach(\n        property => console.log(property.key + \": \" + property.value)\n    )\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'with' => 'countries.properties,countries.assortment'\n];\n\n$shop = $adminApi->shops->get(\"ms\", $options);\n\nforeach($shop->countries as $country) {\n    foreach ($country->properties as $property) {\n        echo $property->key . ': ' . $property->value . \"\\n\";\n    }\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"with\", \"countries.properties,countries.assortment\")\n                        .build();\n\nShop shop = adminApi.shops().get(\"ms\", options);\n\nfor (ShopCountry country : shop.getCountries()) {\n     for (ShopProperty property : country.getProperties()) {\n        System.out.println(property.getKey() + \": \" + property.getValue());\n     }\n}\n"
          }
        ]
      },
      "put": {
        "operationId": "updateShop",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "Shops"
        ],
        "summary": "Update an existing shop",
        "description": "This endpoint can be used to update/replace an existing shop. It does not support partial updates.\nIf you provide shop properties within the same request, they will get replaced.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/manage-shops-api#update-your-shop).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Shop"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "shopCategoryTreeId": {
                        "type": "integer",
                        "description": "Defines shop category tree id. Can be set only on creation.",
                        "example": 1,
                        "readOnly": true
                      },
                      "companyId": {
                        "type": "integer",
                        "description": "The ID of the company the shop is assigned to.",
                        "example": 1,
                        "readOnly": true
                      },
                      "priceGroupKey": {
                        "type": "string",
                        "nullable": true,
                        "description": "Key of the price group the shop is assigned to.",
                        "example": "myPriceGroup",
                        "readOnly": true
                      }
                    }
                  }
                ]
              },
              "examples": {
                "Minimal Shop": {
                  "$ref": "#/components/examples/MinimalShopRequestUpdate"
                },
                "Complete Shop": {
                  "$ref": "#/components/examples/CompleteShopRequestUpdate"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Shop was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Shop"
                },
                "examples": {
                  "Shop": {
                    "$ref": "#/components/examples/ShopResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Shops.getShop({shopKey: \"ms\"}); \nlet shop = response.body;\n\nshop.name = \"My Shop\";\n\nlet updateResponse = await client.apis.Shops.updateShop({shopKey: shop.key}, {requestBody: shop});\nlet updatedShop = updateResponse.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shop = $adminApi->shops->get(\"ms\");\n$shop->name = \"My Shop\";\n\n$shop = $adminApi->shops->update($shop->key, $shop);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Shop shop = adminApi.shops().get(\"ms\");\nshop.setName(\"My Shop\");\n\nshop = adminApi.shops().update(shop.getKey(), shop);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/assortment": {
      "put": {
        "operationId": "updateAssortment",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "Shops"
        ],
        "summary": "Update a shop country assortment",
        "description": "This method can be used to update/replace an assortment configuration for an existing shop country.\nIt does not support partial updates.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/merchants/interact-with-admin-api-in-multi-merchant-setup#update-assortment).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Assortment"
              },
              "examples": {
                "Assortment with include criteria": {
                  "$ref": "#/components/examples/AssortmentIncludeRequest"
                },
                "Assortment with exclude criteria": {
                  "value": {
                    "masterCategories": {
                      "exclude": [
                        [
                          "root",
                          "leaf"
                        ]
                      ]
                    },
                    "products": {
                      "exclude": [
                        4,
                        5,
                        6
                      ]
                    },
                    "attributes": [
                      {
                        "name": "color",
                        "exclude": [
                          "blue"
                        ]
                      }
                    ],
                    "merchantReferenceKeys": {
                      "exclude": [
                        "merchant-3"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Shop country assortment was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Assortment"
                },
                "examples": {
                  "Assortment": {
                    "$ref": "#/components/examples/AssortmentResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let assortment = {\n  masterCategories: {\n    include: [\n      [\n        \"root\",\n        \"leaf\"\n      ]\n    ]\n  },\n  products: {\n    include: [1,2,3]\n  },\n  attributes: [\n    {\n      name: \"color\",\n      include: [\"red\"]\n    }\n  ],\n  merchantReferenceKeys: {\n    include: [\"merchant-1\", \"merchant-2\"]\n  }\n};\n\nlet response = await adminApi.apis.Shops.updateAssortment({shopKey: \"ms\", countryCode: \"DE\"}, {requestBody: assortment});\nlet updatedAssortment = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$assortment = new Assortment();\n\n$masterCategories = new MasterCategoryAssortmentConfiguration();\n$masterCategories->include = [\n    [\n        \"root\",\n        \"leaf\"\n    ]\n];\n\n$products = new ProductAssortmentConfiguration();\n$products->include = [1, 2, 3];\n\n$attribute = new AttributeAssortmentConfiguration();\n$attribute->name = \"color\";\n$attribute->include = [\"red\"];\n\n$merchants = new MerchantAssortmentConfiguration();\n$merchants->include = [\"merchant-1\", \"merchant-2\"];\n\n$assortment->masterCategories = $masterCategories;\n$assortment->products = $products;\n$assortment->attributes = [ $attribute ];\n$assortment->merchantReferenceKeys = $merchants;\n\n$assortment = $adminApi->shopCountries->updateAssortment(\"ms\", \"DE\", $assortment);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "MasterCategoryAssortmentConfiguration masterCategories = new MasterCategoryAssortmentConfiguration();\nList<List<String>> categoryInclude = new ArrayList<>();\n\nList<String> firstCategoryPath = new ArrayList<>();\nfirstCategoryPath.add(\"root\");\nfirstCategoryPath.add(\"leaf\");\n\ncategoryInclude.add(firstCategoryPath);\nmasterCategories.setInclude(categoryInclude);\n\nProductAssortmentConfiguration products = new ProductAssortmentConfiguration();\nList<Integer> productInclude = new ArrayList<>();\n\nproductInclude.add(1);\nproductInclude.add(2);\nproductInclude.add(3);\nproducts.setInclude(productInclude);\n\nAttributeAssortmentConfiguration attribute = new AttributeAssortmentConfiguration();\nList<String> attributeInclude = new ArrayList<>();\n\nattributeInclude.add(\"red\");\n\nattribute.setName(\"color\");\nattribute.setInclude(attributeInclude);\n\nList<AttributeAssortmentConfiguration> attributes = new ArrayList<>();\nattributes.add(attribute);\n\nMerchantAssortmentConfiguration merchants = new MerchantAssortmentConfiguration();\nList<String> merchantInclude = new ArrayList<>();\nmerchantInclude.add(\"merchant-1\");\nmerchantInclude.add(\"merchant-2\");\n\nmerchants.setInclude(merchantInclude);\n\nAssortment assortment = new Assortment();\nassortment.setMasterCategories(masterCategories);\nassortment.setProducts(products);\nassortment.setAttributes(attributes);\nassortment.setMerchantReferenceKeys(merchants);\n\nassortment = adminApi.shopCountries().updateAssortment(\"ms\", \"DE\", assortment);\n"
          }
        ]
      },
      "patch": {
        "operationId": "partiallyUpdateAssortment",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "Shops"
        ],
        "summary": "Update a shop country assortment",
        "description": "This method can be used to update/replace an assortment configuration for an existing shop country.\nIt supports partial updates by adding and/or removing identifiers to/from the respective fields.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/merchants/interact-with-admin-api-in-multi-merchant-setup#update-assortment).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialAssortment"
              },
              "examples": {
                "Full example payload": {
                  "$ref": "#/components/examples/PartialAssortmentFullRequest"
                },
                "Adding a new category to categories include list": {
                  "$ref": "#/components/examples/PartialAssortmentMasterCategoriesInclude"
                },
                "Adding product ids 1 & 2 to include list and removing product id 3 from exclude list": {
                  "$ref": "#/components/examples/PartialAssortmentProductsIncludeAndExclude"
                },
                "Removing color \"silver\" from attributes exclude list and adding it to attributes include list": {
                  "$ref": "#/components/examples/PartialAssortmentAttributesIncludeAndExclude"
                },
                "Adding merchants \"m1\" and \"m2\" to the merchants exclude list": {
                  "$ref": "#/components/examples/PartialAssortmentMerchantReferenceKeysExclude"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Shop country assortment was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Assortment"
                },
                "examples": {
                  "Assortment": {
                    "$ref": "#/components/examples/AssortmentResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let assortment = {\n  \"masterCategories\": {\n    \"include\": {\n      \"add\": [\n        [\n          \"root\",\n          \"node1\",\n          \"node2\",\n          \"leaf\"\n        ]\n      ]\n    }\n  },\n  \"products\": {\n    \"include\": {\n      \"add\": [1, 2]\n    },\n    \"exclude\": {\n      \"remove\": [3] \n    }\n  },\n  \"attributes\": [\n    {\n      \"name\": \"color\",\n      \"include\": {\n        \"add\": [\"silver\"]\n      }\n    }\n  ],\n  \"merchantReferenceKeys\": {\n    \"exclude\": {\n      \"add\": [\n        \"m1\",\n        \"m2\"\n      ]\n    }\n  }\n};\n\nlet response = await adminApi.apis.Shops.updateAssortment({shopKey: \"ms\", countryCode: \"DE\"}, {requestBody: assortment});\nlet updatedAssortment = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$partialAssortment = new PartialAssortment();\n\n$partialAssortment->masterCategories = new PartialMasterCategoryAssortmentConfiguration();\n$partialAssortment->masterCategories->include = new PartialMasterCategoryAssortmentConfigurationInclude();\n$partialAssortment->masterCategories->include->add = [\n    [\n        'root',\n        'node1',\n        'node2',\n        'leaf',\n    ],\n];\n\n$partialAssortment->products = new PartialProductAssortmentConfiguration();\n$partialAssortment->products->include = new PartialProductAssortmentConfigurationInclude();\n$partialAssortment->products->include->add = [1, 2];\n$partialAssortment->products->exclude = new PartialProductAssortmentConfigurationExclude();\n$partialAssortment->products->exclude->remove = [3];\n\n$partialAttributeAssortmentConfig = new PartialAttributeAssortmentConfiguration();\n$partialAttributeAssortmentConfig->name = 'color';\n$partialAttributeAssortmentConfig->include = new PartialAttributeAssortmentConfigurationInclude();\n$partialAttributeAssortmentConfig->include->add = ['silver'];\n\n$partialAssortment->attributes = [$partialAttributeAssortmentConfig];\n\n$partialAssortment->merchantReferenceKeys = new PartialMerchantAssortmentConfiguration();\n$partialAssortment->merchantReferenceKeys->exclude = new PartialMerchantAssortmentConfigurationExclude();\n$partialAssortment->merchantReferenceKeys->exclude->add = ['m1', 'm2'];\n\n$adminApi->shopCountries->partiallyUpdateAssortment('ms', 'DE', $partialAssortment);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "PartialAssortment partialAssortment = new PartialAssortment();\n\nList<String> firstCategoryPath = new ArrayList<>();\nfirstCategoryPath.add(\"root\");\nfirstCategoryPath.add(\"node1\");\nfirstCategoryPath.add(\"node2\");\nfirstCategoryPath.add(\"leaf\");\n\nList<List<String>> categoryIncludeAdd = new ArrayList<>();\ncategoryIncludeAdd.add(firstCategoryPath);\n\nPartialMasterCategoryAssortmentConfigurationInclude partialMasterCategoryAssortmentConfigurationInclude = new PartialMasterCategoryAssortmentConfigurationInclude();\npartialMasterCategoryAssortmentConfigurationInclude.setAdd(categoryIncludeAdd);\n\nPartialMasterCategoryAssortmentConfiguration partialMasterCategoryAssortmentConfiguration = new PartialMasterCategoryAssortmentConfiguration();\npartialMasterCategoryAssortmentConfiguration.setInclude(partialMasterCategoryAssortmentConfigurationInclude);\n\npartialAssortment.setMasterCategories(partialMasterCategoryAssortmentConfiguration);\n\nList<Integer> productsIncludeAdd = new ArrayList<>();\nproductsIncludeAdd.add(1);\nproductsIncludeAdd.add(2);\n\nList<Integer> productExcludeRemove = new ArrayList<>();\nproductExcludeRemove.add(3);\n\nPartialProductAssortmentConfigurationInclude partialProductAssortmentConfigurationInclude = new PartialProductAssortmentConfigurationInclude();\npartialProductAssortmentConfigurationInclude.setAdd(productsIncludeAdd);\n\nPartialProductAssortmentConfigurationExclude partialProductAssortmentConfigurationExclude = new PartialProductAssortmentConfigurationExclude();\npartialProductAssortmentConfigurationExclude.setRemove(productExcludeRemove);\n\nPartialProductAssortmentConfiguration partialProductAssortmentConfiguration = new PartialProductAssortmentConfiguration();\npartialProductAssortmentConfiguration.setInclude(partialProductAssortmentConfigurationInclude);\npartialProductAssortmentConfiguration.setExclude(partialProductAssortmentConfigurationExclude);\n\npartialAssortment.setProducts(partialProductAssortmentConfiguration);\n\nList<String> attribute = new ArrayList<>();\nattribute.add(\"silver\");\n\nPartialAttributeAssortmentConfigurationInclude partialAttributeAssortmentConfigurationInclude = new PartialAttributeAssortmentConfigurationInclude();\npartialAttributeAssortmentConfigurationInclude.setAdd(attribute);\n\nPartialAttributeAssortmentConfiguration partialAttributeAssortmentConfiguration = new PartialAttributeAssortmentConfiguration();\npartialAttributeAssortmentConfiguration.setName(\"color\");\npartialAttributeAssortmentConfiguration.setInclude(partialAttributeAssortmentConfigurationInclude);\n\nList<PartialAttributeAssortmentConfiguration> attributes = new ArrayList<>();\nattributes.add(partialAttributeAssortmentConfiguration);\n\npartialAssortment.setAttributes(attributes);\n\nList<String> merchantExclude = new ArrayList<>();\nmerchantExclude.add(\"m1\");\nmerchantExclude.add(\"m2\");\n\nPartialMerchantAssortmentConfigurationExclude partialMerchantAssortmentConfigurationExclude = new PartialMerchantAssortmentConfigurationExclude();\npartialMerchantAssortmentConfigurationExclude.setAdd(merchantExclude);\n\nPartialMerchantAssortmentConfiguration partialMerchantAssortmentConfiguration = new PartialMerchantAssortmentConfiguration();\npartialMerchantAssortmentConfiguration.setExclude(partialMerchantAssortmentConfigurationExclude);\n\npartialAssortment.setMerchantReferenceKeys(partialMerchantAssortmentConfiguration);\n\nAssortment assortment = adminApi.shopCountries().partiallyUpdateAssortment(\"ms\", \"DE\", partialAssortment);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/redirects": {
      "get": {
        "operationId": "getRedirects",
        "tags": [
          "Redirects"
        ],
        "x-rateLimit": {
          "scope": "redirectsRead"
        },
        "x-resources": [
          "shop-redirects"
        ],
        "summary": "Get redirects based on the given filters.",
        "description": "This endpoint can be used to get a list of redirects.\n\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/redirects#list-redirects).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "name": "with",
            "in": "query",
            "description": "comma separated list of relations that should be included in the response",
            "example": "?with=parent",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "parent"
                  ]
                }
              }
            }
          },
          {
            "$ref": "#/components/parameters/FilterSearch"
          },
          {
            "$ref": "#/components/parameters/FilterId"
          },
          {
            "$ref": "#/components/parameters/RedirectsSortBy"
          },
          {
            "$ref": "#/components/parameters/RedirectsSortDir"
          },
          {
            "$ref": "#/components/parameters/RedirectsLimit"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of redirects",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Redirect"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Redirects": {
                    "$ref": "#/components/examples/RedirectResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Redirects.getRedirects({\n    shopKey: 'ms',\n    with: 'parent',\n    \"filters[id]\": \"10,11,12\"\n});\n\nlet redirects = response.body.entities;\n\nredirects.forEach(\n    redirect => console.log(redirect.id)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'with' => 'parent',\n    'filters[id]' => '10,11,12',\n];\n\n$redirectsCollection = $adminApi->redirects->all('ms', $options);\n\nforeach ($redirectsCollection->getEntities() as $redirect) {\n    echo $redirect->id;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"with\", \"parent\")\n                        .addOption(\"filters[id]\", \"10,11,12\")\n                        .build();\n\nApiCollection<Redirect> redirectCollection = adminApi.redirects().all(\"ms\", options);\n\nfor (Redirect redirect : redirectCollection.getEntities()) {\n      System.out.println(redirect.getId());\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "createRedirect",
        "tags": [
          "Redirects"
        ],
        "summary": "Create a redirect.",
        "x-rateLimit": {
          "scope": "redirectsWrite"
        },
        "x-resources": [
          "shop-redirects"
        ],
        "description": "This endpoint can be used to create a redirect.\n\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/redirects#create-a-new-redirect).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "source",
                      "target",
                      "statusCode",
                      "isRegex",
                      "priority"
                    ],
                    "properties": {
                      "parent": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/Redirect"
                          },
                          {
                            "type": "object",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "parent": {
                                "readOnly": true
                              },
                              "source": {
                                "readOnly": true
                              },
                              "target": {
                                "readOnly": true
                              },
                              "statusCode": {
                                "readOnly": true
                              },
                              "isRegex": {
                                "readOnly": true
                              },
                              "priority": {
                                "readOnly": true
                              }
                            }
                          }
                        ]
                      }
                    }
                  },
                  {
                    "$ref": "#/components/schemas/Redirect"
                  }
                ]
              },
              "examples": {
                "CreateRedirectRequest": {
                  "$ref": "#/components/examples/CreateRedirectRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Redirect was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Redirect"
                },
                "examples": {
                  "CreateRedirectResponse": {
                    "$ref": "#/components/examples/CreateRedirectResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "422": {
            "description": "Unprocessable content",
            "content": {
              "application/json": {
                "schema": {
                  "title": "UnprocessableResponse",
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "errors": [
                    {
                      "errorKey": "BAD_REQUEST_ERROR",
                      "message": "AdminApi: Please validate the request parameters.",
                      "context": null,
                      "model": {
                        "code": "testcode",
                        "constraints": null,
                        "date": {
                          "max": "2021-12-23T11:30:58.000000Z",
                          "min": "2021-01-23T11:30:58.000000Z"
                        },
                        "isValidOnCampaigns": true,
                        "maxApplications": {
                          "count": 1,
                          "restriction": "customer"
                        },
                        "orderValue": {
                          "max": 200000,
                          "min": 7500
                        },
                        "name": "Testvoucher",
                        "status": "active",
                        "summary": "Voucher utilised for automated for testing",
                        "type": "relative",
                        "value": 0.1,
                        "criteria": null
                      }
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newRedirect = {\n  \"source\": \"https://google.com\",\n  \"target\": \"https://google2.com\",\n  \"statusCode\": 302,\n  \"parent\": {\n    \"id\": 2,\n  },\n  \"isRegex\": false,\n  \"priority\": 1\n};\n\nlet response = await client.apis.Redirects.createRedirect({}, {requestBody: newRedirect});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$redirect = new Redirect();\n$redirect->source = \"https://google.com\";\n$redirect->target = \"https://google2.com\";\n$redirect->statusCode = 302;\n$redirect->parent = (object)['id' => 2];\n$redirect->isRegex = false;\n$redirect->priority = 1;\n\n$createdRedirect = $adminApi->redirects->create($redirect);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Redirect redirect = new Redirect();\nredirect.setSource(\"https://google.com\");\nredirect.setTarget(\"https://google2.com\");\nredirect.setStatusCode(302);\nredirect.setIsRegex(false);\nredirect.setPriority(10);\n\nRedirect createdRedirect = adminApi.redirects().create(redirect);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/redirects/bulk": {
      "put": {
        "operationId": "createOrUpdateRedirects",
        "tags": [
          "Redirects"
        ],
        "x-rateLimit": {
          "scope": "redirectsWrite"
        },
        "x-resources": [
          "shop-redirects"
        ],
        "summary": "create or update redirects",
        "description": "This endpoint can be used to create or update redirects in bulk.\nThe endpoint supports partial operations. If some or all operations fail, the failed entries will be included in the response. If all operations succeed, the response will contain an empty array.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/redirects#bulk-create-redirects).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "minItems": 1,
                "maxItems": 1000,
                "items": {
                  "allOf": [
                    {
                      "type": "object",
                      "required": [
                        "target",
                        "statusCode",
                        "isRegex",
                        "priority"
                      ],
                      "properties": {
                        "parent": {
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/Redirect"
                            },
                            {
                              "type": "object",
                              "required": [
                                "id"
                              ],
                              "properties": {
                                "parent": {
                                  "readOnly": true
                                },
                                "source": {
                                  "readOnly": true
                                },
                                "target": {
                                  "readOnly": true
                                },
                                "statusCode": {
                                  "readOnly": true
                                },
                                "isRegex": {
                                  "readOnly": true
                                },
                                "priority": {
                                  "readOnly": true
                                }
                              }
                            }
                          ]
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/Redirect"
                    }
                  ]
                }
              },
              "examples": {
                "CreateOrUpdateRedirectsRequest": {
                  "$ref": "#/components/examples/CreateOrUpdateRedirectsRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Redirects have been successfully created/updated.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Redirect"
                      }
                    }
                  }
                },
                "examples": {
                  "partialSuccess": {
                    "$ref": "#/components/examples/CreateOrUpdateRedirectsPartialSuccessResponse"
                  },
                  "success": {
                    "$ref": "#/components/examples/CreateOrUpdateRedirectsSuccessResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const redirects = [\n  {\n    \"source\": \"https://source.com\",\n    \"target\": \"https://target.com\",\n    \"status\": 301,\n    \"isRegex\": false,\n    \"priority\": 1\n  },\n  {\n    \"redirectId\": 123,\n    \"parent\": {\n      \"id\": 1\n    },\n    \"target\": \"https://target2.com\",\n    \"status\": 302,\n    \"isRegex\": false,\n    \"priority\": 2\n  }\n];\n\nconst response = await client.apis.Redirects.createOrUpdateRedirects({\n    shopKey: 'ms'\n}, {\n  requestBody: redirects,\n});\n\nconst failedRedirects = response.body.entities;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$redirects = [];\n\n$redirect1 = new Redirect();\n$redirect1->source = 'https://source.com';\n$redirect1->target = 'https://target.com';\n$redirect1->status = 301;\n$redirect1->isRegex = false;\n$redirect1->priority = 1;\n\n$redirect2 = new Redirect();\n$redirect2->redirectId = 123;\n$redirect2->parent = new Redirect();\n$redirect2->parent->id = 1;\n$redirect2->target = 'https://target2.com';\n$redirect2->status = 302;\n$redirect2->isRegex = false;\n$redirect2->priority = 2;\n\n$redirects[] = $redirect1;\n$redirects[] = $redirect2;\n\n$failedRedirects = $adminApi->redirects->createOrUpdateBulk(\"ms\", $redirects)->getEntities();\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "List<Redirect> redirects = new ArrayList<>();\n\nRedirect redirect1 = new Redirect();\nredirect1.source = \"https://source.com\";\nredirect1.target = \"https://target.com\";\nredirect1.status = 301;\nredirect1.isRegex = false;\nredirect1.priority = 1;\n\nRedirect redirect2 = new Redirect();\nredirect2.redirectId = 123;\nredirect2.parent = new Redirect();\nredirect2.parent.id = 1;\nredirect2.target = \"https://target2.com\";\nredirect2.status = 302;\nredirect2.isRegex = false;\nredirect2.priority = 2;\n\nredirects.add(redirect1);\nredirects.add(redirect2);\n\nList<Redirect> failedRedirects = adminApi.redirects().createOrUpdateBulk(\"ms\", redirects).getEntities();\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteRedirects",
        "tags": [
          "Redirects"
        ],
        "x-rateLimit": {
          "scope": "redirectsWrite"
        },
        "x-resources": [
          "shop-redirects"
        ],
        "summary": "delete redirects",
        "description": "This endpoint can be used to delete redirects in bulk.\n\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/redirects#bulk-delete-redirects).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "minItems": 1,
                "maxItems": 1000,
                "items": {
                  "allOf": [
                    {
                      "type": "object",
                      "required": [
                        "id"
                      ],
                      "properties": {
                        "parent": {
                          "readOnly": true
                        },
                        "source": {
                          "readOnly": true
                        },
                        "target": {
                          "readOnly": true
                        },
                        "statusCode": {
                          "readOnly": true
                        },
                        "isRegex": {
                          "readOnly": true
                        },
                        "priority": {
                          "readOnly": true
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/Redirect"
                    }
                  ]
                }
              },
              "examples": {
                "DeleteRedirectsBulkRequest": {
                  "$ref": "#/components/examples/DeleteRedirectsBulkRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "The redirects have been successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const redirects = [\n  {\n    \"id\": 1\n  },\n  {\n    \"id\": 2\n  },\n  {\n    \"id\": 3\n  }\n];\n\nawait client.apis.Redirects.deleteRedirects({\n    shopKey: 'ms'\n}, {\n  requestBody: redirects,\n});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$redirect1 = new Redirect();\n$redirect1->id = 1;\n\n$redirect2 = new Redirect();\n$redirect2->id = 2;\n\n$redirect3 = new Redirect();\n$redirect3->id = 3;\n\n$adminApi->redirects->deleteBulk(\"ms\", [$redirect1, $redirect2, $redirect3]);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "List<Redirect> redirects = new ArrayList<>();\n\nRedirect redirect1 = new Redirect();\nredirect1.id = 1;\n\nRedirect redirect2 = new Redirect();\nredirect2.id = 2;\n\nRedirect redirect3 = new Redirect();\nredirect3.id = 3;\n\nredirects.add(redirect1);\nredirects.add(redirect2);\nredirects.add(redirect3);\n\nadminApi.redirects().deleteBulk(\"ms\", redirects);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/redirects/{redirectId}": {
      "delete": {
        "operationId": "deleteRedirect",
        "tags": [
          "Redirects"
        ],
        "x-rateLimit": {
          "scope": "redirectsWrite"
        },
        "x-resources": [
          "shop-redirects"
        ],
        "summary": "Delete a redirect.",
        "description": "This endpoint can be used to delete a redirect.\n\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/redirects#delete-an-existing-redirect).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/RedirectId"
          }
        ],
        "responses": {
          "204": {
            "description": "Redirect was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "client.apis.Redirects.deleteRedirect({redirectId: 1});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->Redirects->delete(1);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.Redirects().delete(1);\n"
          }
        ]
      },
      "put": {
        "operationId": "updateRedirect",
        "tags": [
          "Redirects"
        ],
        "x-rateLimit": {
          "scope": "redirectsWrite"
        },
        "x-resources": [
          "shop-redirects"
        ],
        "summary": "Update a redirect.",
        "description": "This endpoint can be used to update a redirect.\n\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/redirects#update-an-existing-redirect).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/RedirectId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "source",
                      "target",
                      "statusCode",
                      "isRegex",
                      "priority"
                    ],
                    "properties": {
                      "parent": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/Redirect"
                          },
                          {
                            "type": "object",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "parent": {
                                "readOnly": true
                              },
                              "source": {
                                "readOnly": true
                              },
                              "target": {
                                "readOnly": true
                              },
                              "statusCode": {
                                "readOnly": true
                              },
                              "isRegex": {
                                "readOnly": true
                              },
                              "priority": {
                                "readOnly": true
                              }
                            }
                          }
                        ]
                      }
                    }
                  },
                  {
                    "$ref": "#/components/schemas/Redirect"
                  }
                ]
              },
              "examples": {
                "UpdateRedirectRequest": {
                  "$ref": "#/components/examples/UpdateRedirectRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Redirect was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Redirect"
                },
                "examples": {
                  "UpdateRedirectResponse": {
                    "$ref": "#/components/examples/UpdateRedirectResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newRedirect = {\n     source: \"https://google2.com\"\n  };\n\n let response = await client.apis.Redirects.update({redirectIdentifier: 1}, {requestBody: newRedirect});\n let updatedRedirect = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$newRedirect = new Redirect();\n$newRedirect->source = 'https://google2.com';\n\n$updatedRedirect = $adminApi->redirects->update(Identifier::fromId(1), $newRedirect);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Redirect newRedirect = new Redirect();\nnewRedirect.setSource('https://google2.com');\nRedirect updatedRedirect = adminApi.redirects().update(Identifier.fromId(1), newRedirect);\n"
          }
        ]
      }
    },
    "/attribute-groups": {
      "get": {
        "operationId": "getAttributeGroups",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "attribute-groups"
        ],
        "tags": [
          "AttributeGroups"
        ],
        "summary": "Get attribute groups for given filters",
        "description": "This endpoint can be used to retrieve a collection of attribute groups. It is possible to refine the search by applying filters.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/products/product-schema-and-structure#get-attribute-group-collection).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/FilterId"
          },
          {
            "$ref": "#/components/parameters/FilterMinId"
          },
          {
            "$ref": "#/components/parameters/FilterMaxId"
          },
          {
            "$ref": "#/components/parameters/SortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          },
          {
            "name": "filters[level]",
            "in": "query",
            "description": "Filter attribute groups by level.",
            "schema": {
              "type": "string",
              "enum": [
                "product",
                "variant",
                "master",
                "image",
                "brand",
                "category"
              ]
            },
            "example": "product"
          },
          {
            "name": "filters[type]",
            "in": "query",
            "description": "Filter attribute groups by type.",
            "schema": {
              "type": "string",
              "enum": [
                "simple",
                "simpleList",
                "localizedString",
                "localizedStringList",
                "advanced",
                "advancedList"
              ]
            },
            "example": "simple"
          }
        ],
        "responses": {
          "200": {
            "description": "List of attribute groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AttributeGroup"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Attribute Group Collection": {
                    "$ref": "#/components/examples/AttributeGroupCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.AttributeGroups.getAttributeGroups({\"filters[type]\": \"simple\"});\nlet attributeGroups = response.body.entities;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'filters[type]' => 'simple'\n];\n\n$attributeGroupCollection = $adminApi->attributeGroups->all($options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n .addOption(\"filters[type]\", \"simple\")\n .build();\n\nApiCollection<AttributeGroup> attributeGroupCollection = adminApi.attributeGroups().all(options);\n"
          }
        ]
      },
      "post": {
        "operationId": "createAttributeGroup",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "attribute-groups"
        ],
        "tags": [
          "AttributeGroups"
        ],
        "summary": "Create a new attribute group",
        "description": "This endpoint is used to create an attribute group.\nFor more details, refer to the [Developer Guide](/en/core-documentation/developer-guide/products/product-schema-and-structure#create-attribute-group).\n  \nOnce a group is created, you can add new attributes to the following entities:\n* [product masters](/en/api-guides/admin-api/resources/product-master-attributes/create-or-update-master-attribute)\n* [products](/en/api-guides/admin-api/resources/product-attributes/create-or-update-attributes)\n* [variants](/en/api-guides/admin-api/resources/product-variant-attributes/create-or-update-product-variant-attributes)\n* [images](/en/api-guides/admin-api/resources/product-images/update-or-create-product-image-attributes)\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttributeGroup"
              },
              "examples": {
                "Simple Attribute Group": {
                  "$ref": "#/components/examples/SimpleAttributeGroupRequest"
                },
                "Simple Non-Shared Attribute Group Value Type Integer": {
                  "$ref": "#/components/examples/SimpleNonSharedAttributeGroupValueTypeIntegerRequest"
                },
                "Simple Non-Shared Attribute Group Value Type Attribute": {
                  "$ref": "#/components/examples/SimpleNonSharedAttributeGroupValueTypeAttributeRequest"
                },
                "Simple List Attribute Group": {
                  "$ref": "#/components/examples/SimpleListAttributeGroupRequest"
                },
                "Localized String Attribute Group": {
                  "$ref": "#/components/examples/LocalizedStringAttributeGroupRequest"
                },
                "Localized String List Attribute Group": {
                  "$ref": "#/components/examples/LocalizedStringListAttributeGroupRequest"
                },
                "Advanced List Attribute Group": {
                  "$ref": "#/components/examples/AdvancedAttributeGroupRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Attribute group was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttributeGroup"
                },
                "examples": {
                  "Simple Attribute Group": {
                    "$ref": "#/components/examples/SimpleAttributeGroupResponse"
                  },
                  "Simple Non-Shared Attribute Group Value Type Integer": {
                    "$ref": "#/components/examples/NonSharedSimpleAttributeGroupValueTypeIntegerResponse"
                  },
                  "Simple Non-Shared Attribute Group Value Type Attribute": {
                    "$ref": "#/components/examples/NonSharedSimpleAttributeGroupValueTypeAttributeResponse"
                  },
                  "Simple List Attribute Group": {
                    "$ref": "#/components/examples/SimpleListAttributeGroupResponse"
                  },
                  "Localized String Attribute Group": {
                    "$ref": "#/components/examples/LocalizedStringAttributeGroupResponse"
                  },
                  "Localized String List Attribute Group": {
                    "$ref": "#/components/examples/LocalizedStringListAttributeGroupResponse"
                  },
                  "Advanced List Attribute Group": {
                    "$ref": "#/components/examples/AdvancedAttributeGroupResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "//Simple Attribute Group\n\nlet newAttributeGroup = {\n  \"name\": \"color\",\n  \"frontendName\": {\n      \"de_DE\": \"Farbe\",\n      \"en_GB\": \"Color\"\n  },\n  \"group\": \"someName\",\n  \"type\": \"simple\",\n  \"cluster\": \"material\",\n  \"isShared\": true,\n  \"level\": \"product\"\n};\n\nlet response = await adminApi.apis.AttributeGroups.createAttributeGroup({}, {requestBody: newAttributeGroup});\nlet createdAttributeGroup = response.body;\n\n//Simple List Attribute Group\n\nlet newAttributeGroup = {\n  \"name\": \"season\",\n  \"frontendName\": {\n      \"de_DE\": \"Saison\",\n      \"en_GB\": \"Season\"\n  },\n  \"group\": \"someName\",\n  \"type\": \"simpleList\",\n  \"cluster\": \"material\",\n  \"isShared\": true,\n  \"level\": \"product\"\n};\n\nlet response = await adminApi.apis.AttributeGroups.createAttributeGroup({}, {requestBody: newAttributeGroup});\nlet createdAttributeGroup = response.body;\n\n//Localized String Attribute Group\n\nlet newAttributeGroup = {\n  \"name\": \"brand\",\n  \"frontendName\": {\n      \"de_DE\": \"Marke\",\n      \"en_GB\": \"Brand\"\n  },\n  \"group\": \"someName\",\n  \"type\": \"localizedString\",\n  \"cluster\": \"material\",\n  \"isShared\": true,\n  \"level\": \"product\"\n};\n\nlet response = await adminApi.apis.AttributeGroups.createAttributeGroup({}, {requestBody: newAttributeGroup});\nlet createdAttributeGroup = response.body;\n\n//Localized String List Attribute Group\n\nlet newAttributeGroup = {\n  \"name\": \"notes\",\n  \"frontendName\": {\n      \"de_DE\": \"Hinweise\",\n      \"en_GB\": \"Notes\"\n  },\n  \"group\": \"someName\",\n  \"type\": \"localizedStringList\",\n  \"cluster\": \"material\",\n  \"isShared\": false,\n  \"level\": \"product\"\n};\n\nlet response = await adminApi.apis.AttributeGroups.createAttributeGroup({}, {requestBody: newAttributeGroup});\nlet createdAttributeGroup = response.body;\n\n//Advanced List Attribute Group\n\nlet newAttributeGroup = {\n  \"name\": \"material_composition_textile\",\n  \"frontendName\": {\n      \"de_DE\": \"Materialzusammensetzung\",\n      \"en_GB\": \"Material Composition\"\n  },\n  \"type\": \"advancedList\",\n  \"cluster\": \"material\",\n  \"isShared\": false,\n  \"level\": \"product\",\n  \"structure\": {\n      \"group\": {\n          \"type\": \"attributeGroup\",\n          \"attributeGroupName\": \"overmaterial\"\n      },\n      \"components\": {\n          \"type\": \"array\",\n          \"items\": {\n              \"fraction\": {\n                  \"type\": \"integer\"\n              },\n              \"unit\": {\n                  \"type\": \"attribute\",\n                  \"attributeGroupName\": \"unit\",\n                  \"attributeName\": \"%\"\n              },\n              \"material\": {\n                  \"type\": \"attributeGroup\",\n                  \"attributeGroupName\": \"material\"\n              }\n          }\n      }\n  },\n  \"shopCountries\": [\n      {\n          \"shopKey\": \"ms\",\n          \"countryCode\": \"DE\"\n      }\n  ],\n  \"isOverridablePerShop\": true\n};\n\nlet response = await adminApi.apis.AttributeGroups.createAttributeGroup({}, {requestBody: newAttributeGroup});\nlet createdAttributeGroup = response.body;\n\n//Non-shared Simple Attribute Group with Integer Value Type\n\nlet simpleNonSharedAGWithValueTypeOfInteger = {\n  \"name\": \"simpleNonSharedAGWithValueType\",\n  \"frontendName\": {\n      \"de_DE\": \"deName\",\n      \"en_GB\": \"enName\"\n  },\n  \"group\": \"someName\",\n  \"type\": \"simple\",\n  \"cluster\": \"material\",\n  \"simpleValueType\": \"integer\",\n  \"isShared\": false,\n  \"level\": \"product\"\n};\n\nlet response = await adminApi.apis.AttributeGroups.createAttributeGroup({}, {requestBody: simpleNonSharedAGWithValueTypeOfInteger});\nlet createdAttributeGroup = response.body;\n\n//Non-shared Simple Attribute Group with Attribute Value Type\n\nlet simpleNonSharedAGWithValueTypeOfAttribute = {\n  \"name\": \"simpleNonSharedAGWithValueType\",\n  \"frontendName\": {\n      \"de_DE\": \"deName\",\n      \"en_GB\": \"enName\"\n  },\n  \"group\": \"someName\",\n  \"type\": \"simple\",\n  \"cluster\": \"material\",\n  \"simpleValueType\": \"attribute\",\n  \"simpleValueTypeConfig\": {\n      \"attributeGroupName\": \"color\",\n      \"attributeName\": \"red\"\n  },\n  \"isShared\": false,\n  \"level\": \"product\"\n};\n\nlet response = await adminApi.apis.AttributeGroups.createAttributeGroup({}, {requestBody: simpleNonSharedAGWithValueTypeOfAttribute});\nlet createdAttributeGroup = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "//Simple Attribute Group\n\n$attributeGroup = new AttributeGroup();\n$attributeGroup->name = 'color';\n$attributeGroup->frontendName = [\n    'de_DE' => 'Farbe',\n    'en_GB' => 'Color'\n];\n$attributeGroup->group = 'someName';\n$attributeGroup->type = 'simple';\n$attributeGroup->cluster = 'material';\n$attributeGroup->isShared = true;\n$attributeGroup->level = 'product';\n\n$createdAttributeGroup = $adminApi->attributeGroups->create($attributeGroup);\n\n//Simple List Attribute Group\n\n$attributeGroup = new AttributeGroup();\n$attributeGroup->name = 'season';\n$attributeGroup->frontendName = [\n    'de_DE' => 'Saison',\n    'en_GB' => 'Season'\n];\n$attributeGroup->group = 'someName';\n$attributeGroup->type = 'simpleList';\n$attributeGroup->cluster = 'material';\n$attributeGroup->isShared = true;\n$attributeGroup->level = 'product';\n\n$createdAttributeGroup = $adminApi->attributeGroups->create($attributeGroup);\n\n//Localized String Attribute Group\n\n$attributeGroup = new AttributeGroup();\n$attributeGroup->name = 'brand';\n$attributeGroup->frontendName = [\n    'de_DE' => 'Marke',\n    'en_GB' => 'Brand'\n];\n$attributeGroup->group = 'someName';\n$attributeGroup->type = 'localizedString';\n$attributeGroup->cluster = 'material';\n$attributeGroup->isShared = true;\n$attributeGroup->level = 'product';\n\n$createdAttributeGroup = $adminApi->attributeGroups->create($attributeGroup);\n\n//Localized String List Attribute Group\n\n$attributeGroup = new AttributeGroup();\n$attributeGroup->name = 'notes';\n$attributeGroup->frontendName = [\n    'de_DE' => 'Hinweise',\n    'en_GB' => 'Notes'\n];\n$attributeGroup->group = 'someName';\n$attributeGroup->type = 'localizedStringList';\n$attributeGroup->cluster = 'material';\n$attributeGroup->isShared = false;\n$attributeGroup->level = 'product';\n\n$createdAttributeGroup = $adminApi->attributeGroups->create($attributeGroup);\n\n//Advanced Attribute List Group\n\n$attributeGroup = new AttributeGroup();\n$attributeGroup->name = 'material_composition_textile';\n$attributeGroup->frontendName = [\n    'de_DE' => 'Materialzusammensetzung',\n    'en_GB' => 'Material Composition',\n];\n$attributeGroup->type = 'advanced';\n$attributeGroup->cluster = 'material';\n$attributeGroup->isShared = false;\n$attributeGroup->level = 'product';\n$attributeGroup->structure = [\n    'group' => [\n        'type' => 'attributeGroup',\n        'attributeGroupName' => 'Obermaterial'\n    ],\n    'components' => [\n        'type' => 'array',\n        'items' => [\n            'fraction' => [\n                'type' => 'integer'\n            ],\n            'unit' => [\n                'type' => 'attribute',\n                'attributeGroupName' => 'unit',\n                'attributeName' => '%'\n            ],\n            'material' => [\n                'type' => 'attributeGroup',\n                'attributeGroupName' => 'material'\n            ]\n        ]\n    ]\n];\n$shopCountry = new AttributeGroupShopCountry();\n$shopCountry->shopKey = 'ms';\n$shopCountry->countryCode = 'DE';\n$attributeGroup->shopCountries = [$shopCountry];\n$attributeGroup->isOverridablePerShop = true;\n\n$createdAttributeGroup = $adminApi->attributeGroups->create($attributeGroup);\n\n//Non-shared Simple Attribute Group with Integer Value Type \n\n$simpleNonSharedAGWithValueTypeOfInteger = new AttributeGroup();\n$simpleNonSharedAGWithValueTypeOfInteger->name = 'simpleNonSharedAGWithValueTypeOfInteger';\n$simpleNonSharedAGWithValueTypeOfInteger->frontendName = [\n    'de_DE' => 'deName',\n    'en_GB' => 'enName'\n];\n$simpleNonSharedAGWithValueTypeOfInteger->group = 'someName';\n$simpleNonSharedAGWithValueTypeOfInteger->type = 'simple';\n$simpleNonSharedAGWithValueTypeOfInteger->cluster = 'material';\n$simpleNonSharedAGWithValueTypeOfInteger->isShared = false;\n$simpleNonSharedAGWithValueTypeOfInteger->simpleValueType = 'integer';\n$simpleNonSharedAGWithValueTypeOfInteger->level = 'product';\n\n$createdAttributeGroup = $adminApi->attributeGroups->create($simpleNonSharedAGWithValueTypeOfInteger);\n\n//Non-shared Simple Attribute Group with Attribute Value Type \n\n$simpleNonSharedAGWithValueTypeOfAttribute = new AttributeGroup();\n$simpleNonSharedAGWithValueTypeOfAttribute->name = 'simpleNonSharedAGWithValueTypeOfAttribute';\n$simpleNonSharedAGWithValueTypeOfAttribute->frontendName = [\n    'de_DE' => 'deName',\n    'en_GB' => 'enName'\n];\n$simpleNonSharedAGWithValueTypeOfAttribute->group = 'someName';\n$simpleNonSharedAGWithValueTypeOfAttribute->type = 'simple';\n$simpleNonSharedAGWithValueTypeOfAttribute->cluster = 'material';\n$simpleNonSharedAGWithValueTypeOfAttribute->isShared = false;\n$simpleNonSharedAGWithValueTypeOfAttribute->simpleValueType = 'attribute';\n$simpleNonSharedAGWithValueTypeOfAttribute->simpleValueTypeConfig = [\n    'attributeGroupName' => 'color',\n    'attributeName' => 'red'\n];\n$simpleNonSharedAGWithValueTypeOfAttribute->level = 'product';\n\n$createdAttributeGroup = $adminApi->attributeGroups->create($simpleNonSharedAGWithValueTypeOfAttribute);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "//Simple Attribute Group\n\nMap<String, String> frontendName = new HashMap<>();\nfrontendName.put(\"de_DE\", \"Farbe\");\nfrontendName.put(\"en_GB\", \"Color\");\n\nAttributeGroup attributeGroup = new AttributeGroup();\nattributeGroup.setName(\"color\");\nattributeGroup.setFrontendName(frontendName);\nattributeGroup.setGroup(\"someName\");\nattributeGroup.setType(AttributeGroupType.VALUE_SIMPLE);\nattributeGroup.setCluster(\"material\");\nattributeGroup.setIsShared(true);\nattributeGroup.setLevel(AttributeGroupLevel.VALUE_PRODUCT);\n\nAttributeGroup createdAttributeGroup = adminApi.attributeGroups().create(attributeGroup);\n\n//Simple List Attribute Group\n\nMap<String, String> frontendName = new HashMap<>();\nfrontendName.put(\"de_DE\", \"Saison\");\nfrontendName.put(\"en_GB\", \"Season\");\n\nAttributeGroup attributeGroup = new AttributeGroup();\nattributeGroup.setName(\"season\");\nattributeGroup.setFrontendName(frontendName);\nattributeGroup.setGroup(\"someName\");\nattributeGroup.setType(AttributeGroupType.VALUE_SIMPLELIST);\nattributeGroup.setCluster(\"material\");\nattributeGroup.setIsShared(true);\nattributeGroup.setLevel(AttributeGroupLevel.VALUE_PRODUCT);\n\nAttributeGroup createdAttributeGroup = adminApi.attributeGroups().create(attributeGroup);\n\n//Localized String Attribute Group\n\nMap<String, String> frontendName = new HashMap<>();\nfrontendName.put(\"de_DE\", \"Marke\");\nfrontendName.put(\"en_GB\", \"Brand\");\n\nAttributeGroup attributeGroup = new AttributeGroup();\nattributeGroup.setName(\"brand\");\nattributeGroup.setFrontendName(frontendName);\nattributeGroup.setGroup(\"someName\");\nattributeGroup.setType(AttributeGroupType.VALUE_LOCALIZEDSTRING);\nattributeGroup.setCluster(\"material\");\nattributeGroup.setIsShared(true);\nattributeGroup.setLevel(AttributeGroupLevel.VALUE_PRODUCT);\n\nAttributeGroup createdAttributeGroup = adminApi.attributeGroups().create(attributeGroup);\n\n//Localized String List Attribute Group\n\nMap<String, String> frontendName = new HashMap<>();\nfrontendName.put(\"de_DE\", \"Hinweise\");\nfrontendName.put(\"en_GB\", \"Notes\");\n\nAttributeGroup attributeGroup = new AttributeGroup();\nattributeGroup.setName(\"notes\");\nattributeGroup.setFrontendName(frontendName);\nattributeGroup.setGroup(\"someName\");\nattributeGroup.setType(AttributeGroupType.VALUE_LOCALIZEDSTRINGLIST);\nattributeGroup.setCluster(\"material\");\nattributeGroup.setIsShared(false);\nattributeGroup.setLevel(AttributeGroupLevel.VALUE_PRODUCT);\n\nAttributeGroup createdAttributeGroup = adminApi.attributeGroups().create(attributeGroup);\n\n//Advanced List Attribute Group\n\nMap<String, String> frontendName = new HashMap<>();\nfrontendName.put(\"de_DE\", \"Materialzusammensetzung\");\nfrontendName.put(\"en_GB\", \"Material Composition\");\n\nMap structure = new Gson().fromJson(\n\"{\\\"group\\\":{\\\"type\\\":\\\"attributeGroup\\\",\\\"attributeGroupName\\\":\\\"Obermaterial\\\"},\\\"components\\\":{\\\"type\\\":\\\"array\\\",\\\"items\\\":{\\\"fraction\\\":{\\\"type\\\":\\\"integer\\\"},\\\"unit\\\":{\\\"type\\\":\\\"attribute\\\",\\\"attributeGroupName\\\":\\\"unit\\\",\\\"attributeName\\\":\\\"%\\\"},\\\"material\\\":{\\\"type\\\":\\\"attributeGroup\\\",\\\"attributeGroupName\\\":\\\"material\\\"}}}}\",\nnew TypeToken<HashMap<String, Object>>() {}.getType()\n);\n\nList<AttributeGroupShopCountry> shopCountries = new ArrayList<>();\nAttributeGroupShopCountry shopCountry = new AttributeGroupShopCountry();\nshopCountry.setShopKey(\"ms\");\nshopCountry.setCountryCode(\"DE\");\nshopCountries.add(shopCountry);\n\nAttributeGroup attributeGroup = new AttributeGroup();\nattributeGroup.setName(\"material_composition_textile\");\nattributeGroup.setFrontendName(frontendName);\nattributeGroup.setType(AttributeGroupType.VALUE_ADVANCEDLIST);\nattributeGroup.setCluster(\"material\");\nattributeGroup.setIsShared(false);\nattributeGroup.setLevel(AttributeGroupLevel.VALUE_PRODUCT);\nattributeGroup.setStructure(structure);\nattributeGroup.setShopCountries(shopCountries);\nattributeGroup.setIsOverridablePerShop(true);\n\nAttributeGroup createdAttributeGroup = adminApi.attributeGroups().create(attributeGroup);\n\n//Non-shared Simple Attribute Group with Integer Value Type\n\nAttributeGroup simpleNonSharedAGWithValueTypeOfInteger = new AttributeGroup();\nattributeGroup.setName(\"simpleNonSharedAGWithValueTypeOfInteger\");\nattributeGroup.setFrontendName(frontendName);\nattributeGroup.setType(AttributeGroupType.VALUE_SIMPLE);\nattributeGroup.setCluster(\"material\");\nattributeGroup.setSimpleValueType(NonSharedSimpleAttributeGroupValueType.VALUE_INTEGER);\nattributeGroup.setIsShared(false);\nattributeGroup.setLevel(AttributeGroupLevel.VALUE_PRODUCT);\nattributeGroup.setShopCountries(shopCountries);\nattributeGroup.setIsOverridablePerShop(true);\n\nAttributeGroup createdAttributeGroup = adminApi.attributeGroups().create(simpleNonSharedAGWithValueTypeOfInteger);\n\n//Non-shared Simple Attribute Group with Attribute Value Type\n\nAttributeGroup simpleNonSharedAGWithValueTypeOfAttribute = new AttributeGroup();\nattributeGroup.setName(\"simpleNonSharedAGWithValueTypeOfAttribute\");\nattributeGroup.setFrontendName(frontendName);\nattributeGroup.setType(AttributeGroupType.VALUE_SIMPLE);\nattributeGroup.setCluster(\"material\");\n\nMap<String, String> simpleValueTypeConfig = new HashMap<>();\nsimpleValueTypeConfig.put(\"attributeGroupName\", \"color\");\nsimpleValueTypeConfig.put(\"attributeName\", \"red\");\nattributeGroup.setSimpleValueType(NonSharedSimpleAttributeGroupValueType.VALUE_ATTRIBUTE);\nattributeGroup.setSimpleValueTypeConfig(simpleValueTypeConfig);\n\nattributeGroup.setIsShared(false);\nattributeGroup.setLevel(AttributeGroupLevel.VALUE_PRODUCT);\nattributeGroup.setShopCountries(shopCountries);\nattributeGroup.setIsOverridablePerShop(true);\n\nAttributeGroup createdAttributeGroup = adminApi.attributeGroups().create(simpleNonSharedAGWithValueTypeOfAttribute);\n"
          }
        ]
      }
    },
    "/attribute-groups/{attributeGroupName}": {
      "get": {
        "operationId": "getAttributeGroup",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "attribute-groups"
        ],
        "tags": [
          "AttributeGroups"
        ],
        "summary": "Get an attribute group",
        "description": "This endpoint can be used to get a single attribute group.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/products/product-schema-and-structure#get-attribute-group).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          }
        ],
        "responses": {
          "200": {
            "description": "Attribute group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttributeGroup"
                },
                "examples": {
                  "Simple Attribute Group": {
                    "$ref": "#/components/examples/SimpleAttributeGroupResponse"
                  },
                  "Simple List Attribute Group": {
                    "$ref": "#/components/examples/SimpleListAttributeGroupResponse"
                  },
                  "Localized String Attribute Group": {
                    "$ref": "#/components/examples/LocalizedStringAttributeGroupResponse"
                  },
                  "Localized String List Attribute Group": {
                    "$ref": "#/components/examples/LocalizedStringListAttributeGroupResponse"
                  },
                  "Advanced List Attribute Group": {
                    "$ref": "#/components/examples/AdvancedAttributeGroupResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.AttributeGroups.getAttributeGroup({attributeGroupName: \"simple_material_composition_textile\"});\nlet attributeGroup = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$attributeGroup = $adminApi->attributeGroups->get('simple_material_composition_textile');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "AttributeGroup attributeGroup = adminApi.attributeGroups().get(\"simple_material_composition_textile\");\n"
          }
        ]
      },
      "put": {
        "operationId": "updateAttributeGroup",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "attribute-groups"
        ],
        "tags": [
          "AttributeGroups"
        ],
        "summary": "Update an existing attribute group",
        "description": "This endpoint can be used to update/replace an existing attribute group. It does not support partial updates.\n\nNote that only attribute groups, which do not have any attributes assigned to an entity can be updated. Also, level cannot be changed.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/products/product-schema-and-structure#update-attribute-group).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttributeGroup"
              },
              "examples": {
                "Simple Attribute Group": {
                  "$ref": "#/components/examples/SimpleAttributeGroupRequest"
                },
                "Simple List Attribute Group": {
                  "$ref": "#/components/examples/SimpleListAttributeGroupRequest"
                },
                "Localized String Attribute Group": {
                  "$ref": "#/components/examples/LocalizedStringAttributeGroupRequest"
                },
                "Localized String List Attribute Group": {
                  "$ref": "#/components/examples/LocalizedStringListAttributeGroupRequest"
                },
                "Advanced List Attribute Group": {
                  "$ref": "#/components/examples/AdvancedAttributeGroupRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Attribute group was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttributeGroup"
                },
                "examples": {
                  "Simple Attribute Group": {
                    "$ref": "#/components/examples/SimpleAttributeGroupResponse"
                  },
                  "Simple List Attribute Group": {
                    "$ref": "#/components/examples/SimpleListAttributeGroupResponse"
                  },
                  "Localized String Attribute Group": {
                    "$ref": "#/components/examples/LocalizedStringAttributeGroupResponse"
                  },
                  "Localized String List Attribute Group": {
                    "$ref": "#/components/examples/LocalizedStringListAttributeGroupResponse"
                  },
                  "Advanced List Attribute Group": {
                    "$ref": "#/components/examples/AdvancedAttributeGroupResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "//Simple Attribute Group\n\nlet newAttributeGroup = {\n  \"name\": \"color\",\n  \"frontendName\": {\n      \"de_DE\": \"Farbe\",\n      \"en_GB\": \"Color\"\n  },\n  \"group\": \"someName\",\n  \"type\": \"simple\",\n  \"cluster\": \"material\",\n  \"isShared\": true,\n  \"level\": \"product\"\n};\n\nlet response = await adminApi.apis.AttributeGroups.updateAttributeGroup({attributeGroupName: \"color\"}, {requestBody: newAttributeGroup});\nlet createdAttributeGroup = response.body;\n\n//Simple List Attribute Group\n\nlet newAttributeGroup = {\n  \"name\": \"season\",\n  \"frontendName\": {\n      \"de_DE\": \"Saison\",\n      \"en_GB\": \"Season\"\n  },\n  \"group\": \"someName\",\n  \"type\": \"simpleList\",\n  \"cluster\": \"material\",\n  \"isShared\": true,\n  \"level\": \"product\"\n};\n\nlet response = await adminApi.apis.AttributeGroups.updateAttributeGroup({attributeGroupName: \"season\"}, {requestBody: newAttributeGroup});\nlet createdAttributeGroup = response.body;\n\n//Localized String Attribute Group\n\nlet newAttributeGroup = {\n  \"name\": \"brand\",\n  \"frontendName\": {\n      \"de_DE\": \"Marke\",\n      \"en_GB\": \"Brand\"\n  },\n  \"group\": \"someName\",\n  \"type\": \"localizedString\",\n  \"cluster\": \"material\",\n  \"isShared\": true,\n  \"level\": \"product\"\n};\n\nlet response = await adminApi.apis.AttributeGroups.updateAttributeGroup({attributeGroupName: \"brand\"}, {requestBody: newAttributeGroup});\nlet createdAttributeGroup = response.body;\n\n//Localized String List Attribute Group\n\nlet newAttributeGroup = {\n  \"name\": \"notes\",\n  \"frontendName\": {\n      \"de_DE\": \"Hinweise\",\n      \"en_GB\": \"Notes\"\n  },\n  \"group\": \"someName\",\n  \"type\": \"localizedStringList\",\n  \"cluster\": \"material\",\n  \"isShared\": false,\n  \"level\": \"product\"\n};\n\nlet response = await adminApi.apis.AttributeGroups.updateAttributeGroup({attributeGroupName: \"notes\"}, {requestBody: newAttributeGroup});\nlet createdAttributeGroup = response.body;\n\n//Advanced List Attribute Group\n\nlet newAttributeGroup = {\n  \"name\": \"material_composition_textile\",\n  \"frontendName\": {\n      \"de_DE\": \"Materialzusammensetzung\",\n      \"en_GB\": \"Material Composition\"\n  },\n  \"type\": \"advancedList\",\n  \"cluster\": \"material\",\n  \"isShared\": false,\n  \"level\": \"product\",\n  \"structure\": {\n      \"group\": {\n          \"type\": \"attributeGroup\",\n          \"attributeGroupName\": \"overmaterial\"\n      },\n      \"components\": {\n          \"type\": \"array\",\n          \"items\": {\n              \"fraction\": {\n                  \"type\": \"integer\"\n              },\n              \"unit\": {\n                  \"type\": \"attribute\",\n                  \"attributeGroupName\": \"unit\",\n                  \"attributeName\": \"%\"\n              },\n              \"material\": {\n                  \"type\": \"attributeGroup\",\n                  \"attributeGroupName\": \"material\"\n              }\n          }\n      }\n  },\n  \"shopCountries\": [\n      {\n          \"shopKey\": \"ms\",\n          \"countryCode\": \"DE\"\n      }\n  ],\n  \"isOverridablePerShop\": true\n};\n\nlet response = await adminApi.apis.AttributeGroups.updateAttributeGroup({attributeGroupName: \"material_composition_textile\"}, {requestBody: newAttributeGroup});\nlet createdAttributeGroup = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "//Simple Attribute Group\n\n$attributeGroup = new AttributeGroup();\n$attributeGroup->name = 'color';\n$attributeGroup->frontendName = [\n    'de_DE' => 'Farbe',\n    'en_GB' => 'Color'\n];\n$attributeGroup->group = 'someName';\n$attributeGroup->type = 'simple';\n$attributeGroup->cluster = 'material';\n$attributeGroup->isShared = true;\n$attributeGroup->level = 'product';\n\n$createdAttributeGroup = $adminApi->attributeGroups->update('color', $attributeGroup);\n\n//Simple List Attribute Group\n\n$attributeGroup = new AttributeGroup();\n$attributeGroup->name = 'season';\n$attributeGroup->frontendName = [\n    'de_DE' => 'Saison',\n    'en_GB' => 'Season'\n];\n$attributeGroup->group = 'someName';\n$attributeGroup->type = 'simpleList';\n$attributeGroup->cluster = 'material';\n$attributeGroup->isShared = true;\n$attributeGroup->level = 'product';\n\n$createdAttributeGroup = $adminApi->attributeGroups->update('season', $attributeGroup);\n\n//Localized String Attribute Group\n\n$attributeGroup = new AttributeGroup();\n$attributeGroup->name = 'brand';\n$attributeGroup->frontendName = [\n    'de_DE' => 'Marke',\n    'en_GB' => 'Brand'\n];\n$attributeGroup->group = 'someName';\n$attributeGroup->type = 'localizedString';\n$attributeGroup->cluster = 'material';\n$attributeGroup->isShared = true;\n$attributeGroup->level = 'product';\n\n$createdAttributeGroup = $adminApi->attributeGroups->update('brand', $attributeGroup);\n\n//Localized String List Attribute Group\n\n$attributeGroup = new AttributeGroup();\n$attributeGroup->name = 'notes';\n$attributeGroup->frontendName = [\n    'de_DE' => 'Hinweise',\n    'en_GB' => 'Notes'\n];\n$attributeGroup->group = 'someName';\n$attributeGroup->type = 'localizedStringList';\n$attributeGroup->cluster = 'material';\n$attributeGroup->isShared = false;\n$attributeGroup->level = 'product';\n\n$createdAttributeGroup = $adminApi->attributeGroups->update('notes', $attributeGroup);\n\n//Advanced Attribute List Group\n\n$attributeGroup = new AttributeGroup();\n$attributeGroup->name = 'material_composition_textile';\n$attributeGroup->frontendName = [\n    'de_DE' => 'Materialzusammensetzung',\n    'en_GB' => 'Material Composition',\n];\n$attributeGroup->type = 'advanced';\n$attributeGroup->cluster = 'material';\n$attributeGroup->isShared = false;\n$attributeGroup->level = 'product';\n$attributeGroup->structure = [\n    'group' => [\n        'type' => 'attributeGroup',\n        'attributeGroupName' => 'Obermaterial'\n    ],\n    'components' => [\n        'type' => 'array',\n        'items' => [\n            'fraction' => [\n                'type' => 'integer'\n            ],\n            'unit' => [\n                'type' => 'attribute',\n                'attributeGroupName' => 'unit',\n                'attributeName' => '%'\n            ],\n            'material' => [\n                'type' => 'attributeGroup',\n                'attributeGroupName' => 'material'\n            ]\n        ]\n    ]\n];\n$shopCountry = new AttributeGroupShopCountry();\n$shopCountry->shopKey = 'ms';\n$shopCountry->countryCode = 'DE';\n$attributeGroup->shopCountries = [$shopCountry];\n$attributeGroup->isOverridablePerShop = true;\n\n$createdAttributeGroup = $adminApi->attributeGroups->update('material_composition_textile', $attributeGroup);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "//Simple Attribute Group\n\nMap<String, String> frontendName = new HashMap<>();\nfrontendName.put(\"de_DE\", \"Farbe\");\nfrontendName.put(\"en_GB\", \"Color\");\n\nAttributeGroup attributeGroup = new AttributeGroup();\nattributeGroup.setName(\"color\");\nattributeGroup.setFrontendName(frontendName);\nattributeGroup.setGroup(\"someName\");\nattributeGroup.setType(AttributeGroupType.VALUE_SIMPLE);\nattributeGroup.setCluster(\"material\");\nattributeGroup.setIsShared(true);\nattributeGroup.setLevel(AttributeGroupLevel.VALUE_PRODUCT);\n\nAttributeGroup createdAttributeGroup = adminApi.attributeGroups().update(\"color\", attributeGroup);\n\n//Simple List Attribute Group\n\nMap<String, String> frontendName = new HashMap<>();\nfrontendName.put(\"de_DE\", \"Saison\");\nfrontendName.put(\"en_GB\", \"Season\");\n\nAttributeGroup attributeGroup = new AttributeGroup();\nattributeGroup.setName(\"season\");\nattributeGroup.setFrontendName(frontendName);\nattributeGroup.setGroup(\"someName\");\nattributeGroup.setType(AttributeGroupType.VALUE_SIMPLELIST);\nattributeGroup.setCluster(\"material\");\nattributeGroup.setIsShared(true);\nattributeGroup.setLevel(AttributeGroupLevel.VALUE_PRODUCT);\n\nAttributeGroup createdAttributeGroup = adminApi.attributeGroups().update(\"season\", attributeGroup);\n\n//Localized String Attribute Group\n\nMap<String, String> frontendName = new HashMap<>();\nfrontendName.put(\"de_DE\", \"Marke\");\nfrontendName.put(\"en_GB\", \"Brand\");\n\nAttributeGroup attributeGroup = new AttributeGroup();\nattributeGroup.setName(\"brand\");\nattributeGroup.setFrontendName(frontendName);\nattributeGroup.setGroup(\"someName\");\nattributeGroup.setType(AttributeGroupType.VALUE_LOCALIZEDSTRING);\nattributeGroup.setCluster(\"material\");\nattributeGroup.setIsShared(true);\nattributeGroup.setLevel(AttributeGroupLevel.VALUE_PRODUCT);\n\nAttributeGroup createdAttributeGroup = adminApi.attributeGroups().update(\"brand\", attributeGroup);\n\n//Localized String List Attribute Group\n\nMap<String, String> frontendName = new HashMap<>();\nfrontendName.put(\"de_DE\", \"Hinweise\");\nfrontendName.put(\"en_GB\", \"Notes\");\n\nAttributeGroup attributeGroup = new AttributeGroup();\nattributeGroup.setName(\"notes\");\nattributeGroup.setFrontendName(frontendName);\nattributeGroup.setGroup(\"someName\");\nattributeGroup.setType(AttributeGroupType.VALUE_LOCALIZEDSTRINGLIST);\nattributeGroup.setCluster(\"material\");\nattributeGroup.setIsShared(false);\nattributeGroup.setLevel(AttributeGroupLevel.VALUE_PRODUCT);\n\nAttributeGroup createdAttributeGroup = adminApi.attributeGroups().update(\"notes\", attributeGroup);\n\n//Advanced List Attribute Group\n\nMap<String, String> frontendName = new HashMap<>();\nfrontendName.put(\"de_DE\", \"Materialzusammensetzung\");\nfrontendName.put(\"en_GB\", \"Material Composition\");\n\nMap structure = new Gson().fromJson(\n\"{\\\"group\\\":{\\\"type\\\":\\\"attributeGroup\\\",\\\"attributeGroupName\\\":\\\"Obermaterial\\\"},\\\"components\\\":{\\\"type\\\":\\\"array\\\",\\\"items\\\":{\\\"fraction\\\":{\\\"type\\\":\\\"integer\\\"},\\\"unit\\\":{\\\"type\\\":\\\"attribute\\\",\\\"attributeGroupName\\\":\\\"unit\\\",\\\"attributeName\\\":\\\"%\\\"},\\\"material\\\":{\\\"type\\\":\\\"attributeGroup\\\",\\\"attributeGroupName\\\":\\\"material\\\"}}}}\",\nnew TypeToken<HashMap<String, Object>>() {}.getType()\n);\n\nList<AttributeGroupShopCountry> shopCountries = new ArrayList<>();\nAttributeGroupShopCountry shopCountry = new AttributeGroupShopCountry();\nshopCountry.setShopKey(\"ms\");\nshopCountry.setCountryCode(\"DE\");\nshopCountries.add(shopCountry);\n\nAttributeGroup attributeGroup = new AttributeGroup();\nattributeGroup.setName(\"material_composition_textile\");\nattributeGroup.setFrontendName(frontendName);\nattributeGroup.setType(AttributeGroupType.VALUE_ADVANCEDLIST);\nattributeGroup.setCluster(\"material\");\nattributeGroup.setIsShared(false);\nattributeGroup.setLevel(AttributeGroupLevel.VALUE_PRODUCT);\nattributeGroup.setStructure(structure);\nattributeGroup.setShopCountries(shopCountries);\nattributeGroup.setIsOverridablePerShop(true);\n\nAttributeGroup createdAttributeGroup = adminApi.attributeGroups().update(\"material_composition_textile\", attributeGroup);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteAttributeGroup",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "attribute-groups"
        ],
        "tags": [
          "AttributeGroups"
        ],
        "summary": "Delete an attribute group",
        "description": "This endpoint can be used to delete an attribute group.\n\nPlease note that deletion of an attribute group is only possible if the following conditions below are fulfilled:\n* The attribute group is not classified as a system attribute group.\n* The attribute group contains no attributes that have ever been assigned to any entity.\n* The attribute group is not used in the structure of any of the existing advanced attribute groups.\n* The attribute group is not used in any of the existing configurations.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/products/product-schema-and-structure#delete-attribute-group).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          }
        ],
        "responses": {
          "204": {
            "description": "Attribute group was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "adminApi.apis.AttributeGroups.deleteAttributeGroup({attributeGroupName: \"material_composition_textile\"});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->attributeGroups->delete(\"material_composition_textile\");\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.attributeGroups().delete(\"material_composition_textile\");\n"
          }
        ]
      }
    },
    "/attribute-groups/{attributeGroupName}/frontend-name": {
      "put": {
        "operationId": "updateFrontendName",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "attribute-groups"
        ],
        "tags": [
          "AttributeGroups"
        ],
        "summary": "Update frontend name for an existing attribute group",
        "description": "This endpoint can be used to update the frontend name for an an existing attribute group whether it's translatable or non translatable.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/products/product-schema-and-structure#update-attribute-group-frontend-name).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttributeGroupFrontendName"
              },
              "examples": {
                "Attribute Group Frontend Name": {
                  "$ref": "#/components/examples/AttributeGroupFrontendNameRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Attribute group was successfully updated."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let attributeGroupFrontendName = {\n    \"de_DE\": \"Materialzusammensetzung\",\n    \"en_GB\": \"Material Composition\"\n};\n\nawait adminApi.apis.AttributeGroups.updateFrontendName({attributeGroupName: \"material_composition_textile\"}, {requestBody: attributeGroupFrontendName});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$attributeGroupFrontendName = [\n    'de_DE' => 'Materialzusammensetzung',\n    'en_GB' => 'Material Composition'\n];\n\n$adminApi->attributeGroups->updateFrontendName('material_composition_textile', $attributeGroupFrontendName);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Map<String, String> attributeGroupFrontendName = new HashMap<>();\nfrontendName.put(\"de_DE\", \"Materialzusammensetzung\");\nfrontendName.put(\"en_GB\", \"Material Composition\");\n\nadminApi.attributeGroups().updateFrontendName(\"material_composition_textile\", attributeGroupFrontendName);\n"
          }
        ]
      }
    },
    "/attribute-groups/{attributeGroupName}/attributes": {
      "get": {
        "operationId": "getAttributes",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "attribute-groups"
        ],
        "tags": [
          "AttributeGroups"
        ],
        "summary": "Get attributes for given attribute group.",
        "description": "This endpoint can be used to retrieve a collection of attributes for an attribute group. Pagination is supported.\n\nThe response structure varies depending on the `with=id` query parameter:\n- When `with=id` is present: each entity object contains `id` and `value` keys\n- When `with=id` is absent: the response format follows the default attribute structure\n\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/products/product-schema-and-structure#get-attribute-collection).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          },
          {
            "$ref": "#/components/parameters/AttributeWith"
          }
        ],
        "responses": {
          "200": {
            "description": "List of attributes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "description": "Collection of attributes. The structure of each entity varies based on the `with=id` query parameter:\n- With `with=id`: each entity is an object with `id` and `value` keys\n- Without `with=id`: each entity is the attribute value itself (string, object)\n",
                      "items": {
                        "oneOf": [
                          {
                            "type": "object",
                            "title": "Entity with ID (when with=id is present)",
                            "description": "Structure when the `with=id` query parameter is included.",
                            "required": [
                              "id",
                              "value"
                            ],
                            "properties": {
                              "id": {
                                "type": "integer",
                                "description": "The attribute id."
                              },
                              "value": {
                                "oneOf": [
                                  {
                                    "type": "string",
                                    "title": "Simple String Value (non-translatable attribute)",
                                    "description": "A simple string value for non-translatable simple attributes."
                                  },
                                  {
                                    "type": "object",
                                    "title": "Localized Value (translatable attribute)",
                                    "description": "A map of language locales to translated values for translatable attributes.",
                                    "additionalProperties": {
                                      "type": "string"
                                    }
                                  }
                                ]
                              }
                            }
                          },
                          {
                            "type": "string",
                            "title": "Simple String Value (non-translatable attribute)",
                            "description": "A simple string value for non-translatable simple attributes."
                          },
                          {
                            "type": "object",
                            "title": "Localized Value (translatable attribute)",
                            "description": "A map of language locales to translated values for translatable attributes.",
                            "additionalProperties": {
                              "type": "string"
                            }
                          }
                        ]
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Attributes Paginated Collection": {
                    "$ref": "#/components/examples/NonTranslatableAttributePaginatedCollectionResponse"
                  },
                  "Translatable Attributes Paginated Collection": {
                    "$ref": "#/components/examples/TranslatableAttributePaginatedCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.AttributeGroups.getAttributes({attributeGroupName: \"material_composition_textile\"}, {limit: 50});\nlet attributes = response.body.entities;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'limit' => 50\n];\n\n$attributeCollection = $adminApi->attributeGroups->getAttributes(\"material_composition_textile\", $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<Object> attributeCollection = adminApi.attributeGroups().getAttributes(String attributeGroupName, ApiOptions options);\n"
          }
        ]
      },
      "post": {
        "operationId": "createAttributeGroupAttribute",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "attribute-groups"
        ],
        "tags": [
          "AttributeGroups"
        ],
        "summary": "Create an unattached attribute for the given attribute group.",
        "description": "This endpoint can be used to create an unattached attribute for an attribute group.\n\nThe attribute can be created only if:\n\n* it doesn't exist\n* it's not advanced\n* it doesn't belong to a system AG\n\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/products/product-schema-and-structure#create-attribute).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttributeGroupAttribute"
              },
              "examples": {
                "Non Localized String Request": {
                  "$ref": "#/components/examples/NonLocalizedStringAttributeGroupAttributeRequest"
                },
                "Localized String Request": {
                  "$ref": "#/components/examples/LocalizedStringAttributeGroupAttributeRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Attribute was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttributeGroupAttribute"
                },
                "examples": {
                  "Non Localized String Response": {
                    "$ref": "#/components/examples/NonLocalizedStringAttributeGroupAttributeResponse"
                  },
                  "Localized String Response": {
                    "$ref": "#/components/examples/LocalizedStringAttributeGroupAttributeResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let attribute = { \"value\": \"M\" };\nlet response = await adminApi.apis.AttributeGroups.createAttributeGroupAttribute({ attributeGroupName: \"size\" },{ requestBody: attribute });\nconsole.log(response.body.value);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$attribute = new AttributeGroupAttribute();\n$attribute->value = \"M\";\n$response = $adminApi->attributeGroups->createAttribute(\"size\", $attribute);\necho $response->value;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "AttributeGroupAttribute attribute = new AttributeGroupAttribute();\nattribute.setValue(\"M\");\nAttributeGroupAttribute response = adminApi.attributeGroups().createAttribute(\"size\", attribute);\nSystem.out.println(response.getValue());\n"
          }
        ]
      }
    },
    "/attribute-groups/{attributeGroupName}/attributes/{attributeValue}": {
      "put": {
        "operationId": "updateAttributeGroupAttribute",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "attribute-groups"
        ],
        "tags": [
          "AttributeGroups"
        ],
        "summary": "Update the given attribute.",
        "description": "This endpoint can be used to update the given attribute.\n\nThe attribute can be updated only if:\n\n* it's not advanced\n* it doesn't belong to a system AG\n\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/products/product-schema-and-structure#update-attribute).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          },
          {
            "$ref": "#/components/parameters/AttributeValue"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttributeGroupAttribute"
              },
              "examples": {
                "Non Localized String Request": {
                  "$ref": "#/components/examples/NonLocalizedStringAttributeGroupAttributeRequest"
                },
                "Localized String Request": {
                  "$ref": "#/components/examples/LocalizedStringAttributeGroupAttributeRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Attribute was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttributeGroupAttribute"
                },
                "examples": {
                  "Non Localized String Response": {
                    "$ref": "#/components/examples/NonLocalizedStringAttributeGroupAttributeResponse"
                  },
                  "Localized String Response": {
                    "$ref": "#/components/examples/LocalizedStringAttributeGroupAttributeResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let attribute = { \"value\": \"L\" };\nlet response = await adminApi.apis.AttributeGroups.updateAttributeGroupAttribute({ attributeGroupName: \"size\", attributeValue: \"M\" },{ requestBody: attribute });\nconsole.log(response.body.value);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$attribute = new AttributeGroupAttribute();\n$attribute->value = \"L\";\n$response = $adminApi->attributeGroups->updateAttribute(\"size\", \"M\", $attribute);\necho $response->value;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "AttributeGroupAttribute attribute = new AttributeGroupAttribute();\nattribute.setValue(\"L\");\nAttributeGroupAttribute response = adminApi.attributeGroups().updateAttribute(\"size\", \"M\", attribute);\nSystem.out.println(response.getValue());\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteAttributeGroupAttribute",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "attribute-groups"
        ],
        "tags": [
          "AttributeGroups"
        ],
        "summary": "Delete an attribute",
        "description": "This endpoint can be used to delete an attribute.\n\nThe attribute can be deleted only if:\n\n* it's not advanced\n* it doesn't belong to a system AG\n* it's not used\n\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/products/product-schema-and-structure#delete-attribute).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/AttributeGroupName"
          },
          {
            "$ref": "#/components/parameters/AttributeValue"
          }
        ],
        "responses": {
          "204": {
            "description": "Attribute was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.AttributeGroups.deleteAttributeGroupAttribute({ attributeGroupName: \"size\", attributeValue: \"M\" });\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->attributeGroups->deleteAttribute(\"size\", \"M\");\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.attributeGroups().deleteAttribute(\"size\", \"M\");\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/campaigns": {
      "get": {
        "operationId": "getCampaigns",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "campaigns"
        ],
        "tags": [
          "Campaigns"
        ],
        "summary": "Get campaigns for given filters",
        "description": "This endpoint can be used to retrieve a collection of campaigns. It is possible to refine the search by applying filters.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/pricing-and-promotions/price-campaigns#get-a-collection-of-campaigns).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/FilterId"
          },
          {
            "$ref": "#/components/parameters/FilterMinId"
          },
          {
            "$ref": "#/components/parameters/FilterMaxId"
          },
          {
            "$ref": "#/components/parameters/SortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          },
          {
            "name": "with",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "customData"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of campaigns",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Campaign"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Campaign Collection": {
                    "$ref": "#/components/examples/CampaignCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Campaigns.getCampaigns({shopKey: \"ms\"});\nlet campaigns = response.body.entities;\n\ncampaigns.forEach(\n    campaign => console.log(campaign.name)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$campaignCollection = $adminApi->campaigns->all(\"ms\");\n\nforeach ($campaignCollection->getEntities() as $campaign) {\n    echo $campaign->name;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<Campaign> campaignCollection = adminApi.campaigns().all(\"ms\");\n\nfor (Campaign campaign : campaignCollection.getEntities()) {\n    System.out.println(campaign.getName());\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "createCampaign",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "campaigns"
        ],
        "tags": [
          "Campaigns"
        ],
        "summary": "Create a new campaign",
        "description": "This endpoint can be used to create a new campaign allowing to run price reductions for all and/or specific variants.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/pricing-and-promotions/price-campaigns#create-a-campaign).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Campaign"
              },
              "examples": {
                "Campaign": {
                  "$ref": "#/components/examples/CampaignRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Campaign was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Campaign"
                },
                "examples": {
                  "Campaign": {
                    "$ref": "#/components/examples/CampaignResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let campaign = {\n    \"name\": \"My campaign\",\n    \"description\": \"My first campaign\",\n    \"reduction\": 14.75,\n    \"countryCodes\": [\"DE\", \"AT\"],\n    \"startAt\": \"2021-01-23T11:30:58+00:00\",\n    \"endAt\": \"2021-09-23T11:30:58+00:00\"\n  };\n  \n  let createResponse = await adminApi.apis.Campaigns.createCampaign({ shopKey: \"sc\" },{ requestBody: campaign });\n  let createdCampaign = createResponse.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$campaign = new Campaign();\n$campaign->name = \"My Campaign\";\n$campaign->description = \"My first campaign\";\n$campaign->reduction = 14.75;\n$campaign->countryCodes = [\"DE\", \"AT\"];\n$campaign->startAt = \"2021-01-23T11:30:58+00:00\";\n$campaign->endAt = \"2021-09-23T11:30:58+00:00\";\n$campaign->campaignKey = \"05f962c8-857b-462a-bea2-54e2bfecf729\";\n$campaign->customData = (object) [\"devicesAllowed\" => [\"app\", \"web\"]];\n\n$campaign = $adminApi->campaigns->create(\"ms\", $campaign);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Campaign campaign = new Campaign();\ncampaign.setName(\"My Campaign\");\ncampaign.setDescription(\"My first campaign\");\n\nList<String> countryCodes = new ArrayList<>();\ncountryCodes.add(\"DE\");\ncountryCodes.add(\"AT\");\ncampaign.setCountryCodes(countryCodes);\n\ncampaign.setReduction(14.75);\n\ncampaign.setStartAt(java.time.Instant.parse(\"2021-01-23T11:30:58+00:00\"));\ncampaign.setEndAt(java.time.Instant.parse(\"2021-09-23T11:30:58+00:00\"));\ncampaign.setCampaignKey(\"05f962c8-857b-462a-bea2-54e2bfecf729\");\n\nMap<String, List<String>> customData = new HashMap<>();\nList<String> devicesAllowed = Arrays.asList(\"app\", \"web\");\ncustomData.put(\"devicesAllowed\", devicesAllowed);\n\ncampaign.setCustomData(customData);\n\ncampaign = adminApi.campaigns().create(\"ms\", campaign);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/campaigns/{campaignId}": {
      "get": {
        "operationId": "getCampaign",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "campaigns"
        ],
        "tags": [
          "Campaigns"
        ],
        "summary": "Get a campaign",
        "description": "This endpoint can be used to get a single campaign by ID.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/pricing-and-promotions/price-campaigns#get-a-campaign).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "name": "campaignId",
            "in": "path",
            "description": "Campaign ID",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "examples": {
              "CampaignId": {
                "value": 1
              }
            }
          },
          {
            "name": "with",
            "required": false,
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "explode": false,
            "schema": {
              "$ref": "#/paths/~1shops~1%7BshopKey%7D~1campaigns/get/parameters/8/schema"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Campaign",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Campaign"
                },
                "examples": {
                  "Complete Product": {
                    "$ref": "#/components/examples/CampaignResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Campaigns.getCampaign({shopKey: \"ms\", campaignId: 1});\nlet campaign = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$campaign = $adminApi->campaigns->get(\"ms\", 1);\n\necho $campaign->name;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Campaign campaign = adminApi.campaigns().get(\"ms\", 1);\n\nSystem.out.println(campaign.getName());\n"
          }
        ]
      },
      "put": {
        "operationId": "updateCampaign",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "campaigns"
        ],
        "tags": [
          "Campaigns"
        ],
        "summary": "Update an existing campaign",
        "description": "This endpoint can be used to update/replace an existing campaign. It does not support partial updates.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/pricing-and-promotions/price-campaigns#update-a-campaign).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "name": "campaignId",
            "in": "path",
            "description": "Campaign ID",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "examples": {
              "CampaignId": {
                "value": 1
              }
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Campaign"
              },
              "examples": {
                "Campaign": {
                  "$ref": "#/components/examples/CampaignRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The campaign was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Campaign"
                },
                "examples": {
                  "Campaign": {
                    "$ref": "#/components/examples/CampaignResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/paths/~1promotions/get/responses/403"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Campaigns.getCampaign({shopKey: \"ms\", campaignId: 1});\nlet campaign = response.body;\n\ncampaign.name = \"My Campaign\";\ncampaign.description = \"My first campaign\";\ncampaign.reduction = 14.75;\ncampaign.countryCodes = [\"DE\", \"AT\"];\ncampaign.startAt = \"2021-01-23T11:30:58+00:00\";\ncampaign.endAt = \"2021-09-23T11:30:58+00:00\";\ncampaign.campaignKey = \"05f962c8-857b-462a-bea2-54e2bfecf729\";\ncampaign.customData = {\"devicesAllowed\": [\"app\", \"web\"]};\n\nlet updateResponse = await client.apis.Campaigns.updateCampaign({shopKey: \"ms\", campaignId: campaign.id}, {requestBody: campaign});\nlet updatedCampaign = updateResponse.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$campaign = $adminApi->campaigns->get(\"ms\", 1);\n\n$campaign->name = \"My Campaign\";\n$campaign->description = \"My first campaign\";\n$campaign->reduction = 14.75;\n$campaign->countryCodes = [\"DE\", \"AT\"];\n$campaign->startAt = \"2021-01-23T11:30:58+00:00\";\n$campaign->endAt = \"2021-09-23T11:30:58+00:00\";\n$campaign->campaignKey = \"05f962c8-857b-462a-bea2-54e2bfecf729\";\n$$campaign->customData = (object) [\"devicesAllowed\" => [\"app\", \"web\"]];\n\n$campaign = $adminApi->campaigns->update(\"ms\", $campaign->id, $campaign);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Campaign campaign = adminApi.campaigns().get(\"ms\", 1);\n\ncampaign.setName(\"My Campaign\");\ncampaign.setDescription(\"My first campaign\");\n\nList<String> countryCodes = new ArrayList<>();\ncountryCodes.add(\"DE\");\ncountryCodes.add(\"AT\");\ncampaign.setCountryCodes(countryCodes);\n\ncampaign.setReduction(14.75);\n\ncampaign.setStartAt(java.time.Instant.parse(\"2021-01-23T11:30:58+00:00\"));\ncampaign.setEndAt(java.time.Instant.parse(\"2021-09-23T11:30:58+00:00\"));\ncampaign.setCampaignKey(\"05f962c8-857b-462a-bea2-54e2bfecf729\");\n\nMap<String, List<String>> customData = new HashMap<>();\nList<String> devicesAllowed = Arrays.asList(\"app\", \"web\");\ncustomData.put(\"devicesAllowed\", devicesAllowed);\n\ncampaign.setCustomData(customData);\n\ncampaign = adminApi.campaigns().update(\"ms\", campaign.getId(), campaign);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteCampaign",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "campaigns"
        ],
        "tags": [
          "Campaigns"
        ],
        "summary": "Delete a campaign",
        "description": "This endpoint can be used to delete a campaign along with all its reductions.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/pricing-and-promotions/price-campaigns#delete-a-campaign).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "name": "campaignId",
            "in": "path",
            "description": "Campaign ID",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "examples": {
              "CampaignId": {
                "value": 1
              }
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Campaign was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "client.apis.Campaigns.deleteCampaign({shopKey: \"ms\", campaignId: 1});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->campaigns->delete(\"ms\", 1);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.campaigns().delete(\"ms\", 1);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/campaigns/{campaignId}/reductions/variants": {
      "post": {
        "operationId": "updateOrCreateVariantReductions",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "campaigns"
        ],
        "tags": [
          "Campaigns"
        ],
        "summary": "Create or update campaign product variant reductions",
        "description": "This endpoint can be used to create or update product variant campaign reductions allowing to run price reductions for specific variants.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/promotions/introduction#create-or-update-variant-reductions).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "name": "campaignId",
            "in": "path",
            "description": "Campaign ID",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "examples": {
              "CampaignId": {
                "value": 1
              }
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "maxItems": 5000,
                "items": {
                  "$ref": "#/components/schemas/ProductVariantCampaignReduction"
                }
              },
              "examples": {
                "Campaign Reductions": {
                  "$ref": "#/components/examples/ProductVariantCampaignReductionRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Campaign reductions were succesfully updated or created."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let reductions = [\n    {\n        productVariantId: 123,\n        reduction: 10\n    },\n    {\n        productVariantReferenceKey: \"myKey\",\n        reduction: 10\n    }\n]\n\nawait client.apis.Campaigns.updateOrCreateVariantReductions({shopKey: \"ms\", campaignId: 1}, {requestBody: reductions});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$reduction1 = new ProductVariantCampaignReduction();\n$reduction1->productVariantId = 123;\n$reduction1->reduction = 10;\n\n$reduction2 = new ProductVariantCampaignReduction();\n$reduction2->productVariantReferenceKey = 'myKey';\n$reduction2->reduction = 10;\n\n$reductions = [$reduction1, $reduction2];\n\n$adminApi->campaigns->updateOrCreateVariantReductions('ms', 1, $reductions);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ProductVariantCampaignReduction reduction1 = new ProductVariantCampaignReduction();\nreduction1.setProductVariantId(123);\nreduction1.setReduction(10);\n\nProductVariantCampaignReduction reduction2 = new ProductVariantCampaignReduction();\nreduction2.setProductVariantReferenceKey(\"myKey\");\nreduction2.setReduction(10);\n\nArrayList<ProductVariantCampaignReduction> reductions = new ArrayList<ProductVariantCampaignReduction>();\nreductions.add(reduction1);\nreductions.add(reduction2);\n\nadminApi.campaigns().updateOrCreateVariantReductions(\"ms\", 1, reductions);\n"
          }
        ]
      },
      "get": {
        "operationId": "getCampaignReductions",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "campaigns"
        ],
        "tags": [
          "Campaigns"
        ],
        "summary": "Get variant reduction for given campaign",
        "description": "This endpoint can be used to retrieve a collection of campaign variant reductions. It is possible to refine the search by applying filters.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/promotions/introduction#get-a-collection-of-reductions).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "name": "campaignId",
            "in": "path",
            "description": "Campaign ID",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "examples": {
              "CampaignId": {
                "value": 1
              }
            }
          },
          {
            "$ref": "#/components/parameters/CampaignReductionLimit"
          },
          {
            "$ref": "#/components/parameters/FilterProductIds"
          },
          {
            "$ref": "#/components/parameters/FilterVariantIds"
          },
          {
            "$ref": "#/components/parameters/FilterProductReferenceKeys"
          },
          {
            "$ref": "#/components/parameters/FilterVariantReferenceKeys"
          },
          {
            "$ref": "#/components/parameters/FilterMinId"
          },
          {
            "$ref": "#/components/parameters/FilterMaxId"
          },
          {
            "$ref": "#/components/parameters/CampaignReductionSortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "List of campaign variant reductions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ProductVariantCampaignReduction"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Campaign Reductions": {
                    "value": {
                      "entities": [
                        {
                          "id": 1,
                          "productVariantId": 123,
                          "productVariantReferenceKey": "myKey",
                          "reduction": 10
                        }
                      ],
                      "cursor": {
                        "next": null
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Campaigns.getCampaignReductions({shopKey: \"ms\", campaignId: 1});\nlet reductions = response.body.entities;\n\nreductions.forEach(\n    reduction => console.log(reduction.productVariantReferenceKey + \": \" + reduction.reduction)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$reductionCollection = $adminApi->campaigns->allReductions(\"ms\", 1);\n\nforeach ($reductionCollection->getEntities() as $reduction) {\n    echo $reduction->productVariantReferenceKey . ': '. $reduction->reduction;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<ProductVariantCampaignReduction> reductionCollection = adminApi.campaigns().allReductions(\"ms\", 1);\n\nfor (ProductVariantCampaignReduction reduction : reductionCollection.getEntities()) {\n    System.out.println(reduction.getProductVariantReferenceKey() + \": \" + reduction.getReduction());\n}\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/campaigns/{campaignId}/reductions/products": {
      "post": {
        "operationId": "updateOrCreateProductReductions",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "campaigns"
        ],
        "tags": [
          "Campaigns"
        ],
        "summary": "Create or update campaign product reductions",
        "description": "This endpoint can be used to create or update product campaign reductions allowing to run price reductions for all related variants.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/promotions/introduction#create-or-update-product-reductions).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "name": "campaignId",
            "in": "path",
            "description": "Campaign ID",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "examples": {
              "CampaignId": {
                "value": 1
              }
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "maxItems": 5000,
                "items": {
                  "$ref": "#/components/schemas/ProductCampaignReduction"
                }
              },
              "examples": {
                "Campaign Reductions": {
                  "$ref": "#/components/examples/ProductCampaignReductionRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Campaign reductions were succesfully updated or created."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let reductions = [\n    {\n        productId: 123,\n        reduction: 10\n    },\n    {\n        productReferenceKey: \"myKey\",\n        reduction: 10\n    }\n]\n\nawait client.apis.Campaigns.updateOrCreateProductReductions({shopKey: \"ms\", campaignId: 1}, {requestBody: reductions});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$reduction1 = new ProductCampaignReduction();\n$reduction1->productId = 123;\n$reduction1->reduction = 10;\n\n$reduction2 = new ProductCampaignReduction();\n$reduction2->productReferenceKey = 'myKey';\n$reduction2->reduction = 10;\n\n$reductions = [$reduction1, $reduction2];\n\n$adminApi->campaigns->updateOrCreateProductReductions('ms', 1, $reductions);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ProductCampaignReduction reduction1 = new ProductCampaignReduction();\nreduction1.setProductId(123);\nreduction1.setReduction(10);\n\nProductCampaignReduction reduction2 = new ProductCampaignReduction();\nreduction2.setProductReferenceKey(\"myKey\");\nreduction2.setReduction(10);\n\nArrayList<ProductCampaignReduction> reductions = new ArrayList<ProductCampaignReduction>();\nreductions.add(reduction1);\nreductions.add(reduction2);\n\nadminApi.campaigns().updateOrCreateProductReductions(\"ms\", 1, reductions);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/campaigns/{campaignId}/reductions": {
      "delete": {
        "operationId": "deleteCampaignReductions",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "campaigns"
        ],
        "tags": [
          "Campaigns"
        ],
        "summary": "Delete all or specific campaign reductions",
        "description": "This endpoint can be used to delete all or specific reductions belonging to a campaign.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/promotions/introduction#delete-campaign-reductions).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "name": "campaignId",
            "in": "path",
            "description": "Campaign ID",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "examples": {
              "CampaignId": {
                "value": 1
              }
            }
          },
          {
            "$ref": "#/components/parameters/FilterProductIds"
          },
          {
            "$ref": "#/components/parameters/FilterVariantIds"
          },
          {
            "$ref": "#/components/parameters/FilterProductReferenceKeys"
          },
          {
            "$ref": "#/components/parameters/FilterVariantReferenceKeys"
          }
        ],
        "responses": {
          "204": {
            "description": "Campaign reductions were successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let options = {\n  \"shopKey\": \"ms\",\n  \"campaignId\": 1,\n  \"filters[variantId]\": 1,\n  \"filters[variantReferenceKey]\": \"myVariantReferenceKey\",\n  \"filters[productId]\": 3,\n  \"filters[productReferenceKey]\": \"myProductReferenceKey\"\n};\n\nawait client.apis.Campaigns.deleteCampaignReductions(options);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n  'filters[variantId]' => 1,\n  'filters[variantReferenceKey]' => 'myVariantReferenceKey',\n  'filters[productId]' => 3,\n  'filters[productReferenceKey]' => 'myProductReferenceKey',\n];\n\n$adminApi->campaigns->deleteReductions(\"ms\", 1, $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                      .addOption(\"filters[variantId]\", 1)\n                      .addOption(\"filters[variantReferenceKey]\", \"myVariantReferenceKey\")\n                      .addOption(\"filters[productId]\", 3)\n                      .addOption(\"filters[productReferenceKey]\", \"myProductReferenceKey\")\n                      .build();\n\nadminApi.campaigns().deleteReductions(\"ms\", 1, options);\n"
          }
        ]
      }
    },
    "/master-categories": {
      "get": {
        "operationId": "getMasterCategories",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "categories"
        ],
        "tags": [
          "MasterCategories"
        ],
        "summary": "Get master categories for given filters",
        "description": "This endpoint can be used to retrieve a collection of master categories.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-product-master-and-category-master-data#get-a-collection-of-master-categories).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/FilterId"
          },
          {
            "$ref": "#/components/parameters/FilterMinId"
          },
          {
            "$ref": "#/components/parameters/FilterMaxId"
          },
          {
            "$ref": "#/components/parameters/SortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "List of master categories",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/MasterCategory"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Complete Product Collection": {
                    "$ref": "#/components/examples/MasterCategoryCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.MasterCategories.getMasterCategories();\nlet masterCategories = response.body.entities;\n\nmasterCategories.forEach(\n    masterCategory => console.log(masterCategory.path)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$masterCategoryCollection = $adminApi->masterCategories->all();\n\nforeach ($masterCategoryCollection->getEntities() as $masterCategory) {\n    echo implode('>', $masterCategory->path);\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var masterCategoryCollection = adminApi.masterCategories().all();\n\nfor (var masterCategory : masterCategoryCollection.getEntities()) {\n    System.out.println(String.join(\">\", masterCategory.getPath()));\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "createMasterCategory",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "categories"
        ],
        "tags": [
          "MasterCategories"
        ],
        "summary": "Create a new master category",
        "description": "This endpoint can be used to create a new master category along with attributes.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-product-master-and-category-master-data#create-master-category).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MasterCategory"
              },
              "examples": {
                "Campaign": {
                  "$ref": "#/components/examples/MasterCategoryRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Master category",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MasterCategory"
                },
                "examples": {
                  "Master Category": {
                    "$ref": "#/components/examples/MasterCategoryResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newMasterCategory = {\n    path: [\n        \"Fashion\",\n        \"Men\"\n    ],\n    attributes: [\n        {\n            name: \"season\",\n            type: \"simple\",\n            isMandatory: false\n        }\n    ]\n};\n\nlet response = await client.apis.MasterCategories.createMasterCategory({}, {requestBody: newMasterCategory});\nlet createdMasterCategory = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$masterCategory = new MasterCategory();\n$masterCategory->path = [\n    'Fashion',\n    'Men',\n];\n\n$masterCategoryAttribute = new MasterCategoryAttribute();\n$masterCategoryAttribute->name = \"season\";\n$masterCategoryAttribute->type = \"simple\";\n$masterCategoryAttribute->isMandatory = false;\n\n$masterCategory->attributes = [$masterCategoryAttribute];\n\n$masterCategory = $adminApi->masterCategories->create($masterCategory);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var masterCategory = new MasterCategory();\n\nvar path = new ArrayList<String>();\npath.add(\"Fashion\");\npath.add(\"Men\");\n\nmasterCategory.setPath(path);\n\nvar masterCategoryAttribute = new MasterCategoryAttribute();\nmasterCategoryAttribute.setName(\"season\");\nmasterCategoryAttribute.setType(AttributeType.VALUE_SIMPLE);\nmasterCategoryAttribute.setIsMandatory(false);\n\nvar attributes = new ArrayList<MasterCategoryAttribute>();\nattributes.add(masterCategoryAttribute);\n\nmasterCategory.setAttributes(attributes);\n\nmasterCategory = adminApi.masterCategories().create(masterCategory);\n"
          }
        ]
      }
    },
    "/master-categories/{masterCategoryId}": {
      "get": {
        "operationId": "getMasterCategory",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "categories"
        ],
        "tags": [
          "MasterCategories"
        ],
        "summary": "Get master category by ID",
        "description": "This endpoint can be used to retrieve a single master category by ID.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-product-master-and-category-master-data#get-master-category).\n",
        "parameters": [
          {
            "name": "masterCategoryId",
            "in": "path",
            "description": "Master category ID",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "examples": {
              "MasterCategoryId": {
                "value": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Master category",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MasterCategory"
                },
                "examples": {
                  "Complete Product Collection": {
                    "$ref": "#/components/examples/MasterCategoryResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.MasterCategories.getMasterCategory({\n    masterCategoryId: 1\n});\n\nlet masterCategory = response.body;\n\nconsole.log(masterCategory);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$masterCategory = $adminApi->masterCategories->get(1);\n\necho implode('>', $masterCategory->path);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var masterCategory = adminApi.masterCategories().get(1);\n\nSystem.out.println(String.join(\">\", masterCategory.getPath()));\n"
          }
        ]
      },
      "put": {
        "operationId": "updateMasterCategory",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "categories"
        ],
        "tags": [
          "MasterCategories"
        ],
        "summary": "Update an existing master category",
        "description": "This endpoint can be used to update an existing a master category along with attributes.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-product-master-and-category-master-data#update-master-category).\n",
        "parameters": [
          {
            "name": "masterCategoryId",
            "in": "path",
            "description": "Master category ID",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "examples": {
              "MasterCategoryId": {
                "value": 1
              }
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MasterCategory"
              },
              "examples": {
                "Master Category": {
                  "$ref": "#/components/examples/MasterCategoryRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Master category",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MasterCategory"
                },
                "examples": {
                  "Master Category": {
                    "$ref": "#/components/examples/MasterCategoryResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.MasterCategories.getMasterCategory({\n    masterCategoryId: 1\n});\n\nlet masterCategory = response.body;\n\nmasterCategory.path = [\n    \"Fashion\",\n    \"Men\",\n    \"Shirts\"\n];\n\nresponse = await client.apis.MasterCategories.updateMasterCategory(\n    { masterCategoryId: 1},\n    {requestBody: masterCategory}\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$masterCategory = $adminApi->masterCategories->get(1);\n\n$masterCategory->path = [\n    \"Fashion\",\n    \"Men\",\n    \"Shirts\"\n];\n\n$masterCategory = $adminApi->masterCategories->update($masterCategory->id, $masterCategory);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var masterCategory = adminApi.masterCategories().get(1);\n\nvar newPath = new ArrayList<String>();\nnewPath.add(\"Fashion\");\nnewPath.add(\"Men\");\nnewPath.add(\"Shirts\");\n\nmasterCategory.setPath(newPath);\n\nmasterCategory = adminApi.masterCategories().update(masterCategory.getId(), masterCategory);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteMasterCategory",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "categories"
        ],
        "tags": [
          "MasterCategories"
        ],
        "summary": "Delete a master category",
        "description": "This endpoint can be used to delete a master category. The master category has to be a leaf (the last node in the tree structure) and no products assigned.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-product-master-and-category-master-data#delete-master-category).\n",
        "parameters": [
          {
            "name": "masterCategoryId",
            "in": "path",
            "description": "Master category ID",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "examples": {
              "MasterCategoryId": {
                "value": 1
              }
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Master category was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "client.apis.MasterCategories.deleteMasterCategory({masterCategoryId: 1});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->masterCategories->delete(1);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.masterCategories().delete(1);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/categories": {
      "get": {
        "operationId": "getShopCategories",
        "x-rateLimit": {
          "scope": "shopCategoriesRead"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategories"
        ],
        "summary": "Get shop categories for given filters",
        "description": "This endpoint can be used to retrieve a collection of shop categories. It is possible to refine the search by applying filters.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/shop-categories/deeper-understanding-of-shop-categories#get-multiple-shop-categories).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/FilterId"
          },
          {
            "$ref": "#/components/parameters/FilterMinId"
          },
          {
            "$ref": "#/components/parameters/FilterMaxId"
          },
          {
            "$ref": "#/components/parameters/SortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          },
          {
            "name": "filters[parentId]",
            "in": "query",
            "description": "Filter shop categories by parent ID.",
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "customData",
                  "countries",
                  "countries.properties",
                  "countries.customData",
                  "countries.seo"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of shop categories",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ShopCategory"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Shop Category Collection": {
                    "value": {
                      "entities": [
                        {
                          "id": 3,
                          "parentId": 1,
                          "name": {
                            "de_DE": "Meine Shop-Kategorie",
                            "en_GB": "My Shop Category"
                          },
                          "productSets": [
                            {
                              "productSetId": 100,
                              "referencedProductSetId": 98,
                              "includeProductIds": [
                                1
                              ]
                            },
                            {
                              "productSetId": 101,
                              "excludeProductIds": [
                                2
                              ]
                            },
                            {
                              "productSetId": 102,
                              "referencedProductSetId": 99,
                              "isNew": true,
                              "attributes": [
                                {
                                  "name": "color",
                                  "include": [
                                    "red"
                                  ]
                                }
                              ]
                            }
                          ],
                          "supportedFilterGroups": [
                            "material",
                            "maker"
                          ],
                          "customData": {
                            "isValid": true,
                            "name": "ayou",
                            "score": 100,
                            "some-json": {
                              "foo": "bar",
                              "de_DE": {
                                "color": "weiss"
                              },
                              "en_GB": {
                                "color": "white"
                              }
                            }
                          },
                          "countries": [
                            {
                              "countryCode": "DE",
                              "shopCountryId": 1,
                              "isActive": true,
                              "isVisible": true,
                              "isExcludedFromSearch": null,
                              "properties": [
                                {
                                  "key": "myKey",
                                  "value": "myValue"
                                }
                              ],
                              "customData": {
                                "isValid": true,
                                "name": "ayou",
                                "score": 100,
                                "some-json": {
                                  "foo": "bar",
                                  "de_DE": {
                                    "color": "weiss"
                                  },
                                  "en_GB": {
                                    "color": "white"
                                  }
                                }
                              }
                            }
                          ]
                        }
                      ],
                      "cursor": {
                        "next": null
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.ShopCategories.getShopCategories({shopKey: \"ms\", \"filters[parentId]\": 1});\nlet shopCategories = response.body.entities;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'filters[parentId]' => 1\n];\n\n$shopCategoryCollection = $adminApi->shopCategories->all('ms', $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n    .addOption(\"filters[parentId]\", 1)\n    .build();\n\nApiCollection<ShopCategory> shopCategoryCollection = adminApi.shopCategories().all(\"ms\", options);\n"
          }
        ]
      },
      "post": {
        "operationId": "createShopCategory",
        "x-rateLimit": {
          "scope": "shopCategoriesWrite"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategories"
        ],
        "summary": "Create a new shop category",
        "description": "This endpoint can be used to create a new shop category.\n\nNote that it is not possible to create a shop category in a child shop.\n\nThe optional `countries` array sets country-specific configurations for this shop category after the initial category is created (default configs are created for all shop countries first; only listed countries are overwritten). If `countries` is present, it must contain at least one item.\n\nWhen multiple shop countries share the same `countryCode` (e.g. different languages), provide `shopCountryId` alongside `countryCode` to target a specific shop country.\n\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/shop-categories/deeper-understanding-of-shop-categories#create-a-shop-category).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "explode": false,
            "schema": {
              "$ref": "#/paths/~1shops~1%7BshopKey%7D~1categories/get/parameters/9/schema"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ShopCategory"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "countries": {
                        "type": "array",
                        "minItems": 1,
                        "description": "List of country specific configurations.",
                        "items": {
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/ShopCategoryCountry"
                            },
                            {
                              "type": "object",
                              "required": [
                                "countryCode"
                              ],
                              "properties": {
                                "countryCode": {
                                  "type": "string",
                                  "example": "DE",
                                  "description": "Identifier for the target shop country under the path shopKey (same role as `{countryCode}` on the dedicated country route)."
                                },
                                "shopCountryId": {
                                  "readOnly": false,
                                  "type": "integer",
                                  "example": 1,
                                  "description": "Optional shop country ID. When provided, targets exactly one shop country\ninstead of all shop countries sharing the same countryCode.\nMust match the ISO country code given in countryCode.\n"
                                }
                              }
                            }
                          ]
                        }
                      }
                    }
                  }
                ]
              },
              "examples": {
                "Minimal Shop Category": {
                  "$ref": "#/components/examples/MinimalShopCategoryCreateRequest"
                },
                "Complete Shop Category": {
                  "$ref": "#/components/examples/CompleteShopCategoryCreateRequest"
                },
                "With Countries": {
                  "summary": "Create with optional per-country overrides after defaults are applied",
                  "value": {
                    "name": {
                      "de_DE": "Neue Shop-Kategorie",
                      "en_GB": "New Shop Category"
                    },
                    "parentId": null,
                    "productSets": [],
                    "customData": null,
                    "countries": [
                      {
                        "countryCode": "DE",
                        "isActive": true,
                        "isVisible": false,
                        "isExcludedFromSearch": false,
                        "properties": [
                          {
                            "key": "myKey",
                            "value": "myValue"
                          }
                        ],
                        "customData": null,
                        "smartSortingKey": "scayle:v1:new-arrivals",
                        "customSortingKey": null
                      }
                    ]
                  }
                },
                "With Countries By Shop Country Id": {
                  "$ref": "#/components/examples/ShopCategoryPatchWithCountriesByShopCountryIdRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Shop category was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShopCategory"
                },
                "examples": {
                  "Shop Category": {
                    "$ref": "#/components/examples/ShopCategoryResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let shopCategory = {\n    \"parentId\": 1,\n    \"leftSiblingId\": 2,\n    \"name\": {\n        \"de_DE\": \"Neue Shop Kategorie\"\n    },\n    \"productSets\": [\n        {\n            \"referencedProductSetId\": 1,\n            \"includeProductIds\": [1, 2]\n        },\n        {\n            \"excludeProductIds\": [4]\n        },\n        {\n            \"isNew\": true,\n            \"attributes\": [\n                {\n                    \"name\": \"color\",\n                    \"include\": [\"red\"]\n                }\n            ]\n        }\n    ],\n    \"isActive\": true,\n    \"isVisible\": true,\n    \"isExcludedFromSearch\": false,\n    \"properties\": [\n        {\n            \"key\": \"sale\",\n            \"value\": \"NoSale\"\n        }\n    ]\n};\n\nlet response = await client.apis.ShopCategories.createShopCategory({shopKey: \"ms\"}, {requestBody: shopCategory});\nlet createdShopCategory = response.body;\n// optional read-only field on ShopCategory: per-country configs (omit on request; present on response when applicable)\nlet countries = createdShopCategory.countries;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "// define the category assortment\n$shopCategoryColorCriterion = new ShopCategoryAttributeCriterion();\n$shopCategoryColorCriterion->name = 'color';\n$shopCategoryColorCriterion->include = ['red'];\n\n$productSet1 = new ShopCategoryProductSet();\n$productSet1->isNew = true;\n$productSet1->attributes = [$shopCategoryColorCriterion];\n\n$productSet2 = new ShopCategoryProductSet();\n$productSet2->referencedProductSetId = 1;\n$productSet2->includeProductIds = [1, 2];\n\n$productSet3 = new ShopCategoryProductSet();\n$productSet3->excludeProductIds = [4];\n\n// define the properties\n$shopCategoryProperty = new ShopCategoryProperty();\n$shopCategoryProperty->key = 'sale';\n$shopCategoryProperty->value = 'NoSale';\n\n// create the shop category\n$shopCategory = new ShopCategory();\n$shopCategory->parentId = 1;\n$shopCategory->leftSiblingId = 2;\n$shopCategory->name = ['de_DE' => 'Neue Shop Kategorie'];\n$shopCategory->productSets = [$productSet1, $productSet2, $productSet3];\n$shopCategory->isActive = true;\n$shopCategory->isVisible = true;\n$shopCategory->isExcludedFromSearch = false;\n$shopCategory->properties = [$shopCategoryProperty];\n\n$createdShopCategory = $adminApi->shopCategories->create('ms', $shopCategory);\n// optional read-only field on ShopCategory: per-country configs (omit on request; present on response when applicable)\n$countries = $createdShopCategory->countries;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "// define the category assortment\nShopCategoryAttributeCriterion shopCategoryColorCriterion = new ShopCategoryAttributeCriterion();\nshopCategoryColorCriterion.setName(\"color\");\nshopCategoryColorCriterion.setInclude(Arrays.asList(new String[]{\"red\"}));\n\nShopCategoryProductSet productSet1 = new ShopCategoryProductSet();\nproductSet1.setIsNew(true);\nproductSet1.setAttributes(Arrays.asList(new ShopCategoryAttributeCriterion[]{shopCategoryColorCriterion}));\n\nShopCategoryProductSet productSet2 = new ShopCategoryProductSet();\nproductSet2.setReferencedProductSetId(1);\nproductSet2.setIncludeProductIds(Arrays.asList(new Integer[] {1, 2}));\n\nShopCategoryProductSet productSet3 = new ShopCategoryProductSet();\nproductSet3.setExcludeProductIds(Arrays.asList(new Integer[] {4}));\n\n// define the properties\nShopCategoryProperty shopCategoryProperty = new ShopCategoryProperty();\nshopCategoryProperty.setKey(\"sale\");\nshopCategoryProperty.setValue(\"NoSale\");\n\nMap<String, String> shopCategoryName = new HashMap<>();\nshopCategoryName.put(\"de_DE\", \"Neue Shop Kategorie\");\n\n// create the shop category\nShopCategory shopCategory = new ShopCategory();\nshopCategory.setParentId(1);\nshopCategory.setLeftSiblingId(2);\nshopCategory.setName(shopCategoryName);\nshopCategory.setProductSets(Arrays.asList(new ShopCategoryProductSet[]{productSet1, productSet2, productSet3}));\nshopCategory.setIsActive(true);\nshopCategory.setIsVisible(true);\nshopCategory.setIsExcludedFromSearch(false);\nshopCategory.setProperties(Arrays.asList(new ShopCategoryProperty[] {shopCategoryProperty}));\n\nvar createdShopCategory = adminApi.shopCategories().create(\"ms\", shopCategory);\n// optional read-only field on ShopCategory: per-country configs (omit on request; present on response when applicable)\nvar countries = createdShopCategory.getCountries();\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/categories/{shopCategoryId}": {
      "get": {
        "operationId": "getShopCategory",
        "x-rateLimit": {
          "scope": "shopCategoriesRead"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategories"
        ],
        "summary": "Get a shop category",
        "description": "This endpoint can be used to get a single shop category.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/shop-categories/deeper-understanding-of-shop-categories#get-a-shop-category).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          },
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "explode": false,
            "schema": {
              "$ref": "#/paths/~1shops~1%7BshopKey%7D~1categories/get/parameters/9/schema"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Shop category",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShopCategory"
                },
                "examples": {
                  "Shop Category": {
                    "$ref": "#/components/examples/ShopCategoryResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.ShopCategories.getShopCategory({shopKey: \"ms\", shopCategoryId: 1, with: \"countries\"});\nlet shopCategory = response.body;\nlet countries = shopCategory.countries;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'with' => 'countries'\n];\n\n$shopCategory = $adminApi->shopCategories->get('ms', 1, $options);\n$countries = $shopCategory->countries;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n    .addOption(\"with\", \"countries\")\n    .build();\n\nShopCategory shopCategory = adminApi.shopCategories().get(\"ms\", 1, options);\nvar countries = shopCategory.getCountries();\n"
          }
        ]
      },
      "patch": {
        "operationId": "updateShopCategory",
        "x-rateLimit": {
          "scope": "shopCategoriesWrite"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategories"
        ],
        "summary": "Update an existing shop category",
        "description": "This endpoint can be used to update an existing shop category. It supports partial updates.\n\nNote the following fields can not be updated:\n\n* properties\n* isActive\n* isVisible\n* isExcludedFromSearch\n\nThe optional `countries` array updates country-specific configurations for this shop category. If `countries` is present, it must contain at least one item. Only listed countries are updated; existing configurations for shop countries not included in the array are left unchanged.\n\nThe `with` query parameter matches **getShopCategory**: use comma-separated values (e.g. `countries`) to include nested data in the response.\n\nWhen multiple shop countries share the same `countryCode` (e.g. different languages), provide `shopCountryId` alongside `countryCode` to target a specific shop country.\n\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/shop-categories/deeper-understanding-of-shop-categories#update-a-shop-category).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          },
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "explode": false,
            "schema": {
              "$ref": "#/paths/~1shops~1%7BshopKey%7D~1categories/get/parameters/9/schema"
            }
          },
          {
            "name": "blockSupportedFilterGroupsPropagation",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "description": "If set to true, then updates on supported filter groups don't get propagated to descendants."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ShopCategory"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "countries": {
                        "type": "array",
                        "minItems": 1,
                        "description": "List of country specific configurations.",
                        "items": {
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/ShopCategoryCountry"
                            },
                            {
                              "type": "object",
                              "required": [
                                "countryCode"
                              ],
                              "properties": {
                                "countryCode": {
                                  "type": "string",
                                  "example": "DE",
                                  "description": "Identifier for the target shop country under the path shopKey (same role as `{countryCode}` on the dedicated country route)."
                                },
                                "shopCountryId": {
                                  "readOnly": false,
                                  "type": "integer",
                                  "example": 1,
                                  "description": "Optional shop country ID. When provided, targets exactly one shop country\ninstead of all shop countries sharing the same countryCode.\nMust match the ISO country code given in countryCode.\n"
                                }
                              }
                            }
                          ]
                        }
                      }
                    }
                  }
                ]
              },
              "examples": {
                "Minimal Shop Category": {
                  "$ref": "#/components/examples/MinimalShopCategoryUpdateRequest"
                },
                "Complete Shop Category": {
                  "$ref": "#/components/examples/CompleteShopCategoryUpdateRequest"
                },
                "With Countries": {
                  "$ref": "#/components/examples/ShopCategoryPatchWithCountriesRequest"
                },
                "With Countries By Shop Country Id": {
                  "$ref": "#/components/examples/ShopCategoryPatchWithCountriesByShopCountryIdRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Shop category was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShopCategory"
                },
                "examples": {
                  "Shop Category": {
                    "$ref": "#/components/examples/ShopCategoryResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let shopCategory = {\n    \"productSets\": [\n        {\n            \"excludeProductIds\": [5]\n        },\n        {\n            \"attributes\": [\n                {\n                    \"name\": \"color\",\n                    \"include\": [\"white\"]\n                }\n            ]\n        }\n    ],\n    \"countries\": [\n        {\n            \"countryCode\": \"DE\",\n            \"isActive\": true,\n            \"isVisible\": true\n        },\n        {\n            \"countryCode\": \"AT\",\n            \"isExcludedFromSearch\": false\n        }\n    ]\n};\n\nlet response = await client.apis.ShopCategories.updateShopCategory({shopKey: \"ms\", shopCategoryId: 1}, {requestBody: shopCategory});\nlet updatedShopCategory = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCategoryColorCriterion = new ShopCategoryAttributeCriterion();\n$shopCategoryColorCriterion->name = 'color';\n$shopCategoryColorCriterion->include = ['white'];\n\n$productSet1 = new ShopCategoryProductSet();\n$productSet1->attributes = [$shopCategoryColorCriterion];\n\n$productSet2 = new ShopCategoryProductSet();\n$productSet2->excludeProductIds = [5];\n\n$countryPatchDe = new ShopCategoryCountry();\n$countryPatchDe->countryCode = 'DE';\n$countryPatchDe->isActive = true;\n$countryPatchDe->isVisible = true;\n\n$countryPatchAt = new ShopCategoryCountry();\n$countryPatchAt->countryCode = 'AT';\n$countryPatchAt->isExcludedFromSearch = false;\n\n$shopCategory = new ShopCategory();\n$shopCategory->productSets = [$productSet1, $productSet2];\n$shopCategory->countries = [$countryPatchDe, $countryPatchAt];\n\n$updatedShopCategory = $adminApi->shopCategories->update('ms', 1, $shopCategory);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ShopCategoryAttributeCriterion shopCategoryColorCriterion = new ShopCategoryAttributeCriterion();\nshopCategoryColorCriterion.setName(\"color\");\nshopCategoryColorCriterion.setInclude(Arrays.asList(new String[]{\"white\"}));\n\nShopCategoryProductSet productSet1 = new ShopCategoryProductSet();\nproductSet1.setAttributes(Arrays.asList(new ShopCategoryAttributeCriterion[]{shopCategoryColorCriterion}));\n\nShopCategoryProductSet productSet2 = new ShopCategoryProductSet();\nproductSet2.setExcludeProductIds(Arrays.asList(new Integer[] {5}));\n\nShopCategoryCountryPatchItem countryPatchDe = new ShopCategoryCountry();\ncountryPatchDe.setCountryCode(\"DE\");\ncountryPatchDe.setIsActive(true);\ncountryPatchDe.setIsVisible(true);\n\nShopCategoryCountryPatchItem countryPatchAt = new ShopCategoryCountry();\ncountryPatchAt.setCountryCode(\"AT\");\ncountryPatchAt.setIsExcludedFromSearch(false);\n\nShopCategory shopCategory = new ShopCategory();\nshopCategory.setProductSets(Arrays.asList(new ShopCategoryProductSet[]{productSet1, productSet2}));\nshopCategory.setCountries(Arrays.asList(new ShopCategoryCountry[]{countryPatchDe, countryPatchAt}));\n\nShopCategory updatedShopCategory = adminApi.shopCategories().update(\"ms\", 1, shopCategory);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteShopCategory",
        "x-rateLimit": {
          "scope": "shopCategoriesWrite"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategories"
        ],
        "summary": "Delete a shop category",
        "description": "This endpoint can be used to delete a shop category.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/shop-categories/deeper-understanding-of-shop-categories#delete-a-shop-category).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          }
        ],
        "responses": {
          "204": {
            "description": "Shop category was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "client.apis.ShopCategories.deleteShopCategory({shopKey: \"ms\", shopCategoryId: 1});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->shopCategories->delete('ms', 1);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.shopCategories().delete(\"ms\", 1);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/product-sets/{productSetId}/unlink": {
      "put": {
        "operationId": "unlinkReferencingProductSets",
        "x-rateLimit": {
          "scope": "shopCategoriesWrite"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategories"
        ],
        "summary": "Unlink referencing product sets",
        "description": "This endpoint can be used to unlink referencing product sets.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/shop-categories/deeper-understanding-of-shop-categories#unlink-referencing-product-sets).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryProductSetId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShopCategoryProductSetUnlinkInstruction"
              },
              "examples": {
                "Product Set Unlink Request": {
                  "$ref": "#/components/examples/ShopCategoryProductSetUnlinkInstructionRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Referencing product sets were successfully unlinked."
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let productSetUnlinkInstruction = {\n    productSetIds: [2, 3],\n    copyConditions: true\n};\n\nclient.apis.ShopCategories.unlinkReferencingProductSets({shopKey: \"ms\", productSetId: 1}, {requestBody: productSetUnlinkInstruction});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$productSetUnlinkInstruction = new ShopCategoryProductSetUnlinkInstruction();\n$productSetUnlinkInstruction->productSetIds = [2, 3];\n$productSetUnlinkInstruction->copyConditions = true;\n\n$adminApi->shopCategoryProductSetUnlinkInstructions->unlink('ms', 1, $productSetUnlinkInstruction);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ShopCategoryProductSetUnlinkInstruction productSetUnlinkInstruction = new ShopCategoryProductSetUnlinkInstruction();\n\nList<Integer> productSetIds = new ArrayList<>();\nproductSetIds.add(2);\nproductSetIds.add(3);\nproductSetUnlinkInstruction.setProductSetIds(productSetIds);\n\nproductSetUnlinkInstruction.setCopyConditions(true);\n\nadminApi.shopCategoryProductSetUnlinkInstructions().unlink(\"ms\", 1, productSetUnlinkInstruction);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/categories/{shopCategoryId}/properties": {
      "get": {
        "operationId": "getShopCategoryProperties",
        "x-rateLimit": {
          "scope": "shopCategoriesRead"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategories"
        ],
        "summary": "Get shop category properties",
        "description": "This endpoint can be used to retrieve a collection of shop category properties.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/shop-categories/deeper-understanding-of-shop-categories#retrieve-all-shop-category-properties-for-a-shop-category).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          }
        ],
        "responses": {
          "200": {
            "description": "List of shop category properties",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ShopCategoryProperty"
                      }
                    }
                  }
                },
                "examples": {
                  "Shop Category Property Collection": {
                    "$ref": "#/components/examples/ShopCategoryPropertyCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.ShopCategories.getShopCategoryProperties({shopKey: \"ms\", countryCode: \"DE\", shopCategoryId: 1});\nlet shopCategoryProperties = response.body.entities;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCategoryPropertyCollection = $adminApi->shopCategories->allProperties('ms', 'DE', 1);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<ShopCategoryProperty> shopCategoryPropertyCollection = adminApi.shopCategories().allProperties(\"ms\", \"DE\", 1);\n"
          }
        ]
      },
      "post": {
        "operationId": "updateOrCreateShopCategoryProperty",
        "x-rateLimit": {
          "scope": "shopCategoriesWrite"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategories"
        ],
        "summary": "Update or create a shop category property",
        "description": "This endpoint can be used to create a new shop category property. If a property with the same name has already been assigned to the shop category, then its value will be replaced with the given one.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/shop-categories/deeper-understanding-of-shop-categories#add-a-shop-property).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShopCategoryProperty"
              },
              "examples": {
                "Shop Category Property": {
                  "$ref": "#/components/examples/ShopCategoryPropertyRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Shop category property was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShopCategoryProperty"
                },
                "examples": {
                  "Shop Category Property": {
                    "$ref": "#/components/examples/ShopCategoryPropertyResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let shopCategoryProperty = {\n    key: \"sale\",\n    value: \"NoSale\"\n};\n\nlet response = await client.apis.ShopCategories.updateOrCreateShopCategoryProperty(\n    {shopKey: \"ms\", shopCategoryId: 1, countryCode: \"DE\"},\n    {requestBody: shopCategoryProperty}\n);\n\nlet updatedShopCategoryProperty = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCategoryProperty = new ShopCategoryProperty();\n$shopCategoryProperty->key = 'sale';\n$shopCategoryProperty->value = 'NoSale';\n\n$updatedShopCategoryProperty = $adminApi->shopCategories->updateOrCreateProperty('ms', 'DE', 1, $shopCategoryProperty);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ShopCategoryProperty shopCategoryProperty = new ShopCategoryProperty();\nshopCategoryProperty.setKey(\"sale\");\nshopCategoryProperty.setValue(\"NoSale\");\n\nShopCategoryProperty updatedShopCategoryProperty = adminApi.shopCategories().updateOrCreateProperty(\"ms\", \"DE\", 1, shopCategoryProperty);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/categories/{shopCategoryId}/properties/{shopCategoryPropertyKey}": {
      "delete": {
        "operationId": "deleteShopCategoryProperty",
        "x-rateLimit": {
          "scope": "shopCategoriesWrite"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategories"
        ],
        "summary": "Delete a shop category property",
        "description": "This endpoint can be used to delete a property for the given shop category.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/shop-categories/deeper-understanding-of-shop-categories#delete-shop-category-property-value).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryPropertyKey"
          }
        ],
        "responses": {
          "204": {
            "description": "Shop category property was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "client.apis.ShopCategories.deleteShopCategoryProperty({shopKey: \"ms\", countryCode: \"DE\", shopCategoryId: 1, shopCategoryPropertyKey: \"sale\"});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->shopCategories->deleteProperty('ms', 'DE', 1, 'sale');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.shopCategories().deleteProperty(\"ms\", \"DE\", 1, \"sale\");\n"
          }
        ]
      },
      "get": {
        "operationId": "getShopCategoryProperty",
        "x-rateLimit": {
          "scope": "shopCategoriesRead"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategories"
        ],
        "summary": "Get a shop category property",
        "description": "This endpoint can be used to get a single shop category property.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/shop-categories/deeper-understanding-of-shop-categories#retrieve-a-shop-category-properties-for-a-shop-category).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryPropertyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Shop category property",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShopCategoryProperty"
                },
                "examples": {
                  "Shop Category Property": {
                    "$ref": "#/components/examples/ShopCategoryPropertyRequest"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.ShopCategories.getShopCategoryProperty({shopKey: \"ms\", countryCode: \"DE\", shopCategoryId: 1, shopCategoryPropertyKey: \"sale\"});\nlet shopCategoryProperty = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCategoryProperty = $adminApi->shopCategories->getProperty('ms', 'DE', 1, 'sale');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ShopCategoryProperty shopCategoryProperty = adminApi.shopCategories().getProperty(\"ms\", \"DE\", 1, \"sale\");\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/categories/{shopCategoryId}/custom-data": {
      "get": {
        "operationId": "getShopCategoriesCustomData",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategoriesCustomData"
        ],
        "summary": "Get custom data for a shop category",
        "description": "This endpoint can be used to get custom data for a shop category.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          },
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "example": "?with=inheritedCustomData",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "inheritedCustomData"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Custom data of a shop category",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "ShopCategory Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.ShopCategoriesCustomData.getShopCategoriesCustomData({shopKey: 'ms', shopCategoryId: 112, with: 'inheritedCustomData'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n  'with' => 'inheritedCustomData'\n];\n$adminApi->shopCategories->getCustomData('ms', 112, $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                      .addOption(\"with\", \"inheritedCustomData\")\n                      .build();\nadminApi.shopCategories().getCustomData(\"ms\", 112, options);\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateShopCategoriesCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategoriesCustomData"
        ],
        "summary": "Create or update custom data for a shop category",
        "description": "This endpoint can be used to create custom data for a shop category.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-or-update-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "ShopCategory Custom Data": {
                  "$ref": "#/components/examples/CustomDataRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Shop category custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "ShopCategory Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n  \"isValid\": true,\n  \"name\": \"ayou\",\n  \"score\": 100,\n  \"someJson\": {\n    \"de_DE\": {\n      \"color\": \"weiss\"\n    },\n    \"en_GB\": {\n      \"color\": \"white\"\n    }\n  }\n};\n\nawait client.apis.ShopCategoriesCustomData.createOrUpdateShopCategoriesCustomData({shopKey: 'ms', shopCategoryId: 112}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n$entityCustomData->score = 10;\n$entityCustomData->name = 'ayou';\n$entityCustomData->someJson = (object) [\n  'de_DE' => [\n    'color' => 'schwarz'\n  ],\n  'en_GB' => [\n    'color' => 'black'\n  ]\n];\n\n$adminApi->shopCategories->createOrUpdateCustomData('ms', 112, $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new entityCustomData();\nentityCustomData.put(\"isValid\", true);\nentityCustomData.put(\"score\", 100);\nentityCustomData.put(\"name\", \"ayou\");\n\nvar deColorObject = new HashMap<String, String>();\ndeColorObject.put(\"color\", \"weiss\");\n\nvar enColorObject = new HashMap<String, String>();\nenColorObject.put(\"color\", \"white\");\n\nEntityCustomData someJson = new HashMap<>();\nsomeJson.put(\"de_DE\", deColorObject);\nsomeJson.put(\"en_GB\", enColorObject);\n\nentityCustomData.put(\"someJson\", someJson);\n\nadminApi.shopCategories().createOrUpdateCustomData(\"ms\", 112, entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteShopCategoriesCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategoriesCustomData"
        ],
        "summary": "Delete custom data for a shop category",
        "description": "This endpoint can be used to delete custom data for a shop category.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          }
        ],
        "responses": {
          "204": {
            "description": "Shop category custom data was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.ShopCategoriesCustomData.deleteShopCategoriesCustomData({shopKey: 'ms', shopCategoryId: 112});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->shopCategories->deleteCustomData('ms', 112);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.shopCategories().deleteCustomData(\"ms\", 112);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/categories/{shopCategoryId}/custom-data/{key}": {
      "get": {
        "operationId": "getShopCategoriesCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategoriesCustomData"
        ],
        "summary": "Get data of a key in custom data for a shop category",
        "description": "This endpoint can be used to get custom data of a shop category key.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "example": "?with=inheritedCustomData",
            "explode": false,
            "schema": {
              "$ref": "#/paths/~1shops~1%7BshopKey%7D~1categories~1%7BshopCategoryId%7D~1custom-data/get/parameters/2/schema"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Custom data of a shop category key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "ShopCategory Custom Data For Key": {
                    "$ref": "#/components/examples/CustomDataResponseForKey"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.ShopCategoriesCustomData.getShopCategoriesCustomDataForKey({shopKey: 'ms', shopCategoryId: 112, key: 'isValid', with: \"inheritedCustomData\"});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n  'with' => 'inheritedCustomData'\n];\n$adminApi->shopCategories->getCustomDataForKey('ms', 112, 'isValid', $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"with\", \"inheritedCustomData\")\n                        .build();\nadminApi.shopCategories().getCustomDataForKey(\"ms\", 112, \"isValid\", options);\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateShopCategoriesCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategoriesCustomData"
        ],
        "summary": "Create or update a specific custom data key for a shop category",
        "description": "This endpoint can be used to create or update a specific custom data key for a shop category.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-or-update-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "ShopCategory Custom Data For Key": {
                  "$ref": "#/components/examples/CustomDataRequestForKey"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Shop category custom data key was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "ShopCategory Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n    isValid: true\n};\n\nawait client.apis.ShopCategoriesCustomData.createOrUpdateShopCategoriesCustomDataForKey({shopKey: 'ms', shopCategoryId: 112, key: 'isValid'}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n\n$adminApi->shopCategories->createOrUpdateCustomDataForKey('ms', 112, 'isValid', $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new entityCustomData();\nentityCustomData.put(\"isValid\", true);\n\nadminApi.shopCategories().createOrUpdateCustomDataForKey(\"ms\", 112, \"isValid\", entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteShopCategoriesCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategoriesCustomData"
        ],
        "summary": "Delete custom data key for a shop category",
        "description": "This endpoint can be used to delete custom data key for a shop category.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "204": {
            "description": "Shop category custom data key was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.ShopCategoriesCustomData.deleteShopCategoriesCustomDataForKey({shopKey: 'ms', shopCategoryId: 112, key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->shopCategories->deleteCustomDataForKey('ms', 112, 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.shopCategories().deleteCustomDataForKey(\"ms\", 112, \"isValid\");\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/categories/{shopCategoryId}/countries/{countryCode}/custom-data": {
      "get": {
        "operationId": "getShopCategoriesCountryCustomData",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategoriesCountryCustomData"
        ],
        "summary": "Get custom data for a shop category country",
        "description": "This endpoint can be used to get custom data for a shop category country.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "example": "?with=inheritedCustomData",
            "explode": false,
            "schema": {
              "$ref": "#/paths/~1shops~1%7BshopKey%7D~1categories~1%7BshopCategoryId%7D~1custom-data/get/parameters/2/schema"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Custom data of a shop category country",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "ShopCategory Country Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await AdminApi.apis.ShopCategoriesCountryCustomData.getShopCategoriesCountryCustomData({shopKey: 'ms', countryCode: 'DE', shopCategoryId: 112});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n  'with' => 'inheritedCustomData'\n];\n\n$adminApi->shopCategories->getCustomDataForCountry('ms', 112, 'DE', $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                      .addOption(\"with\", \"inheritedCustomData\")\n                      .build();\n\nadminApi.shopCategories().getCustomDataForCountry(\"ms\", 112, \"DE\", options);\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateShopCategoriesCountryCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategoriesCountryCustomData"
        ],
        "summary": "Create or update custom data for a shop category country",
        "description": "This endpoint can be used to create custom data for a shop category country.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-or-update-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "ShopCategory Custom Data": {
                  "$ref": "#/components/examples/CustomDataRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Shop category country custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "ShopCategory Country Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n    isValid: true,\n    score: 10,\n    name: \"empco-de\",\n    localizedColor: {\n        de_DE: \"White\"\n    },\n    sampleJson: {\n        foo: {\n           \"bar\" : \"value\"\n        }\n    }\n};\nawait adminApi.apis.ShopCategoriesCountryCustomData.createOrUpdateShopCategoriesCountryCustomData({shopKey: 'ms', shopCategoryId: 112, countryCode: 'DE', requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n$entityCustomData->score = 10;\n$entityCustomData->name = 'empco-de';\n$entityCustomData->localizedColor = (object) ['de_DE' => 'White'];\n$entityCustomData->sampleJson = (object) ['foo' => 'value'];\n\n$adminApi->shopCategories->createOrUpdateCustomDataForCountry('ms', 112, 'DE', $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new entityCustomData();\nentityCustomData.put(\"isValid\", true);\nentityCustomData.put(\"score\", 10);\nentityCustomData.put(\"name\", \"empco-de\");\n\nEntityCustomData localizedColor = new HashMap<>();\nlocalizedColor.put(\"de_DE\",\"Weiss\");\n\nEntityCustomData sampleJson = new HashMap<>();\nsampleJson.put(\"foo\",\"bar\");\n\nentityCustomData.put(\"localizedColor\", localizedColor);\nentityCustomData.put(\"sampleJson\", sampleJson);\n\nadminApi.shopCategories().createOrUpdateCustomDataForCountry(\"ms\", 112, \"DE\", entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteShopCategoriesCountryCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategoriesCountryCustomData"
        ],
        "summary": "Delete custom data for a shop category country",
        "description": "This endpoint can be used to delete custom data for a shop category country.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "responses": {
          "204": {
            "description": "Shop category country custom data was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await AdminApi.apis.ShopCategoriesCountryCustomData.deleteShopCategoriesCountryCustomData({shopKey: 'ms', shopCategoryId: 112, countryCode: 'DE'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->shopCategories->deleteCustomDataForCountry('ms', 112, 'DE');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.shopCategories().deleteCustomDataForCountry(\"ms\", 112, \"DE\");\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/categories/{shopCategoryId}/countries/{countryCode}/custom-data/{key}": {
      "get": {
        "operationId": "getShopCategoriesCountryCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategoriesCountryCustomData"
        ],
        "summary": "Get data of custom data key for a shop category country",
        "description": "This endpoint can be used to get custom data for a shop category country key.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "example": "?with=inheritedCustomData",
            "explode": false,
            "schema": {
              "$ref": "#/paths/~1shops~1%7BshopKey%7D~1categories~1%7BshopCategoryId%7D~1custom-data/get/parameters/2/schema"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Custom data of a shop category country key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "ShopCategory Country Custom Data For Key": {
                    "$ref": "#/components/examples/CustomDataResponseForKey"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.ShopCategoriesCountryCustomData.getShopCategoriesCountryCustomDataForKey({shopKey: 'ms', shopCategoryId: 112, countryCode: 'DE', key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'with' => 'inheritedCustomData'\n];\n\n$adminApi->shopCategories->getCustomDataKeyForCountry('ms', 112, 'DE', 'isValid', $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                      .addOption(\"with\", \"inheritedCustomData\")\n                      .build();\n\nadminApi.shopCategories().getCustomDataKeyForCountry(\"ms\", 112, \"DE\", \"isValid\", options);\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateShopCategoriesCountryCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategoriesCountryCustomData"
        ],
        "summary": "Create or update a specific custom data key for a shop category country",
        "description": "This endpoint can be used to create or update a specific custom data key for a shop category country.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-or-update-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "ShopCategory Country Custom Data For Key": {
                  "$ref": "#/components/examples/CustomDataRequestForKey"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Shop category country custom data key was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "ShopCategory Country Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n    isValid: true\n};\n\nawait AdminApi.apis.ShopCategoriesCountryCustomData.createOrUpdateShopCategoriesCountryCustomDataForKey({shopKey: 'ms', shopCategoryId: 112, countryCode: 'DE', key: 'isValid'}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n\n$adminApi->shopCategories->createOrUpdateCustomDataKeyForCountry('ms', 112, 'DE', 'isValid', $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new EntityCustomData();\nentityCustomData.put(\"isValid\", true);\n\nadminApi.shopCategories().createOrUpdateCustomDataKeyForCountry(\"ms\", 112, \"DE\", \"isValid\", entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteShopCategoriesCountryCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategoriesCountryCustomData"
        ],
        "summary": "Delete custom data key for a shop category country",
        "description": "This endpoint can be used to delete custom data key for a shop category country.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "204": {
            "description": "Shop category country custom data key was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await AdminApi.apis.ShopCategoriesCountryCustomData.deleteShopCategoriesCountryCustomDataForKey({shopKey: 'ms', shopCategoryId: 112, countryCode: 'DE', key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->shopCategories->deleteCustomDataKeyForCountry('ms', 112, 'DE', 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.shopCategories().deleteCustomDataKeyForCountry(\"ms\", 112, \"DE\", \"isValid\");\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/categories/{shopCategoryId}": {
      "get": {
        "operationId": "getShopCategoryCountry",
        "x-rateLimit": {
          "scope": "shopCategoriesRead"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategories"
        ],
        "summary": "Get shop category country configuration",
        "description": "This endpoint can be used to get shop category country-specific configurations.\nSee more details in the [Developer Guide](/en/user-guide/shops/shop-management/shop-categories#manage-shop-country-categories).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          },
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "properties",
                  "customData",
                  "seo"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Shop Category Country",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShopCategoryCountry"
                },
                "examples": {
                  "Shop Category Country": {
                    "$ref": "#/components/examples/ShopCategoryCountryResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response =\n  await client.apis.ShopCategories.getShopCategoryCountry(\n    { shopKey: \"ms\", countryCode: \"DE\", shopCategoryId: 1 }\n  );\nconsole.log(response.body);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$response = $this->adminApi->shopCategories->getCountry('ms', 'DE', 1);\nprint_r($response);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ShopCategoryCountry shopCategoryCountry = adminApi.shopCategories().getCountry(\"ms\", \"DE\", 1);\nSystem.out.println(shopCategoryCountry);\n"
          }
        ]
      },
      "post": {
        "operationId": "updateOrCreateShopCategoryCountry",
        "x-rateLimit": {
          "scope": "shopCategoriesWrite"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategories"
        ],
        "summary": "Create or update a shop category country configuration",
        "description": "This endpoint can be used to create or update a shop category country specific configuration.\nSee more details in the [Developer Guide](/en/user-guide/shops/shop-management/shop-categories#manage-shop-country-categories).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/ShopCategoryId"
          },
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "explode": false,
            "schema": {
              "$ref": "#/paths/~1shops~1%7BshopKey%7D~1countries~1%7BcountryCode%7D~1categories~1%7BshopCategoryId%7D/get/parameters/3/schema"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShopCategoryCountry"
              },
              "examples": {
                "Minimal Shop Category Country": {
                  "$ref": "#/components/examples/MinimalShopCategoryCountryRequest"
                },
                "Complete Shop Category Country": {
                  "$ref": "#/components/examples/CompleteShopCategoryCountryRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Shop category country configuration was succesfully updated or created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShopCategoryCountry"
                },
                "examples": {
                  "Shop Category Country": {
                    "$ref": "#/components/examples/ShopCategoryCountryResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let shopCategoryCountryConfiguration = {\n  \"isActive\": true,\n  \"isVisible\": true\n};\n\nlet response =\n  await client.apis.ShopCategories.updateOrCreateShopCategoryCountry(\n    { shopKey: \"ms\", countryCode: \"DE\", shopCategoryId: 1 },\n    { requestBody: shopCategoryCountryConfiguration }\n  );\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCategoryCountryConfiguration = new ShopCategoryCountry();\n$shopCategoryCountryConfiguration->isActive = true;\n$shopCategoryCountryConfiguration->isVisible = true;\n\n$this->adminApi->shopCategories->updateOrCreateCountry('ms', 'DE', 1, $shopCategoryCountryConfiguration);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ShopCategoryCountry shopCategoryCountryConfiguration = new ShopCategoryCountry();\nshopCategoryCountryConfiguration.setIsActive(true);\nshopCategoryCountryConfiguration.setIsVisible(true);\n\nadminApi.shopCategories().updateOrCreateCountry(\"ms\", \"DE\", 1, shopCategoryCountryConfiguration);\n"
          }
        ]
      }
    },
    "/shop-category-property-keys": {
      "get": {
        "operationId": "getShopCategoryPropertyKeys",
        "x-rateLimit": {
          "scope": "shopCategoriesRead"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategories"
        ],
        "summary": "Get shop category property keys",
        "description": "This endpoint can be used to retrieve a collection of shop category property keys.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/shop-categories/deeper-understanding-of-shop-categories#retrieve-all-shop-category-property-keys-for-a-shop-category).\n",
        "responses": {
          "200": {
            "description": "List of shop category property keys",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ShopCategoryPropertyKey"
                      }
                    }
                  }
                },
                "examples": {
                  "Shop Category Property Key Collection": {
                    "$ref": "#/components/examples/ShopCategoryPropertyKeyCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.ShopCategories.getShopCategoryPropertyKeys();\nlet shopCategoryPropertyKeys = response.body.entities;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCategoryPropertyKeyCollection = $adminApi->shopCategoryPropertyKeys->all();\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<ShopCategoryPropertyKey> shopCategoryPropertyKeyCollection = adminApi.shopCategoryPropertyKeys().all();\n"
          }
        ]
      },
      "post": {
        "operationId": "createShopCategoryPropertyKey",
        "x-rateLimit": {
          "scope": "shopCategoriesWrite"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategories"
        ],
        "summary": "Create a new shop category property key",
        "description": "This endpoint can be used to create a shop category property key.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/shop-categories/deeper-understanding-of-shop-categories#add-a-shop-property-key).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShopCategoryPropertyKey"
              },
              "examples": {
                "Shop Category Property Key": {
                  "$ref": "#/components/examples/ShopCategoryPropertyKeyRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Shop category property key was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShopCategoryPropertyKey"
                },
                "examples": {
                  "Shop Category Property Key": {
                    "$ref": "#/components/examples/ShopCategoryPropertyKeyResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let shopCategoryPropertyKey = {\n    key: \"sale\",\n    isInheritable: true\n};\n\nlet response = await client.apis.ShopCategories.createShopCategoryPropertyKey({}, {requestBody: shopCategoryPropertyKey});\nlet createdShopCategoryPropertyKey = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCategoryPropertyKey = new ShopCategoryPropertyKey();\n$shopCategoryPropertyKey->key = 'sale';\n$shopCategoryPropertyKey->isInheritable = true;\n\n$createdShopCategoryPropertyKey = $adminApi->shopCategoryPropertyKeys->create($shopCategoryPropertyKey);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ShopCategoryPropertyKey shopCategoryPropertyKey = new ShopCategoryPropertyKey();\nshopCategoryPropertyKey.setKey(\"sale\");\nshopCategoryPropertyKey.setIsInheritable(true);\n\nShopCategoryPropertyKey createdShopCategoryPropertyKey = adminApi.shopCategoryPropertyKeys().create(shopCategoryPropertyKey);\n"
          }
        ]
      }
    },
    "/shop-category-property-keys/{shopCategoryPropertyKey}": {
      "get": {
        "operationId": "getShopCategoryPropertyKey",
        "x-rateLimit": {
          "scope": "shopCategoriesRead"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategories"
        ],
        "summary": "Get a shop category property key",
        "description": "This endpoint can be used to get a single shop category property key.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/shop-categories/deeper-understanding-of-shop-categories#retrieve-a-shop-category-property-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopCategoryPropertyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Shop category property key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShopCategoryPropertyKey"
                },
                "examples": {
                  "Shop Category Property Key": {
                    "$ref": "#/components/examples/ShopCategoryPropertyKeyResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.ShopCategories.getShopCategoryPropertyKey({shopCategoryPropertyKey: \"sale\"});\nlet shopCategoryPropertyKey = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCategoryPropertyKey = $adminApi->shopCategoryPropertyKeys->get('sale');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ShopCategoryPropertyKey shopCategoryPropertyKey = adminApi.shopCategoryPropertyKeys().get(\"sale\");\n"
          }
        ]
      },
      "put": {
        "operationId": "updateShopCategoryPropertyKey",
        "x-rateLimit": {
          "scope": "shopCategoriesWrite"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategories"
        ],
        "summary": "Update an existing shop category property key",
        "description": "This endpoint can be used to update/replace an existing shop category property key. It does not support partial updates.\nOnly keys that have not been yet used in any shop category property can be updated.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/shop-categories/deeper-understanding-of-shop-categories#update-a-shop-category-property-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopCategoryPropertyKey"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShopCategoryPropertyKey"
              },
              "examples": {
                "Shop Category Property Key": {
                  "$ref": "#/components/examples/ShopCategoryPropertyKeyRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Shop category property key was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShopCategoryPropertyKey"
                },
                "examples": {
                  "Shop Category Property Key": {
                    "$ref": "#/components/examples/ShopCategoryPropertyKeyResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let shopCategoryPropertyKey = {\n    key: \"new\",\n    isInheritable: true\n};\n\nlet response = await client.apis.ShopCategories.updateShopCategoryPropertyKey(\n    {shopCategoryPropertyKey: \"sale\"},\n    {requestBody: shopCategoryPropertyKey}\n);\n\nlet updatedShopCategoryPropertyKey = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCategoryPropertyKey = new ShopCategoryPropertyKey();\n$shopCategoryPropertyKey->key = 'new';\n$shopCategoryPropertyKey->isInheritable = true;\n\n$updatedShopCategoryPropertyKey = $adminApi->shopCategoryPropertyKeys->update('sale', $shopCategoryPropertyKey);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ShopCategoryPropertyKey shopCategoryPropertyKey = new ShopCategoryPropertyKey();\nshopCategoryPropertyKey.setKey(\"new\");\nshopCategoryPropertyKey.setIsInheritable(true);\n\nShopCategoryPropertyKey updatedShopCategoryPropertyKey = adminApi.shopCategoryPropertyKeys().update(\"sale\", shopCategoryPropertyKey);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteShopCategoryPropertyKey",
        "x-rateLimit": {
          "scope": "shopCategoriesWrite"
        },
        "x-resources": [
          "shop-categories"
        ],
        "tags": [
          "ShopCategories"
        ],
        "summary": "Delete a shop category property key",
        "description": "This endpoint can be used to delete a shop category property key.\nOnly keys that have not been yet used in any shop category property can be deleted.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/shop-categories/deeper-understanding-of-shop-categories#delete-shop-category-property-value).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopCategoryPropertyKey"
          }
        ],
        "responses": {
          "204": {
            "description": "Shop category property key was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "client.apis.ShopCategories.deleteShopCategoryPropertyKey({shopCategoryPropertyKey: \"sale\"});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->shopCategoryPropertyKeys->delete('sale');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.shopCategoryPropertyKeys().delete(\"sale\");\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries": {
      "post": {
        "operationId": "createShopCountry",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "Shops"
        ],
        "summary": "Create a new shop country",
        "description": "This endpoint can be used to create a new shop country.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/internationalization/countries-api#create-shop-country).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ShopCountry"
                  },
                  {
                    "type": "object",
                    "required": [
                      "countryCode",
                      "currencyCode",
                      "defaultLanguageCode",
                      "url"
                    ],
                    "properties": {
                      "currencyCode": {
                        "nullable": false
                      }
                    }
                  }
                ]
              },
              "examples": {
                "Shop Country": {
                  "$ref": "#/components/examples/ShopCountryRequest"
                },
                "Shop Country With Custom Data": {
                  "$ref": "#/components/examples/ShopCountryRequestWithCustomData"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Shop country was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShopCountry"
                },
                "examples": {
                  "Shop Country": {
                    "$ref": "#/components/examples/ShopCountryResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newShopCountry = {\n    countryCode: \"DE\",\n    currencyCode: \"EUR\",\n    defaultLanguageCode: \"de_DE\",\n    supportedLanguageCodes: [\"de_DE\", \"en_GB\"],\n    url: \"https://www.shop.de\"\n};\n\nlet response = await client.apis.Shops.createShopCountry({shopKey: \"ms\"}, {requestBody: newShopCountry});\nlet createdShopCountry = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCountry = new ShopCountry();\n$shopCountry->countryCode = 'DE';\n$shopCountry->currencyCode = 'EUR'; \n$shopCountry->defaultLanguageCode = 'de_DE';\n$shopCountry->supportedLanguageCodes = ['de_DE', 'en_GB'];\n$shopCountry->url = 'https://ms.de';\n\n$shopCountry = $adminApi->shopCountries->create('ms', $shopCountry);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "List<String> supportedLanguageCodes = new ArrayList<>();\nsupportedLanguageCodes.add(\"de_DE\");\nsupportedLanguageCodes.add(\"en_GB\");\n\nShopCountry shopCountry = new ShopCountry();\nshopCountry.setCountryCode(\"DE\");\nshopCountry.setCurrencyCode(\"EUR\");\nshopCountry.setDefaultLanguageCode(\"de_DE\");\nshopCountry.setSupportedLanguageCodes(supportedLanguageCodes);\nshopCountry.setUrl(\"https://www.shop.de\");\n\nshopCountry = adminApi.shopCountries().create(\"ms\", shopCountry);\n"
          }
        ]
      },
      "get": {
        "operationId": "getShopCountries",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "Shops"
        ],
        "summary": "Get shop countries for given filters",
        "description": "This endpoint can be used to retrieve a collection of shop countries. It is possible to refine the search by applying filters.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/internationalization/countries-api#get-a-collection-of-shop-countries).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "example": "?with=assortment",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "assortment",
                  "warehouses",
                  "priceRoundings",
                  "customData"
                ]
              }
            }
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/SortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/FilterCountryCode"
          },
          {
            "name": "filters[supportedLanguageCode]",
            "in": "query",
            "description": "Comma-separated list of supported language codes that should be used for filtering.",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "List of shop countries",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ShopCountry"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Shop Country Collection": {
                    "$ref": "#/components/examples/ShopCountryCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Shops.getShopCountries({shopKey: \"ms\"});\nlet shopCountries = response.body.entities;\n\nshopCountries.forEach(\n    shopCountry => console.log(shopCountry.countryCode)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCountryCollection = $adminApi->shopCountries->all('ms');\n\nforeach ($shopCountryCollection->getEntities() as $shopCountry) {\n    echo $shopCountry->countryCode;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<ShopCountry> shopCountryCollection = adminApi.shopCountries().all(\"ms\");\n\nfor (ShopCountry shopCountry : shopCountryCollection.getEntities()) {\n    System.out.println(shopCountry.getCountryCode());\n}\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}": {
      "get": {
        "operationId": "getShopCountry",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "Shops"
        ],
        "summary": "Get a shop country by code",
        "description": "This endpoint can be used to get a single shop country.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/internationalization/countries-api#get-shop-country).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "example": "?with=assortment",
            "explode": false,
            "schema": {
              "$ref": "#/paths/~1shops~1%7BshopKey%7D~1countries/get/parameters/1/schema"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A shop country",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShopCountry"
                },
                "examples": {
                  "Shop Country": {
                    "$ref": "#/components/examples/ShopCountryResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Shops.getShopCountry({shopKey: \"ms\", countryCode: \"DE\", with: \"assortment\"});\nlet shopCountry = response.body;\n\nshopCountry.assortment.attributes.forEach(\n    attribute => console.log(attribute.name)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'with' => 'assortment'\n];\n\n$shopCountry = $adminApi->shopCountries->get(\"ms\", \"DE\", $options);\n\nforeach($shopCountry->assortment->attributes as $attribute) {\n    echo $attribute->name . \"\\n\";\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"with\", \"assortment\")\n                        .build();\n\nShopCountry shopCountry = adminApi.shopCountries().get(\"ms\", \"DE\", options);\n\nfor (AttributeAssortmentConfiguration attribute : shopCountry.getAssortment().getAttributes()) {\n    System.out.println(attribute.getName());\n}\n"
          }
        ]
      },
      "put": {
        "operationId": "updateShopCountry",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "Shops"
        ],
        "summary": "Update an existing shop country",
        "description": "This endpoint can be used to update/replace an existing shop country. It does not support partial updates.\nIf you provide properties within the same request, they will get replaced.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/shops/manage-shops-api#update-a-shop-country).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "countryCode",
                  "defaultLanguageCode",
                  "url"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "readOnly": true,
                    "example": 1,
                    "description": "The ID of the shop country created by SCAYLE."
                  },
                  "shopKey": {
                    "type": "string",
                    "readOnly": true,
                    "example": "ay",
                    "description": "A key that uniquely identifies the shop within the tenant's ecosystem. Must be exactly 2 chars long."
                  },
                  "countryCode": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 2,
                    "example": "DE",
                    "description": "ISO 3166 alpha 2 country code."
                  },
                  "defaultLanguageCode": {
                    "type": "string",
                    "maxLength": 5,
                    "example": "de_DE",
                    "description": "ISO-3166 country code and ISO-639 language code."
                  },
                  "supportedLanguageCodes": {
                    "type": "array",
                    "description": "List of supported language codes.",
                    "items": {
                      "type": "string",
                      "maxLength": 5,
                      "example": "de_DE",
                      "description": "ISO-3166 country code and ISO-639 language code."
                    }
                  },
                  "url": {
                    "type": "string",
                    "example": "https://www.example.com",
                    "description": "Url of the shop country."
                  },
                  "active": {
                    "type": "boolean",
                    "description": "Defines if the shop country is active.",
                    "example": true,
                    "readOnly": true
                  },
                  "deleted": {
                    "type": "boolean",
                    "description": "Defines it the shop country is deleted.",
                    "example": false,
                    "readOnly": true
                  },
                  "priceGroupKey": {
                    "type": "string",
                    "nullable": true,
                    "description": "Key of the price group the shop country is assigned to.",
                    "example": "myPriceGroup",
                    "readOnly": true
                  },
                  "smartSortingKey": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/Shop/properties/smartSortingKey/allOf/0"
                      }
                    ],
                    "nullable": true
                  },
                  "assortment": {
                    "$ref": "#/components/schemas/Assortment",
                    "readOnly": true
                  },
                  "warehouses": {
                    "type": "array",
                    "readOnly": true,
                    "description": "A list of warehouses attached to the shop country.",
                    "items": {
                      "$ref": "#/components/schemas/ShopCountryWarehouse"
                    }
                  },
                  "customData": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/CustomData"
                      }
                    ],
                    "nullable": true
                  }
                },
                "x-ayObjects": [
                  {
                    "property": "assortment",
                    "className": "Assortment"
                  },
                  {
                    "property": "warehouses",
                    "isCollection": true,
                    "className": "ShopCountryWarehouse"
                  }
                ]
              },
              "examples": {
                "Shop Country": {
                  "$ref": "#/components/examples/ShopCountryRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Shop country was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShopCountry"
                },
                "examples": {
                  "Shop Country": {
                    "$ref": "#/components/examples/ShopCountryResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Shops.getShopCountry({shopKey: \"ms\", countryCode: \"DE\"}); \nlet shopCountry = response.body;\n\nshopCountry.url = \"https://www.shop.de\";\n\nlet updateResponse = await client.apis.Shops.updateShopCountry({shopKey: \"ms\", countryCode: \"DE\"}, {requestBody: shopCountry});\nlet updatedShopCountry = updateResponse.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCountry = $adminApi->shopCountries->get(\"ms\", \"DE\");\n$shopCountry->url = \"https://www.shop.de\";\n\n$shopCountry = $adminApi->shopCountries->update(\"ms\", \"DE\", $shopCountry);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ShopCountry shopCountry = adminApi.shopCountries().get(\"ms\", \"DE\");\nshopCountry.setUrl(\"https://www.shop.de\");\n\nshopCountry = adminApi.shopCountries().update(\"ms\", \"DE\", shopCountry);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/custom-data": {
      "get": {
        "operationId": "getShopCountryCustomData",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "ShopCountryCustomData"
        ],
        "summary": "Get custom data for a shop country",
        "description": "This endpoint can be used to get custom data for a shop country.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "responses": {
          "200": {
            "description": "Custom data of a shop country",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Shop Country Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await AdminApi.apis.ShopCountryCustomData.getShopCountryCustomData({shopKey: 'ms', countryCode: 'DE'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->shopCountries->getCustomData('ms', 'DE');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.shopCountries().getCustomData(\"ms\", \"DE\");\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateShopCountryCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "ShopCountryCustomData"
        ],
        "summary": "Create or update custom data for a shop country",
        "description": "This endpoint can be used to create custom data for a shop country.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-or-update-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "Shop Country Custom Data": {
                  "$ref": "#/components/examples/CustomDataRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Shop country custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Shop Country Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n  \"isValid\": true,\n  \"name\": \"ayou\",\n  \"score\": 100,\n  \"someJson\": {\n    \"de_DE\": {\n      \"color\": \"weiss\"\n    },\n    \"en_GB\": {\n      \"color\": \"white\"\n    }\n  }\n};\nawait adminApi.apis.ShopCountryCustomData.createOrUpdateShopCountryCustomData({shopKey: 'ms', countryCode: 'DE'}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n$entityCustomData->score = 10;\n$entityCustomData->name = 'ayou';\n$entityCustomData->someJson = (object) [\n  'de_DE' => [\n    'color' => 'schwarz'\n  ],\n  'en_GB' => [\n    'color' => 'black'\n  ]\n];\n\n$adminApi->shopCountries->createOrUpdateCustomData('ms', 'DE', $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new entityCustomData();\nentityCustomData.put(\"isValid\", true);\nentityCustomData.put(\"score\", 100);\nentityCustomData.put(\"name\", \"ayou\");\n\nvar deColorObject = new HashMap<String, String>();\ndeColorObject.put(\"color\", \"weiss\");\n\nvar enColorObject = new HashMap<String, String>();\nenColorObject.put(\"color\", \"white\");\n\nEntityCustomData someJson = new HashMap<>();\nsomeJson.put(\"de_DE\", deColorObject);\nsomeJson.put(\"en_GB\", enColorObject);\n\nentityCustomData.put(\"someJson\", someJson);\n\nadminApi.shopCountries().createOrUpdateCustomData(\"ms\", \"DE\", entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteShopCountryCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "ShopCountryCustomData"
        ],
        "summary": "Delete custom data for a shop country",
        "description": "This endpoint can be used to delete custom data for a shop country.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "responses": {
          "204": {
            "description": "Shop country custom data was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await AdminApi.apis.ShopCountryCustomData.deleteShopCountryCustomData({shopKey: 'ms', countryCode: 'DE'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->shopCountries->deleteCustomData('ms', 'DE');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.shopCountries().deleteCustomData(\"ms\", \"DE\");\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/custom-data/{key}": {
      "get": {
        "operationId": "getShopCountryCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "ShopCountryCustomData"
        ],
        "summary": "Get shop country data for a specific key",
        "description": "This endpoint can be used to get shop country custom data for a specific key.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Custom data of a key for a shop country",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Shop Country Custom Data For Key": {
                    "$ref": "#/components/examples/CustomDataResponseForKey"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.ShopCountryCustomData.getShopCountryCustomDataForKey({shopKey: 'ms', countryCode: 'DE', key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->shopCountries->getCustomDataForKey('ms', 'DE', 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.shopCountries().getCustomDataForKey(\"ms\", \"DE\", \"isValid\");\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateShopCountryCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "ShopCountryCustomData"
        ],
        "summary": "Create or update shop country custom data for a specific key",
        "description": "This endpoint can be used to create or update shop country custom data for a specific key.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-or-update-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "Shop Country Custom Data For Key": {
                  "$ref": "#/components/examples/CustomDataRequestForKey"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Key of a shop country custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Shop Country Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n    isValid: true\n};\nawait AdminApi.apis.ShopCountryCustomData.createOrUpdateShopCountryCustomDataForKey({shopKey: 'ms', countryCode: 'DE', key: 'isValid'}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n\n$adminApi->shopCountries->createOrUpdateCustomDataForKey('ms', 'DE', 'isValid', $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new EntityCustomData();\nentityCustomData.put(\"isValid\", true);\n\nadminApi.shopCountries().createOrUpdateCustomDataForKey(\"ms\", \"DE\", \"isValid\", entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteShopCountryCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "ShopCountryCustomData"
        ],
        "summary": "Delete a key of custom data for a shop country",
        "description": "This endpoint can be used to delete shop country custom data for a specific key.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "204": {
            "description": "Shop country custom data for a specific key was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await AdminApi.apis.ShopCountryCustomData.deleteShopCountryCustomDataForKey({shopKey: 'ms', countryCode: 'DE', key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->shopCountries->deleteCustomDataForKey('ms', 'DE', 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.shopCountries().deleteCustomDataForKey(\"ms\", \"DE\", \"isValid\");\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/custom-data": {
      "get": {
        "operationId": "getShopCustomData",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "ShopCustomData"
        ],
        "summary": "Get custom data for a shop",
        "description": "This endpoint can be used to get custom data for a shop.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Custom data of a shop",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Shop Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await AdminApi.apis.ShopCustomData.getShopCustomData({shopKey: 'ms'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->shops->getCustomData('ms');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.shops().getCustomData(\"ms\");\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateShopCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "ShopCustomData"
        ],
        "summary": "Create or update custom data for a shop",
        "description": "This endpoint can be used to create custom data for a shop.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-or-update-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "Shop Custom Data": {
                  "$ref": "#/components/examples/CustomDataRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Shop custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Shop Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n  \"isValid\": true,\n  \"name\": \"ayou\",\n  \"score\": 100,\n  \"someJson\": {\n    \"de_DE\": {\n      \"color\": \"weiss\"\n    },\n    \"en_GB\": {\n      \"color\": \"white\"\n    }\n  }\n};\nawait adminApi.apis.ShopCustomData.createOrUpdateShopCustomData({shopKey: 'ms'}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n$entityCustomData->score = 10;\n$entityCustomData->name = 'ayou';\n$entityCustomData->someJson = (object) [\n  'de_DE' => [\n    'color' => 'schwarz'\n  ],\n  'en_GB' => [\n    'color' => 'black'\n  ]\n];\n\n$adminApi->shops->createOrUpdateCustomData('ms', $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new entityCustomData();\nentityCustomData.put(\"isValid\", true);\nentityCustomData.put(\"score\", 100);\nentityCustomData.put(\"name\", \"ayou\");\n\nvar deColorObject = new HashMap<String, String>();\ndeColorObject.put(\"color\", \"weiss\");\n\nvar enColorObject = new HashMap<String, String>();\nenColorObject.put(\"color\", \"white\");\n\nEntityCustomData someJson = new HashMap<>();\nsomeJson.put(\"de_DE\", deColorObject);\nsomeJson.put(\"en_GB\", enColorObject);\n\nentityCustomData.put(\"someJson\", someJson);\n\nadminApi.shops().createOrUpdateCustomData(\"ms\", entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteShopCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "ShopCustomData"
        ],
        "summary": "Delete custom data for a shop",
        "description": "This endpoint can be used to delete custom data for a shop.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          }
        ],
        "responses": {
          "204": {
            "description": "Shop custom data was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await AdminApi.apis.ShopCustomData.deleteShopCustomData({shopKey: 'ms'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->shops->deleteCustomData('ms');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.shops().deleteCustomData(\"ms\");\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/custom-data/{key}": {
      "get": {
        "operationId": "getShopCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "ShopCustomData"
        ],
        "summary": "Get shop custom data for a specific key",
        "description": "This endpoint can be used to get shop custom data for a specific key.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Shop custom data for a specific key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Shop Custom Data For Key": {
                    "$ref": "#/components/examples/CustomDataResponseForKey"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.ShopCustomData.getShopCustomDataForKey({shopKey: 'ms', key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->shops->getCustomDataForKey('ms', 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.shops().getCustomDataForKey(\"ms\", \"isValid\");\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateShopCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "ShopCustomData"
        ],
        "summary": "Create or update shop custom data for a specific key",
        "description": "This endpoint can be used to create or update shop custom data for a specific key.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-or-update-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "Shop Custom Data For Key": {
                  "$ref": "#/components/examples/CustomDataRequestForKey"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Shop custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Shop Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n    isValid: true\n};\n\nawait AdminApi.apis.ShopCustomData.createOrUpdateShopCustomDataForKey({shopKey: 'ms', key: 'isValid'}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n\n$adminApi->shops->createOrUpdateCustomDataForKey('ms', 'isValid', $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new EntityCustomData();\nentityCustomData.put(\"isValid\", true);\n\nadminApi.shops().createOrUpdateCustomDataForKey(\"ms\", \"isValid\", entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteShopCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "ShopCustomData"
        ],
        "summary": "Delete shop custom data for a specific key",
        "description": "This endpoint can be used to delete a shop custom data for a specific key.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "204": {
            "description": "Shop custom data for a specific key was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await AdminApi.apis.ShopCustomData.deleteShopCustomDataForKey({shopKey: 'ms', key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->shops->deleteCustomDataForKey('ms', 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.shops().deleteCustomDataForKey(\"ms\", \"isValid\");\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/warehouses": {
      "post": {
        "operationId": "createShopCountryWarehouse",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "Warehouses"
        ],
        "summary": "Attach a warehouse to a shop country",
        "description": "This endpoint can be used to attach a warehouse to the given shop country.\n\nThe priority of the warehouse allows to define from which warehouse an item should get shipped first (the higher the value, the higher the priority).\n\nWhen there is only one merchant in the system, the warehouse will be automatically created and attached to the merchant.\nIf there are multiple merchants, the warehouse needs to be created upfront via the [dedicated endpoint](/en/core-documentation/developer-guide/logistics/warehouses#create-warehouse), and then [attached to the relevant merchants](/en/core-documentation/developer-guide/logistics/warehouses#attach-warehouses-to-a-merchant) and shop countries.\n\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/logistics/warehouses#link-a-shop-country-and-a-warehouse).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShopCountryWarehouse"
              },
              "examples": {
                "Shop Warehouse": {
                  "$ref": "#/components/examples/ShopCountryWarehouseRequest"
                },
                "Shop Warehouse with Package Group": {
                  "$ref": "#/components/examples/ShopCountryWarehouseWithPackageGroupRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Shop warehouse was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShopCountryWarehouse"
                },
                "examples": {
                  "Shop Warehouse": {
                    "$ref": "#/components/examples/ShopCountryWarehouseResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "// Shop Warehouse with Package Group\nlet newShopCountryWarehouse = {\n  referenceKey: \"my-warehouse\",\n  priority: 100,\n  packageGroup: {\n      id: 3\n  }\n};\n\nlet response = await client.apis.Warehouses.createShopCountryWarehouse(\n  {\n    shopKey: \"ms\",\n    countryCode: \"DE\"\n  },\n  {\n    requestBody: newShopCountryWarehouse\n  }\n);\n\nlet createdShopCountryWarehouse = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "// Shop Warehouse with Package Group\n$shopCountryWarehouse = new ShopCountryWarehouse();\n$shopCountryWarehouse->referenceKey = 'my-warehouse';\n$shopCountryWarehouse->priority = 100;\n\n$packageGroup = new PackageGroup();\n$packageGroup->id = 3;\n\n$shopCountryWarehouse->packageGroup = $packageGroup;\n\n$shopCountryWarehouse = $adminApi->shopCountryWarehouses->create('ms', 'DE', $shopCountryWarehouse);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "// Shop Warehouse with Package Group\nShopCountryWarehouse shopCountryWarehouse = new ShopCountryWarehouse();\nshopCountryWarehouse.setReferenceKey(\"my-warehouse\");\nshopCountryWarehouse.setPriority(100);\n\nPackageGroup packageGroup = new PackageGroup();\npackageGroup.setId(3);\n\nshopCountryWarehouse.setPackageGroup(packageGroup);\n\nshopCountryWarehouse = adminApi.shopCountryWarehouses().create(\"ms\", \"DE\", shopCountryWarehouse);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/warehouses/{warehouseIdentifier}": {
      "put": {
        "operationId": "updateShopCountryWarehouse",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "Warehouses"
        ],
        "summary": "Update an existing shop country warehouse relation",
        "description": "This endpoint can be used to update an existing warehouse shop country relation. This endpoint does not support partial updates.\n\nThe priority of the warehouse allows to define from which warehouse an item should get shipped first (the higher value is set, the higher the priority).\n\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/logistics/warehouses#update-shop-country-warehouse).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/WarehouseIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShopCountryWarehouse"
              },
              "examples": {
                "Shop Warehouse": {
                  "$ref": "#/components/examples/ShopCountryWarehouseRequest"
                },
                "Shop Warehouse with Package Group": {
                  "$ref": "#/components/examples/ShopCountryWarehouseWithPackageGroupRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Shop warehouse was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShopCountryWarehouse"
                },
                "examples": {
                  "Shop Warehouse": {
                    "$ref": "#/components/examples/ShopCountryWarehouseResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let shopCountryWarehouse = {\n  referenceKey: \"my-warehouse\",\n  priority: 100\n};\n\nlet response = await adminApi.apis.Warehouses.updateShopCountryWarehouse(\n    {\n      shopKey: \"ms\",\n      countryCode: \"DE\",\n      warehouseIdentifier: 1\n    },\n    {\n      requestBody: shopCountryWarehouse\n    }\n);\n\nlet updatedShopCountryWarehouse = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCountryWarehouse = new ShopCountryWarehouse();\n$shopCountryWarehouse->referenceKey = 'my-warehouse';\n$shopCountryWarehouse->priority = 100;\n\n$shopCountryWarehouse = $adminApi->shopCountryWarehouses->update('ms', 'DE', Identifier::fromId(1), $shopCountryWarehouse);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ShopCountryWarehouse shopCountryWarehouse = new ShopCountryWarehouse();\nshopCountryWarehouse.setReferenceKey(\"my-warehouse\");\nshopCountryWarehouse.setPriority(100);\n\nshopCountryWarehouse = adminApi.shopCountryWarehouses().update(\"ms\", \"DE\", Identifier.fromId(1), shopCountryWarehouse);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteShopCountryWarehouse",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "shops"
        ],
        "tags": [
          "Warehouses"
        ],
        "summary": "Detach a warehouse from a shop country",
        "description": "This endpoint can be used to detach a warehouse from the given shop country.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/logistics/warehouses#detach-a-warehouse-from-a-shop-country).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/WarehouseIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Shop warehouse was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "client.apis.Warehouses.deleteShopCountryWarehouse(\n  {\n    shopKey: \"ms\",\n    countryCode: \"DE\",\n    warehouseIdentifier: \"key=my-warehouse\"\n  }\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->shopCountryWarehouses->delete('ms', 'DE', Identifier::fromKey('my-warehouse'));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.shopCountryWarehouses().delete(\"ms\", \"DE\", Identifier.fromKey(\"my-warehouse\"));\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/price-roundings": {
      "post": {
        "operationId": "createShopCountryPriceRounding",
        "x-resources": [
          "shops"
        ],
        "tags": [
          "ShopCountryPriceRoundings"
        ],
        "summary": "Create a new price rounding",
        "description": "This endpoint can be used to create a new price rounding.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/pricing-promotions/manage-prices#create-a-shop-country-price-rounding).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShopCountryPriceRounding"
              },
              "examples": {
                "ShopCountryPriceRounding": {
                  "value": {
                    "currencyCode": "EUR",
                    "precision": "0.99",
                    "roundingType": "nearest"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Price rounding was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShopCountryPriceRounding"
                },
                "examples": {
                  "ShopCountryPriceRounding": {
                    "value": {
                      "id": 1,
                      "currencyCode": "EUR",
                      "precision": "0.99",
                      "roundingType": "nearest"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newShopCountryPriceRounding = {\n    currencyCode: \"EUR\",\n    precision: \"0.99\",\n    roundingType: \"nearest\",\n};\n\nconst response = await adminApi.apis.ShopCountryPriceRoundings.createShopCountryPriceRounding(\n    {\n        shopKey: \"ms\",\n        countryCode: \"DE\"\n    },\n    {\n        requestBody: newShopCountryPriceRounding\n    }\n);\n\nconst createdShopCountryPriceRounding = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shopCountryPriceRounding = new ShopCountryPriceRounding();\n$shopCountryPriceRounding->currencyCode = 'EUR';\n$shopCountryPriceRounding->precision = '0.99';\n$shopCountryPriceRounding->roundingType = 'nearest';\n\n$shopCountryPriceRounding = $adminApi->shopCountryPriceRoundings->create('ms', 'DE', $shopCountryPriceRounding);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ShopCountryPriceRounding shopCountryPriceRounding = new ShopCountryPriceRounding();\nshopCountryPriceRounding.setCurrencyCode(\"EUR\");\nshopCountryPriceRounding.setPrecision(RoundingPrecision.VALUE_0_99);\nshopCountryPriceRounding.setRoundingType(RoundingType.VALUE_NEAREST);\n\nshopCountryPriceRounding = adminApi.shopCountryPriceRoundings().create(\"ms\", \"DE\", shopCountryPriceRounding);\n"
          }
        ]
      },
      "get": {
        "operationId": "getShopCountryPriceRoundings",
        "tags": [
          "ShopCountryPriceRoundings"
        ],
        "x-resources": [
          "shops"
        ],
        "summary": "Get price roundings.",
        "description": "This endpoint can be used to retrieve a collection of price roundings.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/pricing-promotions/manage-prices#get-a-shop-country-price-rounding-collection).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "responses": {
          "200": {
            "description": "List of price roundings.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ShopCountryPriceRounding"
                      }
                    }
                  }
                },
                "examples": {
                  "Shop Country Price Rounding Collection": {
                    "value": {
                      "entities": [
                        {
                          "id": 1,
                          "currencyCode": "EUR",
                          "precision": "0.99",
                          "roundingType": "nearest"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const response = await adminApi.apis.ShopCountryPriceRoundings.getShopCountryPriceRoundings(\"ms\", \"DE\");\nconst priceRoundings = response.body.entities;\n\npriceRoundings.forEach(\n    priceRounding => console.log(priceRounding.id)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$priceRoundingsCollection = $adminApi->shopCountryPriceRoundings->all('ms', 'DE');\n\nforeach ($priceRoundingsCollection->getEntities() as $priceRounding) {\n    echo $priceRounding->id;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<ShopCountryPriceRounding> priceRoundingsCollection = adminApi.shopCountryPriceRoundings().all(\"ms\", \"DE\");\n\nfor (ShopCountryPriceRounding priceRounding : priceRoundingsCollection.getEntities()) {\n    System.out.println(priceRounding.getId());\n}\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/price-roundings/{priceRoundingId}": {
      "delete": {
        "operationId": "deleteShopCountryPriceRounding",
        "x-resources": [
          "shops"
        ],
        "tags": [
          "ShopCountryPriceRoundings"
        ],
        "summary": "Delete a price rounding",
        "description": "This endpoint can be used to delete a price rounding.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/pricing-promotions/manage-prices#delete-a-shop-country-price-rounding).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/PriceRoundingId"
          }
        ],
        "responses": {
          "204": {
            "description": "Price rounding was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.ShopCountryPriceRoundings.deleteShopCountryPriceRounding(\n    {\n        shopKey: \"ms\",\n        countryCode: \"DE\",\n        priceRoundingId: 123\n    }\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->shopCountryPriceRoundings->delete('ms', 'DE', 123);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.shopCountryPriceRoundings().delete(\"ms\", \"DE\", 123);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/package-groups": {
      "get": {
        "operationId": "getPackageGroups",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "package-groups"
        ],
        "tags": [
          "PackageGroups"
        ],
        "summary": "Get a collection of package groups assigned to given shop",
        "description": "This endpoint can be used to get all package groups assigned to a given shop.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/logistics/cross-docking#get-a-collection-of-package-groups).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "responses": {
          "200": {
            "description": "List of package groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PackageGroup"
                      }
                    }
                  }
                },
                "examples": {
                  "Package Group Collection": {
                    "$ref": "#/components/examples/PackageGroupCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.PackageGroups.getPackageGroups({ shopKey: 'ms', countryCode: 'DE' });\n\nlet packageGroups = response.body.entities;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$packageGroupCollection = $adminApi->packageGroups->all('ms', 'DE');\n\nforeach ($packageGroupCollection->getEntities() as $packageGroup) {\n    echo $packageGroup->id . PHP_EOL;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<PackageGroup> packageGroupCollection = adminApi.packageGroups().all(\"ms\", \"DE\");\n\nfor (PackageGroup packageGroup : packageGroupCollection.getEntities()) {\n    System.out.println(packageGroup.getId());\n}\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/package-groups/{packageGroupId}": {
      "delete": {
        "operationId": "deletePackageGroup",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "package-groups"
        ],
        "tags": [
          "PackageGroups"
        ],
        "summary": "Delete a package group",
        "description": "This endpoint can be used to delete a package group for a given shop. This will remove the package group from all shop warehouses assigned to the given shop.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/logistics/cross-docking#delete-a-package-group).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/PackageGroupId"
          }
        ],
        "responses": {
          "204": {
            "description": "Package group was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "client.apis.PackageGroups.deletePackageGroup(\n    {\n        shopKey: \"ms\",\n        countryCode: \"DE\",\n        packageGroupId: 3,\n    }\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->packageGroups->delete('ms', 'DE', 3);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.packageGroups().delete(\"ms\", \"DE\", 3);\n"
          }
        ]
      },
      "post": {
        "operationId": "assignPackageGroups",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "package-groups"
        ],
        "tags": [
          "PackageGroups"
        ],
        "summary": "Assign a package group to a list of shop warehouses",
        "description": "This endpoint can be used to assign a provided package group to a list of shop warehouses.\nUnprovided warehouses will not be updated.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/logistics/cross-docking#assign-a-package-group).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/PackageGroupId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PackageGroupWarehouse"
                }
              },
              "examples": {
                "Package Group": {
                  "$ref": "#/components/examples/AssignPackageGroupWarehouseRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Package group was successfully assigned to warehouses."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let warehouses = [\n    {\n        warehouseReferenceKey: 'my-warehouse'\n    },\n    {\n        warehouseId: 2\n    }\n];\n\nawait client.apis.PackageGroups.assignPackageGroups(\n    {\n        shopKey: \"ms\",\n        countryCode: \"DE\",\n        packageGroupId: 3,\n    },\n    {\n        requestBody: warehouses\n    }\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$warehouse1 = new PackageGroupWarehouse();\n$warehouse1->warehouseReferenceKey = 'my-warehouse';\n\n$warehouse2 = new PackageGroupWarehouse();\n$warehouse2->warehouseId = 2;\n\n$warehouses = [ $warehouse1, $warehouse2 ];\n\n$adminApi->packageGroups->assignPackageGroupToWarehouses('ms', 'DE', 3, $warehouses);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "PackageGroupWarehouse warehouse1 = new PackageGroupWarehouse();\nwarehouse1.setWarehouseReferenceKey(\"my-warehouse\");\n\nPackageGroupWarehouse warehouse2 = new PackageGroupWarehouse();\nwarehouse2.setWarehouseId(2);\n\nArrayList<PackageGroupWarehouse> warehouses = new ArrayList<PackageGroupWarehouse>();\nwarehouses.add(warehouse1);\nwarehouses.add(warehouse2);\n\nadminApi.packageGroups().assignPackageGroupToWarehouses(\"ms\", \"DE\", 3, warehouses);\n"
          }
        ]
      },
      "put": {
        "operationId": "replacePackageGroups",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "package-groups"
        ],
        "tags": [
          "PackageGroups"
        ],
        "summary": "Replace a package group for a list of shop warehouses",
        "description": "This endpoint can be used to assign provided package group to a list of shop warehouses.\nUnprovided warehouses will get their package group unassigned.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/logistics/cross-docking#replace-a-package-group).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/PackageGroupId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PackageGroupWarehouse"
                }
              },
              "examples": {
                "Package Group": {
                  "$ref": "#/components/examples/AssignPackageGroupWarehouseRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Package group was successfully replaced for warehouses."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let warehouses = [\n    {\n        warehouseReferenceKey: 'my-warehouse'\n    },\n    {\n        warehouseId: 2\n    }\n];\n\nawait client.apis.PackageGroups.replacePackageGroups(\n    {\n        shopKey: \"ms\",\n        countryCode: \"DE\",\n        packageGroupId: 3,\n    },\n    {\n        requestBody: warehouses\n    }\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$warehouse1 = new PackageGroupWarehouse();\n$warehouse1->warehouseReferenceKey = 'my-warehouse';\n\n$warehouse2 = new PackageGroupWarehouse();\n$warehouse2->warehouseId = 2;\n\n$warehouses = [ $warehouse1, $warehouse2 ];\n\n$adminApi->packageGroups->replacePackageGroupForWarehouses('ms', 'DE', 3, $warehouses);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "PackageGroupWarehouse warehouse1 = new PackageGroupWarehouse();\nwarehouse1.setWarehouseReferenceKey(\"my-warehouse\");\n\nPackageGroupWarehouse warehouse2 = new PackageGroupWarehouse();\nwarehouse2.setWarehouseId(2);\n\nArrayList<PackageGroupWarehouse> warehouses = new ArrayList<PackageGroupWarehouse>();\nwarehouses.add(warehouse1);\nwarehouses.add(warehouse2);\n\nadminApi.packageGroups().replacePackageGroupForWarehouses(\"ms\", \"DE\", 3, warehouses);\n"
          }
        ]
      }
    },
    "/brands/{brandId}": {
      "get": {
        "operationId": "getBrand",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "brands"
        ],
        "tags": [
          "Brands"
        ],
        "summary": "Get a brand",
        "description": "This endpoint can be used to get a single brand by ID.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-brands#get-a-brand).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/BrandId"
          },
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "example": "?with=attributes",
            "explode": false,
            "schema": {
              "$ref": "#/paths/~1brands/get/parameters/6/schema"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Brand",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Brand"
                },
                "examples": {
                  "Brand": {
                    "$ref": "#/components/examples/BrandResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Brands.getBrand({brandId: 1});\nlet brand = response.body;\n\nconsole.log(brand.name);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$brand = $adminApi->brands->get(1);\n\necho $brand->name;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Brand brand = adminApi.brands().get(1);\n\nSystem.out.println(brand.getName());\n"
          }
        ]
      },
      "put": {
        "operationId": "updateBrand",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "brands"
        ],
        "tags": [
          "Brands"
        ],
        "summary": "Update an existing brand",
        "description": "This endpoint can be used to update/replace an existing brand. It does not support partial updates.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-brands#update-brands).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/BrandId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Brand"
              },
              "examples": {
                "Minimal Brand": {
                  "$ref": "#/components/examples/MinimalBrandRequest"
                },
                "Complete Brand": {
                  "$ref": "#/components/examples/CompleteBrandRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Brand was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Brand"
                },
                "examples": {
                  "Brand": {
                    "$ref": "#/components/examples/BrandResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Brands.getBrand({brandId: 1});\nlet brand = response.body;\n\nbrand.name = \"New Name\";\n\nresponse = await client.apis.Brands.updateBrand({brandId: brand.id}, {requestBody: brand});\nlet updatedBrand = response.body;\n\nconsole.log(updatedBrand.name);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$brand = $adminApi->brands->get(1);\n$brand->name = \"New Name\";\n\n$brand = $adminApi->brands->update($brand->id, $brand);\n\necho $brand->name;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Brand brand = adminApi.brands().get(1);\nbrand.setName(\"New Name\");\n\nbrand = adminApi.brands().update(brand.getId(), brand);\n\nSystem.out.println(brand.getName());\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteBrand",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "brands"
        ],
        "tags": [
          "Brands"
        ],
        "summary": "Delete a brand",
        "description": "This endpoint can be used to delete a brand along with all its attributes. Only brands which are not assigned to products can be deleted.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-brands#delete-a-brand).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/BrandId"
          }
        ],
        "responses": {
          "204": {
            "description": "Brand was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.Brands.deleteBrand({brandId: 1});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->brands->delete(1);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.brands().delete(1);\n"
          }
        ]
      }
    },
    "/brands": {
      "post": {
        "operationId": "createBrand",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "brands"
        ],
        "tags": [
          "Brands"
        ],
        "summary": "Create a new brand",
        "description": "This endpoint can be used to create a new brand.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-brands#create-a-brand).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Brand"
              },
              "examples": {
                "Minimal Brand": {
                  "$ref": "#/components/examples/MinimalBrandRequest"
                },
                "Complete Brand": {
                  "$ref": "#/components/examples/CompleteBrandRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Brand was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Brand"
                },
                "examples": {
                  "Brand": {
                    "$ref": "#/components/examples/BrandResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "// Minimal Brand\nlet newBrand = {\n  \"name\": \"Edited\"\n};\nlet response = await client.apis.Brands.createBrand({}, {requestBody: newBrand});\nlet createdBrand = response.body;\n\nconsole.log(createdBrand.id);\n\n// Complete Brand\nlet newBrand = {\n  name: \"MyBrand\",\n  attributes: [\n    {\n        \"name\": \"size\",\n        \"type\": \"simple\",\n        \"value\": \"M\"\n    },\n    {\n      \"name\": \"season\",\n      \"type\": \"simpleList\",\n      \"value\": [\n        \"autumn\",\n        \"winter\"\n      ]\n    },\n    {\n      \"name\": \"collection\",\n      \"type\": \"localizedString\",\n      \"value\": {\n        \"de_DE\": \"einzigartig\",\n        \"en_GB\": \"unique\"\n      }\n    },\n    {\n      \"name\": \"color\",\n      \"type\": \"localizedStringList\",\n      \"value\": [\n        {\n          \"de_DE\": \"weiß\",\n          \"en_GB\": \"white\"\n        },\n        {\n          \"de_DE\": \"schwarz\",\n          \"en_GB\": \"black\"\n        }\n      ]\n    }\n  ],\n  \"customData\": {\n    \"isValid\": true,\n    \"name\": \"ayou\",\n    \"score\": 100,\n    \"some-json\": {\n      \"de_DE\": {\n        \"color\": \"weiss\"\n      },\n      \"en_GB\": {\n        \"color\": \"white\"\n      }\n    }\n  }\n};\n\nlet response = await client.apis.Brands.createBrand({}, {requestBody: newBrand});\nlet createdBrand = response.body;\n\nconsole.log(createdBrand.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "// Minimal Brand\n$brand = new Brand();\n$brand->name = \"Edited\";\n$brand = $adminApi->brands->create($brand);\necho $brand->id;\n\n// Complete Brand\n$brand = new Brand();\n$brand->name = \"Edited\";\n\n$sizeAttribute = new Attribute();\n$sizeAttribute->name = \"size\";\n$simpleAttribute->type = \"simple\";\n$sizeAttribute->value = \"M\";\n\n$seasonAttribute = new Attribute();\n$seasonAttribute->name = 'season';\n$seasonAttribute->type = 'simpleList';\n$seasonAttribute->value = ['autumn', 'winter'];\n\n$collectionAttribute = new Attribute();\n$collectionAttribute->name = 'collection';\n$collectionAttribute->type = 'localizedString';\n$collectionAttribute->value = ['de_DE' => 'einzigartig', 'en_GB' => 'unique'];\n\n$colorAttribute = new Attribute();\n$colorAttribute->name = 'color';\n$colorAttribute->type = 'localizedStringList';\n$colorAttribute->value = [\n    ['de_DE' => 'weiß', 'en_GB' => 'white'],\n    ['de_DE' => 'schwarz', 'en_GB' => 'black'],\n];\n\n$brand->attributes = [$sizeAttribute, $seasonAttribute, $collectionAttribute, $colorAttribute];\n\n$brandCustomData = new EntityCustomData();\n$brandCustomData->isValid = true;\n$brandCustomData->score = 100;\n$brandCustomData->name = 'ayou';\n$brandCustomData->someJson = (object) ['de_DE' => ['color' => 'Weiss'], 'en_GB' => ['color' => 'White']];\n\n$brand->customData = $brandCustomData;\n\n$brand = $adminApi->brands->create($brand);\n\necho $brand->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "// Minimal Brand\nBrand brand = new Brand();\nbrand.setName(\"Edited\");\n\nbrand = adminApi.brands().create(brand);\n\nSystem.out.println(brand.getId());\n\n// Complete Brand\nimport java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nBrand brand = new Brand();\nbrand.setName(\"MyBrand\");\n\nvar sizeAttribute = new Attribute();\nsizeAttribute.setName(\"size\");\nsizeAttribute.setType(AttributeType.VALUE_SIMPLE);\nsizeAttribute.setValue(\"M\");\n\nvar seasons = new ArrayList<String>();\nseasons.add(\"autumn\");\nseasons.add(\"winter\");\n\nvar seasonAttribute = new Attribute();\nseasonAttribute.setName(\"season\");\nseasonAttribute.setType(AttributeType.VALUE_SIMPLELIST);\nseasonAttribute.setValue(seasons);\n\nvar collection = new HashMap<String, String>();\ncollection.put(\"de_DE\", \"einzigartig\");\ncollection.put(\"en_GB\", \"unique\");\n\nvar collectionAttribute = new Attribute();\ncollectionAttribute.setName(\"collection\");\ncollectionAttribute.setType(AttributeType.VALUE_LOCALIZEDSTRING);\ncollectionAttribute.setValue(collection);\n\nvar whiteColor = new HashMap<String, String>();\nwhiteColor.put(\"de_DE\", \"weiß\");\nwhiteColor.put(\"en_GB\", \"white\");\n\nvar blackColor = new HashMap<String, String>();\nblackColor.put(\"de_DE\", \"schwarz\");\nblackColor.put(\"en_GB\", \"black\");\n\nvar colors = new ArrayList<HashMap<String, String>>();\ncolors.add(whiteColor);\ncolors.add(blackColor);\n\nvar colorsAttribute = new Attribute();\ncolorsAttribute.setName(\"color\");\ncolorsAttribute.setType(AttributeType.VALUE_LOCALIZEDSTRINGLIST);\ncolorsAttribute.setValue(colors);\n\nArrayList<Attribute> brandAttributes = new ArrayList<Attribute>();\nbrandAttributes.add(sizeAttribute);\nbrandAttributes.add(seasonAttribute);\nbrandAttributes.add(collectionAttribute);\nbrandAttributes.add(colorsAttribute);\n\nbrand.setAttributes(brandAttributes);\n\nvar entityCustomData = new EntityCustomData();\nentityCustomData.put(\"isValid\", true);\nentityCustomData.put(\"score\", 100);\nentityCustomData.put(\"name\", \"ayou\");\n\nvar deColorObject = new HashMap<String, String>();\ndeColorObject.put(\"color\", \"weiss\");\n\nvar enColorObject = new HashMap<String, String>();\nenColorObject.put(\"color\", \"white\");\n\nEntityCustomData someJson = new HashMap<>();\nsomeJson.put(\"de_DE\", deColorObject);\nsomeJson.put(\"en_GB\", enColorObject);\n\nentityCustomData.put(\"someJson\", someJson);\n\nbrand.setCustomData(entityCustomData);\n\nbrand = adminApi.brands().create(brand);\n\nSystem.out.println(brand.getId());\n"
          }
        ]
      },
      "get": {
        "operationId": "getBrands",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "brands"
        ],
        "tags": [
          "Brands"
        ],
        "summary": "Get brands for given filters",
        "description": "This endpoint can be used to retrieve a collection of brands. It is possible to refine the search by applying filters.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/manage-brands#get-a-collection-of-brands).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/FilterMinId"
          },
          {
            "$ref": "#/components/parameters/SortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/FilterName"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          },
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "example": "?with=attributes",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "attributes",
                  "customData"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of brands",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Brand"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Brand": {
                    "$ref": "#/components/examples/BrandCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Brands.getBrands({\n    'filters[name]': 'MyFirstBrand,MySecondBrand'\n});\nlet brands = response.body.entities;\n\nbrands.forEach(\n    brand => console.log(brand.name)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'filters[name]' => 'MyFirstBrand,MySecondBrand'\n];\n\n$brandCollection = $adminApi->brands->all($options);\n\nforeach ($brandCollection->getEntities() as $brand) {\n    echo $brand->name;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"filters[name]\", \"MyFirstBrand,MySecondBrand\")\n                        .build();\n\nApiCollection<Brand> brandCollection = adminApi.brands().all(options);\n\nfor (Brand brand : brandCollection.getEntities()) {\n    System.out.println(brand.getName());\n}\n"
          }
        ]
      }
    },
    "/brands/{brandId}/custom-data": {
      "get": {
        "operationId": "getBrandCustomData",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "brands"
        ],
        "tags": [
          "BrandCustomData"
        ],
        "summary": "Get custom data for a brand",
        "description": "This endpoint can be used to get custom data for a brand.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/BrandId"
          }
        ],
        "responses": {
          "200": {
            "description": "Custom data of a brand",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Brand Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.BrandCustomData.getBrandCustomData({brandId: 5038});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->brands->getCustomData(5038);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.brands().getCustomData(5038);\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateBrandCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "brands"
        ],
        "tags": [
          "BrandCustomData"
        ],
        "summary": "Create or update custom data for a brand",
        "description": "This endpoint can be used to create custom data for a brand.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-or-update-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/BrandId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "Brand Custom Data": {
                  "$ref": "#/components/examples/CustomDataRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Brand custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Brand Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n    isValid: true,\n    score: 100,\n    name: \"ayou\"\n    someJson: {\n        de_DE: {\n          color: \"Weiss\"\n        },\n        en_GB: {\n          color: \"White\"\n        }\n    }\n};\n\nawait client.apis.BrandCustomData.createOrUpdateBrandCustomData({brandId: 5038}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n$entityCustomData->score = 100;\n$entityCustomData->name = 'ayou';\n$entityCustomData->someJson = (object) ['de_DE' => ['color' => 'Weiss'], 'en_GB' => ['color' => 'White']];\n\n$adminApi->brands->createOrUpdateCustomData(5038, $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new entityCustomData();\nentityCustomData.put(\"isValid\", true);\nentityCustomData.put(\"score\", 100);\nentityCustomData.put(\"name\", \"ayou\");\n\nvar deColorObject = new HashMap<String, String>();\ndeColorObject.put(\"color\", \"weiss\");\n\nvar enColorObject = new HashMap<String, String>();\nenColorObject.put(\"color\", \"white\");\n\nEntityCustomData someJson = new HashMap<>();\nsomeJson.put(\"de_DE\", deColorObject);\nsomeJson.put(\"en_GB\", enColorObject);\n\nentityCustomData.put(\"someJson\", someJson);\n\nadminApi.brands().createOrUpdateCustomData(5038, entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteBrandCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "brands"
        ],
        "tags": [
          "BrandCustomData"
        ],
        "summary": "Delete custom data for a brand",
        "description": "This endpoint can be used to delete custom data for a brand.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/BrandId"
          }
        ],
        "responses": {
          "204": {
            "description": "Brand custom data was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.BrandCustomData.deleteBrandCustomData({brandId: 5038});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->brands->deleteCustomData(5038);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.brands().deleteCustomData(5038);\n"
          }
        ]
      }
    },
    "/brands/{brandId}/custom-data/{key}": {
      "get": {
        "operationId": "getBrandCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "brands"
        ],
        "tags": [
          "BrandCustomData"
        ],
        "summary": "Get data of a key in custom data for a brand",
        "description": "This endpoint can be used to get custom data of key for a brand.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/BrandId"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Custom data of a key for a brand",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Brand Custom Data For Key": {
                    "$ref": "#/components/examples/CustomDataResponseForKey"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.BrandCustomData.getBrandCustomDataForKey({brandId: 5038, key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->brands->getCustomDataForKey(5038, 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.brands().getCustomDataForKey(5038, \"isValid\");\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateBrandCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "brands"
        ],
        "tags": [
          "BrandCustomData"
        ],
        "summary": "Create or update specific key of custom data for a brand",
        "description": "This endpoint can be used to create or update specific key of custom data for a brand.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-or-update-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/BrandId"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "Brand Custom Data For Key": {
                  "$ref": "#/components/examples/CustomDataRequestForKey"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Key of a brand custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Brand Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n  isValid: true\n};\nawait client.apis.BrandCustomData.createOrUpdateBrandCustomDataForKey({brandId: 5038, key: 'isValid'}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->brands->createOrUpdateCustomDataForKey(5038, 'isValid', $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new entityCustomData();\nentityCustomData.put(\"isValid\", true);\n\nadminApi.brands().createOrUpdateCustomDataForKey(5038, \"isValid\", entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteBrandCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "brands"
        ],
        "tags": [
          "BrandCustomData"
        ],
        "summary": "Delete a key of custom data for a brand",
        "description": "This endpoint can be used to delete a key of custom data for a brand.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/BrandId"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "204": {
            "description": "Key of a brand custom data was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.BrandCustomData.deleteBrandCustomDataForKey({brandId: 5038, key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->brands->deleteCustomDataForKey(5038, 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.brands().deleteCustomDataForKey(5038, \"isValid\");\n"
          }
        ]
      }
    },
    "/campaigns/{campaignId}/custom-data": {
      "get": {
        "operationId": "getCampaignCustomData",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "campaigns"
        ],
        "tags": [
          "CampaignCustomData"
        ],
        "summary": "Get custom data for a campaign",
        "description": "This endpoint can be used to get custom data for a campaign.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data).\n",
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "description": "campaign ID",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Custom data of a campaign",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Shop Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await AdminApi.apis.CampaignCustomData.getCampaignCustomData({campaignId: 300});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->campaigns->getCustomData(300);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.campaigns().getCustomData(300);\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateCampaignCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "campaigns"
        ],
        "tags": [
          "CampaignCustomData"
        ],
        "summary": "Create or update custom data for a campaign",
        "description": "This endpoint can be used to create custom data for a campaign.\n  See more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-or-update-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "description": "campaign ID",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "Campaign Custom Data": {
                  "$ref": "#/components/examples/CustomDataRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Campaign custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Campaign Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n  \"isValid\": true,\n  \"name\": \"ayou\",\n  \"score\": 100,\n  \"someJson\": {\n    \"de_DE\": {\n      \"color\": \"weiss\"\n    },\n    \"en_GB\": {\n      \"color\": \"white\"\n    }\n  }\n};\nawait adminApi.apis.CampaignCustomData.createOrUpdateCampaignCustomData({campaignId: 1}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n$entityCustomData->score = 10;\n$entityCustomData->name = 'ayou';\n$entityCustomData->someJson = (object) [\n  'de_DE' => [\n    'color' => 'schwarz'\n  ],\n  'en_GB' => [\n    'color' => 'black'\n  ]\n];\n\n$adminApi->campaigns->createOrUpdateCustomData(Identifier::fromId(1), $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new entityCustomData();\nentityCustomData.put(\"isValid\", true);\nentityCustomData.put(\"score\", 100);\nentityCustomData.put(\"name\", \"ayou\");\n\nvar deColorObject = new HashMap<String, String>();\ndeColorObject.put(\"color\", \"weiss\");\n\nvar enColorObject = new HashMap<String, String>();\nenColorObject.put(\"color\", \"white\");\n\nEntityCustomData someJson = new HashMap<>();\nsomeJson.put(\"de_DE\", deColorObject);\nsomeJson.put(\"en_GB\", enColorObject);\n\nentityCustomData.put(\"someJson\", someJson);\n\nadminApi.campaigns().createOrUpdateCustomData(Identifier.fromId(1), entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteCampaignCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "campaigns"
        ],
        "tags": [
          "CampaignCustomData"
        ],
        "summary": "Delete custom data for a campaign",
        "description": "This endpoint can be used to delete custom data for a campaign.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data).\n",
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "description": "campaign ID",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Campaign custom data was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await AdminApi.apis.CampaignCustomData.deleteCampaignCustomData({campaignId: 300});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->campaigns->deleteCustomData(300);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.campaigns().deleteCustomData(300);\n"
          }
        ]
      }
    },
    "/campaigns/{campaignId}/custom-data/{key}": {
      "get": {
        "operationId": "getCampaignCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "campaigns"
        ],
        "tags": [
          "CampaignCustomData"
        ],
        "summary": "Get campaign custom data for a specific key",
        "description": "This endpoint can be used to get campaign custom data for a specific key.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "description": "campaign ID",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Campaign custom data for a specific key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Shop Custom Data For Key": {
                    "$ref": "#/components/examples/CustomDataResponseForKey"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.CampaignCustomData.getCampaignCustomDataForKey({campaignId: 300, key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->campaigns->getCustomDataForKey(300, 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.campaigns().getCustomDataForKey(300, \"isValid\");\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateCampaignCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "campaigns"
        ],
        "tags": [
          "CampaignCustomData"
        ],
        "summary": "Create or update specific key of custom data of a campaign",
        "description": "This endpoint can be used to create or update campaign custom data for a specific key.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-or-update-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "description": "campaign ID",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "Campaign Custom Data For Key": {
                  "$ref": "#/components/examples/CustomDataRequestForKey"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Campaign custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Campaign Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n    isValid: true\n};\n\nawait AdminApi.apis.CampaignCustomData.createOrUpdateCampaignCustomDataForKey({campaignId: 300, key: 'isValid'}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n\n$adminApi->campaigns->createOrUpdateCustomDataForKey(300, 'isValid', $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new EntityCustomData();\nentityCustomData.put(\"isValid\", true);\n\nadminApi.campaigns().createOrUpdateCustomDataForKey(300, \"isValid\", entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteCampaignCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "campaigns"
        ],
        "tags": [
          "CampaignCustomData"
        ],
        "summary": "Delete campaign custom data for a specific key",
        "description": "This endpoint can be used to delete a campaign custom data for a specific key.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "description": "campaign ID",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          }
        ],
        "responses": {
          "204": {
            "description": "Campaign custom data for a specific key was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await AdminApi.apis.CampaignCustomData.deleteCampaignCustomDataForKey({campaignId: 300, key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->campaigns->deleteCustomDataForKey(300, 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.campaigns().deleteCustomDataForKey(300, \"isValid\");\n"
          }
        ]
      }
    },
    "/product-sortings": {
      "post": {
        "operationId": "updateOrCreateProductSortings",
        "x-rateLimit": {
          "scope": "productSortingsWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductSortings"
        ],
        "summary": "Create or update product sortings",
        "description": "This endpoint can be used to create or update product sortings. In case of multi-languages shop countries, entries will be created/updated for all identified shop countries.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/product-sorting#create-or-update-product-sorting).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "maxItems": 1000,
                "items": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ProductSorting"
                    },
                    {
                      "type": "object",
                      "required": [
                        "shopKey",
                        "sortKey",
                        "sortValue"
                      ]
                    }
                  ]
                }
              },
              "examples": {
                "ProductSorting": {
                  "$ref": "#/components/examples/ProductSortingRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Product sortings were succesfully updated or created."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let sortings = [\n    {\n        productId: 1,\n        shopKey: \"ms\",\n        sortKey: \"default\",\n        sortValue: 1\n    },\n    {\n        productReferenceKey: \"my-product\",\n        shopKey: \"ms\",\n        sortKey: \"default\",\n        sortValue: 2\n    }\n]\n\nclient.apis.ProductSortings.updateOrCreateProductSortings({}, {requestBody: sortings});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$productSorting1 = new ProductSorting();\n$productSorting1->productId = 1;\n$productSorting1->shopKey = 'ms';\n$productSorting1->sortKey = 'default';\n$productSorting1->sortValue = 1;\n\n$productSorting2 = new ProductSorting();\n$productSorting2->productReferenceKey = 'my-reference-key';\n$productSorting2->shopKey = 'ms';\n$productSorting2->sortKey = 'default';\n$productSorting2->sortValue = 2;\n\n$sortings = [$productSorting1, $productSorting2];\n\n$adminApi->productSortings->updateOrCreate($sortings);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ProductSorting productSorting1 = new ProductSorting();\nproductSorting1.setProductId(1);\nproductSorting1.setShopKey(\"ms\");\nproductSorting1.setSortKey(\"default\");\nproductSorting1.setSortValue(1);\n\nProductSorting productSorting2 = new ProductSorting();\nproductSorting2.setProductReferenceKey(\"my-reference-key\");\nproductSorting2.setShopKey(\"ms\");\nproductSorting2.setSortKey(\"default\");\nproductSorting2.setSortValue(2);\n\nvar sortings = new ArrayList<ProductSorting>();\nsortings.add(productSorting1);\nsortings.add(productSorting2);\n\nadminApi.productSortings().updateOrCreate(sortings);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteProductSortings",
        "x-rateLimit": {
          "scope": "productSortingsWrite"
        },
        "x-resources": [
          "products"
        ],
        "tags": [
          "ProductSortings"
        ],
        "summary": "Delete product sortings",
        "description": "This endpoint can be used to delete product sortings. In case of multi-languages shop countries, entries will be deleted for all identified shop countries (if `shopKey` and `countryCode` are provided in the request payload).\nNote that it can take some hours until the deleted sorting is reflected in the Storefront API.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/product-sorting#delete-product-sorting).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#/components/schemas/ProductSorting"
                }
              },
              "examples": {
                "ProductSorting": {
                  "$ref": "#/components/examples/ProductSortingRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Product sortings was successfully deleted."
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "title": "NotFoundResponse",
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let sortings = [\n    {\n        productId: 1,\n        shopKey: \"ms\"\n    },\n    {\n        productReferenceKey: \"my-product\",\n        shopKey: \"ms\",\n        sortKey: \"default\"\n    }\n]\n\nclient.apis.ProductSortings.deleteProductSortings({}, {requestBody: sortings});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$productSorting1 = new ProductSorting();\n$productSorting1->productId = 1;\n$productSorting1->shopKey = 'ms';\n\n$productSorting2 = new ProductSorting();\n$productSorting2->productReferenceKey = 'my-product';\n$productSorting2->shopKey = 'ms';\n$productSorting2->sortKey = 'default';\n\n$sortings = [$productSorting1, $productSorting2];\n\n$adminApi->productSortings->delete($sortings);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ProductSorting productSorting1 = new ProductSorting();\nproductSorting1.setProductId(1);\nproductSorting1.setShopKey(\"ms\");\n\nProductSorting productSorting2 = new ProductSorting();\nproductSorting2.setProductReferenceKey(\"my-product\");\nproductSorting2.setShopKey(\"ms\");\nproductSorting2.setSortKey(\"default\");\n\nvar sortings = new ArrayList<ProductSorting>();\nsortings.add(productSorting1);\nsortings.add(productSorting2);\n\nadminApi.productSortings().delete(sortings);\n"
          }
        ]
      }
    },
    "/custom-data-configs/{entity}": {
      "post": {
        "operationId": "createCustomDataConfig",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "custom-data-config"
        ],
        "tags": [
          "CustomDataConfig"
        ],
        "summary": "Create a new Custom Data Config",
        "description": "This endpoint can be used to create a new Custom Data Config.\n\nWhen creating a custom data config with defaultValue, the value is automatically added to all corresponding entities.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#create-custom-data-configuration).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/CustomDataEntity"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomDataConfig"
              },
              "examples": {
                "CustomDataConfigRequest": {
                  "$ref": "#/components/examples/CustomDataConfigRequest"
                },
                "LocalizedStringTypeCustomDataConfigRequest": {
                  "$ref": "#/components/examples/LocalizedStringTypeCustomDataConfigRequest"
                },
                "LocalizedJsonTypeCustomDataConfigRequest": {
                  "$ref": "#/components/examples/LocalizedJsonTypeCustomDataConfigRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Custom Data Config was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomDataConfig"
                },
                "examples": {
                  "CustomDataConfig": {
                    "$ref": "#/components/examples/CustomDataConfigResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customDataConfig = {\n    \"properties\": [\n        {\n            \"name\": \"test\",\n            \"type\": \"string\",\n            \"defaultValue\": \"default value\",\n            \"inherit\": false,\n            \"rules\": {\n                \"required\": true\n            }\n        }\n    ]\n  };\n\nawait client.apis.CustomDataConfig.createCustomDataConfig({entity: 'shop'}, {requestBody: customDataConfig});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customDataConfig = new CustomDataConfig();\n\n$customDataConfigProperty = new CustomDataConfigProperty();\n$customDataConfigProperty->name = 'test';\n$customDataConfigProperty->type = 'string';\n$customDataConfigProperty->defaultValue = 'default';\n$customDataConfigProperty->inherit = false;\n$customDataConfigProperty->isLocalized = false;\n$customDataConfigProperty->rules = new stdClass();\n$customDataConfigProperty->rules->required = true;\n$customDataConfig->properties = [$customDataConfigProperty];\n\n$adminApi->customDataConfigs->create('shop', $customDataConfig);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nCustomDataConfig customDataConfig = new CustomDataConfig();\nList<CustomDataConfigProperty> properties = new ArrayList<>();\n\nCustomDataConfigProperty customDataConfigProperty = new CustomDataConfigProperty();\ncustomDataConfigProperty.setName(\"test\");\ncustomDataConfigProperty.setType(CustomDataConfigPropertyType.VALUE_STRING);\ncustomDataConfigProperty.setDefaultValue(\"default\");\ncustomDataConfigProperty.setInherit(false);\ncustomDataConfigProperty.setIsLocalized(false);\n\nMap<String, Object> rules = new HashMap<>();\nrules.put(\"required\",true);\ncustomDataConfigProperty.setRules(rules);\n\nproperties.add(customDataConfigProperty);\n\ncustomDataConfig.setProperties(properties);\n\nadminApi.customDataConfigs().create(\"shop\", customDataConfig);\n"
          }
        ]
      },
      "get": {
        "operationId": "getCustomDataConfig",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "custom-data-config"
        ],
        "tags": [
          "CustomDataConfig"
        ],
        "summary": "Get Custom Data Config",
        "description": "This endpoint can be used to get a single custom data config by entity name.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#get-custom-data-configuration).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/CustomDataEntity"
          }
        ],
        "responses": {
          "200": {
            "description": "Custom Data Config",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomDataConfig"
                },
                "examples": {
                  "CustomDataConfig": {
                    "$ref": "#/components/examples/CustomDataConfigResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.CustomDataConfig.getCustomDataConfig({entity: 'shop'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->customDataConfigs->get('shop');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.customDataConfigs().get(\"shop\");\n"
          }
        ]
      },
      "put": {
        "operationId": "updateCustomDataConfig",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "custom-data-config"
        ],
        "tags": [
          "CustomDataConfig"
        ],
        "summary": "Update an existing custom data config",
        "description": "This endpoint can be used to update/replace an existing custom data config. It does not support partial updates.\n\nWhen updating the custom data config `required` rule and the `defaultValue` is given, it will be added to all the corresponding entities.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#update-custom-data-configuration).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/CustomDataEntity"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomDataConfig"
              },
              "examples": {
                "CustomDataConfigRequest": {
                  "$ref": "#/components/examples/CustomDataConfigRequest"
                },
                "LocalizedStringTypeCustomDataConfigRequest": {
                  "$ref": "#/components/examples/LocalizedStringTypeCustomDataConfigRequest"
                },
                "LocalizedJsonTypeCustomDataConfigRequest": {
                  "$ref": "#/components/examples/LocalizedJsonTypeCustomDataConfigRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Custom Data Config was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomDataConfig"
                },
                "examples": {
                  "CustomDataConfig": {
                    "$ref": "#/components/examples/CustomDataConfigResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customDataConfig = {\n   properties: [\n     {\n        name: \"test\",\n        inherit: true,\n        isLocalized: true,\n        rules: {\n          \"required\": true\n        }   \n     }\n   ]\n};\n\nawait client.apis.CustomDataConfig.updateCustomDataConfig({entity: 'shop'}, {requestBody: customDataConfig});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customDataConfig = new CustomDataConfig();\n\n$customDataConfigProperty = new CustomDataConfigProperty();\n$customDataConfigProperty->name = 'test';\n$customDataConfigProperty->inherit = true;\n$customDataConfigProperty->isLocalized = true;\n$customDataConfigProperty->rules = (new stdClass())->required = true;\n$customDataConfig->properties = [$customDataConfigProperty];\n\n$adminApi->customDataConfigs->update('shop', $customDataConfig);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nCustomDataConfig customDataConfig = new CustomDataConfig();\nList<CustomDataConfigProperty> properties = new ArrayList<>();\n\nCustomDataConfigProperty customDataConfigProperty = new CustomDataConfigProperty();\ncustomDataConfigProperty.setName(\"test\");\ncustomDataConfigProperty.setDefaultValue(\"default\");\ncustomDataConfigProperty.setInherit(true);\ncustomDataConfigProperty.setIsLocalized(true);\n\nMap<String, Object> rules = new HashMap<>();\nrules.put(\"required\",true);\ncustomDataConfigProperty.setRules(rules);\n\nproperties.add(customDataConfigProperty);\n\ncustomDataConfig.setProperties(properties);\n\nadminApi.customDataConfigs().update('shop', customDataConfig);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteCustomDataConfig",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "custom-data-config"
        ],
        "tags": [
          "CustomDataConfig"
        ],
        "summary": "Delete custom data config",
        "description": "This endpoint can be used to delete custom data config.\nSee more details in the [Developer Guide](/en/core-documentation/user-guide/settings/general/custom-data#delete-custom-data-configuration).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/CustomDataEntity"
          }
        ],
        "responses": {
          "204": {
            "description": "Custom Data Config was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.CustomDataConfig.deleteCustomDataConfig({entity: 'shop'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->customDataConfigs->delete('shop');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.customDataConfigs().delete(\"shop\");\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers": {
      "post": {
        "operationId": "createCustomer",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Create a new customer",
        "description": "This endpoint can be used to create a new customer.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api/create-a-customer).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Customer"
                  },
                  {
                    "required": [
                      "lastName"
                    ]
                  }
                ]
              },
              "examples": {
                "Customer": {
                  "$ref": "#/components/examples/CustomerCreateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Customer was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                },
                "examples": {
                  "Customer": {
                    "$ref": "#/components/examples/CustomerResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customer = {\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"title\": \"Prof.\",\n    \"gender\": \"m\",\n    \"birthDate\": \"1980-01-01\",\n    \"email\": \"john.doe@example.com\",\n    \"phone\": \"0049/1234567890\",\n    \"publicKey\": \"customer-1234\",\n    \"groups\": [\n        \"employee\"\n    ],\n    \"identities\": [\n        {\n            \"identityProviderCode\": \"keycloak\",\n            \"externalUserId\": null\n        },\n        {\n            \"identityProviderCode\": \"apple\",\n            \"externalUserId\": \"qwerty\"\n        }\n     ],\n    \"legacyCustomData\":\n        {\n            \"score\": { \"generatedOn\": \"2018-05-20T19:45:15+00:00\", \"result\": \"green\" },\n        },\n};\n\nlet response = await client.apis.Customers.createCustomer({shopKey: 'ms', countryCode: 'DE'}, {requestBody: customer});\ncustomer = response.body;\n\nconsole.log(customer.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customer = new Customer();\n$customer->firstName = 'John';\n$customer->lastName = 'Doe';\n$customer->title = 'Prof.';\n$customer->gender = 'm';\n$customer->birthDate = '1980-01-01';\n$customer->email = 'john.doe@example.com';\n$customer->phone = '0049/1234567890';\n$customer->publicKey = 'customer-1234';\n$customer->referenceKey = 'InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0';\n$customer->groups = [\n  \"employee\"\n];\n$customer->legacyCustomData = (object)['score' => (object)['generatedOn' => '2018-05-20T19:45:15+00:00', 'result' => 'green']]\n$customer = $adminApi->customers->create('ms', 'DE', $customer);\n\n$keycloakIdp = new CustomerIdentityProvider();\n$keycloakIdp->identityProviderCode = 'keycloak';\n$keycloakIdp->externalUserId = 'qwerty';\n\n$appleIdp = new CustomerIdentityProvider();\n$appleIdp->identityProviderCode = 'apple';\n$appleIdp->externalUserId = null;\n\n$customer->identities = [$keycloakIdp, $appleIdp];\n\necho $customer->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Customer customer = new Customer();\ncustomer.setReferenceKey(\"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0\");\ncustomer.setFirstName(\"John\");\ncustomer.setLastName(\"Doe\");\ncustomer.setTitle(\"Prof.\");\ncustomer.setGender(Gender.VALUE_M);\ncustomer.setBirthDate(\"1980-01-01\");\ncustomer.setEmail(\"john.doe@example.com\");\ncustomer.setPhone(\"0049/1234567890\");\ncustomer.setPublicKey(\"customer-1234\");\n\nList<String> groups = new ArrayList<>();\ngroups.add(\"employee\");\ncustomer.setGroups(groups);\n\nMap<String, Map<String, String>> customData = new HashMap<>();\nMap<String, String> scoreCustomData = new HashMap<>();\nscoreCustomData.put(\"result\", \"green\")\ncustomData.put(\"score\", scoreCustomData);\n\ncustomer.setLegacyCustomData(customData);\n\nCustomerIdentityProvider keycloak = new CustomerIdentityProvider();\nkeycloak.setIdentityProviderCode(\"keycloak\");\nkeycloak.setExternalUserId(\"qwerty\");\n\nCustomerIdentityProvider apple = new CustomerIdentityProvider();\napple.setIdentityProviderCode(\"apple\");\napple.setExternalUserId(null);\n\nList<CustomerIdentityProvider> identities = new ArrayList<>();\nidentities.add(keycloak);\nidentities.add(apple);\n\ncustomer.setIdentities(identities);\n\ncustomer = adminApi.customers().create(\"ms\", \"DE\", customer);\n\nSystem.out.println(customer.getId());\n"
          }
        ]
      },
      "get": {
        "operationId": "getCustomers",
        "x-rateLimit": {
          "scope": "customersRead"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Get customers for given filters",
        "description": "This endpoint can be used to retrieve a collection of customers.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api#list-customers).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "example": "?with=addresses",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "addresses",
                  "legacyCustomData"
                ]
              }
            }
          },
          {
            "$ref": "#/components/parameters/FilterId"
          },
          {
            "$ref": "#/components/parameters/FilterMinId"
          },
          {
            "$ref": "#/components/parameters/FilterMaxId"
          },
          {
            "$ref": "#/components/parameters/FilterMinCreatedAt"
          },
          {
            "$ref": "#/components/parameters/FilterMaxCreatedAt"
          },
          {
            "$ref": "#/components/parameters/FilterMinUpdatedAt"
          },
          {
            "$ref": "#/components/parameters/FilterMaxUpdatedAt"
          },
          {
            "$ref": "#/components/parameters/CustomerFilterBillingAddressCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerFilterShippingAddressCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerFilterGroup"
          },
          {
            "$ref": "#/components/parameters/CustomerFilterIsActive"
          },
          {
            "$ref": "#/components/parameters/CustomerFilterReferenceKeys"
          },
          {
            "$ref": "#/components/parameters/CustomerFilterByLastName"
          },
          {
            "$ref": "#/components/parameters/CustomerFilterByFirstName"
          },
          {
            "$ref": "#/components/parameters/CustomerFilterByEmail"
          },
          {
            "$ref": "#/components/parameters/CustomerFilterPublicKey"
          },
          {
            "$ref": "#/components/parameters/CustomerFilterDateOfBirth"
          },
          {
            "$ref": "#/components/parameters/CustomerFilterStreet"
          },
          {
            "$ref": "#/components/parameters/CustomerFilterZipCode"
          },
          {
            "$ref": "#/components/parameters/CustomerFilterCity"
          },
          {
            "$ref": "#/components/parameters/CustomerFilterIsGuest"
          },
          {
            "$ref": "#/components/parameters/CustomerFilterIncludeAnonymized"
          },
          {
            "$ref": "#/components/parameters/CustomerFilterExternalUserId"
          },
          {
            "$ref": "#/components/parameters/CustomerFilterProviderCode"
          },
          {
            "$ref": "#/components/parameters/CustomerSortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "List of customers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Customer"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Customer": {
                    "value": {
                      "entities": [
                        {
                          "id": 1,
                          "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
                          "firstName": "John",
                          "lastName": "Doe",
                          "gender": "m",
                          "birthDate": "1980-01-01",
                          "email": "john.doe@example.com",
                          "phone": "0049/1234567890",
                          "publicKey": "customer-1234",
                          "title": "Prof.",
                          "type": "personal",
                          "groups": [
                            "employee"
                          ],
                          "status": {
                            "isActive": true,
                            "isGuestCustomer": false
                          },
                          "addresses": [
                            {
                              "id": 998,
                              "referenceKey": "my-key",
                              "street": "Street",
                              "houseNumber": "1",
                              "additional": "erste Stock",
                              "zipCode": "123456",
                              "city": "Hamburg",
                              "countryCode": "DEU",
                              "collectionPoint": {
                                "customerKey": "bced-234-234",
                                "description": "Kiosk",
                                "key": "12345-a",
                                "type": "hermes_parcelshop"
                              },
                              "isDefault": {
                                "billing": false,
                                "shipping": true
                              },
                              "recipient": {
                                "firstName": "John",
                                "gender": "m",
                                "lastName": "Doe",
                                "title": "Prof."
                              }
                            }
                          ],
                          "legacyCustomData": {
                            "score": {
                              "generatedOn": "2018-05-20T19:45:15+00:00",
                              "result": "green"
                            }
                          }
                        }
                      ],
                      "cursor": {
                        "next": "1"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Customers.getCustomers({\n    shopKey: 'ms',\n    countryCode: 'DE',\n    with: 'addresses',\n    \"filters[id]\": \"10,11,12\"\n});\n\nlet customers = response.body.entities;\n\ncustomers.forEach(\n    customer => customer.addresses.forEach(address => console.log(address.id))\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'with' => 'addresses',\n    'filters[id]' => '10,11,12',\n];\n\n$customerCollection = $adminApi->customers->all('ms', 'DE', $options);\n\nforeach ($customerCollection->getEntities() as $customer) {\n    foreach ($customer->addresses as $address) {\n        echo $address->id;\n    }\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"with\", \"addresses\")\n                        .addOption(\"filters[id]\", \"10,11,12\")\n                        .build();\n\nApiCollection<Customer> customerCollection = adminApi.customers().all(\"ms\", \"DE\", options);\n\nfor (Customer customer : customerCollection.getEntities()) {\n    for (CustomerAddress address : customer.getAddresses()) {\n        System.out.println(address.getId());\n    }\n}\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}": {
      "get": {
        "operationId": "getCustomer",
        "x-rateLimit": {
          "scope": "customersRead"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Get a customer",
        "description": "This endpoint can be used to get a single customer by its identifier.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api#get-customer).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          },
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response. When identifying customer by reference key, the `nonUniqueAddresses` option is not available.",
            "example": "addresses,legacyCustomData",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "addresses",
                  "legacyCustomData",
                  "nonUniqueAddresses"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Customer",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                },
                "examples": {
                  "Customer": {
                    "$ref": "#/components/examples/CustomerResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Customers.getCustomer({\n    shopKey: 'ms',\n    countryCode: 'DE',\n    customerIdentifier: \"key=InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0\",\n    with: 'addresses'\n});\n\nlet customer = response.body;\n\ncustomer.addresses.forEach(address => console.log(address.id));\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'with' => 'addresses'\n];\n\n$customer = $adminApi->customers->get('ms', 'DE', Identifier::fromKey('InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0'), $options);\n\nforeach ($customer->addresses as $address) {\n    echo $address->id;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"with\", \"addresses,legacyCustomData\")\n                        .build();\n\nvar customer = adminApi.customers().get(\"ms\", \"DE\", Identifier.fromKey(\"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0\"), options);\n\nfor (CustomerAddress address : customer.getAddresses()) {\n    System.out.println(address.getId());\n}\n"
          }
        ]
      },
      "patch": {
        "operationId": "updateCustomer",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Update an existing customer",
        "description": "This endpoint can be used to update an existing customer.\nPlease note that the customer groups cannot be updated by using this endpoint.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Customer"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "referenceKey": {
                        "readOnly": true
                      },
                      "legacyCustomData": {
                        "readOnly": true
                      },
                      "identities": {
                        "readOnly": true
                      }
                    }
                  }
                ]
              },
              "examples": {
                "Customer": {
                  "$ref": "#/components/examples/CustomerPatchRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Customer was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                },
                "examples": {
                  "Customer": {
                    "$ref": "#/components/examples/CustomerResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Customers.getCustomer({shopKey: 'ms', countryCode: 'DE', customerIdentifier: 1});\nlet customer = response.body;\n\ncustomer.email = \"john.doe@example.com\";\nresponse = await client.apis.Customers.updateCustomer({shopKey: 'ms', countryCode: 'DE', customerIdentifier: customer.id}, {requestBody: customer});\ncustomer = response.body;\n\nconsole.log(customer.email);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customer = $adminApi->customers->get('ms', 'DE', Identifier::fromId(1));\n$customer->email = 'john.doe@example.com';\n\n$customer = $adminApi->customers->update('ms', 'DE', Identifier::fromId($customer->id), $customer);\n\necho $customer->email;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var customer = adminApi.customers().get(\"ms\", \"DE\", Identifier.fromId(1));\ncustomer.setEmail(\"john.doe@example.com\");\n\ncustomer = adminApi.customers().update(\"ms\", \"DE\", Identifier.fromId(customer.getId()), customer);\nSystem.out.println(customer.getEmail());\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteCustomer",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Delete a customer",
        "description": "This endpoint can be used to delete (anonymize) a customer along with its dependencies (except for the customer's orders) in accordance with data protection acts. \nWhen sending this request, the customer data will get anonymized (\"soft-deleted\") for a certain amount of time. \nThe deletion process can be reversed during this period (See `Cancel queued deletion`). After that time, the customer will be completely deleted without possibility to restore. \nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api/privacy-anomyze-customer#delete-customer).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Customer was successfully queued to be deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "// Delete a customer by id\nclient.apis.Customers.delete({shopKey: 'ms', countryCode: 'DE', customerIdentifier: 1});\n\n// Delete a customer by reference key\nclient.apis.Customers.delete({shopKey: 'ms', countryCode: 'DE', customerIdentifier: \"key=my-key\"});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "// Delete a customer by id\n$adminApi->customers->delete('ms', 'DE', Identifier::fromId(1));\n\n// Delete a customer by reference key\n$adminApi->customers->delete('ms', 'DE', Identifier::fromKey('my-key'));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "// Delete a customer by id\nadminApi.customers().delete(\"ms\", \"DE\", Identifier.fromId(1));\n\n// Delete a customer by reference key\nadminApi.customers().delete(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"));\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers/{customerId}/reference-key": {
      "put": {
        "operationId": "updateCustomerReferenceKey",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Update customer reference key",
        "description": "This endpoint can be used to update reference key of an existing customer.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api#update-a-reference-key-of-a-customer).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerReferenceKey"
              },
              "examples": {
                "Customer Reference Key": {
                  "$ref": "#/components/examples/CustomerReferenceKeyRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Customer reference key was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                },
                "examples": {
                  "Customer": {
                    "$ref": "#/components/examples/CustomerResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customerReferenceKey = {\n    referenceKey: \"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0\"\n};\n\nlet response = await client.apis.Customers.updateCustomerReferenceKey({shopKey: 'ms', countryCode: 'DE', customerId: 1}, {requestBody: customerReferenceKey});\nlet customer = response.body;\n\nconsole.log(customer.referenceKey);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customerReferenceKey = new CustomerReferenceKey();\n$customerReferenceKey->referenceKey = 'InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0';\n\n$customer = $adminApi->customers->updateReferenceKey('ms', 'DE', 1, $customerReferenceKey);\n\necho $customer->referenceKey;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var customerReferenceKey = new CustomerReferenceKey();\ncustomerReferenceKey.setReferenceKey(\"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0\");\n\nvar customer = adminApi.customers().updateReferenceKey(\"ms\", \"DE\", 1, customerReferenceKey);\n\nSystem.out.println(customer.getReferenceKey());\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers/{customerId}/legacy-custom-data": {
      "put": {
        "operationId": "createOrUpdateCustomerLegacyCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Update custom data of the customer.",
        "description": "This endpoint can be used to create or update custom data of an existing customer.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LegacyCustomData"
              },
              "examples": {
                "Customer legacy custom data": {
                  "$ref": "#/components/examples/CustomerLegacyCustomDataRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Customer legacy custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                },
                "examples": {
                  "Customer": {
                    "$ref": "#/components/examples/CustomerResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n    \"score\": { \"generatedOn\": \"2018-05-20T19:45:15+00:00\", \"result\": \"green\" },\n  }\n\nlet response = await client.apis.Customers.createOrUpdateLegacyCustomData({shopKey: 'ms', countryCode: 'DE', customerId: 1}, {requestBody: customData});\nlet customer = response.body;\nconsole.log(customer.legacyCustomData);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customData = new EntityCustomData();\n$customData->score = (object)[\"generatedOn\" => \"2018-05-20T19:45:15+00:00\", \"result\" => \"green\"];\n$customer = $adminApi->customers->createOrUpdateLegacyCustomData('ms', 'DE', 1, $customData);\n\necho $customer->legacyCustomData;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var entityCustomData = new entityCustomData();\nMap<String, String> scoreCustomData = new HashMap<>();\nscoreCustomData.put(\"result\", \"green\")\nentityCustomData.put(\"score\", scoreCustomData);\n\nvar customer = adminApi.customers().createOrUpdateLegacyCustomData(\"ms\", \"DE\", 1,  customerId: 1);\n\nSystem.out.println(customer.getLegacyCustomData());\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/password": {
      "put": {
        "operationId": "setCustomerPassword",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Set a password for a customer",
        "description": "This endpoint can be used to set a password for an existing customer.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api#set-customer-password).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerPassword"
              },
              "examples": {
                "SetPassword": {
                  "$ref": "#/components/examples/CustomerSetPasswordRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Password was successfully updated."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          },
          "412": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1countries~1%7BcountryCode%7D~1emails~1send/post/responses/412"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const password = {\n  password: \"yourPassword\",\n  hashingType: \"internal\",\n}\n\n// Set password by customer reference key\nclient.apis.Customers.setCustomerPassword({shopKey: 'ms', countryCode: 'DE', customerIdentifier: \"key=my-key\"}, {requestBody: password});\n\n// Set password by customer id\nclient.apis.Customers.setCustomerPassword({shopKey: 'ms', countryCode: 'DE', customerIdentifier: 1}, {requestBody: password});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customerPassword = new CustomerPassword;\n$customerPassword->password = 'yourPassword';\n$customerPassword->hashingType = 'internal';\n\n// Set password by customer reference key\n$adminApi->customers->setPassword('ms', 'DE', Identifier::fromKey('my-key'), $customerPassword);\n\n// Set password by customer id\n$adminApi->customers->setPassword('ms', 'DE', Identifier::fromId(1), $customerPassword);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "CustomerPassword customerPassword = new CustomerPassword();\ncustomerPassword.setPassword(\"yourPassword\");\ncustomerPassword.setHashingType(CustomerPasswordHashingType.VALUE_INTERNAL);\n\n// Set password by customer id\nadminApi.customers().setPassword(\"ms\", \"DE\", Identifier.fromId(1), customerPassword);\n\n// Set password by customer reference key\nadminApi.customers().setPassword(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"), customerPassword);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/password-hash": {
      "put": {
        "operationId": "setCustomerPasswordHash",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Set a password hash for a customer",
        "description": "This endpoint can be used to set a password hash for an existing customer.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api#set-customer-password-hash).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerPasswordHash"
              },
              "examples": {
                "SetPasswordHash": {
                  "$ref": "#/components/examples/CustomerSetPasswordHashRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Password hash was successfully updated."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          },
          "412": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1countries~1%7BcountryCode%7D~1emails~1send/post/responses/412"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const passwordHash = {\n  hash: \"yourHash\",\n  hashingType: \"internal\",\n}\n\n// Set password hash by customer reference key\nclient.apis.Customers.setCustomerPasswordHash({shopKey: 'ms', countryCode: 'DE', customerIdentifier: \"key=my-key\"}, {requestBody: passwordHash});\n\n// Set password hash by customer id\nclient.apis.Customers.setCustomerPassword({shopKey: 'ms', countryCode: 'DE', customerIdentifier: 1}, {requestBody: passwordHash});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customerPasswordHash = new CustomerPasswordHash;\n$customerPasswordHash->hash = 'yourHash';\n$customerPasswordHash->hashingType = 'internal';\n\n// Set password hash by customer reference key\n$adminApi->customers->setPasswordHash('ms', 'DE', Identifier::fromKey('my-key'), $customerPasswordHash);\n\n// Set password hash by customer id\n$adminApi->customers->setPasswordHash('ms', 'DE', Identifier::fromId(1), $customerPasswordHash);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "CustomerPasswordHash customerPasswordHash = new CustomerPasswordHash();\ncustomerPasswordHash.setHash(\"yourHash\");\ncustomerPasswordHash.setHashingType(CustomerPasswordHashingType.VALUE_INTERNAL);\n\n// Set password hash by customer id\nadminApi.customers().setPasswordHash(\"ms\", \"DE\", Identifier.fromId(1), customerPasswordHash);\n\n// Set password hash by customer reference key\nadminApi.customers().setPasswordHash(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"), customerPasswordHash);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/anonymize": {
      "delete": {
        "operationId": "anonymizeCustomer",
        "deprecated": true,
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Anonymize a customer",
        "description": "This endpoint can be used to anonymize a customer along with its dependencies (except for the customer's orders) in accordance with data protection acts.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api/privacy-anomyze-customer#anonymize-customer-deprecated).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Customer was successfully anonymized."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "// Anonymize a customer by id\nclient.apis.Customers.anonymizeCustomer({shopKey: 'ms', countryCode: 'DE', customerIdentifier: 1});\n\n// Anonymize a customer by reference key\nclient.apis.Customers.anonymizeCustomer({shopKey: 'ms', countryCode: 'DE', customerIdentifier: \"key=my-key\"});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "// Anonymize a customer by id\n$adminApi->customers->anonymize('ms', 'DE', Identifier::fromId(1));\n\n// Anonymize a customer by reference key\n$adminApi->customers->anonymize('ms', 'DE', Identifier::fromKey('my-key'));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "// Anonymize a customer by id\nadminApi.customers().anonymize(\"ms\", \"DE\", Identifier.fromId(1));\n\n// Anonymize a customer by reference key\nadminApi.customers().anonymize(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"));\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/queued-deletion": {
      "delete": {
        "operationId": "cancelQueuedDeletion",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Cancel the queued deletion of a customer",
        "description": "This endpoint can be used to cancel the queued deletion of the customer in accordance with data protection acts.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api/privacy-anomyze-customer#cancel-queued-deletion).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Queued deletion of the customer was successfully cancelled."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "// Cancel the queued deletion of a customer by id\nclient.apis.Customers.cancelQueuedDeletion({shopKey: 'ms', countryCode: 'DE', customerIdentifier: 1});\n\n// Cancel the queued deletion of a customer by reference key\nclient.apis.Customers.cancelQueuedDeletion({shopKey: 'ms', countryCode: 'DE', customerIdentifier: \"key=my-key\"});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "// Cancel the queued deletion of a customer by id\n$adminApi->customers->cancelQueuedDeletion('ms', 'DE', Identifier::fromId(1));\n\n// Cancel the queued deletion of a customer by reference key\n$adminApi->customers->cancelQueuedDeletion('ms', 'DE', Identifier::fromKey('my-key'));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "// Cancel the queued deletion of a customer by id\nadminApi.customers().cancelQueuedDeletion(\"ms\", \"DE\", Identifier.fromId(1));\n\n// Cancel the queued deletion of a customer by reference key\nadminApi.customers().cancelQueuedDeletion(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"));\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/status": {
      "get": {
        "operationId": "getCustomerStatus",
        "x-rateLimit": {
          "scope": "customersRead"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Get a customer status",
        "description": "This endpoint can be used to get a specific customer status by its identifier.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Customer status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerStatus"
                },
                "examples": {
                  "Customer Status": {
                    "$ref": "#/components/examples/CustomerStatusResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Customers.getCustomerStatus({shopKey: 'ms', countryCode: 'DE', customerIdentifier: \"key=my-key\"});\nlet customerStatus = response.body;\nconsole.log(customerStatus);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->customers->getStatus('ms', 'DE', Identifier::fromKey('my-key'));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "CustomerStatus status = adminApi.customers().getStatus(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"));\nSystem.out.println(status);\n"
          }
        ]
      },
      "put": {
        "operationId": "updateCustomerStatus",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Update an existing customer status",
        "description": "This endpoint can be used to update an existing customer status.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerStatus"
              },
              "examples": {
                "Customer Status": {
                  "$ref": "#/components/examples/CustomerStatusRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Customer status was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerStatus"
                },
                "examples": {
                  "Customer Status": {
                    "$ref": "#/components/examples/CustomerStatusResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customerStatus = {\n    isActive: true,\n    isGuestCustomer: false\n};\n\nlet response = await client.apis.Customers.updateCustomerStatus(\n    {\n        shopKey: 'ms',\n        countryCode: 'DE',\n        customerIdentifier: \"key=my-key\"\n    },\n    {\n        requestBody: customerStatus\n    }\n);\n\nlet updatedCustomerStatus = response.body;\nconsole.log(updatedCustomerStatus);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customerStatus = new CustomerStatus();\n$customerStatus->isActive = true;\n$customerStatus->isGuestCustomer = false;\n\n$customerStatus = $adminApi->customers->updateStatus('ms', 'DE', Identifier::fromKey('my-key'), $customerStatus);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "CustomerStatus status = adminApi.customers().getStatus(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"));\nstatus.setIsActive(true);\nstatus.setIsGuestCustomer(false);\n\nCustomerStatus updatedStatus = adminApi.customers().updateStatus(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"), status);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/addresses": {
      "get": {
        "operationId": "getCustomerAddresses",
        "x-rateLimit": {
          "scope": "customersRead"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Get customer addresses",
        "description": "This endpoint can be used to get a customer addresses by customer identifier.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api#list-addresses).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          },
          {
            "name": "with",
            "in": "query",
            "description": "comma separated list of additional properties that should be included in the response.",
            "example": "?with=nonUniqueAddresses",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "nonUniqueAddresses"
                  ]
                }
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of customer addresses",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CustomerAddress"
                      }
                    }
                  }
                },
                "examples": {
                  "Customer Addresses": {
                    "$ref": "#/components/examples/CustomerAddressCollectionResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Customers.getCustomerAddresses({shopKey: 'ms', countryCode: 'DE', customerIdentifier: \"key=my-key\"});\nlet customerAddresses = response.body.entities;\n\ncustomerAddresses.forEach(\n    address => console.log(address.id)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customerAddresses = $adminApi->customers->getAddresses('ms', 'DE', Identifier::fromKey('my-key'));\n\nforeach ($customerAddresses->getEntities() as $address) {\n    echo $address->id;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<CustomerAddress> customerAdresses = adminApi.customers().getAddresses(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"));\n\nfor (CustomerAddress address : customerAdresses.getEntities()) {\n    System.out.println(address.getId());\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "createCustomerAddress",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Create a new customer address",
        "description": "This endpoint can be used to create a new customer address.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api#create-new-customer-address).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerAddress"
              },
              "examples": {
                "Customer Address": {
                  "$ref": "#/components/examples/CreateCustomerAddressRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Customer address was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerAddress"
                },
                "examples": {
                  "Customer Address": {
                    "$ref": "#/components/examples/CustomerAddressResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "412": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1countries~1%7BcountryCode%7D~1emails~1send/post/responses/412"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customerAddress = {\n  \"referenceKey\": \"my-key\",\n  \"street\": \"Domstraße\",\n  \"houseNumber\": \"1\",\n  \"additional\": \"erste Stock\",\n  \"zipCode\": \"123456\",\n  \"city\": \"Hamburg\",\n  \"countryCode\": \"DEU\",\n  \"collectionPoint\": {\n    \"customerKey\": \"bced-234-234\",\n    \"description\": \"Kiosk\",\n    \"key\": \"12345-a\",\n    \"type\": \"hermes_parcelshop\"\n  },\n  \"isDefault\": {\n    \"billing\": false,\n    \"shipping\": false\n  },\n  \"recipient\": {\n    \"firstName\": \"John\",\n    \"gender\": \"m\",\n    \"lastName\": \"Doe\",\n    \"title\": \"Prof.\"\n  }\n};\n\nlet response = await client.apis.Customers.createCustomerAddress({shopKey: 'ms', countryCode: 'DE', customerIdentifier: \"key=my-key\"}, {requestBody: customerAddress});\ncustomerAddress = response.body;\n\nconsole.log(customerAddress.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customerAddress = new CustomerAddress();\n$customerAddress->referenceKey = 'my-key';\n$customerAddress->street = 'Domstraße';\n$customerAddress->houseNumber = '1';\n$customerAddress->additional = 'erste Stock';\n$customerAddress->zipCode = '123456';\n$customerAddress->city = 'Hamburg';\n$customerAddress->countryCode = 'DEU';\n\n$customerAddressCollectionPoint = new CustomerAddressCollectionPoint();\n$customerAddressCollectionPoint->customerKey = 'bced-234-234';\n$customerAddressCollectionPoint->description = 'Kiosk';\n$customerAddressCollectionPoint->key = '12345-a';\n$customerAddressCollectionPoint->type = 'hermes_parcelshop';\n\n$customerAddress->collectionPoint = $customerAddressCollectionPoint;\n\n$customerAddressRecipient= new CustomerAddressRecipient();\n$customerAddressRecipient->firstName = 'Joe';\n$customerAddressRecipient->gender = 'm';\n$customerAddressRecipient->lastName = 'Doe';\n$customerAddressRecipient->title = 'Prof.';\n\n$customerAddress->recipient = $customerAddressRecipient;\n\n$customerAddressIsDefault= new CustomerAddressDefault();\n$customerAddressIsDefault->billing = false;\n$customerAddressIsDefault->shipping = false;\n\n$customerAddress->isDefault = $customerAddressIsDefault;\n\n$customerAddress = $adminApi->customers->createAddress('ms', 'DE', Identifier::fromKey('my-key'), $customerAddress);\n\necho $customerAddress->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var customerAddress = new CustomerAddress();\ncustomerAddress.setReferenceKey(\"my-key\");\ncustomerAddress.setStreet(\"Domstraße\");\ncustomerAddress.setHouseNumber(\"1\");\ncustomerAddress.setAdditional(\"erste Stock\");\ncustomerAddress.setZipCode(\"123456\");\ncustomerAddress.setCity(\"Hamburg\");\ncustomerAddress.setCountryCode(\"DEU\");\n\nvar customerAddressCollectionPoint = new CustomerAddressCollectionPoint();\ncustomerAddressCollectionPoint.setCustomerKey(\"bced-234-234\");\ncustomerAddressCollectionPoint.setDescription(\"Kiosk\");\ncustomerAddressCollectionPoint.setKey(\"12345-a\");\ncustomerAddressCollectionPoint.setType(\"hermes_parcelshop\");\n\ncustomerAddress.setCollectionPoint(customerAddressCollectionPoint);\n\nvar customerAddressRecipient= new CustomerAddressRecipient();\ncustomerAddressRecipient.setFirstName(\"Joe\");\ncustomerAddressRecipient.setGender(Gender.VALUE_M);\ncustomerAddressRecipient.setLastName(\"Doe\");\ncustomerAddressRecipient.setTitle(\"Prof.\");\n\ncustomerAddress.setRecipient(customerAddressRecipient);\n\nvar customerAddressIsDefault= new CustomerAddressDefault();\ncustomerAddressIsDefault.setBilling(false);\ncustomerAddressIsDefault.setShipping(false);\n\ncustomerAddress.setIsDefault(customerAddressIsDefault);\n\ncustomerAddress = adminApi.customers().createAddress(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"), customerAddress);\n\nSystem.out.println(customerAddress.getId());\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/customer-groups": {
      "post": {
        "operationId": "addCustomerGroups",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Create new customer groups",
        "description": "This endpoint can be used to create new customer groups.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api/customer-groups#add-customer-group).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerGroup"
              },
              "examples": {
                "Customer Group": {
                  "$ref": "#/components/examples/CustomerGroupRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Customer was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                },
                "examples": {
                  "Customer": {
                    "$ref": "#/components/examples/CustomerResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customerGroups = {\n  \"groups\": [\n    \"employee\"\n  ]\n};\n\nlet response = await client.apis.Customers.addCustomerGroups({shopKey: 'ms', countryCode: 'DE', customerIdentifier: \"key=my-key\"}, {requestBody: customerGroups});\ncustomer = response.body;\n\nconsole.log(customer.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customerGroups = new CustomerGroup();\n$customerGroups->groups = [\n    \"employee\"\n];\n\n$customer = $adminApi->customers->addGroups('ms', 'DE', Identifier::fromKey('my-key'), $customerGroups);\n\necho $customer->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var customerGroups = new CustomerGroup();\ncustomerGroups.setGroups(Collections.singletonList(\"employee\"));\n\nvar customer = adminApi.customers().addGroups(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"), customerGroups);\n\nSystem.out.println(customer.getId());\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/customer-groups/{customerGroup}": {
      "delete": {
        "operationId": "deleteCustomerGroup",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Delete customer group",
        "description": "This endpoint can be used to delete explicit customer group.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api/customer-groups#delete-customer-group).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          },
          {
            "$ref": "#/components/parameters/CustomerGroup"
          }
        ],
        "responses": {
          "204": {
            "description": "Customer group was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.Customers.deleteCustomerGroup({shopKey: 'ms', countryCode: 'DE', customerIdentifier: \"key=my-key\", customerGroup: 'employee'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->customers->deleteGroup('ms', 'DE', Identifier::fromKey('my-key'), 'employee');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.customers().deleteGroup(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"), \"employee\");\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/memberships": {
      "post": {
        "operationId": "createCustomerMembership",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Create a new customer membership",
        "description": "This endpoint can be used to create a new customer membership.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api/customer-memberships#create-a-new-customer-membership).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerMembership"
              },
              "examples": {
                "CustomerMembershipRequest": {
                  "$ref": "#/components/examples/CustomerMembershipRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Customer membership was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMembership"
                },
                "examples": {
                  "CustomerMembershipResponse": {
                    "$ref": "#/components/examples/CustomerMembershipResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customerMembership = {\n  \"isActive\": true,\n  \"typeKey\": \"payback\",\n  \"accountNumber\": \"1234567890\"\n};\n\nlet response = await client.apis.Customers.createCustomerMembership({shopKey: 'ms', countryCode: 'DE', customerIdentifier: \"key=my-key\"}, {requestBody: customerMembership});\ncustomerMembership = response.body;\n\nconsole.log(customerMembership.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customerMembership = new CustomerMembership();\n$customerMembership->isActive = true;\n$customerMembership->typeKey = 'payback';\n$customerMembership->accountNumber = '1234567890';\n\n$customerMembership = $adminApi->customers->createMembership('ms', 'DE', Identifier::fromKey('my-key'), $customerMembership);\n\necho $customerMembership->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var customerMembership = new CustomerMembership();\ncustomerMembership.setIsActive(true);\ncustomerMembership.setTypeKey(\"payback\");\ncustomerMembership.setAccountNumber(\"1234567890\");\n\ncustomerMembership = adminApi.customers().createMembership(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"), customerMembership);\n\nSystem.out.println(customerMembership.getId());\n"
          }
        ]
      },
      "get": {
        "operationId": "getCustomerMemberships",
        "x-rateLimit": {
          "scope": "customersRead"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Get customer memberships",
        "description": "This endpoint can be used to get customer memberships by customer identifier.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api/customer-memberships#list-memberships).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          },
          {
            "$ref": "#/components/parameters/FilterId"
          },
          {
            "$ref": "#/components/parameters/FilterMinId"
          },
          {
            "$ref": "#/components/parameters/FilterMaxId"
          },
          {
            "$ref": "#/components/parameters/FilterMinCreatedAt"
          },
          {
            "$ref": "#/components/parameters/FilterMaxCreatedAt"
          },
          {
            "$ref": "#/components/parameters/FilterMinUpdatedAt"
          },
          {
            "$ref": "#/components/parameters/FilterMaxUpdatedAt"
          },
          {
            "name": "filters[isActive]",
            "in": "query",
            "description": "Pass true to get only active customer memberships, pass false to get the opposite.",
            "example": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/MembershipSortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "List of customer memberships",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CustomerMembership"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "CustomerMembershipsCollectionResponse": {
                    "value": {
                      "entities": [
                        {
                          "id": 5,
                          "isActive": true,
                          "accountNumber": "1234567890",
                          "typeKey": "payback",
                          "createdAt": "2023-01-22T11:30:15+00:00",
                          "updatedAt": "2023-01-22T11:30:15+00:00"
                        }
                      ],
                      "cursor": {
                        "next": "1"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Customers.getCustomerMemberships({shopKey: 'ms', countryCode: 'DE', customerIdentifier: \"key=my-key\"});\nlet customerMemberships = response.body.entities;\n\ncustomerMemberships.forEach(\n    membership => console.log(membership.id)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customerMemberships = $adminApi->customers->getMemberships('ms', 'DE', Identifier::fromKey('my-key'));\n\nforeach ($customerMemberships->getEntities() as $membership) {\n    echo $membership->id;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<CustomerMembership> customerMembership = adminApi.customers().getMemberships(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"));\n\nfor (CustomerMembership membership : customerMembership.getEntities()) {\n    System.out.println(membership.getId());\n}\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers/memberships/{membershipId}": {
      "delete": {
        "operationId": "deleteCustomerMembership",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Delete a customer membership",
        "description": "This endpoint can be used to delete a customer membership.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api/customer-memberships#delete-customer-memberships).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/MembershipId"
          }
        ],
        "responses": {
          "204": {
            "description": "Customer membership was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.Customers.deleteCustomerMembership({shopKey: 'ms', countryCode: 'DE', membershipId: 123});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->customers->deleteMembership('ms', 'DE', 123);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.customers().deleteMembership(\"ms\", \"DE\", 123);\n"
          }
        ]
      },
      "put": {
        "operationId": "updateCustomerMembership",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Update an existing customer membership",
        "description": "This endpoint can be used to update an existing customer membership.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api/customer-memberships#update-customer-membership).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/MembershipId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerMembership"
              },
              "examples": {
                "CustomerMembershipRequest": {
                  "$ref": "#/components/examples/CustomerMembershipRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Customer membership was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMembership"
                },
                "examples": {
                  "CustomerMembershipResponse": {
                    "$ref": "#/components/examples/CustomerMembershipResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customerMembership = {\n  \"isActive\": true,\n  \"typeKey\": \"payback\",\n  \"accountNumber\": \"1234567890\"\n};\n\nlet response = await client.apis.Customers.updateCustomerMembership({shopKey: 'ms', countryCode: 'DE', membershipId: 123}, {requestBody: customerMembership});\ncustomerMembership = response.body;\n\nconsole.log(customerMembership.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customerMembership = new CustomerMembership();\n$customerMembership->isActive = true;\n$customerMembership->typeKey = 'payback';\n$customerMembership->accountNumber = '1234567890';\n\n$customerMembership = $adminApi->customers->updateMembership('ms', 'DE', 123, $customerMembership);\n\necho $customerMembership->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var customerMembership = new CustomerMembership();\ncustomerMembership.setIsActive(true);\ncustomerMembership.setTypeKey(\"payback\");\ncustomerMembership.setAccountNumber(\"1234567890\");\n\ncustomerMembership = adminApi.customers().updateMembership(\"ms\", \"DE\", 123, customerMembership);\n\nSystem.out.println(customerMembership.getId());\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/addresses/{addressIdentifier}": {
      "get": {
        "operationId": "getCustomerAddress",
        "x-rateLimit": {
          "scope": "customersRead"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Get explicit customer address",
        "description": "This endpoint can be used to get a specific customer address by customer and address identifiers.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api#get-customer-address).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          },
          {
            "$ref": "#/components/parameters/AddressIdentifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Customer Address",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerAddress"
                },
                "examples": {
                  "Customer Address": {
                    "$ref": "#/components/examples/CustomerAddressResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Customers.getCustomerAddress({shopKey: 'ms', countryCode: 'DE', customerIdentifier: \"key=my-key\", addressIdentifier: \"key=my-key\"});\nlet customerAddress = response.body;\n\nconsole.log(customerAddress.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customerAddress = $adminApi->customers->getAddress('ms', 'DE', Identifier::fromKey('my-key'), Identifier::fromKey('my-key'));\n\necho $customerAddress->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "CustomerAddress address = adminApi.customers().getAddress(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"), Identifier.fromKey(\"my-key\"));\nSystem.out.println(address.getId());\n"
          }
        ]
      },
      "patch": {
        "operationId": "updateCustomerAddress",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Update a customer address",
        "description": "This endpoint can be used to update a specific customer address by customer and address identifier.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api#update-a-customer-address).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          },
          {
            "$ref": "#/components/parameters/AddressIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerAddress"
              },
              "examples": {
                "Customer Address": {
                  "$ref": "#/components/examples/UpdateCustomerAddressRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Customer address was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerAddress"
                },
                "examples": {
                  "Customer Address": {
                    "$ref": "#/components/examples/CustomerAddressResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customerAddress = {\n  \"street\": \"Domstraße\",\n  \"houseNumber\": \"1\",\n  \"additional\": \"erste Stock\",\n  \"zipCode\": \"123456\",\n  \"city\": \"Hamburg\",\n  \"countryCode\": \"DEU\",\n  \"collectionPoint\": {\n    \"customerKey\": \"bced-234-234\",\n    \"description\": \"Kiosk\",\n    \"key\": \"12345-a\",\n    \"type\": \"hermes_parcelshop\"\n  },\n  \"isDefault\": {\n    \"billing\": false,\n    \"shipping\": false\n  },\n  \"recipient\": {\n    \"firstName\": \"John\",\n    \"gender\": \"m\",\n    \"lastName\": \"Doe\",\n    \"title\": \"Prof.\"\n  }\n};\n\nlet response = await client.apis.Customers.updateCustomerAddress({shopKey: 'ms', countryCode: 'DE', customerIdentifier: \"key=my-key\", addressIdentifier: \"key=my-key\"}, {requestBody: customerAddress});\ncustomerAddress = response.body;\n\nconsole.log(customerAddress.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customerAddress = new CustomerAddress();\n$customerAddress->street = 'Domstraße';\n$customerAddress->houseNumber = '1';\n$customerAddress->additional = 'erste Stock';\n$customerAddress->zipCode = '123456';\n$customerAddress->city = 'Hamburg';\n$customerAddress->countryCode = 'DEU';\n\n$customerAddressCollectionPoint = new CustomerAddressCollectionPoint();\n$customerAddressCollectionPoint->customerKey = 'bced-234-234';\n$customerAddressCollectionPoint->description = 'Kiosk';\n$customerAddressCollectionPoint->key = '12345-a';\n$customerAddressCollectionPoint->type = 'hermes_parcelshop';\n\n$customerAddress->collectionPoint = $customerAddressCollectionPoint;\n\n$customerAddressRecipient= new CustomerAddressRecipient();\n$customerAddressRecipient->firstName = 'Joe';\n$customerAddressRecipient->gender = 'm';\n$customerAddressRecipient->lastName = 'Doe';\n$customerAddressRecipient->title = 'Prof.';\n\n$customerAddress->recipient = $customerAddressRecipient;\n\n$customerAddressIsDefault= new CustomerAddressDefault();\n$customerAddressIsDefault->billing = false;\n$customerAddressIsDefault->shipping = false;\n\n$customerAddress->isDefault = $customerAddressIsDefault;\n\n$customerAddress = $adminApi->customers->updateAddress('ms', 'DE', Identifier::fromKey('my-key'), Identifier::fromKey('my-key'), $customerAddress);\n\necho $customerAddress->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var customerAddress = new CustomerAddress();\ncustomerAddress.setStreet(\"Domstraße\");\ncustomerAddress.setHouseNumber(\"1\");\ncustomerAddress.setAdditional(\"erste Stock\");\ncustomerAddress.setZipCode(\"12345\");\ncustomerAddress.setCity(\"Hamburg\");\ncustomerAddress.setCountryCode(\"DEU\");\n\nvar customerAddressCollectionPoint = new CustomerAddressCollectionPoint();\ncustomerAddressCollectionPoint.setCustomerKey(\"bced-234-234\");\ncustomerAddressCollectionPoint.setDescription(\"Kiosk\");\ncustomerAddressCollectionPoint.setKey(\"12345-a\");\ncustomerAddressCollectionPoint.setType(\"hermes_parcelshop\");\n\ncustomerAddress.setCollectionPoint(customerAddressCollectionPoint);\n\nvar customerAddressRecipient= new CustomerAddressRecipient();\ncustomerAddressRecipient.setFirstName(\"Joe\");\ncustomerAddressRecipient.setGender(Gender.VALUE_M);\ncustomerAddressRecipient.setLastName(\"Doe\");\ncustomerAddressRecipient.setTitle(\"Prof.\");\n\ncustomerAddress.setRecipient(customerAddressRecipient);\n\nvar customerAddressIsDefault= new CustomerAddressDefault();\ncustomerAddressIsDefault.setBilling(false);\ncustomerAddressIsDefault.setShipping(false);\n\ncustomerAddress.setIsDefault(customerAddressIsDefault);\n\ncustomerAddress = adminApi.customers().updateAddress(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"), Identifier.fromKey(\"my-key\"), customerAddress);\n\nSystem.out.println(customerAddress.getId());\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/addresses/{addressId}/reference-key": {
      "put": {
        "operationId": "updateCustomerAddressReferenceKey",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Update a customer address reference key",
        "description": "This endpoint can be used to update reference key of an existing customer address.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api#update-a-reference-key-of-a-customer).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          },
          {
            "name": "addressId",
            "in": "path",
            "description": "Address ID",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "examples": {
              "AddressId": {
                "value": 123
              }
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerAddressReferenceKey"
              },
              "examples": {
                "Customer Reference Key": {
                  "$ref": "#/components/examples/CustomerAddressReferenceKeyRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Customer address reference key was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerAddress"
                },
                "examples": {
                  "Customer Address": {
                    "$ref": "#/components/examples/CustomerAddressResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customerAddressReferenceKey = {\n    referenceKey: \"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0\"\n};\n\nlet response = await client.apis.Customers.updateCustomerAddressReferenceKey({shopKey: 'ms', countryCode: 'DE', customerIdentifier: \"key=my-key\", addressId: 1}, {requestBody: customerAddressReferenceKey});\nlet customerAddress = response.body;\n\nconsole.log(customerAddress.referenceKey);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customerAddressReferenceKey = new CustomerAddressReferenceKey();\n$customerAddressReferenceKey->referenceKey = 'InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0';\n\n$customerAddress = $adminApi->customers->updateAddressReferenceKey('ms', 'DE', Identifier::fromKey('my-key'), 1, $customerAddressReferenceKey);\n\necho $customerAddress->referenceKey;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var customerAddressReferenceKey = new CustomerAddressReferenceKey();\ncustomerAddressReferenceKey.setReferenceKey(\"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0\");\n\nvar customerAddress = adminApi.customers().updateAddressReferenceKey(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"), 1, customerAddressReferenceKey);\n\nSystem.out.println(customerAddress.getReferenceKey());\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/addresses/{addressIdentifier}/anonymize": {
      "delete": {
        "operationId": "anonymizeCustomerAddress",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "deprecated": true,
        "tags": [
          "Customers"
        ],
        "summary": "Anonymize a customer address",
        "description": "This endpoint can be used to anonymize a customer address in accordance with data protection acts.\nWhen you call this endpoint to anonymize an address, the customer's addresses detected as duplicates will get anonymized as well.\n\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api/privacy-anomyze-customer#anonymize-customer-addresses).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          },
          {
            "$ref": "#/components/parameters/AddressIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Customer address was successfully anonymized."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        }
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers/addresses/{addressIdentifier}/anonymize": {
      "delete": {
        "operationId": "anonymizeCustomerAddressByIdentifier",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Anonymize a customer address",
        "description": "This endpoint can be used to anonymize a customer address in accordance with data protection acts.\nSee more details in the [SCAYLE documentation](/en/core-documentation/the-basics/customer/manage-customers-via-api/privacy-anomyze-customer#anonymize-customer-addresses).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/AddressIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Customer address was successfully anonymized."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "409": {
            "description": "Customer address has been already anonymized.",
            "content": {
              "application/json": {
                "schema": {
                  "title": "ConflictResponse",
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "errors": [
                    {
                      "errorKey": "CUSTOMER_ADDRESS_ALREADY_ANONYMIZED",
                      "message": "Customer address has been already anonymized.",
                      "context": {
                        "customerIdentifier": 1,
                        "addressIdentifier": 2
                      }
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "client.apis.Customers.anonymizeCustomerAddressByIdentifier({shopKey: 'ms', countryCode: 'DE', addressIdentifier: 123});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->customers->anonymizeAddressByIdentifier(\"ms\", \"DE\", Identifier::fromId(123));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.customers().anonymizeAddressByIdentifier(\"ms\", \"DE\", Identifier.fromId(123));\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/send-reset-password-email": {
      "post": {
        "operationId": "resetCustomerPassword",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customers"
        ],
        "tags": [
          "Customers"
        ],
        "summary": "Reset customer password",
        "description": "This endpoint can be used to trigger an email to reset customer a password.\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/customer/manage-customers-via-api#set-customer-password).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/CustomerIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Customer reset password email was successfully trigger it."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "client.apis.Customers.resetCustomerPassword({shopKey: 'ms', countryCode: 'DE', customerIdentifier: \"key=my-key\"});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->customers->resetPassword('ms', 'DE', Identifier::fromKey('my-key'));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.customers().resetPassword(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"));\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customer-segments": {
      "get": {
        "operationId": "getCustomerSegments",
        "x-rateLimit": {
          "scope": "customersRead"
        },
        "x-resources": [
          "customer-segments"
        ],
        "tags": [
          "CustomerSegments"
        ],
        "summary": "Get customer segments",
        "description": "Returns a list of customer segments for the shop country's company.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of segments per page.",
            "required": false,
            "style": "form",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1,
              "maximum": 200
            }
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          },
          {
            "name": "filters[name]",
            "in": "query",
            "description": "Filter segments by name. Supports partial matching; use * as a wildcard (e.g. \"VIP*\").\nIf no wildcard is provided, the value is matched as a substring.\n",
            "example": "VIP*",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "filters[active]",
            "in": "query",
            "description": "Filter segments by active status. When omitted, segments of any status are returned.\n",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of customer segments",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CustomerSegment"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "CustomerSegmentsCollectionResponse": {
                    "$ref": "#/components/examples/CustomerSegmentsCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.CustomerSegments.getCustomerSegments({\n  shopKey: 'ms',\n  countryCode: 'DE',\n  limit: 50,\n  'filters[name]': 'VIP*',\n  'filters[active]': true\n});\nlet segments = response.body.entities;\n\nsegments.forEach(\n  segment => console.log(segment.name)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n  'filters[name]' => 'VIP*',\n  'filters[active]' => true,\n  'limit' => 50,\n];\n\n$segmentCollection = $adminApi->customerSegments->all('ms', 'DE', $options);\n\nforeach ($segmentCollection->getEntities() as $segment) {\n  echo $segment->name;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n  .addOption(\"limit\", 50)\n  .addOption(\"filters[name]\", \"VIP*\")\n  .addOption(\"filters[active]\", true)\n  .build();\n\nApiCollection<CustomerSegment> segmentCollection = adminApi.customerSegments().all(\"ms\", \"DE\", options);\n\nfor (CustomerSegment segment : segmentCollection.getEntities()) {\n  System.out.println(segment.getName());\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "createCustomerSegment",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customer-segments"
        ],
        "tags": [
          "CustomerSegments"
        ],
        "summary": "Create a customer segment",
        "description": "Creates a customer segment with specific name and criteria for the shop country's company.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CustomerSegment"
                  },
                  {
                    "type": "object",
                    "required": [
                      "criteriaDsl",
                      "active",
                      "referenceKey",
                      "name"
                    ]
                  }
                ]
              },
              "examples": {
                "CustomerSegmentCreate": {
                  "$ref": "#/components/examples/CustomerSegmentCreate"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Customer segment was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerSegment"
                },
                "examples": {
                  "CustomerSegment": {
                    "$ref": "#/components/examples/CustomerSegmentResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          },
          "412": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1countries~1%7BcountryCode%7D~1emails~1send/post/responses/412"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let segment = {\n  criteriaDsl: 'id > 10 && \"vip\" in groups',\n  active: true,\n  referenceKey: 'segment_vip_001',\n  name: 'VIP Segment'\n};\n\nlet response = await adminApi.apis.CustomerSegments.createCustomerSegment(\n  { shopKey: 'ms', countryCode: 'DE' },\n  { requestBody: segment }\n);\nsegment = response.body;\n\nconsole.log(segment.guid);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$segment = new CustomerSegment();\n$segment->criteriaDsl = 'id > 10 && \"vip\" in groups';\n$segment->active = true;\n$segment->referenceKey = 'segment_vip_001';\n$segment->name = 'VIP Segment';\n\n$segment = $adminApi->customerSegments->createCustomerSegment('ms', 'DE', $segment);\n\necho $segment->guid;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var segment = new CustomerSegment();\nsegment.setCriteriaDsl(\"id > 10 && \\\"vip\\\" in groups\");\nsegment.setActive(true);\nsegment.setReferenceKey(\"segment_vip_001\");\nsegment.setName(\"VIP Segment\");\n\nsegment = adminApi.customerSegments().createCustomerSegment(\"ms\", \"DE\", segment);\n\nSystem.out.println(segment.getGuid());\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/customer-segments/{segmentGuid}": {
      "get": {
        "operationId": "getCustomerSegment",
        "x-rateLimit": {
          "scope": "customersRead"
        },
        "x-resources": [
          "customer-segments"
        ],
        "tags": [
          "CustomerSegments"
        ],
        "summary": "Get a customer segment",
        "description": "Returns a single customer segment by GUID for the shop country's company.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "name": "segmentGuid",
            "in": "path",
            "required": true,
            "description": "Unique identifier of the customer segment.",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Customer segment was successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerSegment"
                },
                "examples": {
                  "CustomerSegment": {
                    "$ref": "#/components/examples/CustomerSegmentResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.CustomerSegments.getCustomerSegment({\n  shopKey: 'ms',\n  countryCode: 'DE',\n  segmentGuid: '3fa85f64-5717-4562-b3fc-2c963f66afa6'\n});\nlet segment = response.body;\n\nconsole.log(segment.name);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$segment = $adminApi->customerSegments->getCustomerSegment(\n  'ms',\n  'DE',\n  '3fa85f64-5717-4562-b3fc-2c963f66afa6'\n);\n\necho $segment->name;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var segment = adminApi.customerSegments().getCustomerSegment(\n  \"ms\",\n  \"DE\",\n  \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"\n);\n\nSystem.out.println(segment.getName());\n"
          }
        ]
      },
      "patch": {
        "operationId": "updateCustomerSegment",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customer-segments"
        ],
        "tags": [
          "CustomerSegments"
        ],
        "summary": "Update a customer segment",
        "description": "Updates an existing customer segment for the shop country's company.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1countries~1%7BcountryCode%7D~1customer-segments~1%7BsegmentGuid%7D/get/parameters/2"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerSegment"
              },
              "examples": {
                "CustomerSegmentPatchPartial": {
                  "value": {
                    "active": true,
                    "name": "VIP Segment"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Customer segment was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerSegment"
                },
                "examples": {
                  "CustomerSegment": {
                    "$ref": "#/components/examples/CustomerSegmentResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          },
          "412": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1countries~1%7BcountryCode%7D~1emails~1send/post/responses/412"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let patch = {\n  active: false,\n  name: 'Renamed segment'\n};\n\nlet response = await adminApi.apis.CustomerSegments.updateCustomerSegment(\n  {\n    shopKey: 'ms',\n    countryCode: 'DE',\n    segmentGuid: '3fa85f64-5717-4562-b3fc-2c963f66afa6'\n  },\n  { requestBody: patch }\n);\nlet segment = response.body;\n\nconsole.log(segment.name);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$patch = new CustomerSegment();\n$patch->active = false;\n$patch->name = 'Renamed segment';\n\n$segment = $adminApi->customerSegments->updateCustomerSegment(\n  'ms',\n  'DE',\n  '3fa85f64-5717-4562-b3fc-2c963f66afa6',\n  $patch\n);\n\necho $segment->name;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var patch = new CustomerSegment();\npatch.setActive(false);\npatch.setName(\"Renamed segment\");\n\nvar segment = adminApi.customerSegments().updateCustomerSegment(\n  \"ms\",\n  \"DE\",\n  \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n  patch\n);\n\nSystem.out.println(segment.getName());\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteCustomerSegment",
        "x-rateLimit": {
          "scope": "customersWrite"
        },
        "x-resources": [
          "customer-segments"
        ],
        "tags": [
          "CustomerSegments"
        ],
        "summary": "Delete a customer segment",
        "description": "Deletes a customer segment for the shop country's company.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1countries~1%7BcountryCode%7D~1customer-segments~1%7BsegmentGuid%7D/get/parameters/2"
          }
        ],
        "responses": {
          "204": {
            "description": "Customer segment was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.CustomerSegments.deleteCustomerSegment({\n  shopKey: 'ms',\n  countryCode: 'DE',\n  segmentGuid: '3fa85f64-5717-4562-b3fc-2c963f66afa6'\n});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->customerSegments->deleteCustomerSegment(\n  'ms',\n  'DE',\n  '3fa85f64-5717-4562-b3fc-2c963f66afa6'\n);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.customerSegments().deleteCustomerSegment(\n  \"ms\",\n  \"DE\",\n  \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"\n);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/orders": {
      "get": {
        "operationId": "getOrders",
        "x-rateLimit": {
          "scope": "ordersRead"
        },
        "x-resources": [
          "orders"
        ],
        "tags": [
          "Orders"
        ],
        "summary": "Get orders for given filters",
        "description": "This endpoint can be used to retrieve a collection of orders.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/transactions-and-orders#get-a-collection-of-orders).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/OrderWith"
          },
          {
            "$ref": "#/components/parameters/FilterId"
          },
          {
            "$ref": "#/components/parameters/FilterMinId"
          },
          {
            "$ref": "#/components/parameters/FilterMaxId"
          },
          {
            "$ref": "#/components/parameters/FilterMinCreatedAt"
          },
          {
            "$ref": "#/components/parameters/FilterMaxCreatedAt"
          },
          {
            "$ref": "#/components/parameters/FilterMinUpdatedAt"
          },
          {
            "$ref": "#/components/parameters/FilterMaxUpdatedAt"
          },
          {
            "$ref": "#/components/parameters/OrderFilterBillingAddressCountryCode"
          },
          {
            "$ref": "#/components/parameters/OrderFilterShippingAddressCountryCode"
          },
          {
            "$ref": "#/components/parameters/OrderFilterShippingAddressZipCode"
          },
          {
            "$ref": "#/components/parameters/OrderFilterShippingAddressCity"
          },
          {
            "$ref": "#/components/parameters/OrderFilterShippingAddressStreet"
          },
          {
            "$ref": "#/components/parameters/OrderFilterPaymentType"
          },
          {
            "$ref": "#/components/parameters/OrderFilterPaymentTransactionId"
          },
          {
            "$ref": "#/components/parameters/OrderFilterShipmentKey"
          },
          {
            "$ref": "#/components/parameters/OrderFilterShipmentReturnIdentCode"
          },
          {
            "$ref": "#/components/parameters/OrderFilterShipmentReturnKey"
          },
          {
            "$ref": "#/components/parameters/OrderFilterIsShippingCostCharged"
          },
          {
            "$ref": "#/components/parameters/OrderFilterCustomerId"
          },
          {
            "$ref": "#/components/parameters/OrderFilterMinCustomerId"
          },
          {
            "$ref": "#/components/parameters/OrderFilterMaxCustomerId"
          },
          {
            "$ref": "#/components/parameters/OrderFilterCustomerReferenceKey"
          },
          {
            "$ref": "#/components/parameters/OrderFilterReferenceKey"
          },
          {
            "name": "filters[status]",
            "in": "query",
            "description": "Filter for a specific status of orders.",
            "schema": {
              "type": "string",
              "enum": [
                "order_open",
                "payment_pending",
                "payment_reserved",
                "invoice_completed",
                "cancellation_pending",
                "cancellation_completed",
                "invoice_partially_completed"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/OrderFilterDetailedStatus"
          },
          {
            "name": "filters[firstName]",
            "in": "query",
            "description": "Only returns orders belonging to a customer with the exact first name. Required if lastName is set. Requires lastName to be set.",
            "example": "Anna",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filters[lastName]",
            "in": "query",
            "description": "Only returns orders belonging to a customer with the exact last name. Required if firstName is set. Requires firstName to be set.",
            "example": "Fohlmeister",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filters[email]",
            "in": "query",
            "description": "Only return orders belonging to a customer with the given email.",
            "example": "anna.fohlmeister@project-collins.com",
            "schema": {
              "type": "string",
              "format": "email",
              "maxLength": 60
            }
          },
          {
            "name": "filters[minInvoicedAt]",
            "in": "query",
            "description": "Only return orders with items invoiced at or after this value.",
            "example": "2021-09-23T11%3A30%3A58%2B00%3A00",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "filters[maxInvoicedAt]",
            "in": "query",
            "description": "Only return orders with items invoiced at or before this value.",
            "example": "2021-09-23T11%3A30%3A58%2B00%3A00",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "$ref": "#/components/parameters/OrderFilterVoucherCode"
          },
          {
            "$ref": "#/components/parameters/OrderFilterPublicKey"
          },
          {
            "$ref": "#/components/parameters/OrderFilterProductId"
          },
          {
            "$ref": "#/components/parameters/OrderFilterVariantId"
          },
          {
            "$ref": "#/components/parameters/OrderFilterMerchantId"
          },
          {
            "$ref": "#/components/parameters/OrderFilterChannelId"
          },
          {
            "$ref": "#/components/parameters/OrderSortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of entities in the result. When fetching entities with children, the limit always applies to the amount of parent entities (max. 100).",
            "required": false,
            "style": "form",
            "schema": {
              "type": "integer",
              "default": 10,
              "minimum": 1,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of orders",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/Order"
                          },
                          {
                            "$ref": "#/components/schemas/OrderEvent/allOf/1/properties/payload/allOf/1"
                          }
                        ]
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Order": {
                    "$ref": "#/components/examples/OrderCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Orders.getOrders({\n    shopKey: 'ms',\n    countryCode: 'DE',\n    \"filters[customerId]\": \"10,11,12\"\n});\n\nlet orders = response.body.entities;\n\norders.forEach(\n    order => console.log(order.referenceKey)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'filters[customerId]' => '10,11,12',\n];\n\n$orderCollection = $adminApi->orders->all('ms', 'DE', $options);\n\nforeach ($orderCollection->getEntities() as $order) {\n    echo $order->referenceKey;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"filters[customerId]\", \"10,11,12\")\n                        .build();\n\nApiCollection<Order> orderCollection = adminApi.orders().all(\"ms\", \"DE\", options);\n\nfor (Order order : orderCollection.getEntities()) {\n    System.out.println(order.getReferenceKey());\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "createOrder",
        "x-rateLimit": {
          "scope": "ordersWrite"
        },
        "x-resources": [
          "orders"
        ],
        "tags": [
          "Orders"
        ],
        "summary": "Create an order",
        "description": "This endpoint can be used to create an order.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/transactions-and-orders#create-order).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Order"
                  },
                  {
                    "type": "object",
                    "required": [
                      "address",
                      "confirmedAt",
                      "referenceKey",
                      "payment",
                      "items",
                      "packages",
                      "customer"
                    ],
                    "properties": {
                      "cost": {
                        "type": "object",
                        "properties": {
                          "appliedFees": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "tax": {
                                  "$ref": "#/components/schemas/OrderTaxWithMandatoryVat"
                                },
                                "amount": {
                                  "required": [
                                    "withoutTax",
                                    "withTax"
                                  ]
                                },
                                "category": {
                                  "type": "string",
                                  "enum": [
                                    "payment",
                                    "delivery",
                                    "percentage_payment",
                                    "return",
                                    "additional"
                                  ],
                                  "x-enumName": "OrderFeeType"
                                }
                              },
                              "required": [
                                "amount",
                                "category",
                                "option",
                                "tax"
                              ]
                            }
                          },
                          "tax": {
                            "$ref": "#/components/schemas/OrderTaxWithMandatoryVat"
                          }
                        }
                      },
                      "shopCountry": {
                        "readOnly": true
                      },
                      "address": {
                        "type": "object",
                        "properties": {
                          "billing": {
                            "type": "object",
                            "properties": {
                              "isDefault": {
                                "type": "object",
                                "required": [
                                  "billing",
                                  "shipping"
                                ]
                              }
                            }
                          },
                          "shipping": {
                            "type": "object",
                            "properties": {
                              "isDefault": {
                                "type": "object",
                                "required": [
                                  "billing",
                                  "shipping"
                                ]
                              }
                            }
                          },
                          "forward": {
                            "readOnly": true
                          }
                        }
                      },
                      "contacts": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "value"
                          ]
                        }
                      },
                      "packages": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "shipmentKey"
                          ],
                          "properties": {
                            "deliveryStatus": {
                              "enum": [
                                "open",
                                "shipment_pending",
                                "delegation_pending",
                                "shipment_completed",
                                "cancellation_complete"
                              ]
                            }
                          }
                        }
                      },
                      "customer": {
                        "type": "object",
                        "required": [
                          "referenceKey"
                        ],
                        "properties": {
                          "firstName": {
                            "readOnly": true
                          },
                          "lastName": {
                            "readOnly": true
                          },
                          "gender": {
                            "readOnly": true
                          },
                          "birthDate": {
                            "readOnly": true
                          },
                          "email": {
                            "readOnly": true
                          },
                          "phone": {
                            "readOnly": true
                          },
                          "publicKey": {
                            "readOnly": true
                          },
                          "title": {
                            "readOnly": true
                          },
                          "status": {
                            "readOnly": true
                          },
                          "company": {
                            "readOnly": true
                          }
                        }
                      },
                      "voucher": {
                        "type": "object",
                        "properties": {
                          "voucherId": {
                            "readOnly": true
                          },
                          "applicableItems": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "isApplied",
                                "key"
                              ]
                            }
                          }
                        }
                      },
                      "items": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "key",
                            "warehouseId"
                          ],
                          "properties": {
                            "status": {
                              "enum": [
                                "available",
                                "cancelled",
                                "delivered",
                                "returned",
                                "unavailable"
                              ]
                            },
                            "variant": {
                              "required": [
                                "id",
                                "referenceKey",
                                "stock"
                              ]
                            },
                            "merchant": {
                              "type": "object",
                              "required": [
                                "id"
                              ]
                            },
                            "price": {
                              "type": "object",
                              "required": [
                                "tax",
                                "withTax",
                                "withoutTax"
                              ],
                              "properties": {
                                "tax": {
                                  "$ref": "#/components/schemas/OrderTaxWithMandatoryVat"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              },
              "examples": {
                "Order": {
                  "$ref": "#/components/examples/CreateOrderRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The order has been successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Order"
                },
                "examples": {
                  "Order": {
                    "$ref": "#/components/examples/OrderResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const order = {\n  \"id\": 790,\n  \"address\": {\n    \"billing\": {\n     \"city\": \"Hamburg\",\n      \"additional\": \"c/o AboutYou\",\n      \"countryCode\": \"DEU\",\n      \"houseNumber\": \"12\",\n      \"isDefault\": {\n        \"billing\": false,\n        \"shipping\": false\n      },\n      \"recipient\": {\n        \"firstName\": \"Anna\",\n        \"gender\": \"m\",\n        \"lastName\": \"Fohlmeister\",\n        \"type\": \"personal\"\n      },\n      \"referenceKey\": \"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0\",\n      \"street\": \"Wolfgangsweg\",\n      \"zipCode\": \"20459\",\n      \"createdAt\": \"2018-11-29T05:20:13+00:00\",\n      \"updatedAt\": \"2018-11-29T05:20:13+00:00\"\n    },\n    \"shipping\": {\n      \"city\": \"Hamburg\",\n      \"collectionPoint\": {\n        \"customerKey\": \"bced-234-234\",\n        \"description\": \"Pedro's Kiosk\",\n        \"key\": \"12345-a\",\n        \"type\": \"hermes_parcelshop\"\n      },\n      \"countryCode\": \"DEU\",\n      \"houseNumber\": \"10\",\n      \"isDefault\": {\n        \"billing\": false,\n        \"shipping\": true\n      },\n      \"recipient\": {\n        \"firstName\": \"Anna\",\n        \"gender\": \"m\",\n        \"lastName\": \"Fohlmeister\",\n        \"type\": \"personal\"\n      },\n      \"referenceKey\": \"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0\",\n      \"street\": \"Domstrasse\",\n      \"zipCode\": \"20459\",\n      \"createdAt\": \"2018-11-29T05:20:13+00:00\",\n      \"updatedAt\": \"2018-11-29T05:20:13+00:00\"\n    }\n  },\n  \"confirmedAt\": \"2018-01-20T11:30:15+00:00\",\n  \"cost\": {\n    \"appliedFees\": [\n      {\n        \"amount\": {\n          \"withoutTax\": 168,\n          \"withTax\": 200\n        },\n        \"category\": \"delivery\",\n        \"option\": \"deliveryCosts\",\n        \"tax\": {\n          \"vat\": {\n            \"amount\": 32,\n            \"rate\": 0.19\n          }\n        }\n      }\n    ],\n    \"appliedReductions\": [\n      {\n        \"amount\": {\n          \"absoluteWithTax\": 100,\n          \"relative\": 0.5\n        },\n        \"category\": \"voucher\",\n        \"type\": \"absolute\"\n      }\n    ],\n    \"withoutTax\": 1168,\n    \"withTax\": 1390\n  },\n  \"currencyCode\": \"EUR\",\n  \"legacyCustomData\": {\n    \"score\": {\n      \"generatedOn\": \"2018-05-20T19:45:15+00:00\",\n      \"result\": \"green\"\n    }\n  },\n  \"customer\": {\n    \"referenceKey\": \"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0\"\n  },\n  \"invoicedAt\": \"2018-01-22T11:30:15+00:00\",\n  \"items\": [\n    {\n      \"availableQuantity\": 20,\n      \"legacyCustomData\": {\n        \"key\": \"value\"\n      },\n      \"deliveryForecast\": {\n        \"subsequentDelivery\": {\n          \"key\": \"christmas\"\n        }\n      },\n      \"key\": \"ac834d23e689u678\",\n      \"packageId\": 1,\n      \"price\": {\n        \"appliedReductions\": [\n          {\n            \"amount\": {\n              \"absoluteWithTax\": 100,\n              \"relative\": 0.5\n            },\n            \"category\": \"sale\",\n            \"type\": \"relative\"\n          }\n        ],\n        \"reference\": {\n          \"size\": \"100\",\n          \"unit\": \"ml\",\n          \"withTax\": 595\n        },\n        \"tax\": {\n          \"vat\": {\n            \"amount\": 190,\n            \"rate\": 0.19\n          }\n        },\n        \"withoutTax\": 1000,\n        \"withTax\": 1190\n      },\n      \"product\": {\n        \"id\": 4564545,\n        \"images\": [\n          {\n            \"hash\": \"9f6c628a98106dcce2bc5a4ac1de9c14\"\n          }\n        ],\n        \"name\": \"Chelsea Boots\",\n      },\n      \"reservationKey\": \"6nq69bzzkd5xufxliwg8\",\n      \"status\": \"available\",\n      \"variant\": {\n        \"id\": 1234567,\n        \"referenceKey\": \"563843898\",\n        \"stock\": {\n          \"supplierId\": 1\n        },\n      },\n      \"warehouseId\": 12345,\n      \"createdAt\": \"2018-01-20T09:30:15+00:00\",\n      \"updatedAt\": \"2018-01-20T09:30:15+00:00\"\n    }\n  ],\n  \"packages\": [\n    {\n      \"id\": 1,\n      \"carrierKey\": \"dhl\",\n      \"deliveryDate\": {\n        \"maximum\": \"2018-02-05\",\n        \"minimum\": \"2018-02-02\"\n      },\n      \"deliveryStatus\": \"open\",\n      \"shipmentKey\": \"shpmnt-61-1\"\n    }\n  ],\n  \"payment\": [\n    {\n      \"amount\": 1190,\n      \"data\": {\n        \"CCBrand\": \"VISA\",\n        \"CCExpiry\": \"202005\",\n        \"IPCity\": \"charlottenburg\",\n        \"IPLatitude\": \"52.5151\",\n        \"IPLongitude\": \"13.3053\",\n        \"IPState\": \"berlin\",\n        \"IPZone\": \"276\",\n        \"IPZoneA2\": \"de\"\n      },\n      \"key\": \"accounting\",\n      \"transactionKey\": \"creditcard-abcde\"\n    }\n  ],\n  \"publicKey\": \"666\",\n  \"referenceKey\": \"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJUU2\",\n  \"shipping\": {\n    \"policy\": \"least_packages\"\n  },\n  \"status\": \"invoice_completed\",\n  \"voucher\": {\n    \"applicableItems\": [\n      {\n        \"isApplied\": true,\n        \"key\": \"a87ff679a2f3e71d9181a67b7542122c\"\n      },\n      {\n        \"isApplied\": false,\n        \"key\": \"eccbc87e4b5ce2fe28308fd9f2a7baf3\"\n      }\n    ],\n    \"code\": \"fashion2020\",\n    \"type\": \"absolute\",\n    \"value\": 1000\n  },\n  \"createdAt\": \"2018-01-20T09:30:15+00:00\",\n  \"updatedAt\": \"2018-01-20T09:30:15+00:00\"\n}\n\nconst response  = await client.apis.Orders.createOrder({\n    shopKey: 'ms',\n    countryCode: 'DE',\n}, {\n  requestBody: order,\n});\nconst createdOrder = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$order = new Order();\n$order->id = 790;\n$order->confirmedAt = \"2018-01-20T11:30:15+00:00\";\n$order->currencyCode = \"EUR\";\n$order->referenceKey = \"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJUU2\";\n$order->status = \"invoice_completed\";\n$order->createdAt = \"2018-01-20T09:30:15+00:00\";\n$order->updatedAt = \"2018-01-20T09:30:15+00:00\";\n\n$shipping = new OrderShipping();\n$shipping->policy = \"least_packages\";\n$order->shipping = $shipping;\n\n$orderAddress = new OrderAddress();\n\n$billingAddress = new CustomerAddress();\n$billingAddress->city = \"Hamburg\";\n$billingAddress->additional = \"c/o AboutYou\";\n$billingAddress->countryCode = \"DEU\";\n$billingAddress->houseNumber = \"12\";\n$billingAddress->isDefault = new CustomerAddressDefault();\n$billingAddress->isDefault->billing = false;\n$billingAddress->isDefault->shipping = false;\n$billingAddress->recipient = new CustomerAddressRecipient();\n$billingAddress->recipient->firstName = \"Anna\";\n$billingAddress->recipient->gender = \"m\";\n$billingAddress->recipient->lastName = \"Fohlmeister\";\n$billingAddress->recipient->type = \"personal\";\n$billingAddress->referenceKey = \"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0\";\n$billingAddress->street = \"Wolfgangsweg\";\n$billingAddress->zipCode = \"20459\";\n$billingAddress->createdAt = \"2018-11-29T05:20:13+00:00\";\n$billingAddress->updatedAt = \"2018-11-29T05:20:13+00:00\";\n$orderAddress->billing = $billingAddress;\n\n$shippingAddress = new CustomerAddress();\n$shippingAddress->city = \"Hamburg\";\n$shippingAddress->countryCode = \"DEU\";\n$shippingAddress->houseNumber = \"10\";\n$shippingAddress->isDefault = new CustomerAddressDefault();\n$shippingAddress->isDefault->billing = false;\n$shippingAddress->isDefault->shipping = true;\n$shippingAddress->recipient = new CustomerAddressRecipient();\n$shippingAddress->recipient->firstName = \"Anna\";\n$shippingAddress->recipient->gender = \"m\";\n$shippingAddress->recipient->lastName = \"Fohlmeister\";\n$shippingAddress->recipient->type = \"personal\";\n$shippingAddress->referenceKey = \"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0\";\n$shippingAddress->street = \"Domstrasse\";\n$shippingAddress->zipCode = \"20459\";\n$shippingAddress->createdAt = \"2018-11-29T05:20:13+00:00\";\n$shippingAddress->updatedAt = \"2018-11-29T05:20:13+00:00\";\n$orderAddress->shipping = $shippingAddress;\n\n$order->address = $orderAddress;\n\n$cost = new OrderCost();\n$cost->withoutTax = 1168;\n$cost->withTax = 1390;\n\n$appliedFee = new OrderFee();\n$appliedFee->amount = new OrderFeeAmount();\n$appliedFee->amount->withoutTax = 168;\n$appliedFee->amount->withTax = 200;\n$appliedFee->category = \"delivery\";\n$appliedFee->option = \"deliveryCosts\";\n$appliedFee->tax = new OrderTax();\n$appliedFee->tax->vat = new OrderVat();\n$appliedFee->tax->vat->amount = 32;\n$appliedFee->tax->vat->rate = 0.19;\n\n$appliedFees = [];\n$appliedFees[] = $appliedFee;\n$cost->appliedFees = $appliedFees;\n\n$appliedReduction = new OrderReduction();\n$appliedReduction->amount = new OrderReductionAmount();\n$appliedReduction->amount->absoluteWithTax = 100;\n$appliedReduction->amount->relative = 0.5;\n$appliedReduction->category = \"voucher\";\n$appliedReduction->type = \"absolute\";\n\n$appliedReductions = [];\n$appliedReductions[] = $appliedReduction;\n$cost->appliedReductions = $appliedReductions;\n\n$order->cost = $cost;\n\n$customData = [];\n$customData[\"some-json\"] = $someJson;\n$order->legacyCustomData = $customData;\n\n$customer = new Customer();\n$customer->referenceKey = \"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0\";\n$order->customer = $customer;\n\n$deliveryForecast = new OrderItemDeliveryForecast();\n$subsequentDelivery = new OrderSubsequentDelivery();\n$subsequentDelivery->key = \"christmas\";\n$deliveryForecast->subsequentDelivery = $subsequentDelivery;\n\n$price = new OrderItemPrice();\n$price->withoutTax = 1000;\n$price->withTax = 1190;\n\n$priceAppliedReduction = new OrderReduction();\n$priceAppliedReductionAmount = new OrderReductionAmount();\n$priceAppliedReductionAmount->absoluteWithTax = 100;\n$priceAppliedReductionAmount->relative = 0.5;\n$priceAppliedReduction->amount = $priceAppliedReductionAmount;\n$priceAppliedReduction->category = \"sale\";\n$priceAppliedReduction->type = \"relative\";\n\n$priceAppliedReductions = [];\n$priceAppliedReductions[] = $priceAppliedReduction;\n$price->appliedReductions = $priceAppliedReductions;\n\n$reference = new OrderItemPriceReference();\n$reference->size = \"100\";\n$reference->unit = \"ml\";\n$reference->withTax = 595;\n$price->reference = $reference;\n\n$priceTax = new OrderTax();\n$priceVat = new OrderVat();\n$priceVat->amount = 190;\n$priceVat->rate = 0.19;\n$priceTax->vat = $priceVat;\n$price->tax = $priceTax;\n\n$product = new OrderItemProduct();\n$product->id = 4564545;\n$product->name = \"Chelsea Boots\";\n\n$images = [];\n$image = new OrderItemProductImage();\n$image->hash = \"9f6c628a98106dcce2bc5a4ac1de9c14\";\n$images[] = $image;\n$product->images = $images;\n\n$variant = new OrderItemVariant();\n$variant->id = 1234567;\n$variant->referenceKey = \"563843898\";\n\n$stock = new OrderItemVariantStock();\n$stock->supplierId = 1;\n$variant->stock = $stock;\n\n$item = new OrderItem();\n$item->availableQuantity = 20;\n$customDataItem = [];\n$customDataItem[\"some-json\"] = $someJson;\n$item->legacyCustomData = $customDataItem;\n$item->deliveryForecast = $deliveryForecast;\n$item->key = \"ac834d23e689u678\";\n$item->packageId = 1;\n$item->price = $price;\n$item->product = $product;\n$item->reservationKey = \"6nq69bzzkd5xufxliwg8\";\n$item->status = \"available\";\n$item->variant = $variant;\n$item->warehouseId = 12345;\n$item->createdAt = \"2018-01-20T09:30:15+00:00\";\n$item->updatedAt = \"2018-01-20T09:30:15+00:00\";\n\n$packageObj = new OrderPackage();\n$packageObj->id = 1;\n$packageObj->carrierKey = \"dhl\";\n$deliveryDate = new OrderPackageDeliveryDate();\n$deliveryDate->minimum = \"2018-02-02\";\n$deliveryDate->maximum = \"2018-02-05\";\n$packageObj->deliveryDate = $deliveryDate;\n$packageObj->deliveryStatus = \"open\";\n$packageObj->shipmentKey = \"shpmnt-61-1\";\n$packages = [];\n$packages[] = $packageObj;\n\n$payment = new OrderPayment();\n$payment->amount = 1190;\n$paymentData = [];\n$paymentData[\"CCBrand\"] = \"VISA\";\n$paymentData[\"CCExpiry\"] = \"202005\";\n$paymentData[\"IPCity\"] = \"charlottenburg\";\n$paymentData[\"IPLatitude\"] = \"52.5151\";\n$paymentData[\"IPLongitude\"] = \"13.3053\";\n$paymentData[\"IPState\"] = \"berlin\";\n$paymentData[\"IPZone\"] = \"276\";\n$paymentData[\"IPZoneA2\"] = \"de\";\n$payment->data = $paymentData;\n$payment->key = \"accounting\";\n$payment->transactionKey = \"creditcard-abcde\";\n$payments = [];\n$payments[] = $payment;\n\n$voucher = new OrderVoucher();\n$voucher->code = \"fashion2020\";\n$voucher->type = \"absolute\";\n$voucher->value = 1000;\n\n$applicableItems = [];\n$applicableItem1 = new OrderVoucherItem();\n$applicableItem1->isApplied = true;\n$applicableItem1->key = \"a87ff679a2f3e71d9181a67b7542122c\";\n$applicableItem2 = new OrderVoucherItem();\n$applicableItem2->isApplied = false;\n$applicableItem2->key = \"eccbc87e4b5ce2fe28308fd9f2a7baf3\";\n$applicableItems[] = $applicableItem1;\n$applicableItems[] = $applicableItem2;\n$voucher->applicableItems = $applicableItems;\n\n$order->packages = $packages;\n$order->payment = $payments;\n$order->voucher = $voucher;\n\n$order = $adminApi->orders->create('ms', 'DEU', $order);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Order order = new Order();\norder.setId(790);\norder.setConfirmedAt(java.time.Instant.parse(\"2018-01-20T11:30:15+00:00\"));\norder.setCurrencyCode(\"EUR\");\norder.setReferenceKey(\"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJUU2\");\norder.setStatus(OrderStatus.VALUE_INVOICE_COMPLETED);\n\nOrderShipping shipping = new OrderShipping();\nshipping.setPolicy(\"least_packages\");\norder.setShipping(shipping);\n\nOrderAddress orderAddress = new OrderAddress();\n\nCustomerAddress billingAddress = new CustomerAddress();\nbillingAddress.setCity(\"Hamburg\");\nbillingAddress.setAdditional(\"c/o AboutYou\");\nbillingAddress.setCountryCode(\"DEU\");\nbillingAddress.setHouseNumber(\"12\");\nbillingAddress.setIsDefault(new CustomerAddressDefault());\nbillingAddress.getIsDefault().setBilling(false);\nbillingAddress.getIsDefault().setShipping(false);\nbillingAddress.setRecipient(new CustomerAddressRecipient());\nbillingAddress.getRecipient().setFirstName(\"Anna\");\nbillingAddress.getRecipient().setGender(Gender.VALUE_M);\nbillingAddress.getRecipient().setLastName(\"Fohlmeister\");\nbillingAddress.getRecipient().setType(\"personal\");\nbillingAddress.setReferenceKey(\"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0\");\nbillingAddress.setStreet(\"Wolfgangsweg\");\nbillingAddress.setZipCode(\"20459\");\norderAddress.setBilling(billingAddress);\n\nCustomerAddress shippingAddress = new CustomerAddress();\nshippingAddress.setCity(\"Hamburg\");\nshippingAddress.setCountryCode(\"DEU\");\nshippingAddress.setHouseNumber(\"10\");\nshippingAddress.setIsDefault(new CustomerAddressDefault());\nshippingAddress.getIsDefault().setBilling(false);\nshippingAddress.getIsDefault().setShipping(true);\nshippingAddress.setRecipient(new CustomerAddressRecipient());\nshippingAddress.getRecipient().setFirstName(\"Anna\");\nshippingAddress.getRecipient().setGender(Gender.VALUE_M);\nshippingAddress.getRecipient().setLastName(\"Fohlmeister\");\nshippingAddress.getRecipient().setType(\"personal\");\nshippingAddress.setReferenceKey(\"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0\");\nshippingAddress.setStreet(\"Domstrasse\");\nshippingAddress.setZipCode(\"20459\");\nshippingAddress.setCreatedAt(java.time.Instant.parse(\"2018-11-29T05:20:13+00:00\"));\nshippingAddress.setUpdatedAt(java.time.Instant.parse(\"2018-11-29T05:20:13+00:00\"));\norderAddress.setShipping(shippingAddress);\n\norder.setAddress(orderAddress);\n\nOrderCost cost = new OrderCost();\ncost.setWithoutTax(1168);\ncost.setWithTax(1390);\n\nOrderFee appliedFee = new OrderFee();\nappliedFee.setAmount(new OrderFeeAmount());\nappliedFee.getAmount().setWithoutTax(168);\nappliedFee.getAmount().setWithTax(200);\nappliedFee.setCategory(OrderFeeType.VALUE_DELIVERY);\nappliedFee.setOption(\"deliveryCosts\");\nappliedFee.setTax(new OrderTax());\nappliedFee.getTax().setVat(new OrderVat());\nappliedFee.getTax().getVat().setAmount(32);\nappliedFee.getTax().getVat().setRate(0.19);\n\nList<OrderFee> appliedFees = new ArrayList<>();\nappliedFees.add(appliedFee);\ncost.setAppliedFees(appliedFees);\n\nOrderReduction appliedReduction = new OrderReduction();\nappliedReduction.setAmount(new OrderReductionAmount());\nappliedReduction.getAmount().setAbsoluteWithTax(100);\nappliedReduction.getAmount().setRelative(0.5);\nappliedReduction.setCategory(\"voucher\");\nappliedReduction.setType(\"absolute\");\n\nList<OrderReduction> appliedReductions = new ArrayList<>();\nappliedReductions.add(appliedReduction);\ncost.setAppliedReductions(appliedReductions);\n\norder.setCost(cost);\n\nMap<String, Object> customData = new HashMap<>();\ncustomData.put(\"some-json\", someJson);\norder.setLegacyCustomData(customData);\n\nCustomer customer = new Customer();\ncustomer.setReferenceKey(\"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0\");\norder.setCustomer(customer);\n\nOrderItemDeliveryForecast deliveryForecast = new OrderItemDeliveryForecast();\nOrderSubsequentDelivery subsequentDelivery = new OrderSubsequentDelivery();\nsubsequentDelivery.setKey(OrderSubsequentDeliveryKey.VALUE_CHRISTMAS);\ndeliveryForecast.setSubsequentDelivery(subsequentDelivery);\n\n\nOrderItemPrice price = new OrderItemPrice();\nprice.setWithoutTax(1000);\nprice.setWithTax(1190);\n\nOrderReduction priceAppliedReduction = new OrderReduction();\nOrderReductionAmount priceAppliedReductionAmount = new OrderReductionAmount();\npriceAppliedReductionAmount.setAbsoluteWithTax(100);\npriceAppliedReductionAmount.setRelative(0.5);\npriceAppliedReduction.setAmount(priceAppliedReductionAmount);\npriceAppliedReduction.setCategory(\"sale\");\npriceAppliedReduction.setType(\"relative\");\n\nList<OrderReduction> priceAppliedReductions = new ArrayList<>();\npriceAppliedReductions.add(priceAppliedReduction);\n\nprice.setAppliedReductions(priceAppliedReductions);\n\nOrderItemPriceReference reference = new OrderItemPriceReference();\nreference.setSize(\"100\");\nreference.setUnit(\"ml\");\nreference.setWithTax(595);\nprice.setReference(reference);\n\nOrderTax priceTax = new OrderTax();\nOrderVat priceVat = new OrderVat();\npriceVat.setAmount(190);\npriceVat.setRate(0.19);\npriceTax.setVat(priceVat);\nprice.setTax(priceTax);\n\nOrderItemProduct product = new OrderItemProduct();\nproduct.setId(4564545);\nproduct.setName(\"Chelsea Boots\");\n\nList<OrderItemProductImage> images = new ArrayList<>();\nOrderItemProductImage image = new OrderItemProductImage();\nimage.setHash(\"9f6c628a98106dcce2bc5a4ac1de9c14\");\nimages.add(image);\nproduct.setImages(images);\n\nOrderItemVariant variant = new OrderItemVariant();\nvariant.setId(1234567);\nvariant.setReferenceKey(\"563843898\");\n\nOrderItemVariantStock stock = new OrderItemVariantStock();\nstock.setSupplierId(1);\nvariant.setStock(stock);\n\nOrderItem item = new OrderItem();\nitem.setAvailableQuantity(20);\nMap<String, Object> customDataItem = new HashMap<>();\ncustomData.put(\"some-json\", someJson);\nitem.setLegacyCustomData(customDataItem);\nitem.setDeliveryForecast(deliveryForecast);\nitem.setKey(\"ac834d23e689u678\");\nitem.setPackageId(1);\nitem.setPrice(price);\nitem.setProduct(product);\nitem.setReservationKey(\"6nq69bzzkd5xufxliwg8\");\nitem.setStatus(\"available\");\nitem.setVariant(variant);\nitem.setWarehouseId(12345);\n\nOrderPackage packageObj = new OrderPackage();\npackageObj.setId(1);\npackageObj.setCarrierKey(\"dhl\");\nOrderPackageDeliveryDate deliveryDate = new OrderPackageDeliveryDate();\ndeliveryDate.setMinimum(\"2018-02-02\");\ndeliveryDate.setMaximum(\"2018-02-05\");\npackageObj.setDeliveryDate(deliveryDate);\npackageObj.setDeliveryStatus(\"open\");\npackageObj.setShipmentKey(\"shpmnt-61-1\");\nList<OrderPackage> packages = new ArrayList<>();\npackages.add(packageObj);\n\nOrderPayment payment = new OrderPayment();\npayment.setAmount(1190);\nMap<String, Object> paymentData = new HashMap<>();\npaymentData.put(\"CCBrand\", \"VISA\");\npaymentData.put(\"CCExpiry\", \"202005\");\npaymentData.put(\"IPCity\", \"charlottenburg\");\npaymentData.put(\"IPLatitude\", \"52.5151\");\npaymentData.put(\"IPLongitude\", \"13.3053\");\npaymentData.put(\"IPState\", \"berlin\");\npaymentData.put(\"IPZone\", \"276\");\npaymentData.put(\"IPZoneA2\", \"de\");\npayment.setData(paymentData);\npayment.setKey(\"accounting\");\npayment.setTransactionKey(\"creditcard-abcde\");\nList<OrderPayment> payments = new ArrayList<>();\npayments.add(payment);\n\nOrderVoucher voucher = new OrderVoucher();\nvoucher.setCode(\"fashion2020\");\nvoucher.setType(VoucherType.VALUE_ABSOLUTE);\nvoucher.setValue(1000);\n\nList<OrderVoucherItem> applicableItems = new ArrayList<>();\nOrderVoucherItem applicableItem1 = new OrderVoucherItem();\napplicableItem1.setIsApplied(true);\napplicableItem1.setKey(\"a87ff679a2f3e71d9181a67b7542122c\");\nOrderVoucherItem applicableItem2 = new OrderVoucherItem();\napplicableItem2.setIsApplied(false);\napplicableItem2.setKey(\"eccbc87e4b5ce2fe28308fd9f2a7baf3\");\napplicableItems.add(applicableItem1);\napplicableItems.add(applicableItem2);\nvoucher.setApplicableItems(applicableItems);\n\norder.setPackages(packages);\norder.setPayment(payments);\norder.setVoucher(voucher);\n\nOrder newOrder = adminApi.orders().create(\"ms\", \"DE\", order);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/orders/subscription-orders": {
      "post": {
        "operationId": "createSubscriptionOrder",
        "x-rateLimit": {
          "scope": "ordersWrite"
        },
        "x-resources": [
          "orders"
        ],
        "tags": [
          "Orders"
        ],
        "summary": "Create a subscription order",
        "description": "This endpoint can be used to create a subscription order.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/transactions-and-orders#create-subscription-order).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubscriptionOrder"
              },
              "examples": {
                "SubscriptionOrder": {
                  "$ref": "#/components/examples/CreateSubscriptionOrderRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The subscription order has been successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Order"
                },
                "examples": {
                  "Order": {
                    "$ref": "#/components/examples/OrderResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "description": "is in unexpected state",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "errors": [
                    {
                      "errorKey": "ORDER_IS_IN_UNEXPECTED_STATE",
                      "message": "Order is in unexpected state.",
                      "context": {}
                    }
                  ]
                }
              }
            }
          },
          "406": {
            "description": "Order creation was not successful - no items available. Or order changed between Pending and Confirmation.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "errors": [
                    {
                      "errorKey": "ORDER_CREATION_NOT_SUCCESSFUL_NO_ITEMS_AVAILABLE",
                      "message": "Order creation was not successful - no items available. Or order changed between Pending and Confirmation.",
                      "context": {}
                    }
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Order is already in state Pended or Confirmed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "errors": [
                    {
                      "errorKey": "ORDER_ALREADY_IN_PENDED_OR_CONFIRMED_STATE",
                      "message": "Order is already in state Pended or Confirmed.",
                      "context": {}
                    }
                  ]
                }
              }
            }
          },
          "410": {
            "description": "Order cannot be pended due to missing information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "errors": [
                    {
                      "errorKey": "ORDER_CANNOT_BE_PENDED",
                      "message": "Order cannot be pended due to missing information.",
                      "context": {}
                    }
                  ]
                }
              }
            }
          },
          "412": {
            "description": "Validation failure (content validation failed).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "errors": [
                    {
                      "errorKey": "VALIDATION_FAILURE",
                      "message": "Validation failure (content validation failed).",
                      "context": {}
                    }
                  ]
                }
              }
            }
          },
          "417": {
            "description": "Customer does not exist (or anonymous).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "errors": [
                    {
                      "errorKey": "CUSTOMER_DOES_NOT_EXIST",
                      "message": "Customer does not exist (or anonymous).",
                      "context": {}
                    }
                  ]
                }
              }
            }
          },
          "420": {
            "description": "GiftCard Capture on Confirmation failed due to insufficient funds. Or the payment method is not enabled.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "errors": [
                    {
                      "errorKey": "GIFTCARD_CAPTURE_FAILED",
                      "message": "GiftCard Capture on Confirmation failed due to insufficient funds. Or the payment method is not enabled.",
                      "context": {}
                    }
                  ]
                }
              }
            }
          },
          "424": {
            "description": "Failed dependency.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "errors": [
                    {
                      "errorKey": "FAILED_DEPENDENCY",
                      "message": "Failed dependency.",
                      "context": {}
                    }
                  ]
                }
              }
            }
          },
          "451": {
            "description": "Order has customer or item denials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "errors": [
                    {
                      "errorKey": "ORDER_HAS_CUSTOMER_OR_ITEM_DENIALS",
                      "message": "Order has customer or item denials.",
                      "context": {}
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const subscriptionOrder = {\n  \"address\": {\n    \"billing\": {\n      \"additional\": \"Test address\",\n      \"city\": \"New York\",\n      \"countryCode\": \"DEU\",\n      \"firstName\": \"Michael\",\n      \"gender\": \"m\",\n      \"houseNumber\": \"1650\",\n      \"lastName\": \"Jackson\",\n      \"phone\": \"0049/1234567890\",\n      \"street\": \"Bedford Ave\",\n      \"zipCode\": \"11225\"\n    },\n    \"shipping\": {\n      \"additional\": \"Test address\",\n      \"city\": \"New York\",\n      \"countryCode\": \"DEU\",\n      \"firstName\": \"Michael\",\n      \"gender\": \"m\",\n      \"houseNumber\": \"1650\",\n      \"lastName\": \"Jackson\",\n      \"phone\": \"0049/1234567890\",\n      \"street\": \"Bedford Ave\",\n      \"zipCode\": \"11225\"\n    }\n  },\n  \"legacyCustomData\": {\n    \"basketId\": \"mop_basket_ID\"\n  },\n  \"customerId\": 1263116,\n  \"ipAddress\": \"127.0.0.1\",\n  \"items\": [\n    {\n      \"variantId\": 46892617\n    }\n  ],\n  \"paymentTypes\": [\n    {\n      \"authorizedValue\": 2990,\n      \"confirmationData\": {\n        \"descriptor\": \"DG0452755Z3\",\n        \"profileId\": \"ABOUTYOU_TE_DE\",\n        \"subscriptionPaymentReference\": \"74-201507071360201\",\n        \"transactionId\": \"74-201507071360201\",\n        \"type\": \"accounting\"\n      },\n      \"transactionId\": \"74-201507071360201\",\n      \"type\": \"accounting\"\n    }\n  ],\n  \"subscriptionId\": \"1234567abcdef\",\n  \"carrier\": {\n    \"carrierKey\": \"dhl\",\n    \"deliveryDate\": {\n      \"maximum\": \"2025-01-09\",\n      \"minimum\": \"2025-01-15\"\n    },\n    \"shippingPolicyKey\": \"standard_delivery\"\n  },\n  \"referenceKey\": \"abc0123\"\n}\n\nconst response  = await client.apis.Orders.createSubscriptionOrder({\n    shopKey: 'ms',\n    countryCode: 'DEU',\n}, {\n  requestBody: subscriptionOrder,\n});\nconst order = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$subscriptionOrder = new SubscriptionOrder();\n$subscriptionOrderAddress = new SubscriptionOrderAddress();\n\n$billing = new SubscriptionOrderAddressInstance();\n$billing->additional = 'Test address';\n$billing->city = 'New York';\n$billing->countryCode = 'DEU';\n$billing->firstName = 'Michael';\n$billing->gender = 'm';\n$billing->houseNumber = '1650';\n$billing->lastName = 'Jackson';\n$billing->phone = '0049/1234567890';\n$billing->street = 'Bedford Ave';\n$billing->zipCode = '11225;\n\n$shipping = new SubscriptionOrderAddressInstance();\n$shipping->additional = 'Test address';\n$shipping->city = 'New York';\n$shipping->countryCode = 'DEU';\n$shipping->firstName = 'Michael';\n$shipping->gender = 'm';\n$shipping->houseNumber = '1650';\n$shipping->lastName = 'Jackson';\n$shipping->phone = '0049/1234567890';\n$shipping->street = 'Bedford Ave';\n$shipping->zipCode = \"11225;\n\n$subscriptionOrderAddress->billing = $billing;\n$subscriptionOrderAddress->shipping = $shipping;\n\n$subscriptionOrder->address = $subscriptionOrderAddress;\n\n$carrierDeliveryDate = new SubscriptionOrderCarrierDeliveryDate();\n$carrierDeliveryDate->minimum = '2025-01-09';\n$carrierDeliveryDate->maximum = '2025-01-15';\n\n$carrier = new SubscriptionOrderCarrier();\n$carrier->carrierKey = 'dhl';\n$carrier->shippingPolicyKey = 'standard_delivery';\n$carrier->deliveryDate = $carrierDeliveryDate;\n\n$subscriptionOrder->carrier = $carrier;\n\n$subscriptionOrder->referenceKey = 'abc0123';\n\n$subscriptionOrder->legacyCustomData = [\n  'basketId' => 'mop_basket_ID'\n];\n\n$subscriptionOrder->customerId = 1263116;\n$subscriptionOrder->ipAddress = '127.0.0.1';\n\n$item = new SubscriptionOrderItem();\n$item->variantId = 46892617;\n\n$subscriptionOrder->items = [$item];\n\n$paymentType = new SubscriptionOrderPaymentType();\n$paymentType->authorizedValue = 2990;\n$paymentType->transactionId = '74-201507071360201';\n$paymentType->type = 'accounting';\n\n$confirmationData = new SubscriptionOrderPaymentTypeConfirmationData();\n$confirmationData->descriptor = 'DG0452755Z3';\n$confirmationData->profileId = 'ABOUTYOU_TE_DE';\n$confirmationData->subscriptionPaymentReference = '74-201507071360201';\n$confirmationData->transactionId = '74-201507071360201';\n$confirmationData->type = 'accounting';\n\n$paymentType->confirmationData = $confirmationData;\n\n$subscriptionOrder->paymentTypes = [$paymentType];\n\n$subscriptionOrder->subscriptionId = '1234567abcdef';\n\n$order = $adminApi->orders->createSubscriptionOrder('ms', 'DEU', $subscriptionOrder);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "SubscriptionOrder subscriptionOrder = new SubscriptionOrder();\nSubscriptionOrderAddress subscriptionOrderAddress = new SubscriptionOrderAddress();\n\nSubscriptionOrderAddressInstance billing = new SubscriptionOrderAddressInstance();\nbilling.setAdditional(\"Test address\");\nbilling.setCity(\"New York\");\nbilling.setCountryCode(\"DEU\");\nbilling.setFirstName(\"Michael\");\nbilling.setGender(Gender.VALUE_M);\nbilling.setHouseNumber(\"1650\");\nbilling.setLastName(\"Jackson\");\nbilling.setPhone(\"0049/1234567890\");\nbilling.setStreet(\"Bedford Ave\");\nbilling.setZipCode(\"11225\");\n\nSubscriptionOrderAddressInstance shipping = new SubscriptionOrderAddressInstance();\nshipping.setAdditional(\"Test address\");\nshipping.setCity(\"New York\");\nshipping.setCountryCode(\"DEU\");\nshipping.setFirstName(\"Michael\");\nshipping.setGender(Gender.VALUE_M);\nshipping.setHouseNumber(\"1650\");\nshipping.setLastName(\"Jackson\");\nshipping.setPhone(\"0049/1234567890\");\nshipping.setStreet(\"Bedford Ave\");\nshipping.setZipCode(\"11225\");\n\nsubscriptionOrderAddress.setBilling(billing);\nsubscriptionOrderAddress.setShipping(shipping);\n\nsubscriptionOrder.setAddress = subscriptionOrderAddress;\n\nSubscriptionOrderCarrierDeliveryDate carrierDeliveryDate = new SubscriptionOrderCarrierDeliveryDate();\ncarrierDeliveryDate.setMinimum(\"2025-01-09\");\ncarrierDeliveryDate.setMaximum(\"2025-01-15\");\n\nSubscriptionOrderCarrier carrier = new SubscriptionOrderCarrier();\ncarrier.setCarrierKey(\"dhl\");\ncarrier.setShippingPolicyKey(\"standard_delivery\");\ncarrier.setDeliveryDate(carrierDeliveryDate);\n\nsubscriptionOrder.setCarrier(carrier);\n\nsubscriptionOrder.setReferenceKey(\"abc0123\");\n\nHashMap legacyCustomData = new HashMap<>();\nlegacyCustomData.put(\"basketId\", \"mop_basket_ID\");\nsubscriptionOrder.setLegacyCustomData(legacyCustomData);\n\nsubscriptionOrder.setCustomerId(1263116);\nsubscriptionOrder.setIpAddress(\"127.0.0.1\");\n\nSubscriptionOrderItem item = new SubscriptionOrderItem();\nitem.setVariantId(46892617);\n\nArrayList items = new ArrayList<>();\nitems.add(item);\nsubscriptionOrder.setItems(items);\n\nSubscriptionOrderPaymentType paymentType = new SubscriptionOrderPaymentType();\npaymentType.setAuthorizedValue(2990);\npaymentType.setTransactionId(\"74-201507071360201\");\npaymentType.setType(\"accounting\");\n\nSubscriptionOrderPaymentTypeConfirmationData confirmationData = new SubscriptionOrderPaymentTypeConfirmationData();\nconfirmationData.setDescriptor(\"DG0452755Z3\");\nconfirmationData.setProfileId(\"ABOUTYOU_TE_DE\");\nconfirmationData.setSubscriptionPaymentReference(\"74-201507071360201\");\nconfirmationData.setTransactionId(\"74-201507071360201\");\nconfirmationData.setType(\"accounting\");\n\npaymentType.setConfirmationData(confirmationData);\n\nArrayList paymentTypes = new ArrayList<>();\npaymentTypes.add(paymentType);\nsubscriptionOrder.setPaymentTypes(paymentTypes);\n\nsubscriptionOrder.setSubscriptionId(\"1234567abcdef\");\n\nOrder newOrder = adminApi.orders().createSubscriptionOrder(\"ms\", \"DEU\", subscriptionOrder);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}": {
      "get": {
        "operationId": "getOrder",
        "x-rateLimit": {
          "scope": "ordersRead"
        },
        "x-resources": [
          "orders"
        ],
        "tags": [
          "Orders"
        ],
        "summary": "Get a order",
        "description": "This endpoint can be used to get a order by its identifier.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/transactions-and-orders#get-an-order).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/OrderIdentifier"
          },
          {
            "$ref": "#/components/parameters/OrderWith"
          }
        ],
        "responses": {
          "200": {
            "description": "Order",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Order"
                    },
                    {
                      "$ref": "#/components/schemas/OrderEvent/allOf/1/properties/payload/allOf/1"
                    }
                  ]
                },
                "examples": {
                  "Order": {
                    "$ref": "#/components/examples/OrderResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Orders.getOrder({\n    shopKey: 'ms',\n    countryCode: 'DE',\n    orderIdentifier: \"key=my-key\",\n    with: 'legacyCustomData'\n});\n\nlet order = response.body;\n\nconsole.log(order.legacyCustomData);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'with' => 'legacyCustomData'\n];\n\n$order = $adminApi->orders->get('ms', 'DE', Identifier::fromKey('my-key'), $options);\n\necho $order->legacyCustomData;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"with\", \"legacyCustomData\")\n                        .build();\n\nvar order = adminApi.orders().get(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"), options);\n\nSystem.out.println(order.getLegacyCustomData());\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteOrder",
        "x-rateLimit": {
          "scope": "ordersWrite"
        },
        "x-resources": [
          "orders"
        ],
        "tags": [
          "Orders"
        ],
        "summary": "Delete an order",
        "description": "This endpoint can be used to delete an order.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/transactions-and-orders#delete-order).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/OrderIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Order was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/paths/~1promotions/get/responses/403"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "// Delete by reference key\nawait client.apis.Orders.deleteOrder({\n    shopKey: 'ms',\n    countryCode: 'DE',\n    orderIdentifier: \"key=my-key\",\n});\n\n// Delete by id\nawait client.apis.Orders.deleteOrder({\n    shopKey: 'ms',\n    countryCode: 'DE',\n    orderIdentifier: 1,\n});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "// Delete by reference key\n$adminApi->orders->delete('ms', 'DE', Identifier::fromKey('my-key'));\n\n// Delete by id\n  $adminApi->orders->delete('ms', 'DE', Identifier::fromId(1));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "// Delete by reference key\nadminApi.orders().delete(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"));\n\n// Delete by id\nadminApi.orders().delete(\"ms\", \"DE\", Identifier.fromId(1));\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/orders/{orderId}/reference-key": {
      "put": {
        "operationId": "updateOrderReferenceKey",
        "x-rateLimit": {
          "scope": "ordersWrite"
        },
        "x-resources": [
          "orders"
        ],
        "tags": [
          "Orders"
        ],
        "summary": "Update order reference key",
        "description": "This endpoint can be used to update reference key of an existing order.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/transactions-and-orders#update-order-reference-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/OrderId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrderReferenceKey"
              },
              "examples": {
                "Order Reference Key": {
                  "$ref": "#/components/examples/OrderReferenceKeyRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Order reference key was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Order"
                    },
                    {
                      "$ref": "#/components/schemas/OrderEvent/allOf/1/properties/payload/allOf/1"
                    }
                  ]
                },
                "examples": {
                  "Order": {
                    "$ref": "#/components/examples/OrderResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let orderReferenceKey = {\n    referenceKey: \"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0\"\n};\n\nlet response = await client.apis.Orders.updateOrderReferenceKey({shopKey: 'ms', countryCode: 'DE', orderId: 1}, {requestBody: orderReferenceKey});\nlet order = response.body;\n\nconsole.log(order.referenceKey);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$orderReferenceKey = new OrderReferenceKey();\n$orderReferenceKey->referenceKey = 'InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0';\n\n$order = $adminApi->orders->updateReferenceKey('ms', 'DE', 1, $orderReferenceKey);\n\necho $order->referenceKey;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var orderReferenceKey = new OrderReferenceKey();\norderReferenceKey.setReferenceKey(\"InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0\");\n\nvar order = adminApi.orders().updateReferenceKey(\"ms\", \"DE\", 1, orderReferenceKey);\n\nSystem.out.println(order.getReferenceKey());\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/orders/{orderId}/items/{orderItemId}/legacy-custom-data": {
      "put": {
        "operationId": "createOrUpdateOrderItemLegacyCustomData",
        "x-rateLimit": {
          "scope": "ordersWrite"
        },
        "x-resources": [
          "orders"
        ],
        "tags": [
          "Orders"
        ],
        "summary": "Update custom data of the order item",
        "description": "This endpoint can be used to update item custom data associated with an order item. The input is a flexible JSON object where users can define their own key-value pairs. However, certain keys are restricted and cannot be used.\n\nValidations:\n1. Key Restrictions:\nThe following keys CANNOT be used and will result in a validation error:\n- externalTax\n- externalTaxes\n\n2. Payload Size:\nThe payload shouldn't exceed 60 kb.\n\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/transactions-and-orders#create-or-update-order-item-legacy-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/OrderId"
          },
          {
            "name": "orderItemId",
            "in": "path",
            "description": "Order item id",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "examples": {
              "OrderItemId": {
                "value": 456
              }
            }
          },
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "example": "?with=legacyCustomData",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "legacyCustomData"
                ]
              }
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "OrderItemLegacyCustomData": {
                  "$ref": "#/components/examples/OrderItemLegacyCustomData"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Order item custom data was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderItem"
                },
                "examples": {
                  "OrderItem": {
                    "$ref": "#/components/examples/OrderItem"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/paths/~1promotions/get/responses/403"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "412": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1countries~1%7BcountryCode%7D~1emails~1send/post/responses/412"
          },
          "423": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1countries~1%7BcountryCode%7D~1orders~1%7BorderIdentifier%7D~1legacy-custom-data/put/responses/423"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const customData = {\n  \"key\": \"value\"\n}\n\nconst response = await client.apis.Orders.createOrUpdateOrderItemLegacyCustomData({shopKey: \"ms\", countryCode: \"DE\", orderId: 123, orderItemId: 456}, {requestBody: customData});\nconst orderItem  = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customData = ['key' => 'value'];\n\n$orderItem = $adminApi->orderItems->createOrUpdateLegacyCustomData('ms', 'DEU', 123, 456, $customData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "HashMap legacyCustomData = new HashMap<>();\nlegacyCustomData.put(\"key\", \"value\");\n\nOrderItem orderItem = adminApi.orderItems().createOrUpdateLegacyCustomData(\"ms\", \"DEU\", 123, 456, legacyCustomData);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/orders/{orderId}/billing-status": {
      "patch": {
        "operationId": "updateOrderBillingStatus",
        "x-rateLimit": {
          "scope": "ordersWrite"
        },
        "x-resources": [
          "orders"
        ],
        "tags": [
          "Orders"
        ],
        "summary": "Update order billing status",
        "description": "This endpoint can be used to update order and item billing status, only for the configured set of payment methods. This is mainly helpful if you handle payments outside of SCAYLE.\n\nPlease note that Only valid billing status changes are permitted, and any other transition will result in 422 Unprocessable Entity error.\nAllowed transitions include:\n- billing_payment_pending → billing_completed\n- billing_payment_pending → billing_partially_refunded\n- billing_payment_pending → billing_refunded\n- billing_payment_pending → billing_payment_cancelled\n\nAll changes are logged for audit and compliance.\n\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/transactions-and-orders#update-order-billing-status).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/OrderId"
          },
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrderBillingStatus"
              },
              "examples": {
                "Order Billing Status": {
                  "$ref": "#/components/examples/OrderBillingStatusUpdateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Order billing status was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Order"
                },
                "examples": {
                  "Order": {
                    "$ref": "#/components/examples/OrderResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/paths/~1promotions/get/responses/403"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let billingStatusUpdate = {\n  \"code\": \"billing_refunded\"\n  \"reason\": \"The order is pending payment.\"\n}\nconst response = await client.apis.Orders.updateOrderBillingStatus({shopKey: \"ms\", countryCode: \"DE\", orderId: 123}, {requestBody: billingStatusUpdate});\nconst order  = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$orderBillingStatus = new OrderBillingStatus();\n$orderBillingStatus->code = 'billing_refunded';\n$orderBillingStatus->reason = 'The order is pending payment.';\n\n$adminApi->orders->updateOrderBillingStatus('ms', 'DE', Identifier::fromKey('order-key'), $orderBillingStatus);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "OrderBillingStatus orderBillingStatus = new OrderBillingStatus();\norderBillingStatus.setCode('billing_refunded');\norderBillingStatus.setReason(\"The order is paid.\");\n\nOrder updatedOrder = adminApi.orders().updateBillingStatus(\"ms\", \"DEU\", Identifier.fromId(123456), orderBillingStatus);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}/status": {
      "get": {
        "operationId": "getOrderStatus",
        "x-rateLimit": {
          "scope": "ordersRead"
        },
        "x-resources": [
          "orders"
        ],
        "tags": [
          "Orders"
        ],
        "summary": "Get an order status",
        "description": "This endpoint can be used to get an order status by order identifier.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/transactions-and-orders/order-hierarchy-and-states#get-an-order-status).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/OrderIdentifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Order status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderStatus"
                },
                "examples": {
                  "Order Status": {
                    "$ref": "#/components/examples/OrderStatusResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Orders.getOrderStatus({shopKey: 'ms', countryCode: 'DE', orderIdentifier: \"key=my-key\"});\nlet orderStatus = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$orderStatus = $adminApi->orders->getStatus('ms', 'DE', Identifier::fromKey('my-key'));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var status = adminApi.orders().getStatus(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"));\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}/invoices": {
      "get": {
        "operationId": "getOrderInvoices",
        "x-rateLimit": {
          "scope": "ordersRead"
        },
        "x-resources": [
          "orders"
        ],
        "tags": [
          "Orders"
        ],
        "summary": "Get order invoices",
        "description": "This endpoint can be used to get an order invoices by order identifier.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/transactions-and-orders#get-order-invoices).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/OrderIdentifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of Order Invoices",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/OrderInvoice"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Order Invoices": {
                    "$ref": "#/components/examples/OrderInvoiceCollectionResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.orders.getOrderInvoices({\n  shopKey: 'ms', \n  countryCode: 'DE', \n  orderIdentifier: \"key=my-key\"\n});\n\nlet orderInvoices = response.body.entities;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$orderInvoicesCollection = $adminApi->orders->getOrderInvoices('ms', 'DE', Identifier::fromKey('my-key'));\n$result = $orderInvoicesCollection->getEntities();\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<OrderInvoice> orderInvoiceCollection = adminApi.orders().getOrderInvoices(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"));\n\nList<OrderInvoice> orderInvoices = orderInvoiceCollection.getEntities();\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}/invoices/{invoiceId}": {
      "get": {
        "operationId": "getOrderInvoice",
        "x-rateLimit": {
          "scope": "ordersRead"
        },
        "x-resources": [
          "orders"
        ],
        "tags": [
          "Orders"
        ],
        "summary": "Get an order invoice content",
        "description": "This endpoint can be used to get an order invoice content by order identifier.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/transactions-and-orders#get-order-invoice).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/OrderIdentifier"
          },
          {
            "name": "invoiceId",
            "in": "path",
            "description": "Invoice ID",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "examples": {
              "InvoiceId": {
                "value": 123
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Invoice content",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                },
                "examples": {
                  "sample invoice 1": {
                    "summary": "A sample invoice document content",
                    "value": "JVBERi0xLjMKJcfsj6IKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwo+PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvUGFnZQovUGFyZW50IDMgMCBSCj4+CmVuZG9iagozIDAgb2JqCjw8Ci9UeXBlIC9QYWdlcwovQ291bnQgMQovS2lkcyBbMiAwIFJdCj4+CmVuZG9iago0IDAgb2JqCjw8Ci9UeXBlIC9PYnqCfQo+PgplbmRvYmoKeHJlZgo1IDAKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDAgMDAwMDAgbgplbmRvZg=="
                  },
                  "sample invoice 2": {
                    "summary": "A sample invoice document",
                    "externalValue": "https://pdfobject.com/pdf/sample.pdf"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.orders.getOrderInvoice({\n  shopKey: 'ms', \n  countryCode: 'DE', \n  orderIdentifier: \"key=my-key\",\n  invoiceId: 345\n});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->orders->getOrderInvoice('ms', 'DE', Identifier::fromKey('my-key'), 345);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.orders().getOrderInvoice(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"), 345);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}/documents": {
      "get": {
        "operationId": "getOrderDocuments",
        "x-rateLimit": {
          "scope": "ordersRead"
        },
        "x-resources": [
          "orders"
        ],
        "tags": [
          "Orders"
        ],
        "summary": "Get order documents",
        "description": "Returns a collection of document metadata for a given order, including the document type (Invoice or EML), creation date, and a unique documentId. This provides a complete inventory of all documents linked to the order.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/OrderIdentifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of order documents",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/OrderDocument"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Order documents": {
                    "$ref": "#/components/examples/OrderDocumentCollectionResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.orders.getOrderDocuments({\n  shopKey: 'ms', \n  countryCode: 'DE', \n  orderIdentifier: \"key=my-key\"\n});\n\nlet orderDocuments = response.body.entities;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$orderDocumentsCollection = $adminApi->orders->getOrderDocuments('ms', 'DE', Identifier::fromKey('my-key'));\n$result = $orderDocumentsCollection->getEntities();\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<OrderDocument> orderDocumentCollection = adminApi.orders().getOrderDocuments(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"));\n\nList<OrderDocument> orderDocuments = orderDocumentCollection.getEntities();\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}/documents/{documentId}/file": {
      "get": {
        "operationId": "getOrderDocument",
        "x-rateLimit": {
          "scope": "ordersRead"
        },
        "x-resources": [
          "orders"
        ],
        "tags": [
          "Orders"
        ],
        "summary": "Get order document content",
        "description": "Downloads a specific document by its unique identifier. \nFor PDF documents, the binary content is returned directly as `application/pdf` with a `Content-Disposition` attachment header. \nFor EML files (stored HTML emails used in dunning processes), the document is served directly with the appropriate `Content-Type` and `Content-Disposition` headers.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/OrderIdentifier"
          },
          {
            "$ref": "#/components/parameters/DocumentId"
          }
        ],
        "responses": {
          "200": {
            "description": "Document content. Content type depends on the document format.",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                },
                "examples": {
                  "sample document PDF": {
                    "summary": "A sample PDF document",
                    "value": "JVBERi0xLjMKJcfsj6IKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwo+PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvUGFnZQovUGFyZW50IDMgMCBSCj4+CmVuZG9iagozIDAgb2JqCjw8Ci9UeXBlIC9QYWdlcwovQ291bnQgMQovS2lkcyBbMiAwIFJdCj4+CmVuZG9iago0IDAgb2JqCjw8Ci9UeXBlIC9PYnqCfQo+PgplbmRvYmoKeHJlZgo1IDAKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDAgMDAwMDAgbgplbmRvZg=="
                  },
                  "sample document PDF 2": {
                    "summary": "A sample invoice document",
                    "externalValue": "https://pdfobject.com/pdf/sample.pdf"
                  }
                }
              },
              "message/rfc822": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                },
                "examples": {
                  "sample eml": {
                    "summary": "Raw RFC 822 message bytes (with Content-Disposition attachment; filename=\"{type}_{orderId}.eml\")",
                    "value": "From: shop@example.com\r\nTo: customer@example.com\r\nSubject: Order shipment\r\nMIME-Version: 1.0\r\nContent-Type: text/plain; charset=UTF-8\r\n\r\nYour order has shipped.\r\n"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.orders.getOrderDocument({\n  shopKey: 'ms', \n  countryCode: 'DE', \n  orderIdentifier: \"key=my-key\",\n  documentId: 345\n});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->orders->getOrderDocument('ms', 'DE', Identifier::fromKey('my-key'), 345);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.orders().getOrderDocument(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"), 345);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}/legacy-custom-data": {
      "put": {
        "operationId": "createOrUpdateOrderLegacyCustomData",
        "x-rateLimit": {
          "scope": "ordersWrite"
        },
        "x-resources": [
          "orders"
        ],
        "tags": [
          "Orders"
        ],
        "summary": "Create or update order custom data",
        "description": "This endpoint can be used to update custom data associated with an order. The input is a flexible JSON object where users can define their own key-value pairs. However, certain keys are restricted and cannot be used.\n\nValidations:\n1. Key Restrictions:\nThe following keys CANNOT be used and will result in a validation error:\n- eligiblePromotionIds\n- loyaltyPointsUsed\n- hasReturnCosts\n- returnCostAmount\n- minBruttoOrderValueAfterReturns\n- configuration\n- taxRateTransactionId\n- score\n- fees\n- originDevice\n- userAgent\n- bankReminderEmailCount\n- bankReminderSmsCount\n- isExpressCheckout\n\n2. Payload Size:\nThe payload shouldn't exceed 60 kb.\n\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/transactions-and-orders).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/OrderIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "Order Custom Data": {
                  "$ref": "#/components/examples/CustomDataRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Custom data has been successfully created or updated."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/paths/~1promotions/get/responses/403"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "423": {
            "description": "Resource is locked",
            "content": {
              "application/json": {
                "schema": {
                  "title": "ResourceLocked",
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "errors": [
                    {
                      "errorKey": "RESOURCE_LOCKED",
                      "message": "The request failed as the resource is locked by other processes at the moment.",
                      "context": {}
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n    \"score\": { \"generatedOn\": \"2018-05-20T19:45:15+00:00\", \"result\": \"green\" },\n}\n\nawait client.apis.Orders.createOrUpdateOrderLegacyCustomData({shopKey: 'ms', countryCode: 'DE', orderIdentifier: \"key=my-key\"}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$customData = new EntityCustomData();\n$customData->score = (object)[\"generatedOn\" => \"2018-05-20T19:45:15+00:00\", \"result\" => \"green\"];\n$adminApi->orders->createOrUpdateLegacyCustomData('ms', 'DE', Identifier::fromKey('my-key'), $customData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var entityCustomData = new EntityCustomData();\nMap<String, String> scoreCustomData = new HashMap<>();\nscoreCustomData.put(\"result\", \"green\")\nentityCustomData.put(\"score\", scoreCustomData);\n\nadminApi.orders().createOrUpdateLegacyCustomData(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"), entityCustomData);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}/payment/manual-capture": {
      "post": {
        "operationId": "triggerManualCapture",
        "x-rateLimit": {
          "scope": "ordersWrite"
        },
        "x-resources": [
          "orders"
        ],
        "tags": [
          "Orders"
        ],
        "summary": "Trigger a manual capture",
        "description": "This endpoint can be used to trigger a manual capture by order identifier.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/transactions-and-orders).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/OrderIdentifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Order",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Order"
                    },
                    {
                      "$ref": "#/components/schemas/OrderEvent/allOf/1/properties/payload/allOf/1"
                    }
                  ]
                },
                "examples": {
                  "Order": {
                    "$ref": "#/components/examples/OrderResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.orders.triggerManualCapture({\n  shopKey: 'ms', \n  countryCode: 'DE', \n  orderIdentifier: \"key=my-key\"\n});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->orders->triggerManualCapture('ms', 'DE', Identifier::fromKey('my-key'));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.orders().triggerManualCapture(\"ms\", \"DE\", Identifier.fromKey(\"my-key\"));\n"
          }
        ]
      }
    },
    "/fulfillment/shipments": {
      "post": {
        "operationId": "createShipment",
        "x-rateLimit": {
          "scope": "fulfillmentWrite"
        },
        "x-resources": [
          "fulfillment"
        ],
        "tags": [
          "Fulfillment"
        ],
        "summary": "Create a new shipment",
        "description": "This endpoint can be used to create a new shipment.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/logistics/shipments-and-returns#create-a-shipment).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/CompanyIdHeader"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Shipment"
              },
              "examples": {
                "Shipment": {
                  "$ref": "#/components/examples/ShipmentRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Shipment was successfully created."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let shipment = {\n  \"shopKey\": \"ms\",\n  \"countryCode\": \"de\",\n  \"carrier\": \"HERMES_KLV\",\n  \"deliveryDate\": \"2021-09-23T11:30:58+00:00\",\n  \"items\": [\n    {\n      \"orderItemId\": 67219436,\n      \"returnKey\": \"550357807160\"\n    }\n  ],\n  \"orderId\": 123,\n  \"returnIdentCode\": \"123456789012\",\n  \"shipmentKey\": \"582301b967d97\"\n};\n\nlet parameters = {requestBody: shipment};\n\n// only required when multiple companies are used\nparameters.requestInterceptor = (req) => {\n    req.headers[\"X-Company-Id\"] = 1;\n    return req;\n};\n\nclient.apis.Fulfillment.createShipment({}, parameters);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$shipment = new Shipment();\n$shipment->shopKey = 'ms';\n$shipment->countryCode = 'DE';\n$shipment->carrier = 'HERMES_KLV';\n$shipment->deliveryDate = '2021-09-23T11:30:58+00:00';\n$shipment->orderId = '123';\n$shipment->returnIdentCode = '123456789012';\n$shipment->shipmentKey = '582301b967d97';\n\n$shipmentOrderItem = new ShipmentOrderItem();\n$shipmentOrderItem->orderItemId = 67219436;\n$shipmentOrderItem->returnKey = \"550357807160\";\n\n$shipment->items = [$shipmentOrderItem];\n\n// only required when multiple companies are used\n$options = ['companyId' => 1];\n\n$adminApi->shipments->create($shipment, $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var shipment = new Shipment();\nshipment.setShopKey(\"ms\");\nshipment.setCountryCode(\"DE\");\nshipment.setCarrier(\"HERMES_KLV\");\nshipment.setDeliveryDate(java.time.Instant.parse(\"2021-09-23T11:30:58+00:00\"));\nshipment.setOrderId(123);\nshipment.setReturnIdentCode(\"123456789012\");\nshipment.setShipmentKey(\"582301b967d97\");\n\nShipmentOrderItem shipmentOrderItem = new ShipmentOrderItem();\nshipmentOrderItem.setOrderItemId(67219436);\nshipmentOrderItem.setReturnKey(\"550357807160\");\n\nvar items = new ArrayList<ShipmentOrderItem>();\nitems.add(shipmentOrderItem);\n\nshipment.setItems(items);\n\n// only required when multiple companies are used\nApiOptions options = ApiOptions.builder()\n    .addOption(\"companyId\", 1)\n    .build();\n\nadminApi.shipments().create(shipment, options);\n"
          }
        ]
      }
    },
    "/webhooks/events": {
      "get": {
        "operationId": "getWebhookEvents",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "webhooks"
        ],
        "tags": [
          "Webhooks"
        ],
        "summary": "Return all available webhook events that are exposed by the system",
        "description": "The listed events can be used to create new subscriptions.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/customise-extend/webhooks/overview).\n",
        "responses": {
          "200": {
            "description": "List of available webhooks events.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/WebhookEvent"
                      }
                    }
                  }
                },
                "examples": {
                  "Webhook Event Collection": {
                    "$ref": "#/components/examples/WebhookEventCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Webhooks.getWebhookEvents();\nlet webhookEvents = response.body.entities;\n\nwebhookEvents.forEach(\n    webhookEvent => console.log(webhookEvent.event)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$webhookEventCollection = $adminApi->webhookEvents->all();\n\nforeach ($webhookEventCollection->getEntities() as $webhookEvent) {\n    echo $webhookEvent->event;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<WebhookEvent> webhookEventCollection = adminApi.webhookEvents().all();\n\nfor (WebhookEvent webhookEvent : webhookEventCollection.getEntities()) {\n    System.out.println(webhookEvent.getEvent());\n}\n"
          }
        ]
      }
    },
    "/webhooks/subscriptions": {
      "get": {
        "operationId": "getWebhookSubscriptions",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "webhooks"
        ],
        "tags": [
          "Webhooks"
        ],
        "summary": "Return all registered webhook subscriptions",
        "description": "This endpoint can be used to retrieve a collection of registered webhook subscriptions.\n",
        "responses": {
          "200": {
            "description": "List of registered webhooks subscriptions.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/WebhookSubscription"
                      }
                    }
                  }
                },
                "examples": {
                  "Webhook Subscription Collection": {
                    "$ref": "#/components/examples/WebhookSubscriptionCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Webhooks.getWebhookSubscriptions();\nlet webhookSubscriptions = response.body.entities;\n\nwebhookSubscriptions.forEach(\n    webhookSubscription => console.log(webhookSubscription.id)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$webhookSubscriptionCollection = $adminApi->webhookSubscriptions->all();\n\nforeach ($webhookSubscriptionCollection->getEntities() as $webhookSubscription) {\n    echo $webhookSubscription->id;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<WebhookSubscription> webhookSubscriptionCollection = adminApi.webhookSubscriptions().all();\n\nfor (WebhookSubscription webhookSubscription : webhookSubscriptionCollection.getEntities()) {\n    System.out.println(webhookSubscription.getId());\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "createWebhookSubscription",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "webhooks"
        ],
        "tags": [
          "Webhooks"
        ],
        "summary": "Create a new webhook subscription",
        "description": "Only webhook events that are not deprecated can be used to create new subscriptions.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/customise-extend/webhooks/overview#create-a-new-webhook).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookSubscription"
              },
              "examples": {
                "Webhook Subscription": {
                  "$ref": "#/components/examples/WebhookSubscriptionRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Webhook subscription was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscription"
                },
                "examples": {
                  "Webhook Subscription": {
                    "$ref": "#/components/examples/WebhookSubscriptionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "callbacks": {
          "customer-created": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchCustomerCreatedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/CustomerEvent"
                      },
                      "examples": {
                        "Customer Created Event": {
                          "$ref": "#/components/examples/CustomerCreatedEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Customers"
                ],
                "responses": {
                  "200": {
                    "description": "Customer created event is received"
                  }
                }
              }
            }
          },
          "customer-updated": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchCustomerUpdatedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/CustomerEvent"
                      },
                      "examples": {
                        "Customer Updated Event": {
                          "$ref": "#/components/examples/CustomerUpdatedEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Customers"
                ],
                "responses": {
                  "200": {
                    "description": "Customer updated event is received"
                  }
                }
              }
            }
          },
          "customer-login": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchCustomerLoginEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/CustomerEvent"
                      },
                      "examples": {
                        "Customer Login Event": {
                          "$ref": "#/components/examples/CustomerLoginEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Customers"
                ],
                "responses": {
                  "200": {
                    "description": "Customer login event is received"
                  }
                }
              }
            }
          },
          "customer-logout": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchCustomerLogoutEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/CustomerEvent"
                      },
                      "examples": {
                        "Customer Logout Event": {
                          "$ref": "#/components/examples/CustomerLogoutEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Customers"
                ],
                "responses": {
                  "200": {
                    "description": "Customer logout event is received"
                  }
                }
              }
            }
          },
          "customer-address-deleted": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchCustomerAddressDeletedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/CustomerAddressEvent"
                      },
                      "examples": {
                        "Customer Address Deleted Event": {
                          "value": {
                            "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                            "meta": {
                              "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
                            },
                            "occurredAt": "2019-08-09T15:01:26+00:00",
                            "type": "customer-address-deleted",
                            "payload": {
                              "customer": {
                                "id": 1,
                                "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
                                "firstName": "John",
                                "lastName": "Doe",
                                "gender": "m",
                                "birthDate": "1980-01-01",
                                "email": "john.doe@example.com",
                                "phone": "0049/1234567890",
                                "publicKey": "customer-1234",
                                "title": "Prof.",
                                "type": "personal",
                                "groups": [
                                  "employee"
                                ],
                                "status": {
                                  "isActive": true,
                                  "isGuestCustomer": false
                                },
                                "company": {
                                  "id": 1,
                                  "name": "default"
                                },
                                "legacyCustomData": {
                                  "score": {
                                    "generatedOn": "2018-05-20T19:45:15+00:00",
                                    "result": "green"
                                  }
                                }
                              },
                              "address": {
                                "id": 1,
                                "referenceKey": "my-key",
                                "street": "Street",
                                "houseNumber": "1",
                                "additional": "erste Stock",
                                "zipCode": "123456",
                                "city": "Hamburg",
                                "countryCode": "DEU",
                                "collectionPoint": {
                                  "customerKey": "bced-234-234",
                                  "description": "Kiosk",
                                  "key": "12345-a",
                                  "type": "hermes_parcelshop"
                                },
                                "isDefault": {
                                  "billing": false,
                                  "shipping": true
                                },
                                "recipient": {
                                  "firstName": "John",
                                  "gender": "m",
                                  "lastName": "Doe",
                                  "title": "Prof."
                                }
                              },
                              "shopCountry": {
                                "id": 1,
                                "shopKey": "ay",
                                "countryCode": "DE",
                                "defaultLanguageCode": "de_DE",
                                "supportedLanguageCodes": [
                                  "de_DE",
                                  "en_GB"
                                ],
                                "active": true,
                                "deleted": false,
                                "url": "www.example.com",
                                "currencyCode": "EUR",
                                "priceGroupKey": "myPriceGroup"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Customers"
                ],
                "responses": {
                  "200": {
                    "description": "Customer address deleted event is received"
                  }
                }
              }
            }
          },
          "customer-anonymized": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchCustomerAnonymizedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/CustomerAnonymizedEvent"
                      },
                      "examples": {
                        "Customer Anonymized Event": {
                          "$ref": "#/components/examples/CustomerAnonymizedEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Customers"
                ],
                "responses": {
                  "200": {
                    "description": "Customer anonymized event is received"
                  }
                }
              }
            }
          },
          "customer-password-reset": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchCustomerPasswordResetEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/OrderEvent/allOf/0"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "payload": {
                                "type": "object",
                                "required": [
                                  "customer",
                                  "url",
                                  "expiresAt"
                                ],
                                "properties": {
                                  "customer": {
                                    "$ref": "#/components/schemas/Customer"
                                  },
                                  "url": {
                                    "type": "string",
                                    "description": "URL of password reset.",
                                    "format": "uri",
                                    "example": "https://example.com/reset"
                                  },
                                  "expiresAt": {
                                    "type": "string",
                                    "format": "date-time",
                                    "description": "Expire time of password reset link.",
                                    "example": "2021-09-23T11%3A30%3A58%2B00%3A00"
                                  },
                                  "shopCountry": {
                                    "$ref": "#/components/schemas/ShopCountry"
                                  }
                                }
                              }
                            }
                          }
                        ]
                      },
                      "examples": {
                        "Customer Password Reset Event": {
                          "$ref": "#/components/examples/CustomerPasswordResetEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Customers"
                ],
                "responses": {
                  "200": {
                    "description": "Customer password reset event is received"
                  }
                }
              }
            }
          },
          "customer-address-created": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchCustomerAddressCreatedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/CustomerAddressEvent"
                      },
                      "examples": {
                        "Customer Address Created Event": {
                          "$ref": "#/components/examples/CustomerAddressCreatedEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Customers"
                ],
                "responses": {
                  "200": {
                    "description": "Customer adress created event is received"
                  }
                }
              }
            }
          },
          "customer-address-updated": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchCustomerAddressUpdatedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/CustomerAddressEvent"
                      },
                      "examples": {
                        "Customer Address Updated Event": {
                          "$ref": "#/components/examples/CustomerAddressUpdatedEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Customers"
                ],
                "responses": {
                  "200": {
                    "description": "Customer adress updated event is received"
                  }
                }
              }
            }
          },
          "order-confirmed": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchOrderConfirmedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/OrderEvent"
                      },
                      "examples": {
                        "Order Confirmed Event": {
                          "$ref": "#/components/examples/OrderConfirmedEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Orders"
                ],
                "responses": {
                  "200": {
                    "description": "Order confirmed event is received"
                  }
                }
              }
            }
          },
          "order-invoiced": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchOrderInvoicedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/OrderEvent"
                      },
                      "examples": {
                        "Order Invoiced Event": {
                          "$ref": "#/components/examples/OrderInvoicedEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Orders"
                ],
                "responses": {
                  "200": {
                    "description": "Order invoiced event is received"
                  }
                }
              }
            }
          },
          "order-partially-invoiced": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchOrderPartiallyInvoicedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/OrderEvent"
                      },
                      "examples": {
                        "Order Partially Invoiced Event": {
                          "$ref": "#/components/examples/OrderPartiallyInvoicedEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Orders"
                ],
                "responses": {
                  "200": {
                    "description": "Order partially invoiced event is received"
                  }
                }
              }
            }
          },
          "order-corrective-invoiced": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchOrderCorrectiveInvoicedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/OrderEvent"
                      },
                      "examples": {
                        "Order Corrective Invoiced Event": {
                          "value": {
                            "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                            "meta": {
                              "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
                            },
                            "occurredAt": "2019-08-09T15:01:26+00:00",
                            "type": "order-corrective-invoiced",
                            "payload": {
                              "address": {
                                "billing": {
                                  "id": 998,
                                  "referenceKey": "my-key",
                                  "street": "Street",
                                  "houseNumber": "1",
                                  "additional": "erste Stock",
                                  "zipCode": "123456",
                                  "city": "Hamburg",
                                  "countryCode": "DEU",
                                  "collectionPoint": {
                                    "customerKey": "bced-234-234",
                                    "description": "Kiosk",
                                    "key": "12345-a",
                                    "type": "hermes_parcelshop"
                                  },
                                  "isDefault": {
                                    "billing": false,
                                    "shipping": true
                                  },
                                  "recipient": {
                                    "firstName": "John",
                                    "gender": "m",
                                    "lastName": "Doe",
                                    "title": "Prof."
                                  }
                                },
                                "forward": {
                                  "id": 998,
                                  "referenceKey": "my-key",
                                  "street": "Street",
                                  "houseNumber": "1",
                                  "additional": "erste Stock",
                                  "zipCode": "123456",
                                  "city": "Hamburg",
                                  "countryCode": "DEU",
                                  "collectionPoint": {
                                    "customerKey": "bced-234-234",
                                    "description": "Kiosk",
                                    "key": "12345-a",
                                    "type": "hermes_parcelshop"
                                  },
                                  "isDefault": {
                                    "billing": false,
                                    "shipping": true
                                  },
                                  "recipient": {
                                    "firstName": "John",
                                    "gender": "m",
                                    "lastName": "Doe",
                                    "title": "Prof."
                                  }
                                },
                                "shipping": {
                                  "id": 998,
                                  "referenceKey": "my-key",
                                  "street": "Street",
                                  "houseNumber": "1",
                                  "additional": "erste Stock",
                                  "zipCode": "123456",
                                  "city": "Hamburg",
                                  "countryCode": "DEU",
                                  "collectionPoint": {
                                    "customerKey": "bced-234-234",
                                    "description": "Kiosk",
                                    "key": "12345-a",
                                    "type": "hermes_parcelshop"
                                  },
                                  "isDefault": {
                                    "billing": false,
                                    "shipping": true
                                  },
                                  "recipient": {
                                    "firstName": "John",
                                    "gender": "m",
                                    "lastName": "Doe",
                                    "title": "Prof."
                                  }
                                }
                              },
                              "basketKey": "basket-c6v7k4eer1",
                              "confirmedAt": "2018-01-20T11:30:15+00:00",
                              "contacts": [
                                {
                                  "type": "carrier",
                                  "value": "+385 95 677 8888"
                                }
                              ],
                              "cost": {
                                "appliedFees": [
                                  {
                                    "amount": {
                                      "withTax": 200,
                                      "withoutTax": 168
                                    },
                                    "category": "delivery",
                                    "key": "hermes",
                                    "option": "express",
                                    "tax": {
                                      "vat": {
                                        "amount": 32,
                                        "rate": 1
                                      }
                                    }
                                  }
                                ],
                                "appliedReductions": [
                                  {
                                    "amount": {
                                      "absoluteWithTax": 100,
                                      "relative": 1
                                    },
                                    "category": "voucher",
                                    "type": "absolute"
                                  }
                                ],
                                "tax": {
                                  "vat": {
                                    "amount": 11
                                  }
                                },
                                "withTax": 1390,
                                "withoutTax": 1168,
                                "withTaxWithMembershipDiscountWithoutServiceCosts": 1337,
                                "withoutTaxWithMembershipDiscount": 1234,
                                "costCapture": 1390
                              },
                              "currencyCode": "EUR",
                              "customer": {
                                "id": 9876,
                                "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
                              },
                              "id": 123,
                              "invoicedAt": "2018-01-22T11:30:15+00:00",
                              "items": [
                                {
                                  "id": 1,
                                  "availableQuantity": 20,
                                  "deliveryForecast": {
                                    "subsequentDelivery": {
                                      "key": "christmas"
                                    }
                                  },
                                  "legacyCustomData": {
                                    "key": "value"
                                  },
                                  "packageId": 1,
                                  "price": {
                                    "appliedReductions": [
                                      {
                                        "amount": {
                                          "absoluteWithTax": 100,
                                          "relative": 1
                                        },
                                        "category": "sale",
                                        "type": "relative"
                                      }
                                    ],
                                    "reference": {
                                      "size": "100",
                                      "unit": "ml",
                                      "withTax": 595
                                    },
                                    "tax": {
                                      "vat": {
                                        "amount": 190,
                                        "rate": 1
                                      }
                                    },
                                    "withTax": 1190,
                                    "withoutTax": 1000
                                  },
                                  "product": {
                                    "id": 123456,
                                    "referenceKey": "M0001-black"
                                  },
                                  "promotion": {
                                    "id": "649178aa530da10426f3f8d1",
                                    "name": "PromoABC",
                                    "version": "v1"
                                  },
                                  "key": "ac834d23e689u678",
                                  "reservationKey": "6nq69bzzkd5xufxliwg8",
                                  "status": "available",
                                  "variant": {
                                    "id": 7,
                                    "referenceKey": "M00012-black-M"
                                  },
                                  "warehouseId": 12345,
                                  "itemGroup": {
                                    "id": "ab123",
                                    "isMainItem": true,
                                    "isRequired": true
                                  },
                                  "campaignKey": "sale15",
                                  "merchant": {
                                    "referenceKey": "merchant-1"
                                  }
                                }
                              ],
                              "legacyCustomData": {
                                "score": {
                                  "generatedOn": "2018-05-20T19:45:15+00:00",
                                  "result": "green"
                                }
                              },
                              "membershipDiscount": {
                                "membershipCardId": 1,
                                "pointsUsed": 1356,
                                "reductionValue": 127,
                                "tax": 0
                              },
                              "packages": [
                                {
                                  "carrierKey": "dhl",
                                  "deliveryDate": {
                                    "maximum": "2018-02-05",
                                    "minimum": "2018-02-02"
                                  },
                                  "deliveryStatus": "open",
                                  "id": 1
                                }
                              ],
                              "payment": [
                                {
                                  "amount": 1190,
                                  "data": {
                                    "CCBrand": "VISA",
                                    "CCExpiry": "202005",
                                    "IPCity": "charlottenburg",
                                    "IPLatitude": "52.5151",
                                    "IPLongitude": "13.3053",
                                    "IPState": "berlin",
                                    "IPZone": "276",
                                    "IPZoneA2": "de"
                                  },
                                  "key": "computop_creditcard",
                                  "transactionKey": "creditcard-abcde"
                                }
                              ],
                              "publicKey": "666",
                              "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
                              "shipping": {
                                "policy": "least_packages"
                              },
                              "shopCountry": {
                                "id": 1,
                                "shopKey": "ay",
                                "countryCode": "DE",
                                "defaultLanguageCode": "de_DE",
                                "supportedLanguageCodes": [
                                  "de_DE",
                                  "en_GB"
                                ],
                                "active": true,
                                "deleted": false,
                                "url": "www.example.com",
                                "currencyCode": "EUR",
                                "priceGroupKey": "myPriceGroup"
                              },
                              "status": "invoice_completed",
                              "detailedStatus": {
                                "billing": {
                                  "code": "billing_payment_pending",
                                  "name": "Zahlung reserviert"
                                },
                                "order": {
                                  "code": "invoice_completed",
                                  "name": "Invoiced"
                                },
                                "shipping": {
                                  "code": "shipping_partially_returned",
                                  "name": "Teilweise Retoure"
                                }
                              },
                              "vouchers": [
                                {
                                  "id": 198234,
                                  "applicableItems": [
                                    {
                                      "isApplied": true,
                                      "key": "a87ff679a2f3e71d9181a67b7542122c"
                                    }
                                  ],
                                  "code": "fashion2020",
                                  "type": "absolute",
                                  "value": 1000,
                                  "voucherId": 1443
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Orders"
                ],
                "responses": {
                  "200": {
                    "description": "Order corrective invoiced event is received"
                  }
                }
              }
            }
          },
          "order-cancelled": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchOrderCancelledEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/OrderEvent"
                      },
                      "examples": {
                        "Order Cancelled Event": {
                          "$ref": "#/components/examples/OrderCancelledEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Orders"
                ],
                "responses": {
                  "200": {
                    "description": "Order cancelled event is received"
                  }
                }
              }
            }
          },
          "order-delegated": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchOrderDelegatedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/OrderEvent"
                      },
                      "examples": {
                        "Order Delegated Event": {
                          "$ref": "#/components/examples/OrderDelegatedEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Orders"
                ],
                "responses": {
                  "200": {
                    "description": "Order delegated event is received"
                  }
                }
              }
            }
          },
          "order-custom-data-updated": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchOrderUpdatedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/OrderCustomDataUpdatedEvent"
                      },
                      "examples": {
                        "Order Updated Event": {
                          "$ref": "#/components/examples/OrderCustomDataUpdatedEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Orders"
                ],
                "responses": {
                  "200": {
                    "description": "Order custom data updated event is received"
                  }
                }
              }
            }
          },
          "order-item-out-of-stock": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchOrderItemOutOfStockEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/OrderItemEvent"
                      },
                      "examples": {
                        "Order Item Out Of Stock Event": {
                          "$ref": "#/components/examples/OrderItemOutOfStockEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Orders"
                ],
                "responses": {
                  "200": {
                    "description": "Order item out of stock event is received"
                  }
                }
              }
            }
          },
          "order-item-cancelled": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchOrderItemCancelledEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/OrderItemEvent"
                      },
                      "examples": {
                        "Order Item Cancelled Event": {
                          "$ref": "#/components/examples/OrderItemCancelledEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Orders"
                ],
                "responses": {
                  "200": {
                    "description": "Order item cancelled event is received"
                  }
                }
              }
            }
          },
          "order-item-returned": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchOrderItemReturnedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/OrderItemEvent"
                      },
                      "examples": {
                        "Order Item Returned Event": {
                          "$ref": "#/components/examples/OrderItemReturnedEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Orders"
                ],
                "responses": {
                  "200": {
                    "description": "Order item returned event is received"
                  }
                }
              }
            }
          },
          "order-item-unshippable": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchOrderItemUnshippableEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/OrderItemEvent"
                      },
                      "examples": {
                        "Order Item Unshippable Event": {
                          "value": {
                            "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                            "meta": {
                              "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
                            },
                            "occurredAt": "2019-08-09T15:01:26+00:00",
                            "type": "order-item-unshippable",
                            "payload": {
                              "order": {
                                "address": {
                                  "billing": {
                                    "id": 998,
                                    "referenceKey": "my-key",
                                    "street": "Street",
                                    "houseNumber": "1",
                                    "additional": "erste Stock",
                                    "zipCode": "123456",
                                    "city": "Hamburg",
                                    "countryCode": "DEU",
                                    "collectionPoint": {
                                      "customerKey": "bced-234-234",
                                      "description": "Kiosk",
                                      "key": "12345-a",
                                      "type": "hermes_parcelshop"
                                    },
                                    "isDefault": {
                                      "billing": false,
                                      "shipping": true
                                    },
                                    "recipient": {
                                      "firstName": "John",
                                      "gender": "m",
                                      "lastName": "Doe",
                                      "title": "Prof."
                                    }
                                  },
                                  "forward": {
                                    "id": 998,
                                    "referenceKey": "my-key",
                                    "street": "Street",
                                    "houseNumber": "1",
                                    "additional": "erste Stock",
                                    "zipCode": "123456",
                                    "city": "Hamburg",
                                    "countryCode": "DEU",
                                    "collectionPoint": {
                                      "customerKey": "bced-234-234",
                                      "description": "Kiosk",
                                      "key": "12345-a",
                                      "type": "hermes_parcelshop"
                                    },
                                    "isDefault": {
                                      "billing": false,
                                      "shipping": true
                                    },
                                    "recipient": {
                                      "firstName": "John",
                                      "gender": "m",
                                      "lastName": "Doe",
                                      "title": "Prof."
                                    }
                                  },
                                  "shipping": {
                                    "id": 998,
                                    "referenceKey": "my-key",
                                    "street": "Street",
                                    "houseNumber": "1",
                                    "additional": "erste Stock",
                                    "zipCode": "123456",
                                    "city": "Hamburg",
                                    "countryCode": "DEU",
                                    "collectionPoint": {
                                      "customerKey": "bced-234-234",
                                      "description": "Kiosk",
                                      "key": "12345-a",
                                      "type": "hermes_parcelshop"
                                    },
                                    "isDefault": {
                                      "billing": false,
                                      "shipping": true
                                    },
                                    "recipient": {
                                      "firstName": "John",
                                      "gender": "m",
                                      "lastName": "Doe",
                                      "title": "Prof."
                                    }
                                  }
                                },
                                "basketKey": "basket-c6v7k4eer1",
                                "confirmedAt": "2018-01-20T11:30:15+00:00",
                                "contacts": [
                                  {
                                    "type": "carrier",
                                    "value": "+385 95 677 8888"
                                  }
                                ],
                                "cost": {
                                  "appliedFees": [
                                    {
                                      "amount": {
                                        "withTax": 200,
                                        "withoutTax": 168
                                      },
                                      "category": "delivery",
                                      "key": "hermes",
                                      "option": "express",
                                      "tax": {
                                        "vat": {
                                          "amount": 32,
                                          "rate": 1
                                        }
                                      }
                                    }
                                  ],
                                  "appliedReductions": [
                                    {
                                      "amount": {
                                        "absoluteWithTax": 100,
                                        "relative": 1
                                      },
                                      "category": "voucher",
                                      "type": "absolute"
                                    }
                                  ],
                                  "tax": {
                                    "vat": {
                                      "amount": 11
                                    }
                                  },
                                  "withTax": 1390,
                                  "withoutTax": 1168,
                                  "withTaxWithMembershipDiscountWithoutServiceCosts": 1337,
                                  "withoutTaxWithMembershipDiscount": 1234,
                                  "costCapture": 1390
                                },
                                "currencyCode": "EUR",
                                "customer": {
                                  "id": 9876,
                                  "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
                                },
                                "id": 123,
                                "invoicedAt": "2018-01-22T11:30:15+00:00",
                                "items": [
                                  {
                                    "id": 1,
                                    "availableQuantity": 20,
                                    "deliveryForecast": {
                                      "subsequentDelivery": {
                                        "key": "christmas"
                                      }
                                    },
                                    "legacyCustomData": {
                                      "key": "value"
                                    },
                                    "packageId": 1,
                                    "price": {
                                      "appliedReductions": [
                                        {
                                          "amount": {
                                            "absoluteWithTax": 100,
                                            "relative": 1
                                          },
                                          "category": "sale",
                                          "type": "relative"
                                        }
                                      ],
                                      "reference": {
                                        "size": "100",
                                        "unit": "ml",
                                        "withTax": 595
                                      },
                                      "tax": {
                                        "vat": {
                                          "amount": 190,
                                          "rate": 1
                                        }
                                      },
                                      "withTax": 1190,
                                      "withoutTax": 1000
                                    },
                                    "product": {
                                      "id": 123456,
                                      "referenceKey": "M0001-black"
                                    },
                                    "promotion": {
                                      "id": "649178aa530da10426f3f8d1",
                                      "name": "PromoABC",
                                      "version": "v1"
                                    },
                                    "key": "ac834d23e689u678",
                                    "reservationKey": "6nq69bzzkd5xufxliwg8",
                                    "status": "available",
                                    "variant": {
                                      "id": 7,
                                      "referenceKey": "M00012-black-M"
                                    },
                                    "warehouseId": 12345,
                                    "itemGroup": {
                                      "id": "ab123",
                                      "isMainItem": true,
                                      "isRequired": true
                                    },
                                    "campaignKey": "sale15",
                                    "merchant": {
                                      "referenceKey": "merchant-1"
                                    }
                                  }
                                ],
                                "legacyCustomData": {
                                  "score": {
                                    "generatedOn": "2018-05-20T19:45:15+00:00",
                                    "result": "green"
                                  }
                                },
                                "membershipDiscount": {
                                  "membershipCardId": 1,
                                  "pointsUsed": 1356,
                                  "reductionValue": 127,
                                  "tax": 0
                                },
                                "packages": [
                                  {
                                    "carrierKey": "dhl",
                                    "deliveryDate": {
                                      "maximum": "2018-02-05",
                                      "minimum": "2018-02-02"
                                    },
                                    "deliveryStatus": "open",
                                    "id": 1
                                  }
                                ],
                                "payment": [
                                  {
                                    "amount": 1190,
                                    "data": {
                                      "CCBrand": "VISA",
                                      "CCExpiry": "202005",
                                      "IPCity": "charlottenburg",
                                      "IPLatitude": "52.5151",
                                      "IPLongitude": "13.3053",
                                      "IPState": "berlin",
                                      "IPZone": "276",
                                      "IPZoneA2": "de"
                                    },
                                    "key": "computop_creditcard",
                                    "transactionKey": "creditcard-abcde"
                                  }
                                ],
                                "publicKey": "666",
                                "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
                                "shipping": {
                                  "policy": "least_packages"
                                },
                                "shopCountry": {
                                  "id": 1,
                                  "shopKey": "ay",
                                  "countryCode": "DE",
                                  "defaultLanguageCode": "de_DE",
                                  "supportedLanguageCodes": [
                                    "de_DE",
                                    "en_GB"
                                  ],
                                  "active": true,
                                  "deleted": false,
                                  "url": "www.example.com",
                                  "currencyCode": "EUR",
                                  "priceGroupKey": "myPriceGroup"
                                },
                                "status": "invoice_completed",
                                "detailedStatus": {
                                  "billing": {
                                    "code": "billing_payment_pending",
                                    "name": "Zahlung reserviert"
                                  },
                                  "order": {
                                    "code": "order_invoiced",
                                    "name": "Invoiced"
                                  },
                                  "shipping": {
                                    "code": "shipping_partially_returned",
                                    "name": "Teilweise Retoure"
                                  }
                                },
                                "vouchers": [
                                  {
                                    "applicableItems": [
                                      {
                                        "isApplied": true,
                                        "key": "a87ff679a2f3e71d9181a67b7542122c"
                                      }
                                    ],
                                    "code": "fashion2020",
                                    "id": 198234,
                                    "type": "absolute",
                                    "value": 1000
                                  }
                                ]
                              },
                              "items": [
                                {
                                  "id": 1,
                                  "availableQuantity": 20,
                                  "deliveryForecast": {
                                    "subsequentDelivery": {
                                      "key": "christmas"
                                    }
                                  },
                                  "legacyCustomData": {
                                    "key": "value"
                                  },
                                  "packageId": 1,
                                  "price": {
                                    "appliedReductions": [
                                      {
                                        "amount": {
                                          "absoluteWithTax": 100,
                                          "relative": 1
                                        },
                                        "category": "sale",
                                        "type": "relative"
                                      }
                                    ],
                                    "reference": {
                                      "size": "100",
                                      "unit": "ml",
                                      "withTax": 595
                                    },
                                    "tax": {
                                      "vat": {
                                        "amount": 190,
                                        "rate": 1
                                      }
                                    },
                                    "withTax": 1190,
                                    "withoutTax": 1000
                                  },
                                  "product": {
                                    "id": 123456,
                                    "referenceKey": "M0001-black"
                                  },
                                  "key": "ac834d23e689u678",
                                  "reservationKey": "6nq69bzzkd5xufxliwg8",
                                  "status": "available",
                                  "variant": {
                                    "id": 7,
                                    "referenceKey": "M00012-black-M"
                                  },
                                  "warehouseId": 12345,
                                  "itemGroup": {
                                    "id": "ab123",
                                    "isMainItem": true,
                                    "isRequired": true
                                  },
                                  "campaignKey": "sale15",
                                  "merchant": {
                                    "referenceKey": "merchant-1"
                                  }
                                }
                              ],
                              "shopCountry": {
                                "id": 1,
                                "shopKey": "ay",
                                "countryCode": "DE",
                                "defaultLanguageCode": "de_DE",
                                "supportedLanguageCodes": [
                                  "de_DE",
                                  "en_GB"
                                ],
                                "active": true,
                                "deleted": false,
                                "url": "www.example.com",
                                "currencyCode": "EUR",
                                "priceGroupKey": "myPriceGroup"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Orders"
                ],
                "responses": {
                  "200": {
                    "description": "Order item unshippable event is received"
                  }
                }
              }
            }
          },
          "order-package-shipped": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchOrderPackageShippedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/OrderItemEvent"
                      },
                      "examples": {
                        "Order Package Shipped Event": {
                          "value": {
                            "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                            "meta": {
                              "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
                            },
                            "occurredAt": "2019-08-09T15:01:26+00:00",
                            "type": "order-package-shipped",
                            "payload": {
                              "order": {
                                "address": {
                                  "billing": {
                                    "id": 998,
                                    "referenceKey": "my-key",
                                    "street": "Street",
                                    "houseNumber": "1",
                                    "additional": "erste Stock",
                                    "zipCode": "123456",
                                    "city": "Hamburg",
                                    "countryCode": "DEU",
                                    "collectionPoint": {
                                      "customerKey": "bced-234-234",
                                      "description": "Kiosk",
                                      "key": "12345-a",
                                      "type": "hermes_parcelshop"
                                    },
                                    "isDefault": {
                                      "billing": false,
                                      "shipping": true
                                    },
                                    "recipient": {
                                      "firstName": "John",
                                      "gender": "m",
                                      "lastName": "Doe",
                                      "title": "Prof."
                                    }
                                  },
                                  "forward": {
                                    "id": 998,
                                    "referenceKey": "my-key",
                                    "street": "Street",
                                    "houseNumber": "1",
                                    "additional": "erste Stock",
                                    "zipCode": "123456",
                                    "city": "Hamburg",
                                    "countryCode": "DEU",
                                    "collectionPoint": {
                                      "customerKey": "bced-234-234",
                                      "description": "Kiosk",
                                      "key": "12345-a",
                                      "type": "hermes_parcelshop"
                                    },
                                    "isDefault": {
                                      "billing": false,
                                      "shipping": true
                                    },
                                    "recipient": {
                                      "firstName": "John",
                                      "gender": "m",
                                      "lastName": "Doe",
                                      "title": "Prof."
                                    }
                                  },
                                  "shipping": {
                                    "id": 998,
                                    "referenceKey": "my-key",
                                    "street": "Street",
                                    "houseNumber": "1",
                                    "additional": "erste Stock",
                                    "zipCode": "123456",
                                    "city": "Hamburg",
                                    "countryCode": "DEU",
                                    "collectionPoint": {
                                      "customerKey": "bced-234-234",
                                      "description": "Kiosk",
                                      "key": "12345-a",
                                      "type": "hermes_parcelshop"
                                    },
                                    "isDefault": {
                                      "billing": false,
                                      "shipping": true
                                    },
                                    "recipient": {
                                      "firstName": "John",
                                      "gender": "m",
                                      "lastName": "Doe",
                                      "title": "Prof."
                                    }
                                  }
                                },
                                "basketKey": "basket-c6v7k4eer1",
                                "confirmedAt": "2018-01-20T11:30:15+00:00",
                                "contacts": [
                                  {
                                    "type": "carrier",
                                    "value": "+385 95 677 8888"
                                  }
                                ],
                                "cost": {
                                  "appliedFees": [
                                    {
                                      "amount": {
                                        "withTax": 200,
                                        "withoutTax": 168
                                      },
                                      "category": "delivery",
                                      "key": "hermes",
                                      "option": "express",
                                      "tax": {
                                        "vat": {
                                          "amount": 32,
                                          "rate": 1
                                        }
                                      }
                                    }
                                  ],
                                  "appliedReductions": [
                                    {
                                      "amount": {
                                        "absoluteWithTax": 100,
                                        "relative": 1
                                      },
                                      "category": "voucher",
                                      "type": "absolute"
                                    }
                                  ],
                                  "tax": {
                                    "vat": {
                                      "amount": 11
                                    }
                                  },
                                  "withTax": 1390,
                                  "withoutTax": 1168,
                                  "withTaxWithMembershipDiscountWithoutServiceCosts": 1337,
                                  "withoutTaxWithMembershipDiscount": 1234,
                                  "costCapture": 1390
                                },
                                "currencyCode": "EUR",
                                "customer": {
                                  "id": 9876,
                                  "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
                                },
                                "id": 123,
                                "invoicedAt": "2018-01-22T11:30:15+00:00",
                                "items": [
                                  {
                                    "id": 1,
                                    "availableQuantity": 20,
                                    "deliveryForecast": {
                                      "subsequentDelivery": {
                                        "key": "christmas"
                                      }
                                    },
                                    "legacyCustomData": {
                                      "key": "value"
                                    },
                                    "packageId": 1,
                                    "price": {
                                      "appliedReductions": [
                                        {
                                          "amount": {
                                            "absoluteWithTax": 100,
                                            "relative": 1
                                          },
                                          "category": "sale",
                                          "type": "relative"
                                        }
                                      ],
                                      "reference": {
                                        "size": "100",
                                        "unit": "ml",
                                        "withTax": 595
                                      },
                                      "tax": {
                                        "vat": {
                                          "amount": 190,
                                          "rate": 1
                                        }
                                      },
                                      "withTax": 1190,
                                      "withoutTax": 1000
                                    },
                                    "product": {
                                      "id": 123456,
                                      "referenceKey": "M0001-black"
                                    },
                                    "promotion": {
                                      "id": "649178aa530da10426f3f8d1",
                                      "name": "PromoABC",
                                      "version": "v1"
                                    },
                                    "key": "ac834d23e689u678",
                                    "reservationKey": "6nq69bzzkd5xufxliwg8",
                                    "status": "available",
                                    "variant": {
                                      "id": 7,
                                      "referenceKey": "M00012-black-M"
                                    },
                                    "warehouseId": 12345,
                                    "itemGroup": {
                                      "id": "ab123",
                                      "isMainItem": true,
                                      "isRequired": true
                                    },
                                    "campaignKey": "sale15",
                                    "merchant": {
                                      "referenceKey": "merchant-1"
                                    }
                                  }
                                ],
                                "legacyCustomData": {
                                  "score": {
                                    "generatedOn": "2018-05-20T19:45:15+00:00",
                                    "result": "green"
                                  }
                                },
                                "membershipDiscount": {
                                  "membershipCardId": 1,
                                  "pointsUsed": 1356,
                                  "reductionValue": 127,
                                  "tax": 0
                                },
                                "packages": [
                                  {
                                    "carrierKey": "dhl",
                                    "deliveryDate": {
                                      "maximum": "2018-02-05",
                                      "minimum": "2018-02-02"
                                    },
                                    "deliveryStatus": "open",
                                    "returnIdentCode": "100-1",
                                    "id": 1
                                  }
                                ],
                                "payment": [
                                  {
                                    "amount": 1190,
                                    "data": {
                                      "CCBrand": "VISA",
                                      "CCExpiry": "202005",
                                      "IPCity": "charlottenburg",
                                      "IPLatitude": "52.5151",
                                      "IPLongitude": "13.3053",
                                      "IPState": "berlin",
                                      "IPZone": "276",
                                      "IPZoneA2": "de"
                                    },
                                    "key": "computop_creditcard",
                                    "transactionKey": "creditcard-abcde"
                                  }
                                ],
                                "publicKey": "666",
                                "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
                                "shipping": {
                                  "policy": "least_packages"
                                },
                                "shopCountry": {
                                  "id": 1,
                                  "shopKey": "ay",
                                  "countryCode": "DE",
                                  "defaultLanguageCode": "de_DE",
                                  "supportedLanguageCodes": [
                                    "de_DE",
                                    "en_GB"
                                  ],
                                  "active": true,
                                  "deleted": false,
                                  "url": "www.example.com",
                                  "currencyCode": "EUR",
                                  "priceGroupKey": "myPriceGroup"
                                },
                                "status": "invoice_completed",
                                "detailedStatus": {
                                  "billing": {
                                    "code": "billing_payment_pending",
                                    "name": "Zahlung reserviert"
                                  },
                                  "order": {
                                    "code": "order_invoiced",
                                    "name": "Invoiced"
                                  },
                                  "shipping": {
                                    "code": "shipping_partially_returned",
                                    "name": "Teilweise Retoure"
                                  }
                                },
                                "vouchers": [
                                  {
                                    "applicableItems": [
                                      {
                                        "isApplied": true,
                                        "key": "a87ff679a2f3e71d9181a67b7542122c"
                                      }
                                    ],
                                    "code": "fashion2020",
                                    "id": 198234,
                                    "type": "absolute",
                                    "value": 1000
                                  }
                                ]
                              },
                              "items": [
                                {
                                  "id": 1,
                                  "availableQuantity": 20,
                                  "deliveryForecast": {
                                    "subsequentDelivery": {
                                      "key": "christmas"
                                    }
                                  },
                                  "legacyCustomData": {
                                    "key": "value"
                                  },
                                  "packageId": 1,
                                  "price": {
                                    "appliedReductions": [
                                      {
                                        "amount": {
                                          "absoluteWithTax": 100,
                                          "relative": 1
                                        },
                                        "category": "sale",
                                        "type": "relative"
                                      }
                                    ],
                                    "reference": {
                                      "size": "100",
                                      "unit": "ml",
                                      "withTax": 595
                                    },
                                    "tax": {
                                      "vat": {
                                        "amount": 190,
                                        "rate": 1
                                      }
                                    },
                                    "withTax": 1190,
                                    "withoutTax": 1000
                                  },
                                  "product": {
                                    "id": 123456,
                                    "referenceKey": "M0001-black"
                                  },
                                  "key": "ac834d23e689u678",
                                  "reservationKey": "6nq69bzzkd5xufxliwg8",
                                  "status": "available",
                                  "variant": {
                                    "id": 7,
                                    "referenceKey": "M00012-black-M"
                                  },
                                  "warehouseId": 12345,
                                  "itemGroup": {
                                    "id": "ab123",
                                    "isMainItem": true,
                                    "isRequired": true
                                  },
                                  "campaignKey": "sale15",
                                  "merchant": {
                                    "referenceKey": "merchant-1"
                                  }
                                }
                              ],
                              "shopCountry": {
                                "id": 1,
                                "shopKey": "ay",
                                "countryCode": "DE",
                                "defaultLanguageCode": "de_DE",
                                "supportedLanguageCodes": [
                                  "de_DE",
                                  "en_GB"
                                ],
                                "active": true,
                                "deleted": false,
                                "url": "www.example.com",
                                "currencyCode": "EUR",
                                "priceGroupKey": "myPriceGroup"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Orders"
                ],
                "responses": {
                  "200": {
                    "description": "Order package shipped event is received"
                  }
                }
              }
            }
          },
          "order-package-undeliverable": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchOrderPackageUndeliverableEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/OrderItemEvent"
                      },
                      "examples": {
                        "Order Package Undeliverable Event": {
                          "$ref": "#/components/examples/OrderPackageUndeliverableEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Orders"
                ],
                "responses": {
                  "200": {
                    "description": "Order package undeliverable event is received"
                  }
                }
              }
            }
          },
          "product-updated": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchProductUpdatedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/ProductEvent"
                      },
                      "examples": {
                        "Product Updated Event": {
                          "value": {
                            "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                            "meta": {
                              "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
                            },
                            "occurredAt": "2020-07-23T11:30:58+00:00",
                            "type": "product-updated",
                            "payload": {
                              "id": 9,
                              "referenceKey": "M00012-black",
                              "state": "live",
                              "master": {
                                "referenceKey": "M00012",
                                "categories": {
                                  "isLocked": false,
                                  "paths": [
                                    [
                                      "Fashion",
                                      "Men",
                                      "Shirts"
                                    ]
                                  ]
                                },
                                "attributes": [
                                  {
                                    "name": "sleeve_length",
                                    "type": "localizedString",
                                    "value": {
                                      "de_DE": "Langarm",
                                      "en_GB": "long-sleeved"
                                    },
                                    "isLocked": false
                                  }
                                ]
                              },
                              "name": {
                                "de_DE": "Blaues Shirt",
                                "en_GB": "Blue Shirt"
                              },
                              "attributes": [
                                {
                                  "name": "color",
                                  "type": "localizedStringList",
                                  "value": [
                                    {
                                      "de_DE": "blau",
                                      "en_GB": "blue"
                                    },
                                    {
                                      "de_DE": "schwarz",
                                      "en_GB": "black"
                                    }
                                  ]
                                }
                              ],
                              "variants": [
                                {
                                  "id": 7,
                                  "referenceKey": "M00012-black-M",
                                  "merchantReferenceKeys": [
                                    "merchant-1",
                                    "merchant-2"
                                  ],
                                  "attributes": [
                                    {
                                      "name": "size",
                                      "type": "simple",
                                      "value": "M"
                                    }
                                  ]
                                }
                              ],
                              "images": [
                                {
                                  "id": 13,
                                  "name": "images/084dace7d7ff691e97982fa554113c29",
                                  "assetUrl": "images/084dace7d7ff691e97982fa554113c29",
                                  "mimeType": "image/jpeg",
                                  "position": 0,
                                  "attributes": [
                                    {
                                      "name": "view",
                                      "type": "simple",
                                      "value": "front",
                                      "isLocked": false
                                    }
                                  ]
                                },
                                {
                                  "id": 14,
                                  "name": "images/f829b914fc47cfc9c0747c119c27cf1b",
                                  "assetUrl": "images/f829b914fc47cfc9c0747c119c27cf1b",
                                  "mimeType": "image/png",
                                  "position": 1,
                                  "attributes": [
                                    {
                                      "name": "view",
                                      "type": "simple",
                                      "value": "back",
                                      "isLocked": false
                                    }
                                  ]
                                }
                              ],
                              "customData": {
                                "isValid": true,
                                "name": "ayou",
                                "score": 100,
                                "some-json": {
                                  "de_DE": {
                                    "color": "weiss"
                                  },
                                  "en_GB": {
                                    "color": "white"
                                  }
                                }
                              },
                              "merchantReferenceKeys": [
                                "merchant-1",
                                "merchant-2"
                              ]
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Products"
                ],
                "responses": {
                  "200": {
                    "description": "Product updated event is received"
                  }
                }
              }
            }
          },
          "product-deleted": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchProductDeletedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/ProductEvent"
                      },
                      "examples": {
                        "Product Deleted Event": {
                          "value": {
                            "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                            "meta": {
                              "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
                            },
                            "occurredAt": "2020-07-23T11:30:58+00:00",
                            "type": "product-deleted",
                            "payload": {
                              "id": 9,
                              "referenceKey": "M00012-black",
                              "state": "live",
                              "master": {
                                "referenceKey": "M00012",
                                "categories": {
                                  "isLocked": false,
                                  "paths": [
                                    [
                                      "Fashion",
                                      "Men",
                                      "Shirts"
                                    ]
                                  ]
                                },
                                "attributes": [
                                  {
                                    "name": "sleeve_length",
                                    "type": "localizedString",
                                    "value": {
                                      "de_DE": "Langarm",
                                      "en_GB": "long-sleeved"
                                    },
                                    "isLocked": false
                                  }
                                ]
                              },
                              "name": {
                                "de_DE": "Blaues Shirt",
                                "en_GB": "Blue Shirt"
                              },
                              "attributes": [
                                {
                                  "name": "color",
                                  "type": "localizedStringList",
                                  "value": [
                                    {
                                      "de_DE": "blau",
                                      "en_GB": "blue"
                                    },
                                    {
                                      "de_DE": "schwarz",
                                      "en_GB": "black"
                                    }
                                  ]
                                }
                              ],
                              "variants": [
                                {
                                  "id": 7,
                                  "referenceKey": "M00012-black-M",
                                  "merchantReferenceKeys": [
                                    "merchant-1",
                                    "merchant-2"
                                  ],
                                  "attributes": [
                                    {
                                      "name": "size",
                                      "type": "simple",
                                      "value": "M"
                                    }
                                  ]
                                }
                              ],
                              "images": [
                                {
                                  "id": 13,
                                  "name": "images/084dace7d7ff691e97982fa554113c29",
                                  "assetUrl": "images/084dace7d7ff691e97982fa554113c29",
                                  "mimeType": "image/jpeg",
                                  "position": 0,
                                  "attributes": [
                                    {
                                      "name": "view",
                                      "type": "simple",
                                      "value": "front",
                                      "isLocked": false
                                    }
                                  ]
                                },
                                {
                                  "id": 14,
                                  "name": "images/f829b914fc47cfc9c0747c119c27cf1b",
                                  "assetUrl": "images/f829b914fc47cfc9c0747c119c27cf1b",
                                  "mimeType": "image/png",
                                  "position": 1,
                                  "attributes": [
                                    {
                                      "name": "view",
                                      "type": "simple",
                                      "value": "back",
                                      "isLocked": false
                                    }
                                  ]
                                }
                              ],
                              "customData": {
                                "isValid": true,
                                "name": "ayou",
                                "score": 100,
                                "some-json": {
                                  "de_DE": {
                                    "color": "weiss"
                                  },
                                  "en_GB": {
                                    "color": "white"
                                  }
                                }
                              },
                              "merchantReferenceKeys": [
                                "merchant-1",
                                "merchant-2"
                              ]
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Products"
                ],
                "responses": {
                  "200": {
                    "description": "Product delete event is received"
                  }
                }
              }
            }
          },
          "product-master-updated": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchProductMasterUpdatedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/ProductMasterUpdatedEvent"
                      },
                      "example": {
                        "Product Master Update Event": {
                          "$ref": "#/components/examples/ProductMasterUpdatedEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "ProductMaster"
                ],
                "responses": {
                  "200": {
                    "description": "Product master update event is received."
                  }
                }
              }
            }
          },
          "product-variant-availability-updated": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchProductVariantAvailabilityUpdatedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/ProductVariantAvailabilityEvent"
                      },
                      "examples": {
                        "Product Variant Availability Updated Event": {
                          "value": {
                            "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                            "meta": {
                              "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
                            },
                            "occurredAt": "2019-08-09T15:01:26+00:00",
                            "type": "product-variant-availability-updated",
                            "payload": {
                              "productVariant": {
                                "id": 1,
                                "referenceKey": "4711"
                              },
                              "product": {
                                "id": 1,
                                "referenceKey": "M0001"
                              },
                              "availabilities": [
                                {
                                  "shopCountry": {
                                    "id": 123,
                                    "shopKey": "AY",
                                    "countryCode": "de"
                                  },
                                  "available": true
                                }
                              ],
                              "merchantReferenceKey": "merchant-1"
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Product Variants"
                ],
                "responses": {
                  "200": {
                    "description": "Product variant availability updated event is received"
                  }
                }
              }
            }
          },
          "product-variant-deleted": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchProductVariantDeletedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "x-ignore": true,
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/OrderEvent/allOf/0"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "payload": {
                                "$ref": "#/components/schemas/ProductVariant"
                              }
                            }
                          }
                        ]
                      },
                      "examples": {
                        "Product variant deleted event": {
                          "value": {
                            "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                            "meta": {
                              "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
                            },
                            "occurredAt": "2020-07-23T11:30:58+00:00",
                            "type": "product-variant-deleted",
                            "payload": {
                              "id": 7,
                              "referenceKey": "M00012-black-M",
                              "merchantReferenceKeys": [
                                "merchant-1",
                                "merchant-2"
                              ],
                              "attributes": [
                                {
                                  "name": "size",
                                  "type": "simple",
                                  "value": "M"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Product Variants"
                ],
                "responses": {
                  "200": {
                    "description": "Product variant deleted event is received."
                  }
                }
              }
            }
          },
          "product-variant-prices-updated": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchProductVariantPricesUpdatedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/PriceEvent"
                      },
                      "examples": {
                        "Price Updated Event": {
                          "value": {
                            "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                            "meta": {
                              "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
                            },
                            "occurredAt": "2020-07-23T11:30:58+00:00",
                            "type": "product-variant-prices-updated",
                            "payload": {
                              "productVariant": {
                                "id": 1,
                                "referenceKey": "4711"
                              },
                              "product": {
                                "id": 1,
                                "referenceKey": "M0001"
                              },
                              "prices": [
                                {
                                  "key": "my-price-key",
                                  "price": 9999,
                                  "oldPrice": null,
                                  "tax": 19,
                                  "countryCode": "DE",
                                  "currencyCode": "EUR",
                                  "groupKey": "myGroupKey",
                                  "promotionKey": "myPromotionKey",
                                  "unitPrice": {
                                    "unit": "ml",
                                    "amount": 100,
                                    "price": 399
                                  },
                                  "validFrom": "2021-09-23T11:30:58+00:00",
                                  "validTo": null,
                                  "merchantReferenceKey": "merchant-1"
                                }
                              ],
                              "merchantReferenceKey": "merchant-1"
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Product Variants"
                ],
                "responses": {
                  "200": {
                    "description": "Price updated event is received"
                  }
                }
              }
            }
          },
          "shop-category-tree-updated": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchShopCategoryTreeUpdatedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/ShopCategoryTreeEvent"
                      },
                      "examples": {
                        "Shop Category Tree Updated Event": {
                          "value": {
                            "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                            "meta": {
                              "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
                            },
                            "occurredAt": "2019-08-09T15:01:26+00:00",
                            "type": "shop-category-tree-updated",
                            "payload": {
                              "shop": {
                                "id": 1,
                                "key": "ay"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Shop Categories"
                ],
                "responses": {
                  "200": {
                    "description": "Shop category tree updated event is received"
                  }
                }
              }
            }
          },
          "product-variant-stock-updated": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchProductVariantStockUpdatedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/ProductVariantStockEvent"
                      },
                      "examples": {
                        "Product variant stock updated event": {
                          "$ref": "#/components/examples/ProductVariantStockUpdatedEvent"
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Product Variants"
                ],
                "responses": {
                  "200": {
                    "description": "Product variant stock update event is received."
                  }
                }
              }
            }
          },
          "newsletter-subscribed": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchNewsletterSubscribedEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/OrderEvent/allOf/0"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "payload": {
                                "type": "object",
                                "required": [
                                  "channel",
                                  "customer"
                                ],
                                "properties": {
                                  "channel": {
                                    "type": "string"
                                  },
                                  "customer": {
                                    "$ref": "#/components/schemas/Customer"
                                  },
                                  "text": {
                                    "type": "string"
                                  },
                                  "shopCountry": {
                                    "$ref": "#/components/schemas/ShopCountry"
                                  }
                                }
                              }
                            }
                          }
                        ]
                      },
                      "examples": {
                        "Newsletter Subscribed Event": {
                          "value": {
                            "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                            "meta": {
                              "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
                            },
                            "occurredAt": "2019-08-09T15:01:26+00:00",
                            "type": "customer-password-reset",
                            "payload": {
                              "channel": "email",
                              "customer": {
                                "id": 1,
                                "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
                                "firstName": "John",
                                "lastName": "Doe",
                                "gender": "m",
                                "birthDate": "1980-01-01",
                                "email": "john.doe@example.com",
                                "phone": "0049/1234567890",
                                "publicKey": "customer-1234",
                                "title": "Prof.",
                                "type": "personal",
                                "groups": [
                                  "employee"
                                ],
                                "status": {
                                  "isActive": true,
                                  "isGuestCustomer": false
                                },
                                "company": {
                                  "id": 1,
                                  "name": "default"
                                },
                                "addresses": [
                                  {
                                    "id": 998,
                                    "referenceKey": "my-key",
                                    "street": "Street",
                                    "houseNumber": "1",
                                    "additional": "erste Stock",
                                    "zipCode": "123456",
                                    "city": "Hamburg",
                                    "countryCode": "DEU",
                                    "collectionPoint": {
                                      "customerKey": "bced-234-234",
                                      "description": "Kiosk",
                                      "key": "12345-a",
                                      "type": "hermes_parcelshop"
                                    },
                                    "isDefault": {
                                      "billing": false,
                                      "shipping": true
                                    },
                                    "recipient": {
                                      "firstName": "John",
                                      "gender": "m",
                                      "lastName": "Doe",
                                      "title": "Prof."
                                    }
                                  }
                                ],
                                "legacyCustomData": {
                                  "score": {
                                    "generatedOn": "2018-05-20T19:45:15+00:00",
                                    "result": "green"
                                  }
                                }
                              },
                              "text": "Ich möchte zukünftig über aktuelle Trends, Angebote und Gutscheine per E-Mail informiert werden. Eine Abmeldung ist jederzeit kostenlos möglich.",
                              "shopCountry": {
                                "id": 1,
                                "shopKey": "ay",
                                "countryCode": "DE",
                                "defaultLanguageCode": "de_DE",
                                "supportedLanguageCodes": [
                                  "de_DE",
                                  "en_GB"
                                ],
                                "active": true,
                                "deleted": false,
                                "url": "www.example.com",
                                "currencyCode": "EUR",
                                "priceGroupKey": "myPriceGroup"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Newsletter"
                ],
                "responses": {
                  "200": {
                    "description": "Newsletter subscription event is received"
                  }
                }
              }
            }
          },
          "payment-refund": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchPaymentRefundEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/PaymentEvent"
                      },
                      "example": {
                        "Payment refund event": {
                          "value": {
                            "key": "513a393d-87b0-44b8-a11c-43cf9dd47e46",
                            "meta": {
                              "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
                            },
                            "occurredAt": "2024-06-26T15:46:17+00:00",
                            "payload": {
                              "id": 123,
                              "address": {
                                "billing": {
                                  "id": 998,
                                  "additional": "c/o AboutYou",
                                  "city": "Hamburg",
                                  "countryCode": "DEU",
                                  "houseNumber": "12",
                                  "isDefault": {
                                    "billing": false,
                                    "shipping": false
                                  },
                                  "phone": "089999123",
                                  "recipient": {
                                    "firstName": "Anna",
                                    "gender": "m",
                                    "lastName": "Fohlmeister",
                                    "type": "personal"
                                  },
                                  "referenceKey": "address-7656",
                                  "state": "Sachsen",
                                  "street": "Wolfgangsweg",
                                  "zipCode": "20459",
                                  "createdAt": "2018-01-20T09:30:15+00:00",
                                  "updatedAt": "2018-01-20T09:30:15+00:00"
                                },
                                "forward": {
                                  "additional": "c/o AboutYou",
                                  "city": "Hamburg",
                                  "countryCode": "DEU",
                                  "houseNumber": "12",
                                  "recipient": {
                                    "firstName": "Anna",
                                    "gender": "m",
                                    "lastName": "Fohlmeister",
                                    "type": "personal"
                                  },
                                  "state": "Sachsen",
                                  "street": "Wolfgangsweg",
                                  "zipCode": "20459",
                                  "createdAt": "2018-11-29T05:20:13+00:00",
                                  "updatedAt": "2018-11-29T05:20:13+00:00"
                                },
                                "shipping": {
                                  "id": 998,
                                  "city": "Hamburg",
                                  "collectionPoint": {
                                    "customerKey": "bced-234-234",
                                    "description": "Pedro's Kiosk",
                                    "key": "12345-a",
                                    "type": "hermes_parcelshop"
                                  },
                                  "countryCode": "DEU",
                                  "houseNumber": "10",
                                  "isDefault": {
                                    "billing": false,
                                    "shipping": true
                                  },
                                  "phone": "089999123",
                                  "recipient": {
                                    "firstName": "Anna",
                                    "gender": "m",
                                    "lastName": "Fohlmeister",
                                    "type": "personal"
                                  },
                                  "referenceKey": "address-7656",
                                  "state": "Sachsen",
                                  "street": "Domstrasse",
                                  "zipCode": "20459",
                                  "createdAt": "2018-01-20T09:30:15+00:00",
                                  "updatedAt": "2018-01-20T09:30:15+00:00"
                                }
                              },
                              "transaction": {
                                "transactionId": "b2b_66cf331e44f17",
                                "operationStatus": "successful"
                              },
                              "basketKey": "basket-c6v7k4eer1",
                              "confirmedAt": "2018-01-20T11:30:15+00:00",
                              "cost": {
                                "appliedReductions": [
                                  {
                                    "amount": {
                                      "absoluteWithTax": 100,
                                      "relative": 0.5
                                    },
                                    "category": "voucher",
                                    "code": "ayou123",
                                    "displayName": "ayou123",
                                    "type": "absolute"
                                  }
                                ],
                                "costCapture": 1390,
                                "itemGroups": {
                                  "1234567": {
                                    "brutto": 1190,
                                    "bruttoDiscount": 0,
                                    "bruttoDiscountWithoutMainProduct": 0,
                                    "bruttoWithoutMainProduct": 1190,
                                    "netto": 1000,
                                    "nettoWithoutMainProduct": 1000,
                                    "tax": 190,
                                    "taxWithoutMainProduct": 190
                                  }
                                },
                                "tax": {},
                                "withoutTax": 1000,
                                "withoutTaxWithMembershipDiscount": 1234,
                                "withTax": 1190,
                                "withTaxWithMembershipDiscountWithoutServiceCosts": 1337
                              },
                              "currencyCode": "EUR",
                              "customer": {
                                "id": 9876,
                                "authentication": {
                                  "type": "password"
                                },
                                "birthDate": "1981-02-02",
                                "customData": {
                                  "isVip": true
                                },
                                "email": "anna.fohlmeister@project-collins.com",
                                "firstName": "Anna",
                                "gender": "f",
                                "groups": [
                                  "employee",
                                  "vip"
                                ],
                                "ipAddress": "172.19.0.2",
                                "lastName": "Fohlmeister",
                                "phone": "0049/1234567890",
                                "publicKey": "customer-1234",
                                "referenceKey": "customer-1234",
                                "status": {
                                  "isActive": true,
                                  "isGuestCustomer": false,
                                  "isTestCustomer": false
                                },
                                "title": "Madam",
                                "type": "retail",
                                "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36",
                                "createdAt": "2018-01-20T09:30:15+00:00",
                                "updatedAt": "2018-01-20T09:30:15+00:00"
                              },
                              "detailedStatus": {
                                "billing": {
                                  "code": "billing_payment_pending",
                                  "name": "Zahlung reserviert"
                                },
                                "order": {
                                  "code": "invoice_completed",
                                  "name": "Invoiced"
                                },
                                "shipping": {
                                  "code": "shipping_partially_returned",
                                  "name": "Teilweise Retoure"
                                }
                              },
                              "invoicedAt": "2018-01-22T11:30:15+00:00",
                              "items": [
                                {
                                  "availableQuantity": 18,
                                  "campaignKey": "fooCampaign",
                                  "customData": {
                                    "key": "value"
                                  },
                                  "deliveryForecast": {
                                    "subsequentDelivery": {
                                      "key": "christmas"
                                    }
                                  },
                                  "isManuallyReturnedByCci": true,
                                  "itemGroup": {
                                    "id": "ab123",
                                    "isMainItem": true,
                                    "isRequired": true
                                  },
                                  "key": "ac834d23e689u678",
                                  "lowestPriorPrice": {
                                    "relativeDifferenceToPrice": -0.25,
                                    "withTax": 1000
                                  },
                                  "packageId": 1,
                                  "price": {
                                    "appliedReductions": [
                                      {
                                        "amount": {
                                          "absoluteWithTax": 100,
                                          "relative": 0.5
                                        },
                                        "category": "sale",
                                        "code": "ayou123",
                                        "type": "relative"
                                      },
                                      {
                                        "amount": {
                                          "absoluteWithTax": 800,
                                          "relative": 0.4
                                        },
                                        "category": "promotion",
                                        "type": "absolute"
                                      }
                                    ],
                                    "overrideWithoutTax": 1357,
                                    "overrideWithTax": 1675,
                                    "reference": {
                                      "size": "100",
                                      "unit": "ml",
                                      "withTax": 595
                                    },
                                    "tax": {
                                      "vat": {
                                        "amount": 190,
                                        "rate": 0.19
                                      }
                                    },
                                    "undiscountedWithOutTax": 1000,
                                    "undiscountedWithTax": 1190,
                                    "withoutTax": 1000,
                                    "withTax": 1190
                                  },
                                  "product": {
                                    "id": 4564545,
                                    "advancedAttributes": {
                                      "materialCompositionTextile": {
                                        "key": "materialCompositionTextile",
                                        "label": "Materialzusammensetzung",
                                        "values": [
                                          {
                                            "fieldSet": [
                                              [
                                                {
                                                  "value": "Lining"
                                                }
                                              ]
                                            ],
                                            "groupSet": [
                                              {
                                                "fieldSet": [
                                                  [
                                                    {
                                                      "value": 80
                                                    },
                                                    {
                                                      "unit": "%"
                                                    },
                                                    {
                                                      "material": "Cotton"
                                                    }
                                                  ]
                                                ],
                                                "groupSet": []
                                              }
                                            ]
                                          }
                                        ]
                                      }
                                    },
                                    "attributes": {
                                      "description": {
                                        "key": "description",
                                        "label": "Beschreibung",
                                        "values": [
                                          {
                                            "id": 1234,
                                            "label": "A descriptive string (possibly including HTML)",
                                            "value": "Optional value"
                                          }
                                        ]
                                      }
                                    },
                                    "categories": [
                                      [
                                        {
                                          "categoryId": 20201,
                                          "categoryName": "Frauen",
                                          "categoryProperties": {
                                            "priority": {
                                              "name": "priority",
                                              "value": "1"
                                            }
                                          },
                                          "categoryUrl": "/frauen"
                                        }
                                      ]
                                    ],
                                    "definingAttributes": [
                                      {
                                        "key": "color",
                                        "label": "Farbe"
                                      }
                                    ],
                                    "images": [
                                      {
                                        "attributes": {
                                          "description": {
                                            "key": "description",
                                            "label": "Beschreibung",
                                            "values": [
                                              {
                                                "label": "A descriptive string (possibly including HTML)"
                                              }
                                            ]
                                          }
                                        },
                                        "hash": "9f6c628a98106dcce2bc5a4ac1de9c14"
                                      }
                                    ],
                                    "masterKey": "480306626-1",
                                    "name": "Chelsea Boots",
                                    "createdAt": "2018-01-20T09:30:15+00:00",
                                    "updatedAt": "2018-01-20T09:30:15+00:00"
                                  },
                                  "promotion": {
                                    "id": "649178aa530da10426f3f8d1",
                                    "code": "PROMO0124",
                                    "displayName": "Winter sales 2024",
                                    "name": "PromoABC",
                                    "version": "649178aa530da10426f3f8d2"
                                  },
                                  "status": "available",
                                  "variant": {
                                    "id": 1234567,
                                    "attributes": {
                                      "vendorSize": {
                                        "key": "vendorSize",
                                        "label": "Größe",
                                        "values": [
                                          {
                                            "id": 25472,
                                            "label": "34",
                                            "value": "Thirty Four"
                                          }
                                        ]
                                      }
                                    },
                                    "referenceKey": "563843898",
                                    "stock": {
                                      "customData": {},
                                      "deliveryForecast": {
                                        "deliverable": "directShipping",
                                        "subsequentDelivery": "christmas"
                                      },
                                      "isSellableWithoutStock": false,
                                      "quantity": 18,
                                      "supplierId": 271
                                    },
                                    "createdAt": "2018-01-20T09:30:15+00:00",
                                    "updatedAt": "2018-01-20T09:30:15+00:00"
                                  },
                                  "warehouseId": 123456,
                                  "warehousePackageGroupId": 1,
                                  "createdAt": "2018-01-20T09:30:15+00:00",
                                  "updatedAt": "2018-01-20T09:30:15+00:00"
                                }
                              ],
                              "membershipDiscount": {
                                "membershipCardId": 1,
                                "pointsUsed": 1356,
                                "reductionValue": 127,
                                "tax": 0
                              },
                              "packages": [
                                {
                                  "id": 1,
                                  "carrierKey": "dhl",
                                  "deliveryDate": {
                                    "maximum": "2018-02-05",
                                    "minimum": "2018-02-02"
                                  },
                                  "deliveryStatus": "open",
                                  "hasExpectedAvailabilityAt": false,
                                  "returnIdentCode": "123-123",
                                  "shipmentKey": "shpmnt-123",
                                  "tracking": {
                                    "id": "79003131200523",
                                    "url": "https://tracking.hermesworld.com/?TrackID=79003131200523"
                                  }
                                }
                              ],
                              "payment": [
                                {
                                  "key": "computop_maestro",
                                  "amount": 1190,
                                  "data": {
                                    "creditCardBrand": "Maestro",
                                    "PayID": "12a6453e09876ca12ba857c11dec741b",
                                    "success": true,
                                    "transaction_id": "ayro-1234-4234234234-12345",
                                    "type": "Maestro",
                                    "UserData": {
                                      "requestToken": "28fyQ4zGfL9Pk"
                                    },
                                    "XID": [
                                      "a232cb32df28790a8b726ed66f8b928a"
                                    ]
                                  },
                                  "transactionKey": "ayro-1234-4234234234-12345",
                                  "isGiftCard": false,
                                  "items": [
                                    {
                                      "brand": null,
                                      "bruttoDiscount": 0,
                                      "description": null,
                                      "descriptionAddition": "mischfarben",
                                      "merchantProductId": null,
                                      "nettoPrice": 1400,
                                      "orderProductId": 1,
                                      "price": 1400,
                                      "quantity": 1,
                                      "tax": 0,
                                      "undiscountedUnitPrice": 1400,
                                      "unitPrice": 1400,
                                      "unitPriceWithoutTaxWithVoucher": 1400,
                                      "unitTaxValueWithVoucher": 0,
                                      "variantId": 1,
                                      "voucherCode": ""
                                    }
                                  ]
                                }
                              ],
                              "promotions": [
                                {
                                  "id": "659d4e0cc9f5f7c3c7ba3728",
                                  "code": "test",
                                  "displayName": "test",
                                  "reduction": 123123,
                                  "version": "659d4e0cc9f5f7c3c7ba3728"
                                }
                              ],
                              "shopCountry": {
                                "id": 1,
                                "shopKey": "ay",
                                "countryCode": "DE",
                                "defaultLanguageCode": "de_DE",
                                "supportedLanguageCodes": [
                                  "de_DE",
                                  "en_GB"
                                ],
                                "active": true,
                                "deleted": false,
                                "url": "www.example.com",
                                "currencyCode": "EUR",
                                "priceGroupKey": "myPriceGroup"
                              },
                              "publicKey": "order-2234",
                              "referenceKey": "order-2234",
                              "shipping": {
                                "deliveredOn": "2019-11-29",
                                "policy": "delivery_deadline"
                              },
                              "status": "invoice_completed",
                              "vouchers": [
                                {
                                  "id": 198234,
                                  "applicableItems": [
                                    {
                                      "isApplied": true,
                                      "key": "a87ff679a2f3e71d9181a67b7542122c"
                                    },
                                    {
                                      "isApplied": false,
                                      "key": "eccbc87e4b5ce2fe28308fd9f2a7baf3"
                                    }
                                  ],
                                  "code": "fashion2020",
                                  "type": "absolute",
                                  "value": 1000,
                                  "voucherId": 33413
                                }
                              ],
                              "createdAt": "2018-01-20T09:30:15+00:00",
                              "updatedAt": "2018-01-20T09:30:15+00:00"
                            },
                            "type": "payment-refund"
                          }
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Payments"
                ],
                "responses": {
                  "200": {
                    "description": "Payment refund event is received"
                  }
                }
              }
            }
          },
          "payment-capture": {
            "{$request.body#/url}": {
              "post": {
                "operationId": "dispatchPaymentCaptureEvent",
                "requestBody": {
                  "required": true,
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/PaymentEvent"
                      },
                      "example": {
                        "Payment capture event": {
                          "value": {
                            "key": "513a393d-87b0-44b8-a11c-43cf9dd47e46",
                            "meta": {
                              "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
                            },
                            "occurredAt": "2024-06-26T15:46:17+00:00",
                            "payload": {
                              "id": 123,
                              "address": {
                                "billing": {
                                  "id": 998,
                                  "additional": "c/o AboutYou",
                                  "city": "Hamburg",
                                  "countryCode": "DEU",
                                  "houseNumber": "12",
                                  "isDefault": {
                                    "billing": false,
                                    "shipping": false
                                  },
                                  "phone": "089999123",
                                  "recipient": {
                                    "firstName": "Anna",
                                    "gender": "m",
                                    "lastName": "Fohlmeister",
                                    "type": "personal"
                                  },
                                  "referenceKey": "address-7656",
                                  "state": "Sachsen",
                                  "street": "Wolfgangsweg",
                                  "zipCode": "20459",
                                  "createdAt": "2018-01-20T09:30:15+00:00",
                                  "updatedAt": "2018-01-20T09:30:15+00:00"
                                },
                                "forward": {
                                  "additional": "c/o AboutYou",
                                  "city": "Hamburg",
                                  "countryCode": "DEU",
                                  "houseNumber": "12",
                                  "recipient": {
                                    "firstName": "Anna",
                                    "gender": "m",
                                    "lastName": "Fohlmeister",
                                    "type": "personal"
                                  },
                                  "state": "Sachsen",
                                  "street": "Wolfgangsweg",
                                  "zipCode": "20459",
                                  "createdAt": "2018-11-29T05:20:13+00:00",
                                  "updatedAt": "2018-11-29T05:20:13+00:00"
                                },
                                "shipping": {
                                  "id": 998,
                                  "city": "Hamburg",
                                  "collectionPoint": {
                                    "customerKey": "bced-234-234",
                                    "description": "Pedro's Kiosk",
                                    "key": "12345-a",
                                    "type": "hermes_parcelshop"
                                  },
                                  "countryCode": "DEU",
                                  "houseNumber": "10",
                                  "isDefault": {
                                    "billing": false,
                                    "shipping": true
                                  },
                                  "phone": "089999123",
                                  "recipient": {
                                    "firstName": "Anna",
                                    "gender": "m",
                                    "lastName": "Fohlmeister",
                                    "type": "personal"
                                  },
                                  "referenceKey": "address-7656",
                                  "state": "Sachsen",
                                  "street": "Domstrasse",
                                  "zipCode": "20459",
                                  "createdAt": "2018-01-20T09:30:15+00:00",
                                  "updatedAt": "2018-01-20T09:30:15+00:00"
                                }
                              },
                              "transaction": {
                                "transactionId": "b2b_66cf331e44f17",
                                "operationStatus": "successful"
                              },
                              "basketKey": "basket-c6v7k4eer1",
                              "confirmedAt": "2018-01-20T11:30:15+00:00",
                              "cost": {
                                "appliedReductions": [
                                  {
                                    "amount": {
                                      "absoluteWithTax": 100,
                                      "relative": 0.5
                                    },
                                    "category": "voucher",
                                    "code": "ayou123",
                                    "displayName": "ayou123",
                                    "type": "absolute"
                                  }
                                ],
                                "costCapture": 1390,
                                "itemGroups": {
                                  "1234567": {
                                    "brutto": 1190,
                                    "bruttoDiscount": 0,
                                    "bruttoDiscountWithoutMainProduct": 0,
                                    "bruttoWithoutMainProduct": 1190,
                                    "netto": 1000,
                                    "nettoWithoutMainProduct": 1000,
                                    "tax": 190,
                                    "taxWithoutMainProduct": 190
                                  }
                                },
                                "tax": {},
                                "withoutTax": 1000,
                                "withoutTaxWithMembershipDiscount": 1234,
                                "withTax": 1190,
                                "withTaxWithMembershipDiscountWithoutServiceCosts": 1337
                              },
                              "currencyCode": "EUR",
                              "customer": {
                                "id": 9876,
                                "authentication": {
                                  "type": "password"
                                },
                                "birthDate": "1981-02-02",
                                "customData": {
                                  "isVip": true
                                },
                                "email": "anna.fohlmeister@project-collins.com",
                                "firstName": "Anna",
                                "gender": "f",
                                "groups": [
                                  "employee",
                                  "vip"
                                ],
                                "ipAddress": "172.19.0.2",
                                "lastName": "Fohlmeister",
                                "phone": "0049/1234567890",
                                "publicKey": "customer-1234",
                                "referenceKey": "customer-1234",
                                "status": {
                                  "isActive": true,
                                  "isGuestCustomer": false,
                                  "isTestCustomer": false
                                },
                                "title": "Madam",
                                "type": "retail",
                                "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36",
                                "createdAt": "2018-01-20T09:30:15+00:00",
                                "updatedAt": "2018-01-20T09:30:15+00:00"
                              },
                              "detailedStatus": {
                                "billing": {
                                  "code": "billing_payment_pending",
                                  "name": "Zahlung reserviert"
                                },
                                "order": {
                                  "code": "invoice_completed",
                                  "name": "Invoiced"
                                },
                                "shipping": {
                                  "code": "shipping_partially_returned",
                                  "name": "Teilweise Retoure"
                                }
                              },
                              "invoicedAt": "2018-01-22T11:30:15+00:00",
                              "items": [
                                {
                                  "availableQuantity": 18,
                                  "campaignKey": "fooCampaign",
                                  "customData": {
                                    "key": "value"
                                  },
                                  "deliveryForecast": {
                                    "subsequentDelivery": {
                                      "key": "christmas"
                                    }
                                  },
                                  "isManuallyReturnedByCci": true,
                                  "itemGroup": {
                                    "id": "ab123",
                                    "isMainItem": true,
                                    "isRequired": true
                                  },
                                  "key": "ac834d23e689u678",
                                  "lowestPriorPrice": {
                                    "relativeDifferenceToPrice": -0.25,
                                    "withTax": 1000
                                  },
                                  "packageId": 1,
                                  "price": {
                                    "appliedReductions": [
                                      {
                                        "amount": {
                                          "absoluteWithTax": 100,
                                          "relative": 0.5
                                        },
                                        "category": "sale",
                                        "code": "ayou123",
                                        "type": "relative"
                                      },
                                      {
                                        "amount": {
                                          "absoluteWithTax": 800,
                                          "relative": 0.4
                                        },
                                        "category": "promotion",
                                        "type": "absolute"
                                      }
                                    ],
                                    "overrideWithoutTax": 1357,
                                    "overrideWithTax": 1675,
                                    "reference": {
                                      "size": "100",
                                      "unit": "ml",
                                      "withTax": 595
                                    },
                                    "tax": {
                                      "vat": {
                                        "amount": 190,
                                        "rate": 0.19
                                      }
                                    },
                                    "undiscountedWithOutTax": 1000,
                                    "undiscountedWithTax": 1190,
                                    "withoutTax": 1000,
                                    "withTax": 1190
                                  },
                                  "product": {
                                    "id": 4564545,
                                    "advancedAttributes": {
                                      "materialCompositionTextile": {
                                        "key": "materialCompositionTextile",
                                        "label": "Materialzusammensetzung",
                                        "values": [
                                          {
                                            "fieldSet": [
                                              [
                                                {
                                                  "value": "Lining"
                                                }
                                              ]
                                            ],
                                            "groupSet": [
                                              {
                                                "fieldSet": [
                                                  [
                                                    {
                                                      "value": 80
                                                    },
                                                    {
                                                      "unit": "%"
                                                    },
                                                    {
                                                      "material": "Cotton"
                                                    }
                                                  ]
                                                ],
                                                "groupSet": []
                                              }
                                            ]
                                          }
                                        ]
                                      }
                                    },
                                    "attributes": {
                                      "description": {
                                        "key": "description",
                                        "label": "Beschreibung",
                                        "values": [
                                          {
                                            "id": 1234,
                                            "label": "A descriptive string (possibly including HTML)",
                                            "value": "Optional value"
                                          }
                                        ]
                                      }
                                    },
                                    "categories": [
                                      [
                                        {
                                          "categoryId": 20201,
                                          "categoryName": "Frauen",
                                          "categoryProperties": {
                                            "priority": {
                                              "name": "priority",
                                              "value": "1"
                                            }
                                          },
                                          "categoryUrl": "/frauen"
                                        }
                                      ]
                                    ],
                                    "definingAttributes": [
                                      {
                                        "key": "color",
                                        "label": "Farbe"
                                      }
                                    ],
                                    "images": [
                                      {
                                        "attributes": {
                                          "description": {
                                            "key": "description",
                                            "label": "Beschreibung",
                                            "values": [
                                              {
                                                "label": "A descriptive string (possibly including HTML)"
                                              }
                                            ]
                                          }
                                        },
                                        "hash": "9f6c628a98106dcce2bc5a4ac1de9c14"
                                      }
                                    ],
                                    "masterKey": "480306626-1",
                                    "name": "Chelsea Boots",
                                    "createdAt": "2018-01-20T09:30:15+00:00",
                                    "updatedAt": "2018-01-20T09:30:15+00:00"
                                  },
                                  "promotion": {
                                    "id": "649178aa530da10426f3f8d1",
                                    "code": "PROMO0124",
                                    "displayName": "Winter sales 2024",
                                    "name": "PromoABC",
                                    "version": "649178aa530da10426f3f8d2"
                                  },
                                  "status": "available",
                                  "variant": {
                                    "id": 1234567,
                                    "attributes": {
                                      "vendorSize": {
                                        "key": "vendorSize",
                                        "label": "Größe",
                                        "values": [
                                          {
                                            "id": 25472,
                                            "label": "34",
                                            "value": "Thirty Four"
                                          }
                                        ]
                                      }
                                    },
                                    "referenceKey": "563843898",
                                    "stock": {
                                      "customData": {},
                                      "deliveryForecast": {
                                        "deliverable": "directShipping",
                                        "subsequentDelivery": "christmas"
                                      },
                                      "isSellableWithoutStock": false,
                                      "quantity": 18,
                                      "supplierId": 271
                                    },
                                    "createdAt": "2018-01-20T09:30:15+00:00",
                                    "updatedAt": "2018-01-20T09:30:15+00:00"
                                  },
                                  "warehouseId": 123456,
                                  "warehousePackageGroupId": 1,
                                  "createdAt": "2018-01-20T09:30:15+00:00",
                                  "updatedAt": "2018-01-20T09:30:15+00:00"
                                }
                              ],
                              "membershipDiscount": {
                                "membershipCardId": 1,
                                "pointsUsed": 1356,
                                "reductionValue": 127,
                                "tax": 0
                              },
                              "packages": [
                                {
                                  "id": 1,
                                  "carrierKey": "dhl",
                                  "deliveryDate": {
                                    "maximum": "2018-02-05",
                                    "minimum": "2018-02-02"
                                  },
                                  "deliveryStatus": "open",
                                  "hasExpectedAvailabilityAt": false,
                                  "returnIdentCode": "123-123",
                                  "shipmentKey": "shpmnt-123",
                                  "tracking": {
                                    "id": "79003131200523",
                                    "url": "https://tracking.hermesworld.com/?TrackID=79003131200523"
                                  }
                                }
                              ],
                              "payment": [
                                {
                                  "key": "computop_maestro",
                                  "amount": 1190,
                                  "data": {
                                    "creditCardBrand": "Maestro",
                                    "PayID": "12a6453e09876ca12ba857c11dec741b",
                                    "success": true,
                                    "transaction_id": "ayro-1234-4234234234-12345",
                                    "type": "Maestro",
                                    "UserData": {
                                      "requestToken": "28fyQ4zGfL9Pk"
                                    },
                                    "XID": [
                                      "a232cb32df28790a8b726ed66f8b928a"
                                    ]
                                  },
                                  "transactionKey": "ayro-1234-4234234234-12345",
                                  "isGiftCard": false,
                                  "items": [
                                    {
                                      "brand": null,
                                      "bruttoDiscount": 0,
                                      "description": null,
                                      "descriptionAddition": "mischfarben",
                                      "merchantProductId": null,
                                      "nettoPrice": 1400,
                                      "orderProductId": 1,
                                      "price": 1400,
                                      "quantity": 1,
                                      "tax": 0,
                                      "undiscountedUnitPrice": 1400,
                                      "unitPrice": 1400,
                                      "unitPriceWithoutTaxWithVoucher": 1400,
                                      "unitTaxValueWithVoucher": 0,
                                      "variantId": 1,
                                      "voucherCode": ""
                                    }
                                  ]
                                }
                              ],
                              "promotions": [
                                {
                                  "id": "659d4e0cc9f5f7c3c7ba3728",
                                  "code": "test",
                                  "displayName": "test",
                                  "reduction": 123123,
                                  "version": "659d4e0cc9f5f7c3c7ba3728"
                                }
                              ],
                              "shopCountry": {
                                "id": 1,
                                "shopKey": "ay",
                                "countryCode": "DE",
                                "defaultLanguageCode": "de_DE",
                                "supportedLanguageCodes": [
                                  "de_DE",
                                  "en_GB"
                                ],
                                "active": true,
                                "deleted": false,
                                "url": "www.example.com",
                                "currencyCode": "EUR",
                                "priceGroupKey": "myPriceGroup"
                              },
                              "publicKey": "order-2234",
                              "referenceKey": "order-2234",
                              "shipping": {
                                "deliveredOn": "2019-11-29",
                                "policy": "delivery_deadline"
                              },
                              "status": "invoice_completed",
                              "vouchers": [
                                {
                                  "id": 198234,
                                  "applicableItems": [
                                    {
                                      "isApplied": true,
                                      "key": "a87ff679a2f3e71d9181a67b7542122c"
                                    },
                                    {
                                      "isApplied": false,
                                      "key": "eccbc87e4b5ce2fe28308fd9f2a7baf3"
                                    }
                                  ],
                                  "code": "fashion2020",
                                  "type": "absolute",
                                  "value": 1000,
                                  "voucherId": 33413
                                }
                              ],
                              "createdAt": "2018-01-20T09:30:15+00:00",
                              "updatedAt": "2018-01-20T09:30:15+00:00"
                            },
                            "type": "payment-capture"
                          }
                        }
                      }
                    }
                  }
                },
                "tags": [
                  "Payments"
                ],
                "responses": {
                  "200": {
                    "description": "Payment capture event is received"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let webhookSubscription = {\n    \"event\": \"customer-created\",\n    \"version\": 1,\n    \"url\": \"https://foo:bar@foobar.tld/notifiy\",\n    \"filters\": \n      [\n          {\n              \"merchantReferenceKeys\": {\n                  \"include\": [\n                      \"merchant-1\",\n                      \"merchant-2\"\n                  ]\n              }\n          }\n      ]\n};\n\nlet response = await client.apis.Webhooks.createWebhookSubscription({}, {requestBody: webhookSubscription});\nlet createdWebhookSubscription = response.body;\n\nconsole.log(createdWebhookSubscription.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$webhookSubscription = new WebhookSubscription();\n$webhookSubscription->event = 'customer-created';\n$webhookSubscription->version = 1;\n$webhookSubscription->url = 'https://foo:bar@foobar.tld/notifiy';\n$filter = new WebhookSubscriptionFilter();\n$merchantFilter = new WebhookSubscriptionMerchantFilter();\n$merchantFilter->include = [\"merchant-1\", \"merchant-2\"];\n$filter->merchantReferenceKeys = $merchantFilter;\n$webhookSubscription->filters = [$filter];\n\n$createdWebhookSubscription = $adminApi->webhookSubscriptions->create($webhookSubscription);\n\necho $createdWebhookSubscription->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "WebhookSubscription webhookSubscription = new WebhookSubscription();\nwebhookSubscription.setEvent(\"customer-created\");\nwebhookSubscription.setVersion(1);\nwebhookSubscription.setUrl(\"https://foo:bar@foobar.tld/notifiy\");\n\nWebhookSubscriptionFilter filter = new WebhookSubscriptionFilter();\nWebhookSubscriptionMerchantFilter merchantFilter = new WebhookSubscriptionMerchantFilter();\nList<String> merchantInclude = new ArrayList<>();\nmerchantInclude.add(\"merchant-1\");\nmerchantInclude.add(\"merchant-2\");\nmerchantFilter.setInclude(merchantInclude);\nfilter.setMerchantReferenceKeys(merchantFilter);\nList<WebhookSubscriptionFilter> filters = new ArrayList<>();\nfilters.add(filter);\nwebhookSubscription.setFilters(filters);\n\nWebhookSubscription createdWebhookSubscription = adminApi.webhookSubscriptions().create(webhookSubscription);\n\nSystem.out.println(createdWebhookSubscription.getId());\n"
          }
        ]
      }
    },
    "/webhooks/subscriptions/{subscriptionId}": {
      "get": {
        "operationId": "getWebhookSubscription",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "webhooks"
        ],
        "tags": [
          "Webhooks"
        ],
        "summary": "Return a registered webhook subscription",
        "description": "This endpoint can be used to retrieve a registered webhook subscription.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/SubscriptionId"
          }
        ],
        "responses": {
          "200": {
            "description": "Registered webhook subscription.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscription"
                },
                "examples": {
                  "Webhook Subscription": {
                    "$ref": "#/components/examples/WebhookSubscriptionResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Webhooks.getWebhookSubscription({subscriptionId: 1});\nlet webhookSubscription = response.body;\n\nconsole.log(webhookSubscription.id)\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$webhookSubscription = $adminApi->webhookSubscriptions->get(1);\n\necho $webhookSubscription->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "WebhookSubscription webhookSubscription = adminApi.webhookSubscriptions().get(1);\n\nSystem.out.println(webhookSubscription.getId());\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteWebhookSubscription",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "webhooks"
        ],
        "tags": [
          "Webhooks"
        ],
        "summary": "Delete an existing webhook subscription",
        "description": "This endpoint can be used to delete an existing webhook subscription.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/SubscriptionId"
          }
        ],
        "responses": {
          "204": {
            "description": "Webhook subscription was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.Webhooks.deleteWebhookSubscription({subscriptionId: 1});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->webhookSubscriptions->delete(1);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.webhookSubscriptions().delete(1);\n"
          }
        ]
      },
      "patch": {
        "operationId": "updateWebhookSubscription",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "webhooks"
        ],
        "tags": [
          "Webhooks"
        ],
        "summary": "Update a webhook subscription",
        "description": "Url and filters of a webhook can be updated through this endpoint\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/customise-extend/webhooks/overview#update-webhook).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/SubscriptionId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookSubscriptionPatch"
              },
              "examples": {
                "Webhook Subscription": {
                  "value": {
                    "url": "https://foo:bar@foobar.tld/notify/v2",
                    "filters": [
                      {
                        "merchantReferenceKeys": {
                          "include": {
                            "add": [
                              "merchant-3"
                            ]
                          }
                        }
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Webhook subscription was successfully update.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscription"
                },
                "examples": {
                  "Webhook Subscription": {
                    "value": {
                      "id": 42,
                      "event": "customer-created",
                      "version": 1,
                      "url": "https://foo:bar@foobar.tld/notify/v2",
                      "filters": [
                        {
                          "merchantReferenceKeys": {
                            "include": [
                              "merchant-1",
                              "merchant-2",
                              "merchant-3"
                            ]
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "// merchant-1 & merchant-2 will be removed from include list and merchant-3 will be added to the exclude list\nlet webhookSubscription = {\n    \"filters\": \n      [\n          {\n              \"merchantReferenceKeys\": {\n                  \"include\": {\n                     \"remove\":[\n                       \"merchant-1\",\n                       \"merchant-2\",\n                     ]\n                  },\n                  \"exclude\": {\n                     \"add\":[\n                       \"merchant-3\"\n                     ]\n                  }\n              }\n          }\n      ]\n};\n\nlet response = await client.apis.Webhooks.updateWebhookSubscription({\"subscriptionId\":1}, {requestBody: webhookSubscription});\nlet updatedWebhookSubscription = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "// merchant-3 will be added to the include list\n$webhookSubscription = new WebhookSubscriptionPatch();\n\n$filter = new PartialWebhookSubscriptionFilter();\n$filter->merchantReferenceKeys = new PartialWebhookSubscriptionMerchantFilter();\n$filter->merchantReferenceKeys->include = new PartialWebhookSubscriptionMerchantFilterIncludeExclude();\n$filter->merchantReferenceKeys->include->add = [\"merchant-3\"];\n$webhookSubscription->filters = [$filter];\n\n$updatedWebhookSubscription = $adminApi->webhookSubscriptions->patch(1, $webhookSubscription);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "// merchant-2 will be removed from the include list\nList<String> merchantInclude = new ArrayList<>();\nmerchantInclude.add(\"merchant-2\");\nPartialWebhookSubscriptionMerchantFilterIncludeExclude merchantFilterInclude = new PartialWebhookSubscriptionMerchantFilterIncludeExclude();  \nmerchantFilterInclude.setRemove(merchantInclude);\n\nPartialWebhookSubscriptionMerchantFilter merchantFilter = new PartialWebhookSubscriptionMerchantFilter();\nmerchantFilter.setInclude(merchantFilterInclude);\n\nPartialWebhookSubscriptionFilter filter = new PartialWebhookSubscriptionFilter();\nfilter.setMerchantReferenceKeys(merchantFilter);\n\nList<PartialWebhookSubscriptionFilter> filters = new ArrayList<>();\nfilters.add(filter);\n\nWebhookSubscriptionPatch webhookSubscription = new WebhookSubscriptionPatch();\nwebhookSubscription.setFilters(filters);\n\nWebhookSubscription updatedWebhookSubscription = adminApi.webhookSubscriptions().patch(1, webhookSubscription);\n"
          }
        ]
      }
    },
    "/webhooks/producers/{producerIdentifier}/events": {
      "get": {
        "operationId": "getWebhookProducerEvents",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "webhooks"
        ],
        "tags": [
          "Webhooks"
        ],
        "summary": "List webhook events for a producer",
        "description": "Returns event definitions for the given producer.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookProducerIdentifier"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "List of webhook events for the producer.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "entities"
                  ],
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/WebhookProducerEvent"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Webhook Events": {
                    "$ref": "#/components/examples/WebhookProducerAllEventsResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Webhooks.getWebhookProducerEvents({\n  producerIdentifier: \"coba-api\",\n});\nlet events = response.body.entities;\n\nevents.forEach((event) => console.log(event.name));\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$eventCollection = $adminApi->webhookProducers->allEvents('coba-api');\n\nforeach ($eventCollection->getEntities() as $event) {\n    echo $event->name;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<WebhookProducerEvent> eventCollection =\n    adminApi.webhookProducers().allEvents(\"coba-api\");\n\nfor (WebhookProducerEvent event : eventCollection.getEntities()) {\n    System.out.println(event.getName());\n}\n"
          }
        ]
      }
    },
    "/webhooks/producers/{producerIdentifier}/subscriptions": {
      "get": {
        "operationId": "getWebhookProducerSubscriptions",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "webhooks"
        ],
        "tags": [
          "Webhooks"
        ],
        "summary": "List webhook subscriptions for a producer",
        "description": "Paginated list of webhook subscriptions for the producer, with optional filters.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookProducerIdentifier"
          },
          {
            "$ref": "#/components/parameters/WebhookProducerSubscriptionFilterEventName"
          },
          {
            "$ref": "#/components/parameters/WebhookProducerSubscriptionFilterEnabled"
          },
          {
            "$ref": "#/components/parameters/WebhookProducerSubscriptionFilterTarget"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated subscription collection.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "entities"
                  ],
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/WebhookProducerSubscription"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Webhook subscriptions": {
                    "$ref": "#/components/examples/WebhookProducerSubscriptionCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Webhooks.getWebhookProducerSubscriptions({\n  producerIdentifier: \"coba-api\",\n  \"filters[eventName]\": \"customer-created\",\n  \"filters[enabled]\": true,\n});\nlet subscriptions = response.body.entities;\n\nsubscriptions.forEach((sub) => console.log(sub.id));\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$subscriptions = $adminApi->webhookProducers->allSubscriptions('coba-api');\n\nforeach ($subscriptions->getEntities() as $subscription) {\n    echo $subscription->id;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<WebhookProducerSubscription> subscriptions =\n    adminApi.webhookProducers().allSubscriptions(\"coba-api\");\n\nfor (WebhookProducerSubscription subscription : subscriptions.getEntities()) {\n    System.out.println(subscription.getId());\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "createWebhookProducerSubscription",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "webhooks"
        ],
        "tags": [
          "Webhooks"
        ],
        "summary": "Create a webhook subscription",
        "description": "Creates a subscription for the given producer.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookProducerIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookProducerSubscription"
              },
              "examples": {
                "Create subscription": {
                  "$ref": "#/components/examples/WebhookProducerSubscriptionCreateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Subscription was created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookProducerSubscription"
                },
                "examples": {
                  "Created subscription": {
                    "$ref": "#/components/examples/WebhookProducerSubscriptionCreateResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let subscription = {\n  eventName: \"customer-created\",\n  url: \"https://consumer.example.com/webhooks/scayle\",\n  target: { companyId: 1, shopCountryId: 2 },\n  enabled: true,\n  rpm: 60,\n  isInternal: false,\n};\n\nlet response = await client.apis.Webhooks.createWebhookProducerSubscription(\n  { producerIdentifier: \"coba-api\" },\n  { requestBody: subscription },\n);\nlet created = response.body;\nconsole.log(created.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$subscription = new WebhookProducerSubscription();\n$subscription->eventName = 'customer-created';\n$subscription->url = 'https://consumer.example.com/webhooks/scayle';\n$subscription->enabled = true;\n$subscription->rpm = 60;\n$subscription->isInternal = false;\n\n$created = $adminApi->webhookProducers->createSubscription('coba-api', $subscription);\necho $created->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "WebhookProducerSubscription subscription = new WebhookProducerSubscription();\nsubscription.setEventName(\"customer-created\");\nsubscription.setUrl(\"https://consumer.example.com/webhooks/scayle\");\nsubscription.setEnabled(true);\nsubscription.setRpm(60);\nsubscription.setIsInternal(false);\n\nWebhookProducerSubscription created =\n    adminApi.webhookProducers().createSubscription(\"coba-api\", subscription);\nSystem.out.println(created.getId());\n"
          }
        ]
      }
    },
    "/webhooks/producers/{producerIdentifier}/subscriptions/{subscriptionId}": {
      "get": {
        "operationId": "getWebhookProducerSubscription",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "webhooks"
        ],
        "tags": [
          "Webhooks"
        ],
        "summary": "Get a webhook subscription",
        "description": "Returns a single subscription.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookProducerIdentifier"
          },
          {
            "$ref": "#/components/parameters/WebhookProducerSubscriptionIdentifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Subscription found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookProducerSubscription"
                },
                "examples": {
                  "Subscription": {
                    "$ref": "#/components/examples/WebhookProducerSubscriptionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Webhooks.getWebhookProducerSubscription({\n  producerIdentifier: \"coba-api\",\n  subscriptionId: 42,\n});\nconsole.log(response.body.url);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$subscription = $adminApi->webhookProducers->getSubscription('coba-api', 42);\necho $subscription->url;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "WebhookProducerSubscription subscription =\n    adminApi.webhookProducers().getSubscription(\"coba-api\", 42);\nSystem.out.println(subscription.getUrl());\n"
          }
        ]
      },
      "put": {
        "operationId": "updateWebhookProducerSubscription",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "webhooks"
        ],
        "tags": [
          "Webhooks"
        ],
        "summary": "Update a webhook subscription",
        "description": "Updates an existing subscription.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookProducerIdentifier"
          },
          {
            "$ref": "#/components/parameters/WebhookProducerSubscriptionIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookProducerSubscription"
              },
              "examples": {
                "Update subscription": {
                  "$ref": "#/components/examples/WebhookProducerSubscriptionUpdateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Subscription updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookProducerSubscription"
                },
                "examples": {
                  "Updated subscription": {
                    "$ref": "#/components/examples/WebhookProducerSubscriptionUpdateResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let subscription = {\n  eventName: \"customer-created\",\n  url: \"https://consumer.example.com/webhooks/scayle-v2\",\n  target: { companyId: 1, shopCountryId: 2 },\n  enabled: false,\n  rpm: 30,\n  isInternal: false,\n};\n\nlet response = await client.apis.Webhooks.updateWebhookProducerSubscription(\n  { producerIdentifier: \"coba-api\", subscriptionId: 42 },\n  { requestBody: subscription },\n);\nconsole.log(response.body.enabled);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$subscription = $adminApi->webhookProducers->getSubscription('coba-api', 42);\n$subscription->url = 'https://consumer.example.com/webhooks/scayle-v2';\n$subscription->enabled = false;\n\n$subscription = $adminApi->webhookProducers->updateSubscription('coba-api', 42, $subscription);\necho $subscription->enabled ? 'true' : 'false';\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "WebhookProducerSubscription subscription =\n    adminApi.webhookProducers().getSubscription(\"coba-api\", 42);\nsubscription.setUrl(\"https://consumer.example.com/webhooks/scayle-v2\");\nsubscription.setEnabled(false);\n\nsubscription =\n    adminApi.webhookProducers().updateSubscription(\"coba-api\", 42, subscription);\nSystem.out.println(subscription.getEnabled());\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteWebhookProducerSubscription",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "webhooks"
        ],
        "tags": [
          "Webhooks"
        ],
        "summary": "Delete a webhook subscription",
        "description": "Deletes a subscription.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookProducerIdentifier"
          },
          {
            "$ref": "#/components/parameters/WebhookProducerSubscriptionIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Subscription deleted successfully."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.Webhooks.deleteWebhookProducerSubscription({\n  producerIdentifier: \"coba-api\",\n  subscriptionId: 42,\n});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->webhookProducers->deleteSubscription('coba-api', 42);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.webhookProducers().deleteSubscription(\"coba-api\", 42);\n"
          }
        ]
      }
    },
    "/fulfillment/cancellations": {
      "post": {
        "operationId": "sendCancellation",
        "x-rateLimit": {
          "scope": "fulfillmentWrite"
        },
        "x-resources": [
          "fulfillment"
        ],
        "tags": [
          "Fulfillment"
        ],
        "summary": "Send a cancellation",
        "description": "This endpoint can be used to send a cancellation.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/logistics/shipments-and-returns#create-a-cancellation).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/CompanyIdHeader"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Cancellation"
              },
              "examples": {
                "Cancellation": {
                  "$ref": "#/components/examples/CancellationRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Cancellation was successfully sent."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let cancellation = {\n  \"shopKey\": \"ms\",\n  \"countryCode\": \"de\",\n  \"items\": [\n    {\n      \"orderItemId\": 67\n    }\n  ],\n  \"orderId\": 123\n};\n\nlet parameters = {requestBody: cancellation};\n\n// only required when multiple companies are used\nparameters.requestInterceptor = (req) => {\n  req.headers[\"X-Company-Id\"] = 1;\n  return req;\n};\n\nclient.apis.Fulfillment.sendCancellation({}, parameters);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$cancellation = new Cancellation();\n$cancellation->shopKey = 'ms';\n$cancellation->countryCode = 'DE';\n$cancellation->orderId = 123;\n\n$cancellationItem1 = new CancellationItem();\n$cancellationItem1->orderItemId = 67;\n\n$cancellation->items = [$cancellationItem1];\n\n// only required when multiple companies are used\n$options = ['companyId' => 1];\n\n$adminApi->cancellations->send($cancellation, $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Cancellation cancellation = new Cancellation();\ncancellation.setShopKey(\"ms\");\ncancellation.setCountryCode(\"DE\");\ncancellation.setOrderId(123);\n\nCancellationItem cancellationItem1 = new CancellationItem();\ncancellationItem1.setOrderItemId(67);\n\nvar cancellationItems = new ArrayList<CancellationItem>();\ncancellationItems.add(cancellationItem1);\n\ncancellation.setItems(cancellationItems);\n\n// only required when multiple companies are used\nApiOptions options = ApiOptions.builder()\n.addOption(\"companyId\", 1)\n.build();\n\nadminApi.cancellations().send(cancellation, options);\n"
          }
        ]
      }
    },
    "/fulfillment/return-items": {
      "post": {
        "operationId": "returnItems",
        "x-rateLimit": {
          "scope": "fulfillmentWrite"
        },
        "x-resources": [
          "fulfillment"
        ],
        "tags": [
          "Fulfillment"
        ],
        "summary": "Return items",
        "description": "This endpoint can be used to return items.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/logistics/shipments-and-returns#return-items).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/CompanyIdHeader"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#/components/schemas/ReturnItem"
                }
              },
              "examples": {
                "Return Items": {
                  "$ref": "#/components/examples/ReturnItemsRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Items are returned successfully."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let returnItems = [\n    {\n         received: \"2021-11-09 07:30:27\",\n         returnKey: \"ayou-139-13376599_48_1\",\n         returnReason: \"cci-manual-return\"\n    },\n    {\n         received: \"2021-11-09 07:30:27\",\n         returnKey: \"ayou-139-13376599_48_1\",\n         returnReason: \"cci-manual-return\"\n    }\n];\n\nlet parameters = {requestBody: returnItems};\n\n// only required when multiple companies are used\nparameters.requestInterceptor = (req) => {\n    req.headers[\"X-Company-Id\"] = 1;\n    return req;\n};\n\nclient.apis.Fulfillment.returnItems({}, parameters);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$returnItem1 = new ReturnItem();\n$returnItem1->received = '2021-11-09 07:30:27';\n$returnItem1->returnKey = 'ayou-139-13376599_48_1';\n$returnItem1->returnReason = 'cci-manual-return';\n\n$returnItem2 = new ReturnItem();\n$returnItem2->received = '2021-10-03 01:30:24';\n$returnItem2->returnKey = 'ayou-140-13371599_28_2';\n$returnItem2->returnReason = 'cci-manual-return';\n\n$returnItems = [$returnItem1, $returnItem2];\n\n// only required when multiple companies are used\n$options = ['companyId' => 1];\n\n$adminApi->returnItems->send($returnItems, $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ReturnItem returnItem1 = new ReturnItem();\nreturnItem1.setReceived(\"2021-11-09 07:30:27\");\nreturnItem1.setReturnKey(\"ayou-139-13376599_48_1\");\nreturnItem1.setReturnReason(\"cci-manual-return\");\n\nReturnItem returnItem2 = new ReturnItem();\nreturnItem2.setReceived(\"2021-10-03 01:30:24\");\nreturnItem2.setReturnKey(\"ayou-140-13371599_28_2\");\nreturnItem2.setReturnReason(\"cci-manual-return\");\n\nvar returnItems = new ArrayList<ReturnItem>();\nreturnItems.add(returnItem1);\nreturnItems.add(returnItem2);\n\n// only required when multiple companies are used\nApiOptions options = ApiOptions.builder()\n    .addOption(\"companyId\", 1)\n    .build();\n\nadminApi.returnItems().send(returnItems, options);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/vouchers/{voucherId}": {
      "get": {
        "operationId": "getVoucher",
        "x-rateLimit": {
          "scope": "vouchersRead"
        },
        "x-resources": [
          "vouchers"
        ],
        "tags": [
          "Vouchers"
        ],
        "summary": "Get a voucher",
        "description": "This endpoint can be used to get a single voucher by voucher ID.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/introduction/discounts-and-offers/vouchers#get-a-voucher).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/VoucherId"
          }
        ],
        "responses": {
          "200": {
            "description": "Voucher",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Voucher"
                },
                "examples": {
                  "Voucher": {
                    "$ref": "#/components/examples/VoucherResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "response = await adminApi.apis.Vouchers.getVoucher({shopKey: 'ms', countryCode: 'DE', voucherId: 1});\nlet voucher = response.body;\n\nconsole.log(voucher.name);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$voucher = $adminApi->vouchers->get('ms', 'DE', 1);\n\necho $voucher->name;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var voucher = adminApi.vouchers().get(\"ms\", \"DE\", 1);\n\nSystem.out.println(voucher.getName());\n"
          }
        ]
      },
      "patch": {
        "operationId": "updateVoucher",
        "x-rateLimit": {
          "scope": "vouchersWrite"
        },
        "x-resources": [
          "vouchers"
        ],
        "tags": [
          "Vouchers"
        ],
        "summary": "Update an existing voucher",
        "description": "This endpoint can be used to update an existing voucher.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/introduction/discounts-and-offers/vouchers#update-a-voucher).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/VoucherId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Voucher"
              },
              "examples": {
                "Voucher": {
                  "$ref": "#/components/examples/VoucherUpdateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Voucher was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Voucher"
                },
                "examples": {
                  "Voucher": {
                    "$ref": "#/components/examples/VoucherResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.Vouchers.getVoucher({ \n    shopKey: 'ms',\n    countryCode: 'DE',\n    voucherId: 1\n    });\nlet voucher = response.body;\n\nvoucher.code = \"testcode\";\nvoucher.constraints.date = {\n  \"max\": \"2021-12-23T11:30:58+00:00\",\n  \"min\": \"2021-01-23T11:30:58+00:00\"\n};\nvoucher.constraints.isValidOnCampaigns = true;\nvoucher.constraints.maxApplications = {\n  \"count\": 1,\n  \"restriction\": \"customer\"\n};\nvoucher.constraints.orderValue = {\n  \"max\": 200000,\n  \"min\": 7500\n};\nvoucher.isApplicableToPromotions = true;\nvoucher.name = \"Testvoucher\";\nvoucher.status = \"active\";\nvoucher.summary = \"Voucher summary\";\nvoucher.type = \"relative\";\nvoucher.value = 0.1;\n\nresponse = await adminApi.apis.Vouchers.updateVoucher(\n    {\n        shopKey: 'ms',\n        countryCode: 'DE',\n        voucherId: voucher.id\n    },\n    {\n        requestBody: voucher\n    }\n);\nlet updatedVoucher = response.body;\n\nconsole.log(updatedVoucher.name);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$voucher = $adminApi->vouchers->get('ms', 'DE', 1);\n\n$voucher->code = \"testcode\";\n\n$date = new VoucherConstraintsDate();\n$date->max = \"2021-12-23T11:30:58+00:00\";\n$date->min = \"2021-01-23T11:30:58+00:00\";\n\n$maxApplications = new VoucherConstraintsApplications();\n$maxApplications->count = 1;\n$maxApplications->restriction = \"customer\";\n\n$orderValue = new VoucherConstraintsOrder();\n$orderValue->max = 200000;\n$orderValue->min = 7500;\n\n$voucher->constraints->date = $date;\n$voucher->constraints->isValidOnCampaigns = true;\n$voucher->constraints->maxApplications = $maxApplications;\n$voucher->constraints->orderValue = $orderValue;\n\n$voucher->isApplicableToPromotions = true;\n$voucher->name = \"Testvoucher\";\n$voucher->status = \"active\";\n$voucher->summary = \"Voucher summary\";\n$voucher->type = \"relative\";\n$voucher->value = 0.1;\n\n$voucher = $adminApi->vouchers->update('ms', 'DE', $voucher->id, $voucher);\n\necho $voucher->name;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var voucher = adminApi.vouchers().get(\"ms\", \"DE\", 1);\nvoucher.setCode(\"testcode\");\n\nvar voucherConstraints = new VoucherConstraints();\nvoucherConstraints.setIsValidOnCampaigns(true);\n\nvar voucherConstraintsApplications = new VoucherConstraintsApplications();\nvoucherConstraintsApplications.setCount(1);\nvoucherConstraintsApplications.setRestriction(VoucherConstraintsApplicationsRestriction.VALUE_CUSTOMER);\n\nvoucherConstraints.setMaxApplications(voucherConstraintsApplications);\n\nvar voucherConstraintsDate = new VoucherConstraintsDate();\nvoucherConstraintsDate.setMax(Instant.parse(\"2021-12-23T11:30:58+00:00\"));\nvoucherConstraintsDate.setMin(Instant.parse(\"2021-01-23T11:30:58+00:00\"));\n\nvoucherConstraints.setDate(voucherConstraintsDate);\n\nvar voucherOrder = new VoucherConstraintsOrder();\nvoucherOrder.setMax(200000);\nvoucherOrder.setMin(7500);\n\nvoucherConstraints.setOrderValue(voucherOrder);\n\nvoucher.setConstraints(voucherConstraints);\n\nvoucher.setIsApplicableToPromotions(true);\nvoucher.setName(\"Testvoucher\");\nvoucher.setStatus(VoucherStatus.VALUE_ACTIVE);\nvoucher.setType(VoucherType.VALUE_RELATIVE);\nvoucher.setSummary(\"Voucher summary\");\nvoucher.setValue(0.1);\n\nvoucher = adminApi.vouchers().update(\"ms\", \"DE\", voucher.getId(), voucher);\nSystem.out.println(voucher.getName());\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteVoucher",
        "x-rateLimit": {
          "scope": "vouchersWrite"
        },
        "x-resources": [
          "vouchers"
        ],
        "tags": [
          "Vouchers"
        ],
        "summary": "Delete a voucher",
        "description": "This endpoint can be used to delete a voucher.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/introduction/discounts-and-offers/vouchers#delete-a-voucher-1).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/VoucherId"
          }
        ],
        "responses": {
          "204": {
            "description": "Voucher was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "adminApi.apis.Vouchers.deleteVoucher({shopKey: 'ms', countryCode: 'DE', voucherId: 1});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->vouchers->delete('ms', 'DE', 1);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.vouchers().delete(\"ms\", \"DE\", 1);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/vouchers": {
      "post": {
        "operationId": "createVoucher",
        "x-rateLimit": {
          "scope": "vouchersWrite"
        },
        "x-resources": [
          "vouchers"
        ],
        "tags": [
          "Vouchers"
        ],
        "summary": "Create a new voucher",
        "description": "This endpoint can be used to create a new voucher.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/introduction/discounts-and-offers/vouchers#create-a-voucher).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Voucher"
              },
              "examples": {
                "Voucher": {
                  "$ref": "#/components/examples/VoucherCreateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Voucher was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Voucher"
                },
                "examples": {
                  "Voucher": {
                    "$ref": "#/components/examples/VoucherResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newVoucher = {\n    \"code\": \"testcode\",\n    \"constraints\": {\n        \"date\": {\n            \"max\": \"2022-12-23T11:30:58+00:00\",\n            \"min\": \"2022-01-23T11:30:58+00:00\"\n        },\n        \"isValidOnCampaigns\": true,\n        \"maxApplications\": {\n            \"count\": 1,\n            \"restriction\": \"customer\"\n        },\n        \"orderValue\": {\n            \"max\": 200000,\n            \"min\": 7500\n        }\n    },\n    \"isApplicableToPromotions\": true,\n    \"name\": \"Testvoucher\",\n    \"status\": \"active\",\n    \"summary\": \"Voucher summary\",\n    \"type\": \"relative\",\n    \"value\": 1\n};\n\nlet response = await adminApi.apis.Vouchers.createVoucher({shopKey: 'ms', countryCode: 'DE'}, {requestBody: newVoucher});\nlet createdVoucher = response.body;\n\nconsole.log(createdVoucher.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$voucher = new Voucher();\n$voucher->code = \"testcode\";\n$voucher->isApplicableToPromotions = true;\n$voucher->name = \"Testvoucher\";\n$voucher->status = \"active\";\n$voucher->summary = \"Voucher summary\";\n$voucher->type = \"relative\";\n$voucher->value = 1;\n\n$voucherConstraint = new VoucherConstraints();\n$voucherConstraint->isValidOnCampaigns = true;\n\n$voucherConstraintsApplications = new VoucherConstraintsApplications();\n$voucherConstraintsApplications->count = 1;\n$voucherConstraintsApplications->restriction = \"customer\";\n\n$voucherConstraint->maxApplications = $voucherConstraintsApplications;\n\n$voucherConstraintsDate = new VoucherConstraintsDate();\n$voucherConstraintsDate->max = \"2022-12-23T11:30:58+00:00\";\n$voucherConstraintsDate->min = \"2022-01-23T11:30:58+00:00\";\n\n$voucherConstraint->date = $voucherConstraintsDate;\n\n$voucherOrder = new VoucherConstraintsOrder();\n$voucherOrder->max = 200000;\n$voucherOrder->min = 7500;\n\n$voucherConstraint->orderValue = $voucherOrder;\n\n$voucher->constraints = $voucherConstraint;\n\n$voucher = $adminApi->vouchers->create('ms', 'DE', $voucher);\n\necho $voucher->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "var voucher = new Voucher();\nvoucher.setIsApplicableToPromotions(true);\nvoucher.setName(\"Testvoucher\");\nvoucher.setStatus(VoucherStatus.VALUE_ACTIVE);\nvoucher.setType(VoucherType.VALUE_RELATIVE);\nvoucher.setValue(0.1);\n\nvoucher.setSummary(\"Voucher summary\");\n\nvar voucherConstraint = new VoucherConstraints();\nvoucherConstraint.setIsValidOnCampaigns(true);\n\nvar voucherConstraintsApplications = new VoucherConstraintsApplications();\nvoucherConstraintsApplications.setCount(1);\nvoucherConstraintsApplications.setRestriction(VoucherConstraintsApplicationsRestriction.VALUE_CUSTOMER);\n\nvoucherConstraint.setMaxApplications(voucherConstraintsApplications);\n\nvar voucherConstraintsDate = new VoucherConstraintsDate();\nvoucherConstraintsDate.setMax(Instant.parse(\"2021-12-23T11:30:58+00:00\"));\nvoucherConstraintsDate.setMin(Instant.parse(\"2021-01-23T11:30:58+00:00\"));\n\nvoucherConstraint.setDate(voucherConstraintsDate);\n\nvar voucherOrder = new VoucherConstraintsOrder();\nvoucherOrder.setMax(200000);\nvoucherOrder.setMin(7500);\n\nvoucherConstraint.setOrderValue(voucherOrder);\n\nvoucher.setConstraints(voucherConstraint);\n\nvoucher = adminApi.vouchers().create(\"ms\", \"DE\", voucher);\n\nSystem.out.println(voucher.getId());\n"
          }
        ]
      },
      "get": {
        "operationId": "getVouchers",
        "x-rateLimit": {
          "scope": "vouchersRead"
        },
        "x-resources": [
          "vouchers"
        ],
        "tags": [
          "Vouchers"
        ],
        "summary": "Get vouchers for given filters",
        "description": "This endpoint can be used to retrieve a collection of vouchers.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/introduction/discounts-and-offers/vouchers#get-a-collection-of-vouchers).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/FilterCode"
          },
          {
            "$ref": "#/components/parameters/FilterStatus"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "List of vouchers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Voucher"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Voucher": {
                    "$ref": "#/components/examples/VoucherCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.Vouchers.getVouchers({\n    shopKey: 'ms',\n    countryCode: 'DE',\n    filters[code]: 'testcode',\n    limit: 10\n});\nlet vouchers = response.body.entities;\n\nvouchers.forEach(\n    voucher => console.log(voucher.name)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'filters[code]' => 'testcode',\n    'limit' => 10\n];\n\n$voucherCollection = $adminApi->vouchers->all('ms', 'DE', $options);\n\nforeach ($voucherCollection->getEntities() as $voucher) {\n    echo $voucher->name;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"limit\", 10)\n                        .addOption(\"filters[code]\", \"testcode\")\n                        .build();\n\nApiCollection<Voucher> voucherCollection = adminApi.vouchers().all(\"ms\", \"DE\", options);\n\nfor (Voucher voucher : voucherCollection.getEntities()) {\n    System.out.println(voucher.getName());\n}\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/vouchers/{voucherId}/criteria/{voucherCriterionId}": {
      "get": {
        "operationId": "getVoucherCriterion",
        "x-rateLimit": {
          "scope": "vouchersRead"
        },
        "x-resources": [
          "vouchers"
        ],
        "tags": [
          "Vouchers"
        ],
        "summary": "Get a voucher criterion",
        "description": "This endpoint can be used to get a single voucher criterion by ID.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/introduction/discounts-and-offers/vouchers#get-an-existing-voucher-criterion).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/VoucherId"
          },
          {
            "$ref": "#/components/parameters/VoucherCriterionId"
          }
        ],
        "responses": {
          "200": {
            "description": "Voucher criterion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherCriterion"
                },
                "examples": {
                  "Voucher Criterion": {
                    "$ref": "#/components/examples/VoucherCriterionResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.Vouchers.getVoucherCriterion({shopKey: 'ms', countryCode: 'DE', voucherId: 1, voucherCriterionId: 1});\nlet voucherCriterion = response.body; \n\nconsole.log(voucherCriterion.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$voucherCriterion = $adminApi->vouchers->getCriterion('ms', 'DE', 1, 1);\n\necho $voucherCriterion->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "VoucherCriterion voucherCriterion = adminApi.vouchers().getCriterion(\"ms\", \"DE\", 1, 1);\n\nSystem.out.println(voucherCriterion.getId());\n"
          }
        ]
      },
      "put": {
        "operationId": "updateVoucherCriterion",
        "x-rateLimit": {
          "scope": "vouchersWrite"
        },
        "x-resources": [
          "vouchers"
        ],
        "tags": [
          "Vouchers"
        ],
        "summary": "Update an existing voucher criterion",
        "description": "This endpoint can be used to update an existing voucher criterion.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/introduction/discounts-and-offers/vouchers#update-an-existing-voucher-criterion).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/VoucherId"
          },
          {
            "$ref": "#/components/parameters/VoucherCriterionId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VoucherCriterion"
              },
              "examples": {
                "Voucher Criterion": {
                  "$ref": "#/components/examples/VoucherCriterionRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Voucher criterion was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherCriterion"
                },
                "examples": {
                  "Voucher Criterion": {
                    "$ref": "#/components/examples/VoucherCriterionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.Vouchers.getVoucherCriterion({shopKey: 'ms', countryCode: 'DE', voucherId: 1, voucherCriterionId: 1});\nlet voucherCriterion = response.body;\n\nvoucherCriterion.value = [1];\n\nresponse = await adminApi.apis.Vouchers.updateVoucherCriterion({shopKey: 'ms', countryCode: 'DE', voucherId: 1, voucherCriterionId: voucherCriterion.id}, {requestBody: voucherCriterion});\nvoucherCriterion = response.body;\n\nconsole.log(voucherCriterion.value);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$voucherCriterion = $adminApi->vouchers->getCriterion('ms', 'DE', 1, 1);\n$voucherCriterion->value = [1];\n\n$voucherCriterion = $adminApi->vouchers->updateCriterion('ms', 'DE', 1, $voucherCriterion->id, $voucherCriterion);\n\nprint_r($voucherCriterion->value);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "VoucherCriterion voucherCriterion = adminApi.vouchers().getCriterion(\"ms\", \"DE\", 1, 1);\nvoucherCriterion.setValue(Arrays.asList(new Object[] {1}));\n\nvoucherCriterion = adminApi.vouchers().updateCriterion(\"ms\", \"DE\", 1, voucherCriterion.getId(), voucherCriterion);\n\nSystem.out.println(voucherCriterion.getValue());\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteVoucherCriterion",
        "x-rateLimit": {
          "scope": "vouchersWrite"
        },
        "x-resources": [
          "vouchers"
        ],
        "tags": [
          "Vouchers"
        ],
        "summary": "Delete a voucher criterion",
        "description": "This endpoint can be used to delete a voucher criterion.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/introduction/discounts-and-offers/vouchers#delete-an-existing-voucher-criterion).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/VoucherId"
          },
          {
            "$ref": "#/components/parameters/VoucherCriterionId"
          }
        ],
        "responses": {
          "204": {
            "description": "Voucher criterion was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "adminApi.apis.Vouchers.deleteVoucherCriterion({shopKey: 'ms', countryCode: 'DE', voucherId: 1, voucherCriterionId: 1});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->vouchers->deleteCriterion('ms', 'DE', 1, 1);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.vouchers().deleteCriterion(\"ms\", \"DE\", 1, 1);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/vouchers/{voucherId}/criteria": {
      "get": {
        "operationId": "getVoucherCriteria",
        "x-rateLimit": {
          "scope": "vouchersRead"
        },
        "x-resources": [
          "vouchers"
        ],
        "tags": [
          "Vouchers"
        ],
        "summary": "Get voucher criteria",
        "description": "This endpoint can be used to retrieve voucher criteria.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/introduction/discounts-and-offers/vouchers#get-all-voucher-criteria).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/VoucherId"
          }
        ],
        "responses": {
          "200": {
            "description": "Voucher criteria",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/VoucherCriterion"
                      }
                    }
                  }
                },
                "examples": {
                  "Voucher Criteria": {
                    "$ref": "#/components/examples/VoucherCriteriaResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.Vouchers.getVoucherCriteria({shopKey: 'ms', countryCode: 'DE', voucherId: 1});\nlet voucherCriteria = response.body.entities; \n\nvoucherCriteria.forEach(\n    voucherCriterion => console.log(voucherCriterion.id)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$voucherCriteria = $adminApi->vouchers->getCriteria('ms', 'DE', 1);\n\nforeach ($voucherCriteria->getEntities() as $voucherCriterion) {\n    echo $voucherCriterion->id;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<VoucherCriterion> voucherCriteria = adminApi.vouchers().getCriteria(\"ms\", \"DE\", 1);\n\nfor (VoucherCriterion voucherCriterion : voucherCriteria.getEntities()) {\n    System.out.println(voucherCriterion.getId());\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "createVoucherCriterion",
        "x-rateLimit": {
          "scope": "vouchersWrite"
        },
        "x-resources": [
          "vouchers"
        ],
        "tags": [
          "Vouchers"
        ],
        "summary": "Add new criterion to the voucher",
        "description": "This endpoint can be used to create new voucher criterion.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/introduction/discounts-and-offers/vouchers#create-a-voucher-criterion).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/VoucherId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VoucherCriterion"
              },
              "examples": {
                "Voucher Criterion": {
                  "$ref": "#/components/examples/VoucherCriterionRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Voucher criterion was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherCriterion"
                },
                "examples": {
                  "Voucher Criterion": {
                    "$ref": "#/components/examples/VoucherCriterionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let voucherCriterion = {\n     \"key\": \"customerId\",\n     \"type\": \"include\",\n     \"value\": [1]\n};\n\nlet response = await adminApi.apis.Vouchers.createVoucherCriterion({shopKey: 'ms', countryCode: 'DE', voucherId: 1}, {requestBody: voucherCriterion});\nvoucherCriterion = response.body;\n\nconsole.log(voucherCriterion.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$voucherCriterion = new VoucherCriterion();\n$voucherCriterion->key = 'customerId';\n$voucherCriterion->type = 'include';\n$voucherCriterion->value = [1];\n\n$voucherCriterion = $adminApi->vouchers->createCriterion('ms', 'DE', 1, $voucherCriterion);\n\necho $voucherCriterion->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "VoucherCriterion voucherCriterion = new VoucherCriterion();\nvoucherCriterion.setKey(VoucherCriteriaKey.VALUE_CUSTOMERID);\nvoucherCriterion.setType(VoucherCriteriaKeyType.VALUE_INCLUDE);\nvoucherCriterion.setValue(Arrays.asList(new Object[] {1}));\n\nvoucherCriterion = adminApi.vouchers().createCriterion(\"ms\", \"DE\", 1, voucherCriterion);\n\nSystem.out.println(voucherCriterion.getId());\n"
          }
        ]
      }
    },
    "/companies": {
      "get": {
        "operationId": "getCompanies",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "companies"
        ],
        "tags": [
          "Companies"
        ],
        "summary": "Get companies",
        "description": "This endpoint can be used to retrieve a collection of companies.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/multiple-legal-entities/manage-legal-entities#get-a-collection-of-companies).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/FilterId"
          },
          {
            "$ref": "#/components/parameters/FilterMinId"
          },
          {
            "$ref": "#/components/parameters/FilterMaxId"
          },
          {
            "$ref": "#/components/parameters/SortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "List of companies",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Company"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Company Collection": {
                    "$ref": "#/components/examples/CompanyCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Companies.getCompanies({limit: 10});\nlet companies = response.body.entities;\n\ncompanies.forEach(\n    company => console.log(company.name)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'limit' => 10\n];\n\n$companyCollection = $adminApi->companies->all($options);\n\nforeach ($companyCollection->getEntities() as $company) {\n    echo $company->name;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n    .addOption(\"limit\", 10)\n    .build();\n\nApiCollection<Company> companyCollection = adminApi.companies().all(options);\n\nfor (Company company : companyCollection.getEntities()) {\n    System.out.println(company.getName());\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "createCompany",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "companies"
        ],
        "tags": [
          "Companies"
        ],
        "summary": "Create a new company",
        "description": "This endpoint can be used to create a new company.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/multiple-legal-entities/manage-legal-entities#create-a-company).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Company"
              },
              "examples": {
                "Company": {
                  "$ref": "#/components/examples/CompanyRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Company was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Company"
                },
                "examples": {
                  "Company": {
                    "$ref": "#/components/examples/CompanyResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let company = {\n    name: \"My Company\"\n};\n\nlet response = await client.apis.Companies.createCompany({}, {requestBody: company});\ncompany = response.body;\n\nconsole.log(company.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$company = new Company();\n$company->name = 'My Company';\n\n$company = $adminApi->companies->create($company);\n\necho $company->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Company company = new Company();\ncompany.setName(\"My Company\");\n\ncompany = adminApi.companies().create(company);\n\nSystem.out.println(company.getId());\n"
          }
        ]
      }
    },
    "/companies/{companyId}": {
      "get": {
        "operationId": "getCompany",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "companies"
        ],
        "tags": [
          "Companies"
        ],
        "summary": "Get a company",
        "description": "This endpoint can be used to get a single company by ID.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/multiple-legal-entities/manage-legal-entities#get-a-company).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/CompanyId"
          }
        ],
        "responses": {
          "200": {
            "description": "Company",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Company"
                },
                "examples": {
                  "Company": {
                    "$ref": "#/components/examples/CompanyResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Companies.getCompany({companyId: 1});\nlet company = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$company = $adminApi->companies->get(1);\necho $company->name;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Company company = adminApi.companies().get(1);\nSystem.out.println(company.getName());\n"
          }
        ]
      },
      "put": {
        "operationId": "updateCompany",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "companies"
        ],
        "tags": [
          "Companies"
        ],
        "summary": "Update an existing company",
        "description": "This endpoint can be used to update an existing company.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/multiple-legal-entities/manage-legal-entities#update-a-company).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/CompanyId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Company"
              },
              "examples": {
                "Company": {
                  "$ref": "#/components/examples/CompanyRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The company was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Company"
                },
                "examples": {
                  "Company": {
                    "$ref": "#/components/examples/CompanyResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Companies.getCompany({companyId: 1});\nlet company = response.body;\n\ncompany.name = \"My Company\";\n\nresponse = await client.apis.Companies.updateCompany({companyId: company.id}, {requestBody: company});\ncompany = response.body;\n\nconsole.log(company.name);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$company = $adminApi->companies->get(1);\n$company->name = 'My Company';\n\n$company = $adminApi->companies->update($company->id, $company);\n\necho $company->name;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Company company = adminApi.companies().get(1);\ncompany.setName(\"My Company\");\n\ncompany = adminApi.companies().update(company.getId(), company);\n\nSystem.out.println(company.getName());\n"
          }
        ]
      }
    },
    "/companies/{companyId}/channels": {
      "post": {
        "operationId": "createChannel",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "channels"
        ],
        "tags": [
          "Channels"
        ],
        "summary": "Create a new order channel.",
        "description": "This endpoint can be used to create a new order channel.\nSee more details in the [Developer Guide](/en/developer-guide/).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/CompanyId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChannelCreateRequest"
              },
              "examples": {
                "Channel": {
                  "$ref": "#/components/examples/ChannelCreateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Channel was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Channel"
                },
                "examples": {
                  "Channel": {
                    "$ref": "#/components/examples/ChannelResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let createPayload = {\n  \"key\": \"online-store-de\",\n  \"type\": \"marketplace\",\n  \"name\": \"Online Store (Germany)\",\n  \"description\": \"Primary sales channel for all German marketplace orders.\",\n  \"shopCountryId\": 5,\n  \"active\": true,\n  \"defaultPaymentMethod\": {\n    \"id\": 22\n  },\n  \"configs\": {\n    \"emailsEnabled\": true,\n    \"invoicesEnabled\": true,\n    \"externalPriceOverrideEnabled\": false\n  }\n};\n\nlet response = await client.apis.Channels.createChannel({companyId: 1}, {requestBody: createPayload});\nchannel = response.body;\n\nconsole.log(channel.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$createPayload = new ChannelCreateRequest();\n$createPayload->key = 'online-store-de';\n$createPayload->type = 'marketplace';\n$createPayload->name = 'Online Store (Germany)';\n$createPayload->description = 'Primary sales channel for all German marketplace orders.';\n$createPayload->shopCountryId = 5;\n$createPayload->active = true;\n$createPayload->defaultPaymentMethod = new ChannelPaymentMethod();\n$createPayload->defaultPaymentMethod->id = 22;\n$createPayload->configs = new ChannelConfigsWithDefaults();\n$createPayload->configs->emailsEnabled = true;\n$createPayload->configs->invoicesEnabled = true;\n$createPayload->configs->externalPriceOverrideEnabled = false;\n\n$response = $adminApi->channels->createChannel(1, $createPayload);\necho $response->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ChannelCreateRequest createPayload = new ChannelCreateRequest();\ncreatePayload.setKey(\"online-store-de\");\ncreatePayload.setType(\"marketplace\");\ncreatePayload.setName(\"Online Store (Germany)\");\ncreatePayload.setDescription(\"Primary sales channel for all German marketplace orders.\");\ncreatePayload.setShopCountryId(5);\ncreatePayload.setActive(true);\n\nChannelPaymentMethod defaultPaymentMethod = new ChannelPaymentMethod();\ndefaultPaymentMethod.setId(22);\nchannel.setDefaultPaymentMethod(defaultPaymentMethod);\n\nChannelConfigs configs = new ChannelConfigsWithDefaults();\nconfigs.setEmailsEnabled(true);\nconfigs.setInvoicesEnabled(true);\nconfigs.setExternalPriceOverrideEnabled(false);\nchannel.setConfigs(configs);\n\nChannel createdChannel = adminApi.channels().createChannel(1, createPayload);\nSystem.out.println(\"Created Channel ID: \" + createdChannel.getId());\n"
          }
        ]
      },
      "get": {
        "operationId": "getChannels",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "channels"
        ],
        "tags": [
          "Channels"
        ],
        "summary": "Get a list of order channels.",
        "description": "This endpoint can be used to retrieve a list of order channels.\nSee more details in the [Developer Guide](/en/developer-guide/).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/CompanyId"
          },
          {
            "name": "filters[key]",
            "description": "Filter by channel key",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 255,
              "example": "my-channel-key"
            }
          },
          {
            "name": "filters[type]",
            "description": "Filter by channel type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "example": "marketplace"
            }
          },
          {
            "name": "filters[name]",
            "description": "Filter by channel name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 255,
              "example": "My Channel Name"
            }
          },
          {
            "name": "filters[shopCountryId]",
            "description": "Filter by channel shop country ID",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "example": 5
            }
          },
          {
            "name": "filters[active]",
            "description": "Filter by channel active status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "example": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of channels",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Channel"
                      }
                    }
                  }
                },
                "examples": {
                  "Channel Collection": {
                    "value": {
                      "entities": [
                        {
                          "id": 101,
                          "key": "online-store-de",
                          "type": "marketplace",
                          "name": "Online Store (Germany)",
                          "description": "Primary sales channel for all German marketplace orders.",
                          "shopCountry": {
                            "id": 5502,
                            "shopKey": "msde",
                            "countryCode": "DE",
                            "defaultLanguageCode": "en_GB",
                            "supportedLanguageCodes": [],
                            "priceGroupKey": null,
                            "url": "www.example.com",
                            "active": true,
                            "currencyCode": null,
                            "deleted": false
                          },
                          "active": true,
                          "isUsedInOrders": false,
                          "defaultPaymentMethod": {
                            "id": 22,
                            "key": "credit-card"
                          },
                          "configs": {
                            "emailsEnabled": true,
                            "invoicesEnabled": true,
                            "externalPriceOverrideEnabled": false
                          },
                          "createdAt": "2023-05-10T10:00:00+00:00",
                          "updatedAt": "2023-05-10T10:00:00+00:00"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Channels.all({companyId: 1}, {\n    'filters[type]': 'marketplace'\n});\nlet channels = response.body.entities;\nchannels.forEach(channel => {\n  console.log(`Channel ID: ${channel.id}, Name: ${channel.name}`);\n});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n  'filters[type]' => 'marketplace',\n];\n\n$response = $adminApi->channels->all(['companyId' => 1], $options);\nforeach ($response->entities as $channel) {\n    echo \"Channel ID: {$channel->id}, Name: {$channel->name}\\n\";\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"filters[type]\", \"marketplace\")\n                        .build();\nApiCollection<Channel> channelsCollection = adminApi.channels().all(1, options);\nfor (Channel channel : channelsCollection.getEntities()) {\n    System.out.println(\"Channel ID: \" + channel.getId() + \", Name: \" + channel.getName());\n}\n"
          }
        ]
      }
    },
    "/companies/{companyId}/channels/{channelId}": {
      "get": {
        "operationId": "getChannel",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "channels"
        ],
        "tags": [
          "Channels"
        ],
        "summary": "Get an order channel.",
        "description": "This endpoint can be used to retrieve an order channel.\nSee more details in the [Developer Guide](/en/developer-guide/).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/CompanyId"
          },
          {
            "$ref": "#/components/parameters/ChannelId"
          }
        ],
        "responses": {
          "200": {
            "description": "Channel",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Channel"
                },
                "examples": {
                  "Channel": {
                    "$ref": "#/components/examples/ChannelResponse"
                  }
                }
              }
            }
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Channels.getChannel({companyId: 1, channelId: 1});\nlet channel = response.body;\nconsole.log(channel.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$response = $adminApi->channels->getChannel(['companyId' => 1, 'channelId' => 1]);\necho $response->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Channel channel = adminApi.channels().getChannel(1, 1);\nSystem.out.println(\"Channel ID: \" + channel.getId());\n"
          }
        ]
      },
      "put": {
        "operationId": "updateChannel",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "channels"
        ],
        "tags": [
          "Channels"
        ],
        "summary": "Update an order channel.",
        "description": "This endpoint can be used to update an order channel.\nSee more details in the [Developer Guide](/en/developer-guide/).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/CompanyId"
          },
          {
            "$ref": "#/components/parameters/ChannelId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChannelUpdateRequest"
              },
              "examples": {
                "MinimalRequest": {
                  "$ref": "#/components/examples/ChannelMinimalUpdateRequest"
                },
                "CompleteRequest": {
                  "$ref": "#/components/examples/ChannelCompleteUpdateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Channel was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Channel"
                },
                "examples": {
                  "Channel": {
                    "$ref": "#/components/examples/ChannelUpdateResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let updatePayload = {\n  \"name\": \"Updated Online Store (Germany)\",\n  \"description\": \"Updated description for the German marketplace orders.\",\n  \"configs\": {\n    \"emailsEnabled\": false\n  }\n};\nresponse = await client.apis.Channels.updateChannel({companyId: 1, channelId: 1}, {requestBody: updatePayload});\nchannel = response.body;\nconsole.log(`Updated Channel Name: ${channel.name}`);\nconsole.log(`Updated Channel Description: ${channel.description}`);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$updatePayload = new ChannelUpdateRequest();\n$updatePayload->name = 'Updated Online Store (Germany)';\n$updatePayload->description = 'Updated description for the German marketplace orders.';\n\n$configs = new ChannelConfigs();\n$configs->emailsEnabled = false;\n$updatePayload->configs = $configs;\n\n$updatedChannel = $adminApi->channels->updateChannel(['companyId' => 1, 'channelId' => 1], $updatePayload);\necho \"Updated Channel Name: {$updatedChannel->name}\\n\";\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ChannelUpdateRequest updatePayload = new ChannelUpdateRequest();\nupdatePayload.setName(\"Updated Online Store (Germany)\");\nupdatePayload.setDescription(\"Updated description for the German marketplace orders.\");\n\nChannelConfigs configs = new ChannelConfigs();\nconfigs.setEmailsEnabled(false);\nupdatePayload.setConfigs(configs);\n\nChannel updatedChannel = adminApi.channels().updateChannel(1, 1, updatePayload);\nSystem.out.println(\"Updated Channel Name: \" + updatedChannel.getName());\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteChannel",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "channels"
        ],
        "tags": [
          "Channels"
        ],
        "summary": "Delete an order channel.",
        "description": "This endpoint can be used to delete an order channel.\nSee more details in the [Developer Guide](/en/developer-guide/).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/CompanyId"
          },
          {
            "$ref": "#/components/parameters/ChannelId"
          }
        ],
        "responses": {
          "204": {
            "description": "The order channel was successfully deleted."
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "client.apis.Channels.deleteChannel({companyId: 1, channelId: 1});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->channels->deleteChannel(['companyId' => 1, 'channelId' => 1]);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.channels().deleteChannel(1, 1);\n"
          }
        ]
      }
    },
    "/carriers": {
      "post": {
        "operationId": "createCarrier",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "carriers"
        ],
        "tags": [
          "Carriers"
        ],
        "summary": "Create a new carrier",
        "description": "This endpoint can be used to create a new carrier.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/carriers-and-shipments/configuration#create-a-carrier).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Carrier"
              },
              "examples": {
                "Carrier": {
                  "$ref": "#/components/examples/CarrierRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Carrier was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Carrier"
                },
                "examples": {
                  "Carrier": {
                    "$ref": "#/components/examples/CarrierResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newCarrier = {\n    name: \"DHL\",\n    key: \"DHL_STD_NATIONAL\",\n    trackingUrl: \"http://nolp.dhl.de/nextt-online-public/set_identcodes.do\"\n};\n\nlet response = await client.apis.Carriers.createCarrier({}, {requestBody: newCarrier});\nlet createdCarrier = response.body;\n\nconsole.log(createdCarrier.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$carrier = new Carrier();\n$carrier->name = 'DHL';\n$carrier->key = 'DHL_STD_NATIONAL';\n$carrier->trackingUrl = 'http://nolp.dhl.de/nextt-online-public/set_identcodes.do';\n\n$carrier = $adminApi->carriers->create($carrier);\n\necho $carrier->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Carrier carrier = new Carrier();\ncarrier.setName(\"DHL\");\ncarrier.setKey(\"DHL_STD_NATIONAL\");\ncarrier.setTrackingUrl(\"http://nolp.dhl.de/nextt-online-public/set_identcodes.do\");\n\ncarrier = adminApi.carriers().create(carrier);\n\nSystem.out.println(carrier.getId());\n"
          }
        ]
      },
      "get": {
        "operationId": "getCarriers",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "carriers"
        ],
        "tags": [
          "Carriers"
        ],
        "summary": "Get carriers for given filters",
        "description": "This endpoint can be used to retrieve a collection of carriers. It is possible to refine the search by applying filters.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/carriers-and-shipments/configuration#get-a-collection-of-carriers).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/FilterMinId"
          },
          {
            "$ref": "#/components/parameters/SortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "List of carriers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Carrier"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Collection of Carriers": {
                    "value": {
                      "entities": [
                        {
                          "id": 1,
                          "key": "DHL_STD_NATIONAL",
                          "name": "DHL",
                          "trackingUrl": "http://nolp.dhl.de/nextt-online-public/set_identcodes.do"
                        }
                      ],
                      "cursor": {
                        "next": null
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Carriers.getCarriers({\n    limit: 10\n});\nlet carriers = response.body.entities;\n\ncarriers.forEach(\n    carrier => console.log(carrier.name)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'limit' => 10\n];\n\n$carrierCollection = $adminApi->carriers->all($options);\n\nforeach ($carrierCollection->getEntities() as $carrier) {\n    echo $carrier->name;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"limit\", 10)\n                        .build();\n\nApiCollection<Carrier> carrierCollection = adminApi.carriers().all(options);\n\nfor (Carrier carrier : carrierCollection.getEntities()) {\n    System.out.println(carrier.getName());\n}\n"
          }
        ]
      }
    },
    "/carriers/{carrierIdentifier}": {
      "get": {
        "operationId": "getCarrier",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "carriers"
        ],
        "tags": [
          "Carriers"
        ],
        "summary": "Get a carrier",
        "description": "This endpoint can be used to get a single carrier by ID.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/carriers-and-shipments/configuration#get-carrier).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/CarrierIdentifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Carrier",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Carrier"
                },
                "examples": {
                  "Carrier": {
                    "$ref": "#/components/examples/CarrierResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "response = await client.apis.Carriers.getCarrier({carrierIdentifier: 1});\nlet carrier = response.body;\n\nconsole.log(carrier.name);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$carrier = $adminApi->carriers->get(Identifier::fromId(1));\n\necho $carrier->name;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Carrier carrier = adminApi.carriers().get(Identifier.fromId(1));\n\nSystem.out.println(carrier.getName());\n"
          }
        ]
      },
      "put": {
        "operationId": "updateCarrier",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "carriers"
        ],
        "tags": [
          "Carriers"
        ],
        "summary": "Update an existing carrier",
        "description": "This endpoint can be used to update/replace an existing carrier. It does not support partial updates.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/carriers-and-shipments/configuration#update-a-carrier).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/CarrierIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Carrier"
              },
              "examples": {
                "Carrier": {
                  "$ref": "#/components/examples/CarrierRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Carrier was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Carrier"
                },
                "examples": {
                  "Carrier": {
                    "$ref": "#/components/examples/CarrierResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Carriers.getCarrier({carrierIdentifier: 1});\nlet carrier = response.body;\n\ncarrier.key = \"DHL_STD_NATIONAL\";\ncarrier.name = \"DHL\";\ncarrier.trackingUrl = \"http://nolp.dhl.de/nextt-online-public/set_identcodes.do\";\n\nresponse = await client.apis.Carriers.updateCarrier({carrierIdentifier: carrier.id}, {requestBody: carrier});\nlet updatedCarrier = response.body;\n\nconsole.log(updatedCarrier.trackingUrl);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$carrier = $adminApi->carriers->get(Identifier::fromId(1));\n$carrier->trackingUrl = 'http://nolp.dhl.de/nextt-online-public/set_identcodes.do';\n$carrier->key = \"DHL_STD_NATIONAL\";\n$carrier->name = \"DHL\";\n\n$carrier = $adminApi->carriers->update(Identifier::fromId($carrier->id), $carrier);\n\necho $carrier->trackingUrl;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Carrier carrier = adminApi.carriers().get(Identifier.fromId(1));\ncarrier.setTrackingUrl(\"http://nolp.dhl.de/nextt-online-public/set_identcodes.do\");\ncarrier.setKey(\"DHL_STD_NATIONAL\");\ncarrier.setName(\"DHL\");\n\ncarrier = adminApi.carriers().update(Identifier.fromId(carrier.getId()), carrier);\n\nSystem.out.println(carrier.getTrackingUrl());\n"
          }
        ]
      }
    },
    "/merchants": {
      "post": {
        "operationId": "createMerchant",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Merchants"
        ],
        "summary": "Create a new merchant",
        "description": "This endpoint can be used to create a new merchant.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/merchants/general#create-merchant).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantWith"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MerchantCreateOrUpdate"
              },
              "examples": {
                "Merchant": {
                  "$ref": "#/components/examples/MerchantCreateOrUpdateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Merchant was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MerchantCreateOrUpdate"
                },
                "examples": {
                  "Merchant": {
                    "$ref": "#/components/examples/MerchantCreateOrUpdateResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newMerchant = {\n    name: \"ACME\",\n    referenceKey: \"acme\",\n    priority: 1,\n    orderDelegationUrl: \"https://www.acme.com/order\",\n    cancellationUrl: \"https://www.acme.com/cancellation\",\n};\n\nlet response = await client.apis.Merchants.createMerchant({}, {requestBody: newMerchant});\nlet createdMerchant = response.body;\n\nconsole.log(createdMerchant.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$merchant = new Merchant();\n$merchant->name = 'ACME';\n$merchant->referenceKey = 'acme';\n$merchant->priority = 1;\n$merchant->orderDelegationUrl = \"https://www.acme.com/order\";\n$merchant->cancellationUrl = \"https://www.acme.com/cancellation\";\n\n$merchant = $adminApi->merchants->create($merchant);\n\necho $merchant->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Merchant merchant = new MerchantCreateOrUpdate();\nmerchant.setName(\"ACME\");\nmerchant.setReferenceKey(\"acme\");\nmerchant.setPriority(1);\nmerchant.setOrderDelegationUrl(\"https://www.acme.com/order\");\nmerchant.setCancellationUrl(\"https://www.acme.com/cancellation\");\n\nmerchant = adminApi.merchants().create(merchant);\n\nSystem.out.println(merchant.getId());\n"
          }
        ]
      },
      "get": {
        "operationId": "getMerchants",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Merchants"
        ],
        "summary": "Get merchants for given filters",
        "description": "This endpoint can be used to retrieve a collection of merchants. It is possible to refine the search by applying filters.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/merchants/general#get-a-collection-of-merchants).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/FilterMinId"
          },
          {
            "$ref": "#/components/parameters/FilterMaxId"
          },
          {
            "$ref": "#/components/parameters/SortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          },
          {
            "$ref": "#/components/parameters/MerchantWith"
          }
        ],
        "responses": {
          "200": {
            "description": "List of merchants",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Merchant"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Collection of Merchants": {
                    "value": {
                      "entities": [
                        {
                          "id": 1,
                          "referenceKey": "acme",
                          "name": "ACME",
                          "priority": 1,
                          "orderDelegationUrl": "https://acme.com/order-service/delegate-order",
                          "cancellationUrl": "https://acme.com/order-service/cancel-order",
                          "contacts": [
                            {
                              "id": 1,
                              "email": "foo@bar.org",
                              "phone": "123456789",
                              "cellPhone": "123456789",
                              "name": "John Doe",
                              "type": "general",
                              "position": "Partner Service",
                              "description": "Additional information"
                            }
                          ],
                          "returnAddresses": [
                            {
                              "id": 1,
                              "name": "Return Point",
                              "street": "Domstrasse",
                              "streetNo": "10",
                              "zipCode": "22303",
                              "city": "Hamburg",
                              "countryCode": "DE",
                              "dhlCode": "JVGL0849489024"
                            }
                          ],
                          "carriers": [
                            {
                              "countryCode": "DE",
                              "carrier": {
                                "id": 1,
                                "key": "DHL_STD_NATIONAL",
                                "name": "DHL",
                                "trackingUrl": "http://nolp.dhl.de/nextt-online-public/set_identcodes.do"
                              }
                            }
                          ],
                          "warehouses": [
                            {
                              "id": 1,
                              "referenceKey": "my-warehouse"
                            }
                          ]
                        }
                      ],
                      "cursor": {
                        "next": null
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Merchants.getMerchants({\n    limit: 10\n});\nlet merchants = response.body.entities;\n\nmerchants.forEach(\n    merchant => console.log(merchant.name)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'limit' => 10\n];\n\n$merchantCollection = $adminApi->merchants->all($options);\n\nforeach ($merchantCollection->getEntities() as $merchant) {\n    echo $merchant->name;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"limit\", 10)\n                        .build();\n\nApiCollection<Merchant> merchantCollection = adminApi.merchants().all(options);\n\nfor (Merchant merchant : merchantCollection.getEntities()) {\n    System.out.println(merchant.getName());\n}\n"
          }
        ]
      }
    },
    "/merchants/{merchantIdentifier}": {
      "get": {
        "operationId": "getMerchant",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Merchants"
        ],
        "summary": "Get a merchant",
        "description": "This endpoint can be used to get a single merchant by its reference key or ID.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/merchants/general#get-merchant).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          },
          {
            "$ref": "#/components/parameters/MerchantWith"
          }
        ],
        "responses": {
          "200": {
            "description": "Merchant",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Merchant"
                },
                "examples": {
                  "Merchant": {
                    "$ref": "#/components/examples/MerchantResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "response = await client.apis.Merchants.getMerchant({merchantIdentifier: 1});\nlet merchant = response.body;\n\nconsole.log(merchant.name);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$merchant = $adminApi->merchants->get(Identifier::fromId(1));\n\necho $merchant->name;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Merchant merchant = adminApi.merchants().get(Identifier.fromId(1));\n\nSystem.out.println(merchant.getName());\n"
          }
        ]
      },
      "put": {
        "operationId": "updateMerchant",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Merchants"
        ],
        "summary": "Update an existing merchant",
        "description": "This endpoint can be used to update/replace an existing merchant. It does not support partial updates.\nThe `merchantIdentifier` parameter accepts either a merchant id or a merchant key. The merchant key needs to be prefixed by `key%3D`.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/merchants/general#update-merchant).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          },
          {
            "$ref": "#/components/parameters/MerchantWith"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MerchantCreateOrUpdate"
              },
              "examples": {
                "Merchant": {
                  "$ref": "#/components/examples/MerchantCreateOrUpdateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Merchant was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MerchantCreateOrUpdate"
                },
                "examples": {
                  "Merchant": {
                    "$ref": "#/components/examples/MerchantCreateOrUpdateResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Merchants.getMerchant({merchantIdentifier: 1});\nlet merchant = response.body;\n\nmerchant.priority = 1;\n\nresponse = await client.apis.Merchants.updateMerchant({merchantIdentifier: merchant.id}, {requestBody: merchant});\nlet updatedMerchant = response.body;\n\nconsole.log(updatedMerchant.priority);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$merchant = $adminApi->merchants->get(Identifier::fromId(1));\n$merchant->priority = 1;\n\n$merchant = $adminApi->merchants->update(Identifier::fromId($merchant->id), $merchant);\n\necho $merchant->priority;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Merchant merchant = adminApi.merchants().get(Identifier.fromId(1));\nMerchantCreateOrUpdate updatedMerchant = new MerchantCreateOrUpdate();\nupdatedMerchant.setName(merchant.getName());\nupdatedMerchant.setReferenceKey(merchant.getReferenceKey());\nupdatedMerchant.setPriority(1);\nupdatedMerchant.setOrderDelegationUrl(merchant.getOrderDelegationUrl());\nupdatedMerchant.setCancellationUrl(merchant.getCancellationUrl());\n\nupdatedMerchant = adminApi.merchants().update(Identifier.fromId(merchant.getId()), updatedMerchant);\n\nSystem.out.println(updatedMerchant.getPriority());\n"
          }
        ]
      }
    },
    "/merchants/{merchantIdentifier}/contacts": {
      "post": {
        "operationId": "createMerchantContact",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Merchants"
        ],
        "summary": "Create a new contact",
        "description": "This endpoint can be used to create a new contact.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/merchants/general#create-merchant-contact).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MerchantContact"
              },
              "examples": {
                "Contact": {
                  "$ref": "#/components/examples/MerchantContactRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Contact was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MerchantContact"
                },
                "examples": {
                  "Contact": {
                    "$ref": "#/components/examples/MerchantContactResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newContact = {\n    email: \"foo@bar.org\",\n    phone: \"123456789\",\n    cellPhone: \"123456789\",\n    name: \"John Doe\",\n    type: \"general\",\n    position: \"Partner Service\",\n    description: \"Additional information\"\n};\n\nlet response = await client.apis.Merchants.createMerchantContact({merchantIdentifier: 1}, {requestBody: newContact});\nlet createdContact = response.body;\n\nconsole.log(createdContact.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$contact = new MerchantContact();\n$contact->email = 'foo@bar.org';\n$contact->phone = '123456789';\n$contact->cellPhone = '123456789';\n$contact->name = 'John Doe';\n$contact->type = 'general';\n$contact->position = 'Partner Service';\n$contact->description = 'Additional information';\n\n$contact = $adminApi->merchants->createContact(Identifier::fromId(1), $contact);\n\necho $contact->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "MerchantContact contact = new MerchantContact();\ncontact.setEmail(\"foo@bar.org\");\ncontact.setPhone(\"123456789\");\ncontact.setCellPhone(\"123456789\");\ncontact.setName(\"John Doe\");\ncontact.setType(\"general\");\ncontact.setPosition(\"Partner Service\");\ncontact.setDescription(\"Additional information\");\n\ncontact = adminApi.merchants().createContact(Identifier.fromId(1), contact);\n\nSystem.out.println(contact.getId());\n"
          }
        ]
      },
      "get": {
        "operationId": "getMerchantContacts",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Merchants"
        ],
        "summary": "Get contacts for given filters",
        "description": "This endpoint can be used to retrieve a collection of contacts. It is possible to refine the search by applying filters.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/merchants/general#get-a-collection-of-merchant-contacts).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/FilterMinId"
          },
          {
            "$ref": "#/components/parameters/FilterMaxId"
          },
          {
            "$ref": "#/components/parameters/SortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "List of contacts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/MerchantContact"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Contact Collection": {
                    "$ref": "#/components/examples/MerchantContactCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Merchants.getMerchantContacts({merchantIdentifier: 1});\nlet contacts = response.body.entities;\n\ncontacts.forEach(\n    contact => console.log(contact.id)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$contactCollection = $adminApi->merchants->allContacts(Identifier::fromId(1));\n\nforeach ($contactCollection->getEntities() as $contact) {\n    echo $contact->id;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<MerchantContact> contactCollection = adminApi.merchants().allContacts(Identifier.fromId(1));\n\nfor (MerchantContact contact : contactCollection.getEntities()) {\n    System.out.println(contact.getId());\n}\n"
          }
        ]
      }
    },
    "/merchants/{merchantIdentifier}/contacts/{merchantContactId}": {
      "get": {
        "operationId": "getMerchantContact",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Merchants"
        ],
        "summary": "Get a contact",
        "description": "This endpoint can be used to get a single contact by its ID.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/merchants/general#get-a-merchant-contact).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          },
          {
            "$ref": "#/components/parameters/MerchantContactId"
          }
        ],
        "responses": {
          "200": {
            "description": "Contact",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MerchantContact"
                },
                "examples": {
                  "Contact": {
                    "$ref": "#/components/examples/MerchantContactResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Merchants.getMerchantContact({merchantIdentifier: 1, merchantContactId: 1});\nlet contact = response.body;\n\nconsole.log(contact.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$contact = $adminApi->merchants->getContact(Identifier::fromId(1), 1);\n\necho $contact->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "MerchantContact contact = adminApi.merchants().getContact(Identifier.fromId(1), 1);\n\nSystem.out.println(contact.getId());\n"
          }
        ]
      },
      "put": {
        "operationId": "updateMerchantContact",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Merchants"
        ],
        "summary": "Update an existing contact",
        "description": "This endpoint can be used to update/replace an existing contact. It does not support partial updates.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/merchants/general#update-merchant-contact).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          },
          {
            "$ref": "#/components/parameters/MerchantContactId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MerchantContact"
              },
              "examples": {
                "Contact": {
                  "$ref": "#/components/examples/MerchantContactRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Contact was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MerchantContact"
                },
                "examples": {
                  "Contact": {
                    "$ref": "#/components/examples/MerchantContactResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let merchantId = 1;\n\nlet response = await client.apis.Merchants.getMerchantContact({merchantIdentifier: merchantId, merchantContactId: 1});\nlet contact = response.body;\ncontact.phone = \"123456789\";\n\nresponse = await client.apis.Merchants.updateMerchantContact({merchantIdentifier: merchantId, merchantContactId: contact.id}, {requestBody: contact});\ncontact = response.body;\n\nconsole.log(contact.phone);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$merchantId = 1;\n\n$contact = $adminApi->merchants->getContact(Identifier::fromId($merchantId), 1);\n$contact->phone = '123456789';\n$contact = $adminApi->merchants->updateContact(Identifier::fromId($merchantId), $contact->id, $contact);\n\necho $contact->phone;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Integer merchantId = 1;\n\nMerchantContact contact = adminApi.merchants().getContact(Identifier.fromId(merchantId), 1);\ncontact.setPhone(\"123456789\");\ncontact = adminApi.merchants().updateContact(Identifier.fromId(merchantId), contact.getId(), contact);\n\nSystem.out.println(contact.getPhone());\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteMerchantContact",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Merchants"
        ],
        "summary": "Delete a contact",
        "description": "This endpoint can be used to delete a contact.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/merchants/general#delete-merchant-contact).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          },
          {
            "$ref": "#/components/parameters/MerchantContactId"
          }
        ],
        "responses": {
          "204": {
            "description": "Contact was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.Merchants.deleteMerchantContact({merchantIdentifier: 1, merchantContactId: 1});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->merchants->deleteContact(Identifier::fromId(1), 1);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.merchants().deleteContact(Identifier.fromId(1), 1);\n"
          }
        ]
      }
    },
    "/merchants/{merchantIdentifier}/return-addresses": {
      "post": {
        "operationId": "createMerchantReturnAddress",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Merchants"
        ],
        "summary": "Create a new return address",
        "description": "This endpoint can be used to create a new return address.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/merchants/merchant-return-handling#create-a-merchant-return-address).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MerchantReturnAddress"
              },
              "examples": {
                "Return Address": {
                  "$ref": "#/components/examples/MerchantReturnAddressRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Return address was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MerchantReturnAddress"
                },
                "examples": {
                  "Return Address": {
                    "$ref": "#/components/examples/MerchantReturnAddressResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newReturnAddress = {\n    name: \"Return Point\",\n    street: \"Domstrasse\",\n    streetNo: \"10\",\n    zipCode: \"22303\",\n    city: \"Hamburg\",\n    countryCode: \"DE\",\n    dhlCode: \"JVGL0849489024\"\n};\n\nlet response = await client.apis.Merchants.createMerchantReturnAddress({merchantIdentifier: 1}, {requestBody: newReturnAddress});\nlet createdReturnAddress = response.body;\n\nconsole.log(createdReturnAddress.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$returnAddress = new MerchantReturnAddress();\n$returnAddress->name = 'Return Point';\n$returnAddress->street = 'Domstrasse';\n$returnAddress->streetNo = '10';\n$returnAddress->zipCode = '22303';\n$returnAddress->city = 'Hamburg';\n$returnAddress->countryCode = 'DE';\n$returnAddress->dhlCode = 'JVGL0849489024';\n\n$returnAddress = $adminApi->merchants->createReturnAddress(Identifier::fromId(1), $returnAddress);\n\necho $returnAddress->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "MerchantReturnAddress returnAddress = new MerchantReturnAddress();\nreturnAddress.setName(\"Return Point\");\nreturnAddress.setStreet(\"Domstrasse\");\nreturnAddress.setStreetNo(\"10\");\nreturnAddress.setZipCode(\"22303\");\nreturnAddress.setCity(\"Hamburg\");\nreturnAddress.setCountryCode(\"DE\");\nreturnAddress.setDhlCode(\"JVGL0849489024\");\n\nreturnAddress = adminApi.merchants().createReturnAddress(Identifier.fromId(1), returnAddress);\n\nSystem.out.println(returnAddress.getId());\n"
          }
        ]
      },
      "get": {
        "operationId": "getMerchantReturnAddresses",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Merchants"
        ],
        "summary": "Get return addresses for given filters",
        "description": "This endpoint can be used to retrieve a collection of return addresses. It is possible to refine the search by applying filters.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/merchants/merchant-return-handling#get-merchant-return-address-collection).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/FilterMinId"
          },
          {
            "$ref": "#/components/parameters/FilterMaxId"
          },
          {
            "$ref": "#/components/parameters/SortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "List of return addresses",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/MerchantReturnAddress"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Return Address Collection": {
                    "$ref": "#/components/examples/MerchantReturnAddressCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Merchants.getMerchantReturnAddresses({merchantIdentifier: 1});\nlet returnAddresses = response.body.entities;\n\nreturnAddresses.forEach(\n    returnAddress => console.log(returnAddress.id)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$returnAddressCollection = $adminApi->merchants->allReturnAddresses(Identifier::fromId(1));\n\nforeach ($returnAddressCollection->getEntities() as $returnAddress) {\n    echo $returnAddress->id;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<MerchantReturnAddress> returnAddressCollection = adminApi.merchants().allReturnAddresses(Identifier.fromId(1));\n\nfor (MerchantReturnAddress returnAddress : returnAddressCollection.getEntities()) {\n    System.out.println(returnAddress.getId());\n}\n"
          }
        ]
      }
    },
    "/merchants/{merchantIdentifier}/return-addresses/{merchantReturnAddressId}": {
      "get": {
        "operationId": "getMerchantReturnAddress",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Merchants"
        ],
        "summary": "Get a return address",
        "description": "This endpoint can be used to get a single return address by its ID.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/merchants/merchant-return-handling#get-merchant-return-address).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          },
          {
            "$ref": "#/components/parameters/MerchantReturnAddressId"
          }
        ],
        "responses": {
          "200": {
            "description": "Return address",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MerchantReturnAddress"
                },
                "examples": {
                  "Return Address": {
                    "$ref": "#/components/examples/MerchantReturnAddressResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Merchants.getMerchantReturnAddress({merchantIdentifier: 1, merchantReturnAddressId: 1});\nlet returnAddress = response.body;\n\nconsole.log(returnAddress.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$returnAddress = $adminApi->merchants->getReturnAddress(Identifier::fromId(1), 1);\n\necho $returnAddress->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "MerchantReturnAddress returnAddress = adminApi.merchants().getReturnAddress(Identifier.fromId(1), 1);\n\nSystem.out.println(returnAddress.getId());\n"
          }
        ]
      },
      "put": {
        "operationId": "updateMerchantReturnAddress",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Merchants"
        ],
        "summary": "Update an existing return address",
        "description": "This endpoint can be used to update/replace an existing return address. It does not support partial updates.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/merchants/merchant-return-handling#update-merchant-return-address).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          },
          {
            "$ref": "#/components/parameters/MerchantReturnAddressId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MerchantReturnAddress"
              },
              "examples": {
                "Return Address": {
                  "$ref": "#/components/examples/MerchantReturnAddressRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return address was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MerchantReturnAddress"
                },
                "examples": {
                  "Return Address": {
                    "$ref": "#/components/examples/MerchantReturnAddressResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let merchantId = 1;\n\nlet response = await client.apis.Merchants.getMerchantReturnAddress({merchantIdentifier: merchantId, merchantReturnAddressId: 1});\nlet returnAddress = response.body;\nreturnAddress.streetNo = \"10\";\n\nresponse = await client.apis.Merchants.updateMerchantReturnAddress({merchantIdentifier: merchantId, merchantReturnAddressId: returnAddress.id}, {requestBody: returnAddress});\nreturnAddress = response.body;\n\nconsole.log(returnAddress.streetNo);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$merchantId = 1;\n\n$returnAddress = $adminApi->merchants->getReturnAddress(Identifier::fromId($merchantId), 1);\n$returnAddress->streetNo = '10';\n$returnAddress = $adminApi->merchants->updateReturnAddress(Identifier::fromId($merchantId), $returnAddress->id, $returnAddress);\n\necho $returnAddress->streetNo;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Integer merchantId = 1;\n\nMerchantReturnAddress returnAddress = adminApi.merchants().getReturnAddress(Identifier.fromId(merchantId), 1);\nreturnAddress.setStreetNo(\"10\");\nreturnAddress = adminApi.merchants().updateReturnAddress(Identifier.fromId(merchantId), returnAddress.getId(), returnAddress);\n\nSystem.out.println(returnAddress.getStreetNo());\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteMerchantReturnAddress",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Merchants"
        ],
        "summary": "Delete a return address",
        "description": "This endpoint can be used to delete a return address.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/merchants/merchant-return-handling#delete-merchant-return-address).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          },
          {
            "$ref": "#/components/parameters/MerchantReturnAddressId"
          }
        ],
        "responses": {
          "204": {
            "description": "Return address was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.Merchants.deleteMerchantReturnAddress({merchantIdentifier: 1, merchantReturnAddressId: 1});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->merchants->deleteReturnAddress(Identifier::fromId(1), 1);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.merchants().deleteReturnAddress(Identifier.fromId(1), 1);\n"
          }
        ]
      }
    },
    "/merchants/{merchantIdentifier}/carriers/{carrierIdentifier}/countries/{countryCode}": {
      "post": {
        "operationId": "attachMerchantCarrier",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Merchants"
        ],
        "summary": "Attach a carrier to a merchant",
        "description": "This endpoint can be used to attach an existing carrier to a merchant.\n\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/merchants/interact-with-admin-api-in-multi-merchant-setup#attach-a-carrier-to-a-merchant).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          },
          {
            "$ref": "#/components/parameters/CarrierIdentifier"
          },
          {
            "$ref": "#/components/parameters/CountryCode"
          }
        ],
        "responses": {
          "204": {
            "description": "The carrier was successfully attached to the merchant."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.Merchants.attachMerchantCarrier({merchantIdentifier: 1, carrierIdentifier: 1, countryCode: \"DE\"});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->merchants->attachCarrier(Identifier::fromId(1), Identifier::fromId(1), 'DE');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.merchants().attachCarrier(Identifier.fromId(1), Identifier.fromId(1), \"DE\");\n"
          }
        ]
      },
      "delete": {
        "operationId": "detachMerchantCarrier",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Merchants"
        ],
        "summary": "Detach a carrier from a merchant",
        "description": "This endpoint can be used to detach an existing carrier from a merchant\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/merchants/interact-with-admin-api-in-multi-merchant-setup#detach-a-carrier-from-a-merchant).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          },
          {
            "$ref": "#/components/parameters/CarrierIdentifier"
          },
          {
            "$ref": "#/components/parameters/CountryCode"
          }
        ],
        "responses": {
          "204": {
            "description": "The carrier was successfully detached from the merchant."
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.Merchants.detachMerchantCarrier({merchantIdentifier: 1, carrierIdentifier: 1, countryCode: \"DE\"});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->merchants->detachCarrier(Identifier::fromId(1), Identifier::fromId(1), 'DE');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.merchants().detachCarrier(Identifier.fromId(1), Identifier.fromId(1), \"DE\");\n"
          }
        ]
      }
    },
    "/merchants/{merchantIdentifier}/warehouses": {
      "get": {
        "operationId": "getMerchantWarehouses",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Warehouses"
        ],
        "summary": "Get merchant warehouses for given filters",
        "description": "This endpoint can be used to retrieve a collection of warehouses attached to a merchant. It is possible to refine the search by applying filters.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/logistics/warehouses#get-a-collection-of-warehouses-attached-to-a-merchant).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/FilterId"
          },
          {
            "$ref": "#/components/parameters/FilterMinId"
          },
          {
            "$ref": "#/components/parameters/FilterMaxId"
          },
          {
            "$ref": "#/components/parameters/SortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          },
          {
            "$ref": "#/components/parameters/WarehouseWith"
          }
        ],
        "responses": {
          "200": {
            "description": "List of warehouses",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Warehouse"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Collection of Warehouses": {
                    "$ref": "#/components/examples/WarehouseCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.Warehouses.getMerchantWarehouses({merchantIdentifier: 1});\nlet warehouses = response.body.entities;\n\nwarehouses.forEach(\n    warehouse => console.log(warehouse.id)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$warehouseCollection = $adminApi->merchants->allWarehouses(Identifier $merchantIdentifier, array $options = []);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<Warehouse> warehouseCollection = adminApi.merchants().allWarehouses(Identifier.fromId(1));\n\nfor (Warehouse warehouse : warehouseCollection.getEntities()) {\n    System.out.println(warehouse.getId());\n}\n"
          }
        ]
      }
    },
    "/merchants/{merchantIdentifier}/warehouses/{warehouseIdentifier}": {
      "post": {
        "operationId": "attachMerchantWarehouse",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Warehouses"
        ],
        "summary": "Attach a warehouse to a merchant",
        "description": "This endpoint can be used to attach an existing warehouse to a merchant.\n\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/logistics/warehouses#attach-warehouses-to-a-merchant).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          },
          {
            "$ref": "#/components/parameters/WarehouseIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "The warehouse was successfully attached to the merchant."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.Warehouses.attachMerchantWarehouse({merchantIdentifier: 1, warehouseIdentifier: 1});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->merchants->attachWarehouse(Identifier::fromId(1), Identifier::fromId(1));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.merchants().attachWarehouse(Identifier.fromId(1), Identifier.fromId(1));\n"
          }
        ]
      },
      "delete": {
        "operationId": "detachMerchantWarehouse",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "Warehouses"
        ],
        "summary": "Detach a warehouse from a merchant",
        "description": "This endpoint can be used to detach an existing warehouse from a merchant\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/logistics/warehouses#detach-warehouses-from-a-merchant).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          },
          {
            "$ref": "#/components/parameters/WarehouseIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "The warehouse was successfully detached from the merchant."
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.Warehouses.detachMerchantWarehouse({merchantIdentifier: merchantIdentifier, warehouseIdentifier: warehouseIdentifier});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->merchants->detachWarehouse(Identifier $merchantIdentifier, Identifier $warehouseIdentifier);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.merchants().detachWarehouse(Identifier merchantIdentifier, Identifier warehouseIdentifier);\n"
          }
        ]
      }
    },
    "/merchants/{merchantIdentifier}/custom-data": {
      "get": {
        "operationId": "getMerchantCustomData",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "MerchantCustomData"
        ],
        "summary": "Get custom data for a merchant",
        "description": "This endpoint can be used to get custom data for a merchant.\nSee more details in the [Developer Guide](/en/developer-guide/customise-extend/extend-entity-data#get-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Custom data of a merchant",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Merchant Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.MerchantCustomData.getMerchantCustomData({merchantIdentifier: 5038});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->merchants->getCustomData(5038);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.merchants().getCustomData(5038);\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateMerchantCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "MerchantCustomData"
        ],
        "summary": "Create or update custom data for a merchant",
        "description": "This endpoint can be used to create custom data for a merchant.\nSee more details in the [Developer Guide](/en/developer-guide/customise-extend/extend-entity-data#create-or-update-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "Merchant Custom Data": {
                  "$ref": "#/components/examples/CustomDataRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Merchant custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Merchant Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n    isValid: true,\n    score: 100,\n    name: \"ayou\",\n    someJson: {\n        de_DE: {\n          color: \"Weiss\"\n        },\n        en_GB: {\n          color: \"White\"\n        }\n    }\n};\n\nawait client.apis.MerchantCustomData.createOrUpdateMerchantCustomData({merchantIdentifier: 5038}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$entityCustomData = new EntityCustomData();\n$entityCustomData->isValid = true;\n$entityCustomData->score = 100;\n$entityCustomData->name = 'ayou';\n$entityCustomData->someJson = (object) ['de_DE' => ['color' => 'Weiss'], 'en_GB' => ['color' => 'White']];\n\n$adminApi->merchants->createOrUpdateCustomData(5038, $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new entityCustomData();\nentityCustomData.put(\"isValid\", true);\nentityCustomData.put(\"score\", 100);\nentityCustomData.put(\"name\", \"ayou\");\n\nvar deColorObject = new HashMap<String, String>();\ndeColorObject.put(\"color\", \"weiss\");\n\nvar enColorObject = new HashMap<String, String>();\nenColorObject.put(\"color\", \"white\");\n\nEntityCustomData someJson = new HashMap<>();\nsomeJson.put(\"de_DE\", deColorObject);\nsomeJson.put(\"en_GB\", enColorObject);\n\nentityCustomData.put(\"someJson\", someJson);\n\nadminApi.merchants().createOrUpdateCustomData(5038, entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteMerchantCustomData",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "MerchantCustomData"
        ],
        "summary": "Delete custom data for a merchant.",
        "description": "This endpoint can be used to delete custom data for a merchant.\nSee more details in the [Developer Guide](/en/developer-guide/customise-extend/extend-entity-data#delete-custom-data).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Merchant custom data was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.MerchantCustomData.deleteMerchantCustomData({merchantIdentifier: 5038});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->merchants->deleteCustomData(5038);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.merchants().deleteCustomData(5038);\n"
          }
        ]
      }
    },
    "/merchants/{merchantIdentifier}/custom-data/{key}": {
      "get": {
        "operationId": "getMerchantCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataRead"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "MerchantCustomData"
        ],
        "summary": "Get data of a key in custom data for a merchant",
        "description": "This endpoint can be used to get custom data of key for a merchant.\nSee more details in the [Developer Guide](/en/developer-guide/customise-extend/extend-entity-data#get-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Custom data of a key for a merchant",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Merchant Custom Data For Key": {
                    "$ref": "#/components/examples/CustomDataResponseForKey"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.MerchantCustomData.getMerchantCustomDataForKey({merchantIdentifier: 5038, key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->merchants->getCustomDataForKey(5038, 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.merchants().getCustomDataForKey(5038, \"isValid\");\n"
          }
        ]
      },
      "put": {
        "operationId": "createOrUpdateMerchantCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "MerchantCustomData"
        ],
        "summary": "Create or update specific key of custom data for a merchant",
        "description": "This endpoint can be used to create or update specific key of custom data for a merchant.\nSee more details in the [Developer Guide](/en/developer-guide/customise-extend/extend-entity-data#create-or-update-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomData"
              },
              "examples": {
                "Merchant Custom Data For Key": {
                  "$ref": "#/components/examples/CustomDataRequestForKey"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Key of a merchant custom data was successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomData"
                },
                "examples": {
                  "Merchant Custom Data": {
                    "$ref": "#/components/examples/CustomDataResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let customData = {\n  isValid: true\n};\nawait client.apis.MerchantCustomData.createOrUpdateMerchantCustomDataForKey({merchantIdentifier: 5038, key: 'isValid'}, {requestBody: customData});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->merchants->createOrUpdateCustomDataForKey(5038, 'isValid', $entityCustomData);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "import java.util.HashMap; // import the HashMap class\nimport java.util.Map; // import the Map class\n\nvar entityCustomData = new entityCustomData();\nentityCustomData.put(\"isValid\", true);\n\nadminApi.merchants().createOrUpdateCustomDataForKey(5038, \"isValid\", entityCustomData);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteMerchantCustomDataForKey",
        "x-rateLimit": {
          "scope": "customDataWrite"
        },
        "x-resources": [
          "merchants"
        ],
        "tags": [
          "MerchantCustomData"
        ],
        "summary": "Delete a key of custom data for a merchant",
        "description": "This endpoint can be used to delete a key of custom data for a merchant.\nSee more details in the [Developer Guide](/en/developer-guide/customise-extend/extend-entity-data#delete-custom-data-for-a-specific-key).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/MerchantIdentifier"
          },
          {
            "$ref": "#/components/parameters/CustomDataKey"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "204": {
            "description": "Key of a merchant custom data was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.MerchantCustomData.deleteMerchantCustomDataForKey({merchantIdentifier: 5038, key: 'isValid'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->merchants->deleteCustomDataForKey(5038, 'isValid');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.merchants().deleteCustomDataForKey(5038, \"isValid\");\n"
          }
        ]
      }
    },
    "/warehouses": {
      "post": {
        "operationId": "createWarehouse",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "warehouses"
        ],
        "tags": [
          "Warehouses"
        ],
        "summary": "Create a new warehouse",
        "description": "This endpoint can be used to create a new warehouse.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/logistics/warehouses#create-warehouse).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Warehouse"
              },
              "examples": {
                "Warehouse": {
                  "$ref": "#/components/examples/WarehouseRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Warehouse was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Warehouse"
                },
                "examples": {
                  "Warehouse": {
                    "$ref": "#/components/examples/WarehouseResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let newWarehouse = {\n    referenceKey: \"my-warehouse\"\n};\n\nlet response = await client.apis.Warehouses.createWarehouse({}, {requestBody: newWarehouse});\nlet createdWarehouse = response.body;\n\nconsole.log(createdWarehouse.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$warehouse = new Warehouse();\n$warehouse->referenceKey = 'my-warehouse';\n\n$warehouse = $adminApi->warehouses->create($warehouse);\n\necho $warehouse->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Warehouse warehouse = new Warehouse();\nwarehouse.setReferenceKey(\"my-warehouse\");\n\nwarehouse = adminApi.warehouses().create(warehouse);\n\nSystem.out.println(warehouse.getId());\n"
          }
        ]
      },
      "get": {
        "operationId": "getWarehouses",
        "x-rateLimit": {
          "scope": "globalRead"
        },
        "x-resources": [
          "warehouses"
        ],
        "tags": [
          "Warehouses"
        ],
        "summary": "Get warehouses for given filters",
        "description": "This endpoint can be used to retrieve a collection of warehouses. It is possible to refine the search by applying filters.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/logistics/warehouses#get-a-collection).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/FilterId"
          },
          {
            "$ref": "#/components/parameters/FilterMinId"
          },
          {
            "$ref": "#/components/parameters/FilterMaxId"
          },
          {
            "$ref": "#/components/parameters/SortBy"
          },
          {
            "$ref": "#/components/parameters/SortDir"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          },
          {
            "$ref": "#/components/parameters/WarehouseWith"
          }
        ],
        "responses": {
          "200": {
            "description": "List of warehouses",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Warehouse"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Warehouse Collection": {
                    "$ref": "#/components/examples/WarehouseCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Warehouses.getWarehouses();\nlet warehouses = response.body.entities;\n\nwarehouses.forEach(\n    warehouse => console.log(warehouse.id)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$warehouseCollection = $adminApi->warehouses->all();\n\nforeach ($warehouseCollection->getEntities() as $warehouse) {\n    echo $warehouse->id;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiCollection<Warehouse> warehouseCollection = adminApi.warehouses().all();\n\nfor (Warehouse warehouse : warehouseCollection.getEntities()) {\n    System.out.println(warehouse.getId());\n}\n"
          }
        ]
      }
    },
    "/warehouses/{warehouseIdentifier}": {
      "delete": {
        "operationId": "deleteWarehouse",
        "x-rateLimit": {
          "scope": "globalWrite"
        },
        "x-resources": [
          "warehouses"
        ],
        "tags": [
          "Warehouses"
        ],
        "summary": "Delete a warehouse",
        "description": "This endpoint can be used to delete a warehouse.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/logistics/warehouses#delete-a-warehouse).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/WarehouseIdentifier"
          }
        ],
        "responses": {
          "204": {
            "description": "Warehouse was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.Warehouses.deleteWarehouse({warehouseIdentifier: 1});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->warehouses->delete(Identifier::fromId(1));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.warehouses().delete(Identifier.fromId(1));\n"
          }
        ]
      }
    },
    "/promotions": {
      "get": {
        "operationId": "getPromotions",
        "x-resources": [
          "promotions"
        ],
        "tags": [
          "Promotions"
        ],
        "summary": "Get promotions for given filters",
        "description": "This endpoint can be used to request a collection of promotions. It is possible to refine the search by applying filters.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/promotions/promotions#list-promotions).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/FilterIdString"
          },
          {
            "$ref": "#/components/parameters/FilterSingleName"
          },
          {
            "$ref": "#/components/parameters/FilterCompanyId"
          },
          {
            "name": "filters[activeAt]",
            "in": "query",
            "description": "When provided, only promotions that are active during the specified time will be returned.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2021-01-23T11%3A30%3A58%2B00%3A00"
            }
          },
          {
            "name": "filters[shopCountryId]",
            "in": "query",
            "description": "Comma-separated list of shop country IDS that should be used for filtering.",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer"
              }
            }
          },
          {
            "name": "filters[status]",
            "in": "query",
            "description": "Comma-separated list of statuses to filter for.",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "active",
                  "inactive",
                  "archived"
                ]
              }
            }
          },
          {
            "name": "filters[effect]",
            "in": "query",
            "description": "Filter for a specific effect of promotions.",
            "schema": {
              "type": "string",
              "enum": [
                "buy_x_get_y",
                "automatic_discount",
                "combo_deal"
              ]
            }
          },
          {
            "name": "filters[audienceId]",
            "in": "query",
            "description": "Comma-separated list of audience IDs (strings) that should be used for filtering",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filters[activationType]",
            "in": "query",
            "description": "Filter for a specific activation type",
            "schema": {
              "type": "string",
              "enum": [
                "automatic",
                "code"
              ]
            }
          },
          {
            "name": "filters[promotionCodes]",
            "in": "query",
            "description": "Comma-separated list of promotion codes that should be used for filtering",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filters[itemSetIds]",
            "in": "query",
            "description": "Comma-separated list of item set ids that should be used for filtering",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "$ref": "#/components/parameters/PromotionWith"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "List of promotions.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Promotion"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Promotion": {
                    "$ref": "#/components/examples/PromotionCollectionResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "title": "ForbiddenResponse",
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.Promotions.getPromotions({\n  \"filters[id]\": [\"645e0c241a93369ff53f26e0\", \"f0c07b9967fa64f3ab0bdec0\"],\n  \"filters[name]\": \"Christmas Promotion\",\n  \"filters[activeAt]\": \"2024-04-09T10:00:00+00:00\",\n  \"filters[shopCountryId]\": [1, 2, 3],\n  \"filters[companyId]\": [100, 200],\n  \"filters[status]\": [\"active\", \"inactive\", \"archived\"],\n  \"filters[effect]\": \"automatic_discount\",\n  \"filters[audienceId]\": [\"48f75314ba216a213d32868e\", \"02bc1c8cb9b7bcd39247ebd0\"],\n  \"filters[activationType]\": \"code\",\n  \"filters[promotionCodes]\": [\"d27d75a754bf13d014296633\", \"9a22a66d2f1101cdb5b54502\"],\n  \"cursor\": \"Mgo=\",\n  \"limit\": 100,\n  \"with\": \"customData\"\n});\n\nlet promotions = response.body.entities;\n\npromotions.forEach(\n  promotion => console.log(promotion.id)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'filters[id]' => '645e0c241a93369ff53f26e0,f0c07b9967fa64f3ab0bdec0',\n    'filters[name]' => 'Christmas Promotion',\n    'filters[activeAt]' => '2024-04-09T10:00:00+00:00',\n    'filters[shopCountryId]' => '1,2,3',\n    'filters[companyId]' => '100, 200',\n    'filters[status]' => 'active,inactive,archived',\n    'filters[effect]' => 'automatic_discount',\n    'filters[audienceId]' => '48f75314ba216a213d32868e,02bc1c8cb9b7bcd39247ebd0',\n    'filters[activationType]' => 'code',\n    'filters[promotionCodes]' => 'd27d75a754bf13d014296633,9a22a66d2f1101cdb5b54502',\n    'cursor' => 'Mgo=',\n    'limit' => 100,\n    'with' => 'customData',\n];\n\n$promotionCollection = $adminApi->promotions->all($options);\n\nforeach ($promotionCollection->getEntities() as $promotion) {\n  echo $promotion->name;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"limit\", 10)\n                        .addOption(\"cursor\", \"Mgo=\")\n                        .addOption(\"with\", \"customData\")\n                        .addOption(\"filters[id]\", \"645e0c241a93369ff53f26e0,f0c07b9967fa64f3ab0bdec0\")\n                        .addOption(\"filters[name]\", \"Christmas Promotion\")\n                        .addOption(\"filters[activeAt]\", \"2024-04-09T10:00:00+00:00\")\n                        .addOption(\"filters[shopCountryId]\", \"1,2,3\")\n                        .addOption(\"filters[companyId]\", \"100,200\")\n                        .addOption(\"filters[status]\", \"active,inactive,archived\")\n                        .addOption(\"filters[effect]\", \"automatic_discount\")\n                        .addOption(\"filters[audienceId]\", \"48f75314ba216a213d32868e,02bc1c8cb9b7bcd39247ebd0\")\n                        .addOption(\"filters[activationType]\", \"code\")\n                        .addOption(\"filters[promotionCodes]\", \"d27d75a754bf13d014296633,9a22a66d2f1101cdb5b54502\")\n                        .build();\n\nApiCollection<Promotion> promotionCollection = adminApi.promotions().all(options);\n\nfor (Promotion promotion : promotionCollection.getEntities()) {\n    System.out.println(promotion.getName());\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "createPromotion",
        "x-resources": [
          "promotions"
        ],
        "tags": [
          "Promotions"
        ],
        "summary": "Create a promotion",
        "description": "This endpoint can be used to create a promotion.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/promotions/promotions#create-a-promotion).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/PromotionWith"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Promotion"
              },
              "examples": {
                "Promotion": {
                  "$ref": "#/components/examples/PromotionCreateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Promotion was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Promotion"
                },
                "examples": {
                  "Promotion": {
                    "$ref": "#/components/examples/PromotionShowResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/paths/~1promotions/get/responses/403"
          },
          "500": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let promotion = {\n  \"name\": \"Christmas Promotion\",\n  \"status\": \"active\",\n  \"shopCountryIds\": {\n    \"allowList\": [ 139, 554 ]\n  },\n  \"companyIds\": [ 100 ],\n  \"schedule\": {\n    \"from\": \"2023-05-10T10:00:00+00:00\",\n    \"to\": \"2024-05-10T10:00:00+00:00\"\n  },\n  \"effect\": {\n    \"type\": \"buy_x_get_y\",\n    \"additionalData\": {\n      \"variantIds\": [12389244, 23985437],\n      \"maxCount\": 2,\n      \"maxCountType\": \"per_eligible_items_quantity\",\n      \"eligibleItemsQuantity\": 1\n    }\n  },\n  \"activationType\": \"automatic\",\n  \"level\": \"basket\",\n  \"priority\": 10,\n  \"displayName\": {\n    \"de_DE\": \"Weihnachtsaktion\",\n    \"en_US\": \"Christmas Promotion\"\n  },\n  \"customData\": {\n    \"anything\": \"you want to provide\"\n  },\n  \"audiences\": {\n    \"allowList\": [ \"645e0c241a93369ff53f26e0\" ]\n  },\n  \"siblingPromotions\": {\n    \"enabled\": true,\n    \"allowList\": [ \"646235bf496f8f56171c3762\" ],\n    \"level\": \"basket\"\n  },\n  \"usageLimit\": {\n    \"promotion\": {\n      \"count\": 10\n    },\n    \"promotionCodes\": {\n      \"count\": 10,\n      \"type\": \"order\"\n    }\n  },\n  \"conditions\": [\n    {\n      \"level\": \"global\",\n      \"key\": \"mov_100\",\n      \"condition\": \"payload.items.exists(i. 11003 in i.variant.id)\"\n    },\n    {\n      \"level\": \"item\",\n      \"key\": \"mov_100\",\n      \"condition\": \"item.color == 'yellow'\"\n    }\n  ],\n  \"itemSetIds\": [\"646235bf496f8f56171c3762\"]\n};\n\nlet response = await client.apis.Promotions.createPromotion({}, {requestBody: promotion});\nlet createdPromotion = response.body;\n\nconsole.log(createdPromotion.id); \n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$promotion = new Promotion();\n$promotion->name = 'Christmas Promotion';\n$promotion->status = 'active';\n\n$promotion->shopCountryIds = new PromotionShopCountryId();\n$promotion->shopCountryIds->allowList = [139, 554];\n\n$promotion->companyIds = [100];\n\n$promotion->schedule = new PromotionSchedule();\n$promotion->schedule->from = '2023-05-10T10:00:00+00:00';\n$promotion->schedule->to = '2024-05-10T10:00:00+00:00';\n\n// promotion effect can either by 'buy_x_get_y' or 'automatic_discount'\n$promotion->effect = new PromotionEffect();\n$promotion->effect->type = 'buy_x_get_y';\n$promotion->effect->additionalData = new PromotionEffectBuyXGetY();\n$promotion->effect->additionalData->variantIds = [12389244, 23985437];\n$promotion->effect->additionalData->maxCount = 2;\n$promotion->effect->additionalData->maxCountType = 'per_eligible_items_quantity';\n$promotion->effect->additionalData->eligibleItemsQuantity = 1;\n\n// alternative using 'automatic_discount'\n// $promotion->effect = new PromotionEffect();\n// $promotion->effect->type = 'automatic_discount';\n// $promotion->effect->additionalData = new PromotionEffectAutomaticDiscount();\n// $promotion->effect->additionalData->type = 'absolute';\n// $promotion->effect->additionalData->value = 20;\n// $promotion->effect->additionalData->discountDistribution = 'none';\n\n$promotion->activationType = 'automatic';\n$promotion->level = 'basket';\n$promotion->priority = 10;\n$promotion->displayName = [\n  'de_DE' => 'Weihnachtsaktion',\n  'en_US' => 'Christmas Promotion',\n];\n$promotion->customData = [\n  'anything' => 'you want to provide',\n];\n\n$promotion->audiences = new PromotionAudience();\n$promotion->audiences->allowList = ['645e0c241a93369ff53f26e0'];\n\n$promotion->siblingPromotions = new PromotionSiblingPromotion();\n$promotion->siblingPromotions->enabled = true;\n$promotion->siblingPromotions->blockList = ['74623787496f8f56171c3763'];\n$promotion->siblingPromotions->level = 'basket';\n\n$promotion->usageLimit = new PromotionUsageLimit();\n$promotion->usageLimit->promotion = new PromotionUsageLimitPromotion();\n$promotion->usageLimit->promotion->count = 10;\n$promotion->usageLimit->promotionCodes = new PromotionUsageLimitPromotionCode();\n$promotion->usageLimit->promotionCodes->count = 10;\n$promotion->usageLimit->promotionCodes->type = 'order';\n\n$globalCondition = new PromotionCondition();\n$globalCondition->level = 'global';\n$globalCondition->key = 'mov_100';\n$globalCondition->condition = 'payload.items.exists(i. 11003 in i.variant.id)';\n\n$itemCondition = new PromotionCondition();\n$itemCondition->level = 'item';\n$itemCondition->key = 'mov_100';\n$itemCondition->condition = \"item.color == 'yellow'\";\n\n$promotion->conditions = [$globalCondition, $itemCondition];\n\n$promotion->itemSetIds = ['646235bf496f8f56171c3762'];\n\n$response = $adminApi->promotions->create($promotion);\n\necho $response->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Promotion promotion = new Promotion();\npromotion.setName(\"Christmas Promotion\");\npromotion.setStatus(PromotionStatus.VALUE_ACTIVE);\n\nPromotionShopCountryId shopCountryIds = new PromotionShopCountryId();\nshopCountryIds.setAllowList(Arrays.asList(new Integer[] {139, 554}));\npromotion.setShopCountryIds(shopCountryIds);\n\npromotion.setCompanyIds(Arrays.asList(new Integer[] {100}));\n\nPromotionSchedule schedule = new PromotionSchedule();\nschedule.setFrom(java.time.Instant.parse(\"2023-05-10T10:00:00+00:00\"));\nschedule.setTo(java.time.Instant.parse(\"2024-05-10T10:00:00+00:00\"));\npromotion.setSchedule(schedule);\n\nPromotionEffect effect = new PromotionEffect();\neffect.setType(PromotionEffectType.VALUE_BUY_X_GET_Y);\n\nPromotionEffectBuyXGetY effectAdditionalData = new PromotionEffectBuyXGetY();\neffectAdditionalData.setVariantIds(Arrays.asList(new Integer[] {12389244, 23985437}));\neffectAdditionalData.setMaxCount(1);\neffect.setAdditionalData(effectAdditionalData);\n\npromotion.setEffect(effect);\n\npromotion.setActivationType(PromotionActivationType.VALUE_AUTOMATIC);\npromotion.setLevel(PromotionLevel.VALUE_BASKET);\npromotion.setPriority(10);\n\nvar translations = new HashMap<String, String>();\ntranslations.put(\"de_DE\", \"Weihnachtsaktion\");\ntranslations.put(\"en_US\", \"Christmas Promotion\");\npromotion.setDisplayName(translations);\n\nPromotionAudience audience = new PromotionAudience();\naudience.setAllowList(Arrays.asList(new String[] {\"645e0c241a93369ff53f26e0\"}));\npromotion.setAudiences(audience);\n\nPromotionSiblingPromotion siblingPromotion = new PromotionSiblingPromotion();\nsiblingPromotion.setEnabled(true);\nsiblingPromotion.setBlockList(Arrays.asList(new String[] {\"64623787496f8f56171c3763\"}));\nsiblingPromotion.setLevel(PromotionSiblingPromotionLevel.VALUE_BASKET);\npromotion.setSiblingPromotions(siblingPromotion);\n\nPromotionUsageLimit usageLimit = new PromotionUsageLimit();\nPromotionUsageLimitPromotion usageLimitPromotion = new PromotionUsageLimitPromotion();\nPromotionUsageLimitPromotionCode usageLimitPromotionCode = new PromotionUsageLimitPromotionCode();\nusageLimitPromotion.setCount(10);\nusageLimitPromotionCode.setCount(20);\nusageLimitPromotionCode.setType(PromotionUsageLimitPromotionCodeType.VALUE_ORDER);\npromotion.setUsageLimit(usageLimit);\n\nPromotionCondition globalCondition = new PromotionCondition();\nglobalCondition.setLevel(PromotionConditionLevel.VALUE_GLOBAL);\nglobalCondition.setKey(\"mov_100\");\nglobalCondition.setCondition(\"payload.items.exists(i. 11003 in i.variant.id)\");\n\nPromotionCondition itemCondition = new PromotionCondition();\nitemCondition.setLevel(PromotionConditionLevel.VALUE_ITEM);\nitemCondition.setKey(\"mov_100\");\nitemCondition.setCondition(\"item.color == 'yellow'\");\n\npromotion.setConditions(Arrays.asList(new Object[] {globalCondition, itemCondition}));\n\npromotion.setItemSetIds(Arrays.asList(new String[] {\"646235bf496f8f56171c3762\"}));\n\nApiOptions options = ApiOptions.builder()\n                        .addOption(\"with\", \"customData\")\n                        .build();\n\nresponse = adminApi.promotions().create(promotion, options);\n\nSystem.out.println(response.getId());\n"
          }
        ]
      }
    },
    "/promotions/{promotionId}": {
      "get": {
        "operationId": "getPromotion",
        "x-resources": [
          "promotions"
        ],
        "tags": [
          "Promotions"
        ],
        "summary": "Get a promotion",
        "description": "This endpoint can be used to get a single promotion.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/promotions/promotions#list-promotions).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/PromotionId"
          },
          {
            "$ref": "#/components/parameters/PromotionWith"
          }
        ],
        "responses": {
          "200": {
            "description": "A single promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Promotion"
                },
                "examples": {
                  "Promotion": {
                    "$ref": "#/components/examples/PromotionShowResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/paths/~1promotions/get/responses/403"
          },
          "500": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Promotions.getPromotion({promotionId: \"645e0c241a93369ff53f26e0\", with: \"customData\"});\nlet promotion = response.body;\n\nconsole.log(promotion.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'with' => 'customData',\n];\n\n$promotion = $adminApi->promotions->get('645e0c241a93369ff53f26e0');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"with\", \"customData\")\n                        .build();\n\nPromotion promotion = adminApi.promotions().get(\"645e0c241a93369ff53f26e0\", options);\n\nSystem.out.println(promotion.getName());\n"
          }
        ]
      },
      "delete": {
        "operationId": "deletePromotion",
        "x-resources": [
          "promotions"
        ],
        "tags": [
          "Promotions"
        ],
        "summary": "Delete a Promotion",
        "description": "This endpoint can be used to delete a promotion.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/promotions/promotions#delete-a-promotion).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/PromotionId"
          }
        ],
        "responses": {
          "204": {
            "description": "Promotion was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.Promotions.deletePromotion({promotionId: '645e0c241a93369ff53f26e0'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->promotions->delete('645e0c241a93369ff53f26e0');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.promotions().delete(\"645e0c241a93369ff53f26e0\");\n"
          }
        ]
      },
      "put": {
        "operationId": "updatePromotion",
        "x-resources": [
          "promotions"
        ],
        "tags": [
          "Promotions"
        ],
        "summary": "Update an existing promotion",
        "description": "This endpoint can be used to update an existing promotion.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/promotions/promotions#update-a-promotion).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/PromotionId"
          },
          {
            "$ref": "#/components/parameters/PromotionWith"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Promotion"
              },
              "examples": {
                "Promotion": {
                  "$ref": "#/components/examples/PromotionUpdateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Promotion was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Promotion"
                },
                "examples": {
                  "Promotion": {
                    "$ref": "#/components/examples/PromotionShowResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/paths/~1promotions/get/responses/403"
          },
          "500": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let promotion = {\n  \"name\": \"Christmas Promotion\",\n  \"status\": \"active\",\n  \"shopCountryIds\": {\n    \"blockList\": [ 139, 554 ]\n  },\n  \"activationType\": \"code\",\n  \"level\": \"basket\",\n  \"companyIds\": [ 100 ],\n  \"schedule\": {\n    \"from\": \"2023-05-10T10:00:00+00:00\",\n    \"to\": \"2024-05-10T10:00:00+00:00\"\n  },\n  \"effect\": {\n    \"type\": \"buy_x_get_y\",\n    \"additionalData\": {\n      \"variantIds\": [12389244, 23985437],\n      \"maxCount\": 2,\n      \"maxCountType\": \"per_eligible_items_quantity\",\n      \"eligibleItemsQuantity\": 1\n    }\n  }\n}\n\nlet response = await client.apis.Promotions.updatePromotion({promotionId:\"677f9c16d62c216c04f53699\"}, {requestBody: promotion});\nlet updatedPromotion = response.body;\n\nconsole.log(updatedPromotion.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$promotion = new Promotion();\n$promotion->name = 'Christmas Promotion';\n$promotion->status = 'active';\n$promotion->activationType = 'code';\n$promotion->level = 'basket';\n\n$promotion->schedule = new PromotionSchedule();\n$promotion->schedule->from = '2023-05-10T10:00:00+00:00';\n$promotion->schedule->to = '2024-05-10T10:00:00+00:00';\n\n$promotion->shopCountryIds = new PromotionShopCountryId();\n$promotion->shopCountryIds->allowList = [139, 554];\n\n$promotion->companyIds = [100];\n\n$promotion->effect = new PromotionEffect();\n$promotion->effect->type = 'buy_x_get_y';\n$promotion->effect->additionalData = new PromotionEffectBuyXGetY();\n$promotion->effect->additionalData->variantIds = [12389244, 23985437];\n$promotion->effect->additionalData->maxCount = 2;\n$promotion->effect->additionalData->maxCountType = 'per_eligible_items_quantity';\n$promotion->effect->additionalData->eligibleItemsQuantity = 1;\n\n$promotion->itemSetIds = ['646235bf496f8f56171c3762'];\n\n$response = $adminApi->promotions->update('645e0c241a93369ff53f26e0', $promotion);\n\necho $response->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Promotion promotion = new Promotion();\npromotion.setName(\"Christmas Promotion\");\npromotion.setStatus(PromotionStatus.VALUE_ACTIVE);\npromotion.setActivationType(PromotionActivationType.VALUE_CODE);\npromotion.setLevel(PromotionLevel.VALUE_BASKET);\n\nPromotionShopCountryId shopCountryIds = new PromotionShopCountryId();\nshopCountryIds.setBlockList(Arrays.asList(new Integer[] {139, 554}));\npromotion.setShopCountryIds(shopCountryIds);\n\npromotion.setCompanyIds(Arrays.asList(new Integer[] {100}));\n\nPromotionSchedule schedule = new PromotionSchedule();\nschedule.setFrom(java.time.Instant.parse(\"2023-05-10T10:00:00+00:00\"));\nschedule.setTo(java.time.Instant.parse(\"2024-05-10T10:00:00+00:00\"));\npromotion.setSchedule(schedule);\n\nPromotionEffect effect = new PromotionEffect();\neffect.setType(PromotionEffectType.VALUE_BUY_X_GET_Y);\n\nPromotionEffectBuyXGetY effectAdditionalData = new PromotionEffectBuyXGetY();\neffectAdditionalData.setVariantIds(Arrays.asList(new Integer[] {12389244, 23985437}));\neffectAdditionalData.setMaxCount(1);\neffect.setAdditionalData(effectAdditionalData);\n\npromotion.setEffect(effect);\n\npromotion.setItemSetIds(Arrays.asList(new String[] {\"646235bf496f8f56171c3762\"}));\n\nApiOptions options = ApiOptions.builder()\n                        .addOption(\"with\", \"customData\")\n                        .build();\n\nresponse = adminApi.promotions().update(promotion, options);\n\nSystem.out.println(response.getId());\n"
          }
        ]
      }
    },
    "/promotions/{promotionId}/codes": {
      "get": {
        "operationId": "getPromotionCodes",
        "x-resources": [
          "promotions"
        ],
        "tags": [
          "PromotionCodes"
        ],
        "summary": "Get promotions codes belonging to a specific promotion",
        "description": "This endpoint can be used to request a collection of promotion codes that belong to a specific promotion.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/PromotionId"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "List of promotion codes.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PromotionCode"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Promotion Codes Collection": {
                    "$ref": "#/components/examples/PromotionCodesCollectionResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/paths/~1promotions/get/responses/403"
          },
          "500": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await adminApi.apis.PromotionCodes.getPromotionCodes({\n  \"promotionId\": \"645e0c241a93369ff53f26e0\",\n  \"cursor\": \"xxx\",\n  \"limit\": 100\n});\n\nlet promotionCodes = response.body.entities;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'cursor' => 'xxx',\n    'limit' => 100,\n];\n\n$promotionCodesCollection = $adminApi->promotionCodes->all('645e0c241a93369ff53f26e0', $options);\nforeach ($promotionCodesCollection->getEntities() as $promotionCode) {\n  echo $promotionCode->code;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"limit\", 10)\n                        .addOption(\"cursor\", \"xxx\")\n                        .build();\n\nApiCollection<PromotionCode> promotionCodesCollection = adminApi.promotionCodes().all(\"645e0c241a93369ff53f26e0\", options);\n\nfor (PromotionCode promotionCode : promotionCodesCollection.getEntities()) {\n    System.out.println(promotionCode.getCode());\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "createPromotionCodes",
        "x-resources": [
          "promotions"
        ],
        "tags": [
          "PromotionCodes"
        ],
        "summary": "Create promotion codes",
        "description": "This endpoint can be used to create promotion codes for an existing promotion.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/PromotionId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PromotionCodes"
              },
              "examples": {
                "Promotion": {
                  "$ref": "#/components/examples/PromotionCodesRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Promotion Codes are successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromotionCodes"
                },
                "examples": {
                  "Promotion": {
                    "$ref": "#/components/examples/PromotionCodesResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/paths/~1promotions/get/responses/403"
          },
          "500": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let promotionCodes = {\n  \"promotionCodes\": [\"BF24\", \"XMAS24\"],\n};\n\nlet response = await client.apis.PromotionCodes.createPromotionCodes({promotionId: \"645e0c241a93369ff53f26e0\"}, {requestBody: promotionCodes});\nlet createdPromotionCodes = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$promotionCodes = new PromotionCodes();\n$promotionCodes->promotionCodes = ['BF24', 'XMAS24'];\n\n$response = $adminApi->promotionCodes->create('645e0c241a93369ff53f26e0', $promotionCodes);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "PromotionCodes promotionCodes = new PromotionCodes();\n\nList<String> codes = new ArrayList<>();\ncodes.add(\"BF24\");\ncodes.add(\"XMAS24\");\npromotionCodes.setPromotionCodes(codes);\n\ncreatedPromotionCodes = adminApi.promotionCodes().create(\"645e0c241a93369ff53f26e0\", promotionCodes);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deletePromotionCodes",
        "x-resources": [
          "promotions"
        ],
        "tags": [
          "PromotionCodes"
        ],
        "summary": "Delete all or specific promotion Codes of a Promotion",
        "description": "This endpoint can be used to delete all or specific promotion codes belonging to a promotion. \nIf the list of codes is not provided in the request, it will delete all codes related to the given promotion.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/PromotionId"
          },
          {
            "name": "promotionCodes",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of promotion codes",
            "example": "?promotionCodes=BF24,XMAS24",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 2,
                "maxLength": 30
              }
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Promotion codes successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.PromotionCodes.deletePromotionCodes({promotionId: \"645e0c241a93369ff53f26e0\", promotionCodes: \"BF24,XMAS24\"});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n  'promotionCodes' => \"BF24,XMAS24\"\n];\n\n$adminApi->promotionCodes->delete('645e0c241a93369ff53f26e0', $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                      .addOption(\"promotionCodes\", \"BF24,XMAS24\")\n                      .build();\n\nadminApi.promotionCodes().delete(\"645e0c241a93369ff53f26e0\", options);\n"
          }
        ]
      }
    },
    "/create-promotion": {
      "post": {
        "operationId": "createV1Promotion",
        "x-resources": [
          "promotions"
        ],
        "tags": [
          "Promotions"
        ],
        "deprecated": true,
        "summary": "Create a promotion",
        "description": "This endpoint can be used to create a promotion.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/promotions/promotions#create-a-promotion).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PromotionV1"
              },
              "examples": {
                "Promotion": {
                  "$ref": "#/components/examples/PromotionRequestV1"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Promotion was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromotionV1"
                },
                "examples": {
                  "Promotion": {
                    "$ref": "#/components/examples/PromotionResponseV1"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/paths/~1promotions/get/responses/403"
          },
          "500": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let promotion = {\n    name: \"MyPromotion\",\n    schedule: {\n        from: \"2023-05-10T10:00:00+00:00\",\n        to: \"2023-05-10T10:00:00+00:00\"\n    },\n    isActive: true,\n    shopId: [\"1000\"],\n    companyId: \"100\",\n    effect: {\n        id: \"buy_x_get_y\",\n        additionalData: {\n            variant_ids: [1, 2],\n            max_count: 2\n        }\n    },\n    itemConditions: [\n        {\n            key: \"mov_100\",\n            condition: \"item.color == \\\"yellow\\\"\"\n        }\n    ]\n};\n\nlet response = await client.apis.Promotions.createV1Promotion({}, {requestBody: promotion});\npromotion = response.body;\n\nconsole.log(promotion.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$schedule = new PromotionScheduleV1();\n$schedule->from = '2023-05-10T10:00:00+00:00';\n$schedule->to = '2023-05-10T10:00:00+00:00';\n\n$effect = new PromotionEffectV1();\n$effect->id = 'buy_x_get_y';\n$effect->additionalData = [\n    'variant_ids' => [1, 2],\n    'max_count' => 1,\n];\n\n$condition = new PromotionItemConditionV1();\n$condition->key = 'mov_100';\n$condition->condition = 'item.color == \"yellow\"';\n\n$promotion = new PromotionV1();\n$promotion->name = 'MyPromotion';\n$promotion->schedule = $schedule;\n$promotion->isActive = true;\n$promotion->shopId = ['1000'];\n$promotion->companyId = ['100'];\n$promotion->effect = $effect;\n$promotion->itemConditions = [$condition];\n\n$promotion = $adminApi->promotionV1s->create($promotion);\n\necho $promotion->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "PromotionScheduleV1 schedule = new PromotionScheduleV1();\nschedule.setFrom(\"2023-05-10T10:00:00+00:00\");\nschedule.setTo(\"2023-05-10T10:00:00+00:00\");\n\nMap<String, String> effectAdditionalData = new HashMap<>();\neffectAdditionalData.put(\"variant_ids\", Arrays.asList(new Integer[] {1, 2}));\neffectAdditionalData.put(\"max_count\", 1); \n\nPromotionEffectV1 effect = new PromotionEffectV1();\neffect.setId(PromotionEffectType.VALUE_BUY_X_GET_Y);\neffect.setAdditionalData(effectAdditionalData);\n\nPromotionItemConditionV1 condition = new PromotionItemConditionV1();\ncondition.setKey(\"mov_100\");\ncondition.setCondition(\"item.color == \\\"yellow\\\"\");\n\nPromotion promotion = new PromotionV1();\npromotion.setName(\"MyPromotion\");\npromotion.setSchedule(schedule);\npromotion.setIsActive(true);\npromotion.setShopId(Arrays.asList(new String[] {\"1000\"}));\npromotion.setCompanyId(Arrays.asList(new String[] {\"100\"}));\npromotion.setEffect(effect);\npromotion.setItemConditions(Arrays.asList(new PromotionItemConditionV1[] {condition}));\n\npromotion = adminApi.promotionV1s().create(promotion);\n\nSystem.out.println(promotion.getId());\n"
          }
        ]
      }
    },
    "/update-promotion/{promotionId}": {
      "put": {
        "operationId": "updateV1Promotion",
        "x-resources": [
          "promotions"
        ],
        "tags": [
          "Promotions"
        ],
        "deprecated": true,
        "summary": "Update a promotion",
        "description": "This endpoint can be used to update a promotion.\nSee more details in the [Developer Guide](/en/core-documentation/checkout-guide/features/promotions/promotions#update-a-promotion).\n",
        "parameters": [
          {
            "name": "promotionId",
            "description": "Promotion id",
            "in": "path",
            "required": true,
            "example": 1,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PromotionV1"
              },
              "examples": {
                "Promotion": {
                  "$ref": "#/components/examples/PromotionRequestV1"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Promotion was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromotionV1"
                },
                "examples": {
                  "Promotion": {
                    "$ref": "#/components/examples/PromotionResponseV1"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/paths/~1promotions/get/responses/403"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "500": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let promotion = {\n    name: \"MyPromotion\",\n};\n\nlet response = await client.apis.Promotions.updateV1Promotion({promotionId: \"65688b0987f54332106a579e\"}, {requestBody: promotion});\npromotion = response.body;\n\nconsole.log(promotion.name);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$promotion = new PromotionV1();\n$promotion->name = 'NewName';\n\n$promotion = $adminApi->promotionV1s->update('65688b0987f54332106a579e', $promotion);\n\necho $promotion->name;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "PromotionV1 promotion = new PromotionV1();\npromotion.setName(\"NewName\");\n\npromotion = adminApi.promotionV1s().update(\"65688b0987f54332106a579e\", promotion);\n\nSystem.out.println(promotion.getName());\n"
          }
        ]
      }
    },
    "/promotions/audiences": {
      "get": {
        "operationId": "getAudiences",
        "tags": [
          "Promotions"
        ],
        "x-resources": [
          "promotions"
        ],
        "summary": "Get audiences for given filters",
        "description": "This endpoint can be used to get a list of audiences for given filters.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/pricing-and-promotions/audiences#listing-audiences).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/FilterIdString"
          },
          {
            "$ref": "#/components/parameters/FilterSingleName"
          },
          {
            "$ref": "#/components/parameters/FilterCompanyId"
          },
          {
            "name": "filters[customerId]",
            "in": "query",
            "description": "Comma-separated list of customer IDs that should be used for filtering.",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer"
              }
            }
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          },
          {
            "$ref": "#/components/parameters/Limit"
          }
        ],
        "responses": {
          "200": {
            "description": "List of audiences",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Audience"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "Audience": {
                    "$ref": "#/components/examples/AudienceCollectionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.Promotions.getAudiences({\n    'filters[name]': 'MyAudienceName'\n});\nlet audiences = response.body.entities;\n\naudiences.forEach(\n    audience => console.log(audience.name)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n  'filters[name]' => 'MyAudienceName'\n];\n\n$audiencesCollection = $adminApi->audiences->getAudiences($options);\n\nforeach ($audiencesCollection->getEntities() as $audience) {\n    echo $audience->name;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"filters[name]\", \"MyAudienceName\")\n                        .build();\n\nApiCollection<Audience> audiencesCollection = adminApi.audiences().getAudiences(options);\n\nfor (Audience audience : audiencesCollection.getEntities()) {\n    System.out.println(audience.getName());\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "createAudience",
        "tags": [
          "Promotions"
        ],
        "x-resources": [
          "promotions"
        ],
        "summary": "Create a new audience",
        "description": "This endpoint can be used to create a new audience.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/pricing-and-promotions/audiences#create-an-audience).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Audience"
              },
              "examples": {
                "Audience": {
                  "$ref": "#/components/examples/AudienceRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Audience was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Audience"
                },
                "examples": {
                  "Brand": {
                    "$ref": "#/components/examples/AudienceResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let audience = {\n  name: \"VIP customers\",\n  description: \"German VIP Customers from Hamburg only\",\n  companyIds: [\n      100\n  ],\n  customerIds: [\n      345,\n      456,\n      567\n  ]\n};\n\nlet response = await client.apis.Promotions.createAudience({}, {requestBody: audience});\nlet createdAudience = response.body;\n\nconsole.log(createdAudience.id);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$audience = new Audience();\n$audience->name = 'VIP customers';\n$audience->description = 'German VIP Customers from Hamburg only';\n$audience->companyIds = [100];\n$audience->customerIds = [345,456,567];\n\n$createdAudience = $adminApi->audiences->createAudience($audience);\n\necho $createdAudience->id;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Audience audience = new Audience();\naudience.setName(\"VIP customers\");\naudience.setDescription(\"German VIP Customers from Hamburg only\");\nList<Integer> companyIds = Arrays.asList(100);\naudience.setCompanyIds(companyIds);\nList<Integer> customerIds = Arrays.asList(345, 456, 567);\naudience.setCustomerIds(customerIds);\n\nAudience createdAudience = adminApi.audiences().createAudience(audience);\n"
          }
        ]
      }
    },
    "/promotions/audiences/{audienceId}": {
      "get": {
        "operationId": "getAudience",
        "tags": [
          "Promotions"
        ],
        "x-resources": [
          "promotions"
        ],
        "summary": "Get an audience",
        "description": "This endpoint can be used to get a single audience by ID.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/pricing-and-promotions/audiences#get-a-single-audience).\n",
        "parameters": [
          {
            "name": "audienceId",
            "description": "Audience id",
            "in": "path",
            "required": true,
            "example": "645e0c241a93369ff53f26e0",
            "schema": {
              "type": "string",
              "maxLength": 24,
              "minLength": 24
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Audience",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Audience"
                },
                "examples": {
                  "Audience": {
                    "$ref": "#/components/examples/AudienceResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "response = await client.apis.Promotions.getAudience({audienceId: '645e0c241a93369ff53f26e0'});\nlet audience = response.body;\n\nconsole.log(audience.name);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$audience = $adminApi->audiences->getAudience('645e0c241a93369ff53f26e0');\necho $audience->name;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Audience audience = adminApi.audiences().getAudience(\"645e0c241a93369ff53f26e0\");\nSystem.out.println(audience.getName());\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteAudience",
        "tags": [
          "Promotions"
        ],
        "x-resources": [
          "promotions"
        ],
        "summary": "Delete an audience",
        "description": "This endpoint can be used to delete an audience.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/pricing-and-promotions/audiences#delete-an-audience).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/AudienceId"
          }
        ],
        "responses": {
          "204": {
            "description": "Audience was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.Promotions.deleteAudience({audienceId: '645e0c241a93369ff53f26e0'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->audiences->deleteAudience('645e0c241a93369ff53f26e0');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.audiences().deleteAudience(\"645e0c241a93369ff53f26e0\");\n"
          }
        ]
      },
      "put": {
        "operationId": "updateAudience",
        "tags": [
          "Promotions"
        ],
        "x-resources": [
          "promotions"
        ],
        "summary": "Update an audience",
        "description": "This endpoint can be used to update an audience.\nSee more details in the [Developer Guide](/en/core-documentation/developer-guide/pricing-and-promotions/audiences#update-an-audience).\n",
        "parameters": [
          {
            "name": "audienceId",
            "description": "Audience id",
            "in": "path",
            "required": true,
            "example": "645e0c241a93369ff53f26e0",
            "schema": {
              "type": "string",
              "maxLength": 24,
              "minLength": 24
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AudienceUpdateRequest"
              },
              "examples": {
                "AudienceUpdateRequest": {
                  "value": {
                    "name": "VIP customers",
                    "description": "German VIP Customers from Hamburg only",
                    "customerIds": [
                      345,
                      456,
                      567
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Audience was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Audience"
                },
                "examples": {
                  "Audience": {
                    "$ref": "#/components/examples/AudienceResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let audience = {\n  name: 'VIP customers updated',\n  description: 'German VIP Customers from Hamburg only',\n  customerIds: [345,456,567]\n};\n\nlet response = await client.apis.Promotions.updateAudience({audienceId: '645e0c241a93369ff53f26e0'}, {requestBody: audience});\nlet updatedAudience = response.body;\n\nconsole.log(updatedAudience.name);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$audienceUpdateRequest = new AudienceUpdateRequest([\n  'name' => 'VIP customers',\n  'description' => 'German VIP Customers from Hamburg only',\n  'customerIds' => [345,456,567]\n]);\n\n$updatedAudience = $adminApi->audiences->updateAudience('645e0c241a93369ff53f26e0', $audienceUpdateRequest);\necho $updateAudience->name;\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "AudienceUpdateRequest audienceRequest = new AudienceUpdateRequest();\naudienceRequest.setName(\"VIP customers\");\naudienceRequest.setDescription(\"German VIP Customers from Hamburg only\");\nList<Integer> customerIds = Arrays.asList(345, 456, 567);\naudienceRequest.setCustomerIds(customerIds);\n\nupdatedAudience = adminApi.audiences().updateAudience(\"645e0c241a93369ff53f26e0\", audienceRequest);\n\nSystem.out.println(updatedAudience.getName());\n"
          }
        ]
      }
    },
    "/promotions/item-sets": {
      "get": {
        "operationId": "getPromotionItemSets",
        "x-resources": [
          "promotions"
        ],
        "tags": [
          "PromotionItemSets"
        ],
        "summary": "Get promotion item sets for given filters",
        "description": "This endpoint can be used to request a collection of promotion item sets. It is possible to refine the search by applying filters.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/introduction/promotions/managing-a-promotion/item-sets#list-of-itemsets).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/FilterIdString"
          },
          {
            "$ref": "#/components/parameters/FilterSingleName"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "List of promotion item sets.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PromotionItemSet"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "PromotionItemSets": {
                    "value": {
                      "entities": [
                        {
                          "id": "64cbc70225ae598c0d0d0334",
                          "name": "T-Shirts",
                          "variantIds": [
                            1,
                            2,
                            3
                          ],
                          "condition": "payload.items.exists(i, 11003 in i.variant.id)",
                          "eligibleItemsQuantity": 1
                        }
                      ],
                      "cursor": {
                        "next": "Mgo="
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/paths/~1promotions/get/responses/403"
          },
          "500": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.PromotionItemSets.getPromotionItemSets({\n  \"filters[id]\": [\"64cbc70225ae598c0d0d0334\", \"f0c07b9967fa64f3ab0bdec0\"],\n  \"filters[name]\": \"T-Shirts\",\n  \"cursor\" => \"Mgo=\",\n  \"limit\": 20\n});\n\nlet promotionItemSets = response.body.entities;\n\npromotionItemSets.forEach(\n  promotionItemSet => console.log(promotionItemSet.id)\n);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'filters[id]' => '64cbc70225ae598c0d0d0334,f0c07b9967fa64f3ab0bdec0',\n    'filters[name]' => 'T-Shirts',\n    'cursor' => 'Mgo=',\n    'limit' => 20,\n];\n\n$promotionCollection = $adminApi->promotionItemSets->all($options);\n\nforeach ($promotionCollection->getEntities() as $promotion) {\n  echo $promotion->name;\n}\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"filters[id]\", \"64cbc70225ae598c0d0d0334,f0c07b9967fa64f3ab0bdec0\")\n                        .addOption(\"filters[name]\", \"Christmas Promotion\")\n                        .addOption(\"cursor\", \"Mgo=\")\n                        .addOption(\"limit\", 20)\n                        .build();\n\nApiCollection<PromotionItemSet> promotionItemSetCollection = adminApi.promotionItemSets().all(options);\n\nfor (PromotionItemSet promotionItemSet : promotionItemSetCollection.getEntities()) {\n    System.out.println(promotionItemSet.getName());\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "createPromotionItemSet",
        "x-resources": [
          "promotions"
        ],
        "tags": [
          "PromotionItemSets"
        ],
        "summary": "Create an item set for promotions",
        "description": "This endpoint can be used to create an item set for promotions.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/introduction/promotions/managing-a-promotion/item-sets#create-itemset).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PromotionItemSet"
              },
              "examples": {
                "PromotionItemSet": {
                  "$ref": "#/components/examples/PromotionItemSetCreateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Promotion Item Set was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromotionItemSet"
                },
                "examples": {
                  "PromotionItemSet": {
                    "$ref": "#/components/examples/PromotionItemSetResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/paths/~1promotions/get/responses/403"
          },
          "500": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let promotionItemSet = {\n  \"name\": \"T-Shirts\",\n  \"condition\": \"payload.items.exists(i, 11003 in i.variant.id)\",\n  \"eligibleItemsQuantity\": 1,\n};\n\nlet response = await client.apis.PromotionItemSets.createPromotionItemSet({}, {requestBody: promotionItemSet});\nlet createdPromotionItemSet = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$promotionItemSet = new PromotionItemSet();\n$promotionItemSet->name = 'T-Shirts';\n$promotionItemSet->variantIds = [1, 2, 3];\n$promotionItemSet->eligibleItemsQuantity = 1;\n\n$response = $adminApi->promotionItemSets->create($promotionItemSet);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "PromotionItemSet promotionItemSet = new PromotionItemSet();\n\npromotionItemSet.setName(\"T-Shirts\");\npromotionItemSet.setCondition(\"payload.items.exists(i, 11003 in i.variant.id)\");\npromotionItemSet.setEligibleItemsQuantity(1);\n\nPromotionItemSet createdPromotionItemSet = adminApi.promotionItemSets().create(promotionItemSet);\n"
          }
        ]
      }
    },
    "/promotions/item-sets/{promotionItemSetId}": {
      "get": {
        "operationId": "getPromotionItemSet",
        "x-resources": [
          "promotions"
        ],
        "tags": [
          "PromotionItemSets"
        ],
        "summary": "Get an promotion item set by id",
        "description": "This endpoint can be used to get an promotion item set by id.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/introduction/promotions/managing-a-promotion/item-sets#get-itemset).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/PromotionItemSetId"
          }
        ],
        "responses": {
          "200": {
            "description": "A single Promotion Item Set.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromotionItemSet"
                },
                "examples": {
                  "PromotionItemSet": {
                    "$ref": "#/components/examples/PromotionItemSetResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/paths/~1promotions/get/responses/403"
          },
          "500": {
            "$ref": "#/paths/~1products/post/responses/503"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "let response = await client.apis.PromotionItemSets.getPromotionItemSet({}, {requestBody: promotionItemSet});\nlet promotionItemSet = response.body;\n\nconsole.log(promotion.name);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$promotionItemSet = $adminApi->promotionItemSets->get('64cbc70225ae598c0d0d0334');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "PromotionItemSet promotionItemSet = adminApi.promotionItemSets().get(\"64cbc70225ae598c0d0d0334\");\n\nSystem.out.println(promotionItemSet.getName());\n"
          }
        ]
      },
      "delete": {
        "operationId": "deletePromotionItemSet",
        "x-resources": [
          "promotions"
        ],
        "tags": [
          "PromotionItemSets"
        ],
        "summary": "Delete an item set of a promotion",
        "description": "This endpoint can be used to delete an item set of a promotion.\nSee more details in the [Developer Guide](/en/core-documentation/advanced/introduction/promotions/managing-a-promotion/item-sets#delete-itemset).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/PromotionItemSetId"
          }
        ],
        "responses": {
          "204": {
            "description": "Item set was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.PromotionItemSets.deletePromotionItemSet({promotionItemSetId: '645e0c241a93369ff53f26e0'});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->promotionItemSets->delete(promotionItemSetId: '645e0c241a93369ff53f26e0');\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.promotionItemSets().delete(\"645e0c241a93369ff53f26e0\");\n"
          }
        ]
      }
    },
    "/reservations": {
      "post": {
        "operationId": "createReservations",
        "x-rateLimit": {
          "scope": "reservationsWrite"
        },
        "x-resources": [
          "reservations"
        ],
        "tags": [
          "Reservations"
        ],
        "summary": "Create new reservations",
        "description": "This endpoint can be used to create new stock quantity reservations when orders are handled outside of SCAYLE.\n\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/stock#create-reservations).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "minItems": 1,
                "maxItems": 100,
                "items": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Reservation"
                    },
                    {
                      "type": "object",
                      "required": [
                        "warehouseReferenceKey",
                        "variant"
                      ]
                    }
                  ]
                }
              },
              "examples": {
                "Create Reservations": {
                  "$ref": "#/components/examples/CreateReservationsRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reservations were successfully created. Response is successful, even if single or all reservations fail.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "maxItems": 100,
                      "items": {
                        "$ref": "#/components/schemas/Reservation"
                      }
                    }
                  }
                },
                "examples": {
                  "Reservations": {
                    "$ref": "#/components/examples/CreateReservationsResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Response status code is only 400 when the entire payload is considered invalid and does not get processed at all,\ne.g. due to API schema violation or duplicate referenceKeys.\n"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422",
            "description": "Response status code is 422 when the payload is valid but single or all reservations fail due to domain specific rules(e.g. provided reservation ttl is too high).\n"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const reservations = [];\n\nconst reservation1 = {\n  referenceKey: 'order4711-item3',\n  warehouseReferenceKey: 'myWarehouse',\n  reservationTtl: 3600,\n  variant: {\n    id: 123,\n    merchantReferenceKey: 'merchant-1',\n  }\n};\n\nconst reservation2 = {\n  referenceKey: 'order4711-item4',\n  warehouseReferenceKey: 'myWarehouse',\n  variant: {\n    referenceKey: 'foo-456789',\n    merchantReferenceKey: 'merchant-1',\n  }\n};\n\nreservations.push(reservation1);\nreservations.push(reservation2);\n\nconst result = await client.apis.Reservations.createReservations({}, {requestBody: reservations});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$reservations = [];\n\n$reservation1 = new Reservation();\n$reservation1->referenceKey = 'order4711-item3';\n$reservation1->warehouseReferenceKey = 'myWarehouse';\n$reservation1->reservationTtl = 3600;\n$reservation1->variant = new ReservationVariant();\n$reservation1->variant->id = 123;\n$reservation1->variant->merchantReferenceKey = 'merchant-1';\n\n$reservation2 = new Reservation();\n$reservation2->referenceKey = 'order4711-item4';\n$reservation2->warehouseReferenceKey = 'myWarehouse';\n$reservation2->variant = new ReservationVariant();\n$reservation2->variant->referenceKey = 'foo-456789';\n$reservation2->variant->merchantReferenceKey = 'merchant-1';\n\n$reservations[] = $reservation1;\n$reservations[] = $reservation2;\n\n$result = $adminApi->reservations->create($reservations);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "List<Reservation> reservations = new ArrayList<>();\n\nReservation reservation1 = new Reservation();\nreservation1.setReferenceKey(\"order4711-item3\");\nreservation1.setWarehouseReferenceKey(\"myWarehouse\");\nreservation1.setReservationTtl(3600);\nreservation1.setVariant(new ReservationVariant());\nreservation1.getVariant().setId(123);\nreservation1.getVariant().setMerchantReferenceKey(\"merchant-1\");\n\nReservation reservation2 = new Reservation();\nreservation2.setReferenceKey(\"order4711-item4\");\nreservation2.setWarehouseReferenceKey(\"myWarehouse\");\nreservation2.setVariant(new ReservationVariant());\nreservation2.getVariant().setReferenceKey(\"foo-456789\");\nreservation2.getVariant().setMerchantReferenceKey(\"merchant-1\");\n\nreservations.add(reservation1);\nreservations.add(reservation2);\n\nList<Reservation> result = adminApi.reservations().create(reservations);\n"
          }
        ]
      }
    },
    "/reservations/{reservationIdentifier}": {
      "delete": {
        "operationId": "deleteReservation",
        "x-rateLimit": {
          "scope": "reservationsWrite"
        },
        "x-resources": [
          "reservations"
        ],
        "tags": [
          "Reservations"
        ],
        "summary": "Delete a reservation",
        "description": "This endpoint can be used to delete a stock quantity reservation when orders are handled outside of SCAYLE.\n\nSee more details in the [Developer Guide](/en/core-documentation/the-basics/products/manage-products-via-api/stock#delete-reservation).\n",
        "parameters": [
          {
            "name": "reservationIdentifier",
            "in": "path",
            "description": "Reservation ID or reference key.\nIf you are using a reference key, it is highly recommended to use the encoded equal sign (%3D) instead of the plain =\n",
            "required": true,
            "schema": {
              "oneOf": [
                {
                  "type": "string",
                  "pattern": "^[1-9][0-9]*$"
                },
                {
                  "type": "string",
                  "pattern": "^key(%3D|=)[a-zA-Z0-9-_%\\+\\. ]*$"
                }
              ]
            },
            "examples": {
              "ReservationId": {
                "value": 123
              },
              "ReferenceKey": {
                "value": "key%3Dorder4711-item3"
              }
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Reservation was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "client.apis.Reservations.deleteReservation({reservationIdentifier: \"key=my-key\"});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->reservations->delete(Identifier::fromKey('my-key'));\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.reservations().delete(Identifier.fromKey(\"my-key\"));\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/emails/keys": {
      "post": {
        "operationId": "createEmailKey",
        "x-rateLimit": {
          "scope": "emailsWrite"
        },
        "x-resources": [
          "shop-emails"
        ],
        "tags": [
          "Emails"
        ],
        "summary": "Create a new email key",
        "description": "This endpoint can be used to create a new email key.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/EmailKey"
                  },
                  {
                    "required": [
                      "key",
                      "name"
                    ]
                  }
                ]
              },
              "examples": {
                "CreateEmailKeyRequest": {
                  "$ref": "#/components/examples/CreateEmailKeyRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The email key was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailKey"
                },
                "examples": {
                  "EmailKey": {
                    "$ref": "#/components/examples/EmailKey"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const emailKey = {\n  \"key\": \"subscription-order-created-email\",\n  \"name\": \"Subscription Order created email\",\n};\n\nconst response = await client.apis.Emails.createEmailKey({shopKey: \"ms\", countryCode: \"DEU\"}, {requestBody: emailKey});\nconst createdEmailKey = response.body\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$emailKey = new EmailKey();\n$emailKey->key = 'subscription-order-created-email';\n$emailKey->name = 'Subscription Order created email';\n\n$createdEmailKey = $adminApi->emailKeys->create('ms', 'DEU', $emailKey);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "EmailKey emailKey = new EmailKey();\nemailKey.setKey(\"subscription-order-created-email\");\nemailKey.setName(\"Subscription Order created email\");\n\nEmailKey createdEmailKey = adminApi.emailKeys().create(\"ms\", \"DEU\", emailKey);\n"
          }
        ]
      },
      "get": {
        "operationId": "getEmailKeys",
        "x-rateLimit": {
          "scope": "emailsRead"
        },
        "x-resources": [
          "shop-emails"
        ],
        "tags": [
          "Emails"
        ],
        "summary": "Get email keys collection",
        "description": "This endpoint can be used to get email keys collection.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/CursorParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The email key collection.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/EmailKey"
                      }
                    },
                    "cursor": {
                      "$ref": "#/components/schemas/Cursor"
                    }
                  }
                },
                "examples": {
                  "EmailKeysCollectionResponse": {
                    "$ref": "#/components/examples/EmailKeysCollectionResponse"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const response = await adminApi.apis.Emails.getEmailKeys({\n  \"shopKey\": \"ms\",\n  \"countryCode\": \"DEU\",\n  \"cursor\": \"Mgo=\",\n});\n\nconst emailKeys = response.body.entities;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'cursor' => 'Mgo=',\n];\n\n$emailKeysCollection = $adminApi->emailKeys->all('ms', 'DEU', $options);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                        .addOption(\"cursor\", \"Mgo=\")\n                        .build();\n\nApiCollection<EmailKey> emailKeyCollection = adminApi.emailKeys().all(\"ms\", \"DEU\", options);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/emails/send": {
      "post": {
        "operationId": "sendEmail",
        "x-rateLimit": {
          "scope": "emailsWrite"
        },
        "x-resources": [
          "shop-emails"
        ],
        "tags": [
          "Emails"
        ],
        "summary": "Send an email",
        "description": "This endpoint can be used to send an email.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Email"
              },
              "examples": {
                "SendEmailRequest": {
                  "$ref": "#/components/examples/SendEmailRequest"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "The email was successfully queued."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "403": {
            "$ref": "#/paths/~1promotions/get/responses/403"
          },
          "409": {
            "$ref": "#/paths/~1products/post/responses/409"
          },
          "412": {
            "description": "Precondition failed",
            "content": {
              "application/json": {
                "schema": {
                  "title": "PreconditionFailedResponse",
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const email = {\n  \"key\": \"subscription-order-created-email\",\n  \"recipient\": \"your.email.address@scayle.com\",\n  \"payload\": {\n    \"property1\": \"value1\",\n    \"property2\": \"value2\",\n  },\n  \"orderId\": 123\n};\n\nawait client.apis.Emails.sendEmail({shopKey: \"ms\", countryCode: \"DEU\"}, {requestBody: email});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$email = new Email();\n$email->key = 'subscription-order-created-email';\n$email->recipient = 'subscription-order-created-email';\n$email->payload = [\n  'property1' => 'value1',\n  'property2' => 'value2'\n];\n$email->orderId = 123;\n\n$adminApi->emails->send('ms', 'DEU', $email);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "Map<String, Map<String, String>> someJson = new HashMap<>();\nsomeJson.put(\"property1\", \"value1\");\nsomeJson.put(\"property2\", \"value2\");\n\nEmail email = new Email();\nemail.setKey(\"subscription-order-created-email\");\nemail.setRecipient(\"your.email.address@scayle.com\");\nemail.setPayload(someJson);\nemail.setOrderId(123);\n\nadminApi.emails().send(\"ms\", \"DEU\", email);\n"
          }
        ]
      }
    },
    "/shops/{shopKey}/countries/{countryCode}/emails/keys/{emailKeyId}": {
      "patch": {
        "operationId": "updateEmailKey",
        "x-rateLimit": {
          "scope": "emailsWrite"
        },
        "x-resources": [
          "shop-emails"
        ],
        "tags": [
          "Emails"
        ],
        "summary": "Update an email key",
        "description": "This endpoint can be used to update an email key.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/EmailKeyId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/EmailKey"
                  },
                  {
                    "required": [
                      "name"
                    ],
                    "properties": {
                      "key": {
                        "readOnly": true
                      }
                    }
                  }
                ]
              },
              "examples": {
                "UpdateEmailKeyRequest": {
                  "$ref": "#/components/examples/UpdateEmailKeyRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The email key was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailKey"
                },
                "examples": {
                  "EmailKey": {
                    "$ref": "#/components/examples/EmailKey"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          },
          "422": {
            "$ref": "#/paths/~1shops~1%7BshopKey%7D~1redirects/post/responses/422"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await client.apis.Emails.deleteEmailKey({shopKey: \"ms\", countryCode: \"DEU\", emailKeyId: 123});\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->emailKeys->delete('ms', 'DEU', 123);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.emailKeys().delete(\"ms\", \"DEU\", 123);\n"
          }
        ]
      },
      "delete": {
        "operationId": "deleteEmailKey",
        "x-rateLimit": {
          "scope": "emailsWrite"
        },
        "x-resources": [
          "shop-emails"
        ],
        "tags": [
          "Emails"
        ],
        "summary": "Delete an email key",
        "description": "This endpoint can be used to delete an email key.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/EmailKeyId"
          }
        ],
        "responses": {
          "204": {
            "description": "The email key was successfully deleted."
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": {
              "$ref": "#/paths/~1shops~1%7BshopKey%7D~1countries~1%7BcountryCode%7D~1emails~1keys~1%7BemailKeyId%7D/patch/x-codeSamples/0/source"
            }
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": {
              "$ref": "#/paths/~1shops~1%7BshopKey%7D~1countries~1%7BcountryCode%7D~1emails~1keys~1%7BemailKeyId%7D/patch/x-codeSamples/1/source"
            }
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": {
              "$ref": "#/paths/~1shops~1%7BshopKey%7D~1countries~1%7BcountryCode%7D~1emails~1keys~1%7BemailKeyId%7D/patch/x-codeSamples/2/source"
            }
          }
        ]
      },
      "get": {
        "operationId": "getEmailKey",
        "x-rateLimit": {
          "scope": "emailsRead"
        },
        "x-resources": [
          "shop-emails"
        ],
        "tags": [
          "Emails"
        ],
        "summary": "Get an email key",
        "description": "This endpoint can be used to get an email key.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/ShopKey"
          },
          {
            "$ref": "#/components/parameters/ShopCountryCode"
          },
          {
            "$ref": "#/components/parameters/EmailKeyId"
          }
        ],
        "responses": {
          "200": {
            "description": "The email key instance.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailKey"
                },
                "examples": {
                  "EmailKey": {
                    "$ref": "#/components/examples/EmailKey"
                  }
                }
              }
            }
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const response = await client.apis.Emails.getEmailKey({shopKey: \"ms\", countryCode: \"DEU\", emailKeyId: 123});\nconst emailKey = response.body;\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$emailKey = $adminApi->emailKeys->get('ms', 'DEU', 123);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "EmailKey emailKey = adminApi.emailKeys().get(\"ms\", \"DEU\", 123);\n"
          }
        ]
      }
    },
    "/bulk-requests": {
      "get": {
        "operationId": "getBulkRequestStatuses",
        "x-rateLimit": {
          "scope": "bulkRequestsRead"
        },
        "x-resources": [
          "prices",
          "products"
        ],
        "tags": [
          "BulkRequests"
        ],
        "summary": "Get a list of bulk request statuses.",
        "description": "This endpoint retrieves a list of bulk request statuses, limited to the past 24 hours.\n\nSee more details in the [Developer Guide](/en/core-documentation/welcome-to-scayle/introduction/apis/bulk-requests#get-list-of-bulk-request-statuses).\n",
        "parameters": [
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "progress"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The list of bulk request statuses.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "entities": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/BulkRequestStatus"
                      }
                    }
                  }
                },
                "examples": {
                  "GetBulkRequestStatusesResponse": {
                    "$ref": "#/components/examples/GetBulkRequestStatusesResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const response = await client.apis.BulkRequests.getBulkRequestStatuses({\n    \"with\": \"progress\",\n});\n\nconst bulkRequestStatuses = response.body.entities;\n\nbulkRequestStatuses.forEach(\n    bulkRequestStatus => console.log(bulkRequestStatuses.key)\n);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                          .addOption(\"with\", \"progress\")\n                          .build();\n\nApiCollection<BulkRequestStatus> bulkRequestStatusesCollection = adminApi.bulkRequestStatuses().all(options);\n\nfor (BulkRequestStatus bulkRequestStatus : bulkRequestStatusesCollection.getEntities()) {\n    System.out.println(bulkRequestStatus.getKey());\n}\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'with' => 'progress',\n];\n\n$bulkRequestStatuses = $adminApi->bulkRequestStatuses->all($options);\n\nforeach ($bulkRequestStatuses->getEntities() as $bulkRequestStatus) {\n    echo $bulkRequestStatus->key;\n}\n"
          }
        ]
      }
    },
    "/bulk-requests/{requestKey}/status": {
      "get": {
        "operationId": "getBulkRequestStatus",
        "x-rateLimit": {
          "scope": "bulkRequestsRead"
        },
        "x-resources": [
          "prices",
          "products"
        ],
        "tags": [
          "BulkRequests"
        ],
        "summary": "Get a bulk request status.",
        "description": "This endpoint can be used to get the status of a bulk request.\n\nSee more details in the [Developer Guide](/en/core-documentation/welcome-to-scayle/introduction/apis/bulk-requests#get-status-of-bulk-request).\n",
        "parameters": [
          {
            "$ref": "#/paths/~1bulk-requests/get/parameters/0"
          },
          {
            "name": "requestKey",
            "in": "path",
            "description": "The key of a bulk request.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "One bulk request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkRequestStatus"
                },
                "examples": {
                  "GetBulkRequestStatusResponse": {
                    "$ref": "#/components/examples/GetBulkRequestStatusResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const response = await client.apis.BulkRequests.getBulkRequestStatus({requestKey: 123}, {\n    \"with\": \"progress\",\n});\n\nconst bulkRequestStatus = response.body;\n\nconsole.log(bulkRequestStatus.key);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                          .addOption(\"with\", \"progress\")\n                          .build();\n\nBulkRequestStatus bulkRequestStatus = adminApi.bulkRequestStatuses().get(123, options);\n\nSystem.out.println(bulkRequestStatus.getKey());\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'with' => 'progress',\n];\n\n$bulkRequestStatus = $adminApi->bulkRequestStatuses->get(123, $options);\n\necho $bulkRequestStatus->key;\n"
          }
        ]
      }
    },
    "/bulk-requests/{requestKey}/cancel": {
      "put": {
        "operationId": "cancelBulkRequest",
        "x-rateLimit": {
          "scope": "bulkRequestsWrite"
        },
        "x-resources": [
          "prices",
          "products"
        ],
        "tags": [
          "BulkRequests"
        ],
        "summary": "Cancel a bulk request.",
        "description": "This endpoint can be used to cancel a bulk request.\n\nWhen a bulk request is cancelled all remaining unprocessed operations will not be executed,\nall currently running operations will be processed.\n\n**Note, that the result of already processed operations will not be reverted.**\n\nSee more details in the [Developer Guide](/en/core-documentation/welcome-to-scayle/introduction/apis/bulk-requests#cancel-bulk-request).\n",
        "parameters": [
          {
            "$ref": "#/paths/~1bulk-requests~1%7BrequestKey%7D~1status/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Bulk request was successfully cancelled.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkRequestStatus"
                },
                "examples": {
                  "CancelBulkRequestResponse": {
                    "$ref": "#/components/examples/CancelBulkRequestResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "await adminApi.apis.BulkRequests.cancelBulkRequest({requestKey: 123});\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "adminApi.bulkRequests().cancel(123);\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$adminApi->bulkRequests->cancel(123);\n"
          }
        ]
      }
    },
    "/bulk-requests/{requestKey}/operations/{operationKey}/status": {
      "get": {
        "operationId": "getBulkOperationStatus",
        "x-rateLimit": {
          "scope": "bulkRequestsRead"
        },
        "x-resources": [
          "prices",
          "products"
        ],
        "tags": [
          "BulkRequests"
        ],
        "summary": "Get a status of a bulk operation.",
        "description": "This endpoint can be used to read the status of a bulk operation.\n\nSee more details in the [Developer Guide](/en/core-documentation/welcome-to-scayle/introduction/apis/bulk-requests#get-status-of-bulk-operation).\n",
        "parameters": [
          {
            "name": "with",
            "in": "query",
            "description": "Comma-separated list of additional properties that should be included in the response.",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "response",
                  "bulkRequest",
                  "bulkRequest.progress"
                ]
              }
            }
          },
          {
            "$ref": "#/paths/~1bulk-requests~1%7BrequestKey%7D~1status/get/parameters/1"
          },
          {
            "name": "operationKey",
            "in": "path",
            "description": "The key of a bulk operation.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status of the bulk operation.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkOperationStatus"
                },
                "examples": {
                  "GetBulkOperationStatusResponse": {
                    "$ref": "#/components/examples/GetBulkOperationStatusResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/paths/~1product-sortings/delete/responses/404"
          }
        },
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "label": "JavaScript",
            "source": "const response = await client.apis.BulkRequests.getBulkOperationStatus({requestKey: 123, operationKey: \"operation-1\"}, {\n    \"with\": \"response,bulkRequest,bulkRequest.progress\",\n});\n\nconst bulkOperationStatus = response.body;\n\nconsole.log(bulkOperationStatus.key);\n"
          },
          {
            "lang": "Java",
            "label": "Java",
            "source": "ApiOptions options = ApiOptions.builder()\n                          .addOption(\"with\", \"response,bulkRequest,bulkRequest.progress\")\n                          .build();\n\nBulkOperationStatus bulkOperationStatus = adminApi.bulkOperationStatuses().get(123, \"operation-1\", options);\n\nSystem.out.println(bulkOperationStatus.getKey());\n"
          },
          {
            "lang": "PHP",
            "label": "PHP",
            "source": "$options = [\n    'with' => 'response,bulKRequest,bulKRequest.progress',\n];\n\n$bulkOperationStatus = $adminApi->bulkOperationStatuses->get(123, 'operation-1', $options);\n\necho $bulkOperationStatus->key;\n"
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "accessToken": {
        "description": "SCAYLE's Admin API is using token-based authentication via the X-Access-Token header. Such client-specific tokens can be created within the Cloud Panel.\n",
        "type": "apiKey",
        "name": "X-Access-Token",
        "in": "header"
      }
    },
    "parameters": {
      "PriceKey": {
        "name": "priceKey",
        "in": "path",
        "required": true,
        "description": "Product variant price key.",
        "schema": {
          "type": "string",
          "pattern": "^[12]\\-[1-9][0-9]*$"
        },
        "example": "1-100"
      },
      "ProductIdentifier": {
        "name": "productIdentifier",
        "in": "path",
        "description": "Product ID or reference key.\nIf you are using a reference key, it is highly recommended to use the encoded equal sign (%3D) instead of the plain =\n",
        "required": true,
        "schema": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[1-9][0-9]*$"
            },
            {
              "type": "string",
              "pattern": "^key(%3D|=)[a-zA-Z0-9-_%\\+\\. ]*$"
            }
          ]
        },
        "examples": {
          "ProductId": {
            "value": 123
          },
          "ReferenceKey": {
            "value": "key%3DM0001-black"
          }
        }
      },
      "VariantIdentifier": {
        "name": "variantIdentifier",
        "in": "path",
        "description": "Product variant ID or reference key.\nIf you are using a reference key, it is highly recommended to use the encoded equal sign (%3D) instead of the plain =\n",
        "required": true,
        "schema": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[1-9][0-9]*$"
            },
            {
              "type": "string",
              "pattern": "^key(%3D|=)[a-zA-Z0-9-_%\\+\\. ]*$"
            }
          ]
        },
        "examples": {
          "VariantId": {
            "value": 123
          },
          "ReferenceKey": {
            "value": "key%3DM0001-black-s"
          }
        }
      },
      "ImageIdentifier": {
        "name": "imageIdentifier",
        "in": "path",
        "description": "Product image ID or reference key.\nIf you are using a reference key, it is highly recommended to use the encoded equal sign (%3D) instead of the plain =\n",
        "required": true,
        "schema": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[1-9][0-9]*$"
            },
            {
              "type": "string",
              "pattern": "^key(%3D|=)[a-zA-Z0-9-_%\\+\\. ]*$"
            }
          ]
        },
        "examples": {
          "ProductImageId": {
            "value": 4
          },
          "ProductReferenceKey": {
            "value": "key%3Dimage.jpg"
          }
        }
      },
      "Limit": {
        "name": "limit",
        "in": "query",
        "description": "Maximum number of entities in the result. When fetching entities with children, the limit always applies to the amount of parent entities (max. 1000).",
        "required": false,
        "style": "form",
        "schema": {
          "type": "integer",
          "default": 100,
          "minimum": 1,
          "maximum": 1000
        }
      },
      "FilterId": {
        "name": "filters[id]",
        "in": "query",
        "description": "Comma-separated list of IDs of entities that should be used for filtering.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        }
      },
      "FilterIdString": {
        "name": "filters[id]",
        "in": "query",
        "description": "Comma-separated list of IDs of entities that should be used for filtering.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "FilterMinId": {
        "name": "filters[minId]",
        "in": "query",
        "description": "Minimum (inclusive) ID of entities that should be returned.",
        "schema": {
          "type": "integer"
        }
      },
      "FilterMaxId": {
        "name": "filters[maxId]",
        "in": "query",
        "description": "Maximum (inclusive) ID of entities that should be returned.",
        "schema": {
          "type": "integer"
        }
      },
      "FilterValueDelimiter": {
        "name": "filterValueDelimiter",
        "in": "query",
        "description": "The delimiter that will be used to split the filter values. If not provided, then by default comma will be used.\n",
        "schema": {
          "type": "string",
          "enum": [
            "comma",
            "semicolon",
            "pipe"
          ]
        }
      },
      "FilterMinCreatedAt": {
        "name": "filters[minCreatedAt]",
        "in": "query",
        "description": "Minimum (inclusive) creation date of entities that should be returned.",
        "schema": {
          "type": "string",
          "format": "date-time",
          "example": "2021-01-23T11%3A30%3A58%2B00%3A00"
        }
      },
      "FilterMaxCreatedAt": {
        "name": "filters[maxCreatedAt]",
        "in": "query",
        "description": "Maximum (inclusive) creation date of entities that should be returned.",
        "schema": {
          "type": "string",
          "format": "date-time",
          "example": "2021-01-23T11%3A30%3A58%2B00%3A00"
        }
      },
      "FilterMinUpdatedAt": {
        "name": "filters[minUpdatedAt]",
        "in": "query",
        "description": "Minimum (inclusive) modification date of entities that should be returned.",
        "schema": {
          "type": "string",
          "format": "date-time",
          "example": "2021-01-23T11%3A30%3A58%2B00%3A00"
        }
      },
      "FilterMaxUpdatedAt": {
        "name": "filters[maxUpdatedAt]",
        "in": "query",
        "description": "Maximum (inclusive) modification date of entities that should be returned.",
        "schema": {
          "type": "string",
          "format": "date-time",
          "example": "2021-01-23T11%3A30%3A58%2B00%3A00"
        }
      },
      "FilterSingleName": {
        "name": "filters[name]",
        "in": "query",
        "description": "Entity name value.",
        "example": "entity name",
        "schema": {
          "type": "string"
        }
      },
      "FilterCompanyId": {
        "name": "filters[companyId]",
        "in": "query",
        "description": "Comma-separated list of company IDs that should be used for filtering.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        }
      },
      "SortBy": {
        "name": "sort",
        "in": "query",
        "description": "Sort by the provided column.",
        "schema": {
          "type": "string",
          "enum": [
            "id"
          ],
          "default": "id"
        }
      },
      "SortDir": {
        "name": "sortDir",
        "in": "query",
        "description": "Sort ascending or descending",
        "required": false,
        "style": "form",
        "schema": {
          "type": "string",
          "enum": [
            "asc",
            "desc"
          ],
          "default": "asc"
        }
      },
      "RedirectsSortBy": {
        "name": "sort",
        "in": "query",
        "schema": {
          "type": "string",
          "enum": [
            "id",
            "source",
            "target",
            "createdAt",
            "updatedAt",
            "statusCode",
            "priority",
            "isRegex"
          ],
          "default": "createdAt"
        }
      },
      "RedirectsSortDir": {
        "name": "sortDir",
        "in": "query",
        "description": "Sort ascending or descending",
        "required": false,
        "style": "form",
        "schema": {
          "type": "string",
          "enum": [
            "asc",
            "desc"
          ],
          "default": "desc"
        }
      },
      "RedirectId": {
        "name": "redirectId",
        "in": "path",
        "description": "Id of the redirect.",
        "required": true,
        "schema": {
          "type": "string",
          "pattern": "^[1-9][0-9]*$"
        }
      },
      "RedirectsLimit": {
        "name": "limit",
        "in": "query",
        "description": "maximum number of entities in result.",
        "required": false,
        "style": "form",
        "schema": {
          "type": "integer",
          "default": 100,
          "minimum": 1,
          "maximum": 5000
        }
      },
      "FilterSearch": {
        "name": "filters[search]",
        "in": "query",
        "schema": {
          "type": "string"
        }
      },
      "FilterPriceGroupKey": {
        "name": "filters[priceGroupKey]",
        "in": "query",
        "description": "Comma-separated list of price group keys that should be used for filtering.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "FilterCountryCode": {
        "name": "filters[countryCode]",
        "in": "query",
        "description": "Comma-separated list of country codes that should be used for filtering.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "FilterLanguageCode": {
        "name": "filters[languageCode]",
        "in": "query",
        "description": "Comma-separated list of language codes that should be used for filtering.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "AttributeGroupName": {
        "name": "attributeGroupName",
        "in": "path",
        "description": "An attribute group unique name.",
        "required": true,
        "schema": {
          "type": "string"
        },
        "example": "color"
      },
      "AttributeWith": {
        "name": "with",
        "in": "query",
        "description": "Comma-separated list of additional properties that should be included in the response.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "id"
            ]
          }
        }
      },
      "AttributeValue": {
        "name": "attributeValue",
        "in": "path",
        "description": "An attribute value.",
        "required": true,
        "schema": {
          "type": "string"
        },
        "example": "green"
      },
      "FilterProductIds": {
        "name": "filters[productId]",
        "in": "query",
        "description": "Comma-separated list of product IDs that should be used for filtering.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        }
      },
      "FilterVariantIds": {
        "name": "filters[variantId]",
        "in": "query",
        "description": "Comma-separated list of variant IDs that should be used for filtering.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        }
      },
      "FilterProductReferenceKeys": {
        "name": "filters[productReferenceKey]",
        "in": "query",
        "description": "Comma-separated list of product reference keys that should be used for filtering.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "FilterVariantReferenceKeys": {
        "name": "filters[variantReferenceKey]",
        "in": "query",
        "description": "Comma-separated list of product variant reference keys that should be used for filtering.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "ShopKey": {
        "name": "shopKey",
        "in": "path",
        "required": true,
        "description": "The shop key.",
        "example": "ms",
        "schema": {
          "type": "string",
          "pattern": "^[a-zA-Z0-9]*$"
        }
      },
      "CustomDataKey": {
        "name": "key",
        "in": "path",
        "required": true,
        "description": "A specific key of an custom data for an entity.",
        "example": "score",
        "schema": {
          "type": "string"
        }
      },
      "Locale": {
        "name": "locale",
        "in": "query",
        "required": false,
        "description": "A specific locale for a localized key in custom data",
        "example": "de_DE",
        "schema": {
          "type": "string",
          "maxLength": 5
        }
      },
      "ShopCategoryId": {
        "name": "shopCategoryId",
        "in": "path",
        "description": "Shop category ID.",
        "required": true,
        "schema": {
          "type": "integer"
        },
        "example": 1
      },
      "ShopCountryCode": {
        "name": "countryCode",
        "in": "path",
        "required": true,
        "description": "The shop country code; use shop country ID instead of country code when a country is ambiguous within a shop.",
        "example": "de",
        "schema": {
          "type": "string"
        }
      },
      "ShopCategoryProductSetId": {
        "name": "productSetId",
        "in": "path",
        "description": "Product set ID.",
        "required": true,
        "schema": {
          "type": "integer"
        },
        "example": 1
      },
      "IgnoreMasterIfExistCreate": {
        "name": "ignoreMasterIfExist",
        "in": "query",
        "description": "Ignore master data from the request, if master exists. \n\nIf set to `true` and a master product with the given `master.referenceKey` already exists, then the provided master data in the request will be ignored. \n\nIf set to `false` or not provided, and a master product with the given `master.referenceKey` already exists, then an error will be returned if the request is creating a product.\n\nHowever, if the request is updating a product for an existing master, in combination with the parameter `updateIfExists=true`, then the master data in the request will be processed and the master will be updated accordingly.\n",
        "example": false,
        "schema": {
          "type": "boolean",
          "default": false
        }
      },
      "IgnoreMasterIfExistUpdate": {
        "name": "ignoreMasterIfExist",
        "in": "query",
        "description": "Ignore master data from the request, if master exists. \n\nIf set to `true`, and a master product with the given `master.referenceKey` already exists, then the provided master data in the request will be ignored. \n\nIf set to `false` or not provided, and a master product with the given `master.referenceKey` already exists, the master data in the request will be processed.\n",
        "example": false,
        "schema": {
          "type": "boolean",
          "default": false
        }
      },
      "UpdateIfExists": {
        "name": "updateIfExists",
        "in": "query",
        "description": "When set to true, a lookup is done for the product with the given reference key. If it exists, then the product will be updated; otherwise the product will get created.",
        "example": false,
        "schema": {
          "type": "boolean",
          "default": false
        }
      },
      "UpdateVariantIfExists": {
        "name": "updateIfExists",
        "in": "query",
        "description": "When set to true and a variant with the provided reference key already exists, then the existing variant is updated.",
        "example": false,
        "schema": {
          "type": "boolean",
          "default": false
        }
      },
      "IgnoreAttributeLocks": {
        "name": "ignoreAttributeLocks",
        "in": "query",
        "schema": {
          "type": "boolean",
          "default": false
        },
        "description": "If set to true, then even locked attributes get updated/deleted."
      },
      "LockAttributeGroup": {
        "name": "lockAttributeGroup",
        "in": "query",
        "schema": {
          "type": "boolean",
          "default": false
        },
        "description": "If set to true, then the attribute group of the updated/deleted attribute gets locked."
      },
      "IgnoreCategoryLocks": {
        "name": "ignoreCategoryLocks",
        "in": "query",
        "schema": {
          "type": "boolean",
          "default": false
        },
        "description": "If set to true, then even locked product categories get updated."
      },
      "ShopCategoryPropertyKey": {
        "name": "shopCategoryPropertyKey",
        "in": "path",
        "description": "A unique identifier of the shop category property key.",
        "required": true,
        "schema": {
          "type": "string"
        },
        "example": "myKey"
      },
      "FilterName": {
        "name": "filters[name]",
        "in": "query",
        "description": "Comma-separated list of names that should be used for filtering.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "BrandId": {
        "name": "brandId",
        "in": "path",
        "required": true,
        "description": "The brand ID.",
        "example": 1,
        "schema": {
          "type": "integer"
        }
      },
      "CustomDataEntity": {
        "name": "entity",
        "in": "path",
        "required": true,
        "description": "The entity name.",
        "example": "brand",
        "schema": {
          "type": "string"
        }
      },
      "CursorParameter": {
        "name": "cursor",
        "in": "query",
        "description": "Valid cursor used for pagination.",
        "required": false,
        "style": "form",
        "schema": {
          "type": "string"
        }
      },
      "PackageGroupId": {
        "name": "packageGroupId",
        "in": "path",
        "description": "Package group ID",
        "required": true,
        "schema": {
          "type": "integer"
        },
        "examples": {
          "PackageGroupId": {
            "value": 1
          }
        }
      },
      "CustomerId": {
        "name": "customerId",
        "in": "path",
        "description": "Customer ID",
        "required": true,
        "schema": {
          "type": "integer"
        },
        "examples": {
          "CustomerId": {
            "value": 123
          }
        }
      },
      "CustomerIdentifier": {
        "name": "customerIdentifier",
        "in": "path",
        "description": "Customer ID or reference key\nIf you are using a reference key, it is highly recommended to use the encoded equal sign (%3D) instead of the plain =\n",
        "required": true,
        "schema": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[1-9][0-9]*$"
            },
            {
              "type": "string",
              "pattern": "^key(%3D|=)[0-9a-zA-Z\\-\\\\_\\.\\@|%5C]*$"
            }
          ]
        },
        "examples": {
          "CustomerId": {
            "value": 123
          },
          "CustomerKey": {
            "value": "key%3DInGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
          }
        }
      },
      "CustomerSortBy": {
        "name": "sort",
        "in": "query",
        "description": "Sort by the provided column.",
        "schema": {
          "type": "string",
          "enum": [
            "id",
            "appId",
            "birthDate",
            "firstName",
            "lastName",
            "lastInvoiceDate",
            "lastLoginDate",
            "lockedUntilDate",
            "passwordResetRequestedAt",
            "createdAt",
            "updatedAt"
          ],
          "default": "id"
        }
      },
      "CustomerFilterBillingAddressCountryCode": {
        "name": "filters[billingAddressCountryCode]",
        "in": "query",
        "description": "Only returns customers with the given billingAddress country code (ISO 3166-1 alpha-3).",
        "example": "DEU",
        "schema": {
          "type": "string"
        }
      },
      "CustomerFilterShippingAddressCountryCode": {
        "name": "filters[shippingAddressCountryCode]",
        "in": "query",
        "description": "Only returns customers with the given shippingAddress country code (ISO 3166-1 alpha-3).",
        "example": "DEU",
        "schema": {
          "type": "string"
        }
      },
      "CustomerFilterGroup": {
        "name": "filters[group]",
        "in": "query",
        "description": "Comma-separated list of customer groups that should be used for filtering.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "CustomerFilterIsActive": {
        "name": "filters[isActive]",
        "in": "query",
        "description": "Pass true to get only active customer, pass false to get the opposite.",
        "example": true,
        "schema": {
          "type": "boolean"
        }
      },
      "CustomerFilterReferenceKeys": {
        "name": "filters[referenceKey]",
        "in": "query",
        "description": "Comma-separated list of reference keys that should be used for filtering.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "CustomerFilterByLastName": {
        "name": "filters[lastName]",
        "in": "query",
        "description": "Last name of the customer that should be used for filtering.\nWhen filtering the customer by name both firstName and lastName should be specified.\n",
        "example": "Rogers",
        "schema": {
          "type": "string"
        }
      },
      "CustomerFilterByFirstName": {
        "name": "filters[firstName]",
        "in": "query",
        "description": "First name of the customer that should be used for filtering.\nWhen filtering the customer by name both firstName and lastName should be specified.\n",
        "example": "Matteo",
        "schema": {
          "type": "string"
        }
      },
      "CustomerFilterByEmail": {
        "name": "filters[email]",
        "in": "query",
        "description": "Email of the customer that should be used for filtering.",
        "example": "Matteo.rogers@gmx.com",
        "schema": {
          "type": "string"
        }
      },
      "CustomerFilterPublicKey": {
        "name": "filters[publicKey]",
        "in": "query",
        "description": "Public key of the customer that should be used for filtering.",
        "example": "customer-1234",
        "schema": {
          "type": "string"
        }
      },
      "CustomerFilterDateOfBirth": {
        "name": "filters[dateOfBirth]",
        "in": "query",
        "description": "Date of birth of the customer, in YYYY-MM-DD format, used for filtering.",
        "example": "2021-11-01",
        "schema": {
          "type": "string",
          "pattern": "^((19|20)[0-9]{2}\\-[0-9]{2}\\-[0-9]{2})$"
        }
      },
      "CustomerFilterStreet": {
        "name": "filters[street]",
        "in": "query",
        "description": "Street address of the customer that should be used for filtering.",
        "example": "Street address",
        "schema": {
          "type": "string",
          "pattern": "[!-ɏ0-9 ]"
        }
      },
      "CustomerFilterZipCode": {
        "name": "filters[zipCode]",
        "in": "query",
        "description": "Zip code address of the customer that should be used for filtering.",
        "example": "20459",
        "schema": {
          "type": "string",
          "pattern": "[A-z0-9\\- ]{1,12}"
        }
      },
      "CustomerFilterCity": {
        "name": "filters[city]",
        "in": "query",
        "description": "City address of the customer that should be used for filtering.",
        "example": "Hamburg",
        "schema": {
          "type": "string",
          "pattern": "[!-ɏ0-9 ]"
        }
      },
      "CustomerFilterIsGuest": {
        "name": "filters[isGuest]",
        "in": "query",
        "description": "True for guest customers, false for non guest customers. Requires any of the following filters to be set: 'firstName', 'lastName', 'email', 'zipCode', 'city'",
        "example": true,
        "schema": {
          "type": "boolean"
        }
      },
      "CustomerFilterExternalUserId": {
        "name": "filters[externalUserId]",
        "in": "query",
        "description": "The customer's user id at an identity provider",
        "example": "123",
        "schema": {
          "type": "string",
          "maxLength": 255,
          "minLength": 1,
          "nullable": true
        }
      },
      "CustomerFilterProviderCode": {
        "name": "filters[providerCode]",
        "in": "query",
        "description": "The code of the provider via which a customer is registered. Required if filter 'externalUserId' is set.",
        "example": "okta",
        "schema": {
          "type": "string",
          "maxLength": 255,
          "minLength": 1,
          "nullable": true
        }
      },
      "CustomerFilterIncludeAnonymized": {
        "name": "filters[includeAnonymized]",
        "in": "query",
        "description": "Set to true to additionally include anonymous customers. Should be used with additional filters to narrow scope of results.",
        "example": true,
        "schema": {
          "type": "boolean"
        }
      },
      "AddressIdentifier": {
        "name": "addressIdentifier",
        "in": "path",
        "description": "Address ID or reference key.\nIf you are using a reference key, it is highly recommended to use the encoded equal sign (%3D) instead of the plain =\n",
        "required": true,
        "schema": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[1-9][0-9]*$"
            },
            {
              "type": "string",
              "pattern": "^key(%3D|=)[0-9a-zA-Z\\-\\\\_]*$"
            }
          ]
        },
        "examples": {
          "AddressId": {
            "value": 123
          },
          "AddressKey": {
            "value": "key%3DInGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
          }
        }
      },
      "CustomerGroup": {
        "name": "customerGroup",
        "in": "path",
        "description": "Customer Group",
        "required": true,
        "schema": {
          "type": "string"
        },
        "examples": {
          "CustomerGroup": {
            "value": "employee"
          }
        }
      },
      "MembershipId": {
        "name": "membershipId",
        "in": "path",
        "description": "Membership ID",
        "required": true,
        "schema": {
          "type": "integer"
        },
        "example": 123
      },
      "MembershipSortBy": {
        "name": "sort",
        "in": "query",
        "description": "Sort by the provided column.",
        "schema": {
          "type": "string",
          "enum": [
            "id",
            "typeKey",
            "accountNumber",
            "isActive",
            "createdAt",
            "updatedAt"
          ],
          "default": "id"
        }
      },
      "OrderIdentifier": {
        "name": "orderIdentifier",
        "in": "path",
        "description": "Order ID or reference key\nIf you are using a reference key, it is highly recommended to use the encoded equal sign (%3D) instead of the plain =\n",
        "required": true,
        "schema": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[1-9][0-9]*$"
            },
            {
              "type": "string",
              "pattern": "^key(%3D|=)[0-9a-zA-Z\\-\\\\_\\.\\@|%5C]*$"
            }
          ]
        },
        "examples": {
          "OrderId": {
            "value": 123
          },
          "OrderKey": {
            "value": "key%3DInGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
          }
        }
      },
      "DocumentId": {
        "name": "documentId",
        "in": "path",
        "description": "Order document ID",
        "required": true,
        "schema": {
          "type": "integer"
        },
        "examples": {
          "DocumentId": {
            "value": 123
          }
        }
      },
      "OrderId": {
        "name": "orderId",
        "in": "path",
        "description": "Order ID",
        "required": true,
        "schema": {
          "type": "integer"
        },
        "examples": {
          "OrderId": {
            "value": 123
          }
        }
      },
      "OrderFilterBillingAddressCountryCode": {
        "name": "filters[billingAddressCountryCode]",
        "in": "query",
        "description": "Only returns orders with the given billingAddress country code (ISO 3166-1 alpha-3).",
        "example": "DEU",
        "schema": {
          "type": "string"
        }
      },
      "OrderFilterShippingAddressCountryCode": {
        "name": "filters[shippingAddressCountryCode]",
        "in": "query",
        "description": "Only returns orders with the given shippingAddress country code (ISO 3166-1 alpha-3).",
        "example": "DEU",
        "schema": {
          "type": "string"
        }
      },
      "OrderFilterShippingAddressZipCode": {
        "name": "filters[shippingAddressZipCode]",
        "in": "query",
        "description": "Only returns orders with the given zip code set for the order's shipping address.",
        "example": 20459,
        "schema": {
          "type": "string",
          "pattern": "[A-z0-9\\- ]{1,12}"
        }
      },
      "OrderFilterShippingAddressCity": {
        "name": "filters[shippingAddressCity]",
        "in": "query",
        "description": "Only returns orders with the given city set for the order's shipping address.",
        "example": "Hamburg",
        "schema": {
          "type": "string",
          "pattern": "[!-ɏ0-9 ]"
        }
      },
      "OrderFilterShippingAddressStreet": {
        "name": "filters[shippingAddressStreet]",
        "in": "query",
        "description": "Only returns orders with the given street set for the order's shipping address.",
        "example": "Wolfgangsweg",
        "schema": {
          "type": "string",
          "pattern": "[!-ɏ0-9 ]"
        }
      },
      "OrderFilterPaymentType": {
        "name": "filters[paymentType]",
        "in": "query",
        "description": "Only returns orders with a payment method of the given type.",
        "schema": {
          "type": "string"
        }
      },
      "OrderFilterPaymentTransactionId": {
        "name": "filters[paymentTransactionId]",
        "in": "query",
        "description": "Only returns orders with the specified payment transaction id.",
        "schema": {
          "type": "string"
        }
      },
      "OrderFilterShipmentKey": {
        "name": "filters[shipmentKey]",
        "in": "query",
        "description": "Only returns orders with a shipment matching the given shipmentKey.",
        "example": "shpmnt-100-1",
        "schema": {
          "type": "string"
        }
      },
      "OrderFilterShipmentReturnIdentCode": {
        "name": "filters[shipmentReturnIdentCode]",
        "in": "query",
        "description": "Only returns orders with a shipment having the specified return ident code.",
        "schema": {
          "type": "string"
        }
      },
      "OrderFilterShipmentReturnKey": {
        "name": "filters[shipmentReturnKey]",
        "in": "query",
        "description": "Only returns orders with a shipment item having the given shipmentReturnKey.",
        "schema": {
          "type": "string"
        }
      },
      "OrderFilterIsShippingCostCharged": {
        "name": "filters[isShippingCostCharged]",
        "in": "query",
        "description": "Filters orders by whether shipping costs are charged or not.",
        "example": true,
        "schema": {
          "type": "boolean"
        }
      },
      "OrderFilterCustomerId": {
        "name": "filters[customerId]",
        "in": "query",
        "description": "Comma separated list of customer IDs to return the orders for",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        }
      },
      "OrderFilterMinCustomerId": {
        "name": "filters[minCustomerId]",
        "in": "query",
        "description": "Minimum (inclusive) customer ID of entities that should be returned.",
        "schema": {
          "type": "integer"
        }
      },
      "OrderFilterMaxCustomerId": {
        "name": "filters[maxCustomerId]",
        "in": "query",
        "description": "Maximum (inclusive) customer ID of entities that should be returned.",
        "schema": {
          "type": "integer"
        }
      },
      "OrderFilterCustomerReferenceKey": {
        "name": "filters[customerReferenceKey]",
        "in": "query",
        "description": "Comma separated list of reference keys of customers",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "OrderFilterReferenceKey": {
        "name": "filters[referenceKey]",
        "in": "query",
        "description": "Comma separated list of reference keys of orders",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "OrderFilterVoucherCode": {
        "name": "filters[voucherCode]",
        "in": "query",
        "description": "Only return orders for which the specified voucherCode has been used.",
        "example": "fashion2020",
        "schema": {
          "type": "string",
          "pattern": "[A-z0-9]{0,12}"
        }
      },
      "OrderFilterPublicKey": {
        "name": "filters[publicKey]",
        "in": "query",
        "description": "Only returns orders with the given public key set for the order.",
        "example": "666",
        "schema": {
          "type": "string",
          "pattern": "^[0-9a-zA-Z\\-\\\\_]*$"
        }
      },
      "OrderFilterProductId": {
        "name": "filters[productId]",
        "in": "query",
        "description": "Only returns orders with the given orderProductId.",
        "example": 123,
        "schema": {
          "type": "integer"
        }
      },
      "OrderFilterVariantId": {
        "name": "filters[variantId]",
        "in": "query",
        "description": "Only returns orders with the given variantId.",
        "example": 123,
        "schema": {
          "type": "integer"
        }
      },
      "OrderFilterMerchantId": {
        "name": "filters[merchantId]",
        "in": "query",
        "description": "Only returns orders with products by the given merchant's id.",
        "example": 5038,
        "schema": {
          "type": "integer"
        }
      },
      "OrderFilterChannelId": {
        "name": "filters[channelId]",
        "in": "query",
        "description": "Only returns orders with the given channel id.",
        "example": 123,
        "schema": {
          "type": "integer"
        }
      },
      "OrderFilterDetailedStatus": {
        "name": "filters[detailedStatus]",
        "in": "query",
        "description": "Filter for a detailed status of orders. The value must be prefixed with billing, order or shipping.",
        "schema": {
          "type": "string",
          "enum": [
            "order.order_created",
            "order.order_open",
            "order.order_pended",
            "order.order_confirmed",
            "order.order_delegated",
            "order.order_shipped",
            "order.order_invoiced",
            "order.order_aborted",
            "order.order_cancelled",
            "shipping.shipping_open",
            "shipping.shipping_ordered",
            "shipping.shipping_delivered",
            "shipping.shipping_cancelled",
            "shipping.shipping_undeliverable",
            "shipping.shipping_partially_delivered",
            "billing.billing_open",
            "billing.billing_pending",
            "billing.billing_payment_pending",
            "billing.billing_completed",
            "billing.billing_payment_aborted",
            "billing.billing_payment_cancelled",
            "billing.billing_refunded",
            "billing.billing_denied"
          ]
        }
      },
      "OrderSortBy": {
        "name": "sort",
        "in": "query",
        "description": "Sort by the provided column.",
        "schema": {
          "type": "string",
          "enum": [
            "id",
            "appId",
            "customerId",
            "createdAt",
            "confirmedAt",
            "updatedAt",
            "paymentKey"
          ],
          "default": "id"
        }
      },
      "OrderWith": {
        "name": "with",
        "in": "query",
        "description": "Comma-separated list of additional properties that should be included in the response.",
        "example": "?with=legacyCustomData",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "legacyCustomData",
              "items.legacyCustomData",
              "customer.legacyCustomData"
            ]
          }
        }
      },
      "SubscriptionId": {
        "name": "subscriptionId",
        "in": "path",
        "description": "Subscription ID",
        "required": true,
        "schema": {
          "type": "integer"
        },
        "examples": {
          "SubscriptionId": {
            "value": 1
          }
        }
      },
      "VoucherId": {
        "name": "voucherId",
        "in": "path",
        "required": true,
        "description": "The voucher ID.",
        "example": 1,
        "schema": {
          "type": "integer"
        }
      },
      "FilterCode": {
        "name": "filters[code]",
        "in": "query",
        "description": "A specific code for a voucher.",
        "example": "testcode",
        "schema": {
          "type": "string"
        }
      },
      "FilterStatus": {
        "name": "filters[status]",
        "in": "query",
        "description": "A specific status for a voucher.",
        "example": "active",
        "schema": {
          "type": "string"
        }
      },
      "VoucherCriterionId": {
        "name": "voucherCriterionId",
        "in": "path",
        "required": true,
        "description": "The voucher criterion ID.",
        "example": 1,
        "schema": {
          "type": "integer"
        }
      },
      "CampaignReductionLimit": {
        "name": "limit",
        "in": "query",
        "description": "Maximum number of entities in the result. When fetching entities with children, the limit always applies to the amount of parent entities (max. 10000).",
        "required": false,
        "style": "form",
        "schema": {
          "type": "integer",
          "default": 10000,
          "minimum": 1,
          "maximum": 10000
        }
      },
      "CampaignReductionSortBy": {
        "name": "sort",
        "in": "query",
        "description": "Sort by the provided column.",
        "schema": {
          "type": "string",
          "enum": [
            "id",
            "variantId"
          ],
          "default": "variantId"
        }
      },
      "CompanyId": {
        "name": "companyId",
        "in": "path",
        "required": true,
        "description": "The company ID.",
        "example": 1,
        "schema": {
          "type": "integer"
        }
      },
      "PriceRoundingId": {
        "name": "priceRoundingId",
        "in": "path",
        "description": "Price rounding ID.",
        "required": true,
        "schema": {
          "type": "integer"
        },
        "example": 123
      },
      "ProductWith": {
        "name": "with",
        "in": "query",
        "description": "Comma-separated list of additional properties that should be included in the response.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "attributes",
              "images",
              "images.customData",
              "variants",
              "variants.attributes",
              "variants.prices",
              "variants.prices.customData",
              "variants.stocks",
              "variants.customData",
              "variants.relatedVariants",
              "productSortings",
              "customData",
              "sellableTimeframes",
              "similarProducts"
            ]
          }
        }
      },
      "ProductImageWith": {
        "name": "with",
        "in": "query",
        "description": "Comma-separated list of additional properties that should be included in the response.",
        "example": "?with=customData",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "customData"
            ]
          }
        }
      },
      "VariantWith": {
        "name": "with",
        "in": "query",
        "description": "Comma-separated list of additional properties that should be included in the response.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "attributes",
              "customData",
              "prices",
              "prices.customData",
              "relatedVariants",
              "stocks"
            ]
          }
        }
      },
      "VariantPriceWith": {
        "name": "with",
        "in": "query",
        "description": "Comma-separated list of additional properties that should be included in the response.",
        "example": "?with=customData",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "customData"
            ]
          }
        }
      },
      "CompositeVariantWith": {
        "name": "with",
        "in": "query",
        "description": "Comma-separated list of additional properties that should be included in the response.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "$ref": "#/components/parameters/VariantWith/schema/items"
          }
        }
      },
      "CarrierIdentifier": {
        "name": "carrierIdentifier",
        "in": "path",
        "required": true,
        "description": "The carrier ID or key.\nIf you are using a key, it is highly recommended to use the encoded equal sign (%3D) instead of the plain =\n",
        "schema": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[1-9][0-9]*$"
            },
            {
              "type": "string",
              "pattern": "^key(%3D|=)[a-zA-Z0-9-_%\\+\\. ]*$"
            }
          ]
        },
        "examples": {
          "CarrierId": {
            "value": 1
          },
          "CarrierKey": {
            "value": "key%3DDHL_STD_NATIONAL"
          }
        }
      },
      "MerchantIdentifier": {
        "name": "merchantIdentifier",
        "in": "path",
        "description": "Merchant ID or reference key.",
        "required": true,
        "schema": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[1-9][0-9]*$"
            },
            {
              "type": "string",
              "pattern": "^key(%3D|\\=)[a-zA-Z0-9-_%\\+\\. ]*$"
            }
          ]
        },
        "examples": {
          "MerchantId": {
            "value": 1
          },
          "MerchantKey": {
            "value": "key%3DACME"
          }
        }
      },
      "MerchantWith": {
        "name": "with",
        "in": "query",
        "description": "Comma-separated list of additional properties that should be included in the response.",
        "example": "?with=contacts",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "contacts",
              "returnAddresses",
              "carriers",
              "warehouses",
              "customData"
            ]
          }
        }
      },
      "MerchantContactId": {
        "name": "merchantContactId",
        "in": "path",
        "required": true,
        "description": "The contact ID.",
        "example": 1,
        "schema": {
          "type": "integer"
        }
      },
      "MerchantReturnAddressId": {
        "name": "merchantReturnAddressId",
        "in": "path",
        "required": true,
        "description": "The return address ID.",
        "example": 1,
        "schema": {
          "type": "integer"
        }
      },
      "CountryCode": {
        "name": "countryCode",
        "in": "path",
        "required": true,
        "description": "ISO 3166 alpha 2 country code.",
        "schema": {
          "type": "string",
          "example": "DE"
        }
      },
      "WarehouseIdentifier": {
        "name": "warehouseIdentifier",
        "in": "path",
        "description": "Warehouse ID or reference key.\nIf you are using a reference key, it is highly recommended to use the encoded equal sign (%3D) instead of the plain =\n",
        "required": true,
        "schema": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[1-9][0-9]*$"
            },
            {
              "type": "string",
              "pattern": "^key(%3D|=)[a-zA-Z0-9-_%\\+\\. ]*$"
            }
          ]
        },
        "examples": {
          "Id": {
            "value": 123
          },
          "ReferenceKey": {
            "value": "key%3Dmy-warehouse"
          }
        }
      },
      "WarehouseWith": {
        "name": "with",
        "in": "query",
        "description": "Comma-separated list of additional properties that should be included in the response.",
        "example": "?with=merchants",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "merchants",
              "shopCountries"
            ]
          }
        }
      },
      "WebhookProducerIdentifier": {
        "name": "producerIdentifier",
        "in": "path",
        "description": "Producer name (identifier).",
        "required": true,
        "schema": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50,
          "pattern": "^[a-z0-9_.\\-]+$"
        },
        "examples": {
          "ProducerName": {
            "value": "coba-api"
          }
        }
      },
      "WebhookProducerSubscriptionIdentifier": {
        "name": "subscriptionId",
        "in": "path",
        "description": "Subscription ID.",
        "required": true,
        "schema": {
          "type": "integer",
          "minimum": 1,
          "maximum": 2147483647
        },
        "examples": {
          "SubscriptionId": {
            "value": 1
          }
        }
      },
      "WebhookProducerSubscriptionFilterEnabled": {
        "name": "filters[enabled]",
        "in": "query",
        "required": false,
        "description": "When set, restrict results to enabled or disabled subscriptions only.",
        "schema": {
          "type": "boolean"
        }
      },
      "WebhookProducerSubscriptionFilterEventName": {
        "name": "filters[eventName]",
        "in": "query",
        "required": false,
        "description": "Return only subscriptions for this event name.",
        "schema": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50,
          "pattern": "^[a-z0-9_.\\-]+$"
        }
      },
      "WebhookProducerSubscriptionFilterTarget": {
        "name": "filters[target]",
        "in": "query",
        "required": false,
        "description": "Filter subscriptions whose stored target context equals or matches these key-value pairs.",
        "style": "deepObject",
        "explode": true,
        "schema": {
          "type": "object",
          "additionalProperties": true
        }
      },
      "PromotionWith": {
        "name": "with",
        "in": "query",
        "description": "Comma-separated list of additional properties that should be included in the response.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "customData"
            ]
          }
        }
      },
      "PromotionId": {
        "name": "promotionId",
        "in": "path",
        "required": true,
        "example": "645e0c241a93369ff53f26e0",
        "description": "Promotion id",
        "schema": {
          "type": "string",
          "maxLength": 24,
          "minLength": 24,
          "pattern": "^(?!audiences|item-sets).*$"
        }
      },
      "PromotionItemSetId": {
        "name": "promotionItemSetId",
        "in": "path",
        "required": true,
        "example": "645e0c241a93369ff53f26e0",
        "description": "Promotion ItemSet ID",
        "schema": {
          "type": "string",
          "maxLength": 24,
          "minLength": 24
        }
      },
      "AudienceId": {
        "name": "audienceId",
        "description": "Audience id",
        "in": "path",
        "required": true,
        "example": "645e0c241a93369ff53f26e0",
        "schema": {
          "type": "string",
          "maxLength": 24,
          "minLength": 24
        }
      },
      "CompanyIdHeader": {
        "name": "X-Company-Id",
        "in": "header",
        "description": "The ID of the company created by SCAYLE. When using a multi-tenancy environment, this parameter is required to correctly identify a tenant.",
        "required": false,
        "schema": {
          "type": "integer"
        }
      },
      "ChannelId": {
        "name": "channelId",
        "description": "Channel ID",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "EmailKeyId": {
        "name": "emailKeyId",
        "in": "path",
        "description": "Email Key ID",
        "required": true,
        "schema": {
          "type": "integer"
        },
        "examples": {
          "emailKeyId": {
            "value": 123
          }
        }
      },
      "ProductMasterIdentifier": {
        "name": "productMasterIdentifier",
        "in": "path",
        "description": "You can either pass the ID of a product master or its reference key.\nIf you are using a reference key, it is highly recommended to use the encoded equal sign (%3D) instead of the plain =\n",
        "required": true,
        "schema": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[1-9][0-9]*$"
            },
            {
              "type": "string",
              "pattern": "^key(%3D|=)[a-zA-Z0-9-_%\\+\\. ]*$"
            }
          ]
        },
        "examples": {
          "ProductMasterId": {
            "value": "123"
          },
          "MasterReferenceKey": {
            "value": "key%3DM0001-black"
          }
        }
      }
    },
    "responses": {
      "Unauthorized": {
        "description": "Unauthorized",
        "content": {
          "application/json": {
            "schema": {
              "title": "UnauthorizedResponse",
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "errors": [
                {
                  "errorKey": "unauthorized",
                  "message": "You are not authorized to access this page.",
                  "context": {}
                }
              ]
            }
          }
        }
      },
      "BadRequest": {
        "description": "Bad Request",
        "content": {
          "application/json": {
            "schema": {
              "title": "BadRequestResponse",
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "errors": [
                {
                  "errorKey": "validation_error",
                  "message": "The property ID must be an integer.",
                  "context": {
                    "id": "abc123",
                    "context": {}
                  }
                }
              ]
            }
          }
        }
      },
      "InternalServerError": {
        "description": "Internal server error",
        "content": {
          "application/json": {
            "schema": {
              "title": "InternalServerErrorResponse",
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      }
    },
    "schemas": {
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "errors": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "object",
              "required": [
                "errorKey",
                "message",
                "context"
              ],
              "properties": {
                "errorKey": {
                  "type": "string",
                  "description": "A key that describes the occurred error."
                },
                "message": {
                  "type": "string",
                  "description": "Some human readable description of the error."
                },
                "context": {
                  "type": "object",
                  "description": "Additional context to interpret the error message."
                }
              }
            }
          }
        }
      },
      "Product": {
        "type": "object",
        "required": [
          "referenceKey",
          "state",
          "name",
          "master"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "description": "The ID of the product created by SCAYLE."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Product creation timestamp in UTC."
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Product last update timestamp in UTC."
          },
          "lastContentUpdatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true,
            "description": "Timestamp of the latest content-related product update in UTC."
          },
          "problems": {
            "type": "array",
            "readOnly": true,
            "description": "If product is in problem state, the reasons are listed here.",
            "items": {
              "type": "string"
            },
            "example": [
              "system: product has no image"
            ]
          },
          "referenceKey": {
            "type": "string",
            "description": "A key that uniquely identifies the product (e.g., a shirt in a specific color) within the tenant's ecosystem.",
            "example": "M0001-black",
            "pattern": "^[a-zA-Z0-9-_\\. ]*$"
          },
          "name": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "minProperties": 1,
            "description": "The localized product name. At least the base language that is configured in SCAYLE is mandatory.",
            "example": {
              "de_DE": "Blaues Hemd",
              "en_GB": "Blue Shirt"
            }
          },
          "master": {
            "$ref": "#/components/schemas/Master",
            "description": "The master the product is attached to."
          },
          "state": {
            "type": "string",
            "example": "live",
            "default": "live",
            "enum": [
              "live",
              "draft",
              "problem",
              "new",
              "inApproval",
              "blocked"
            ],
            "x-enumName": "ProductStateEnum",
            "description": "The state of the product determined by the state evaluation process. The only possible values to request are `live`, `draft` and `blocked`. The `problem` state can only be the result of the state evaluation process. If product is in problem state, the reasons are listed in read-only 'problems' field. The `new` and `inApproval` states can be set in the SCAYLE Panel. If a product belongs to multiple merchants, the state is returned based on the hierarchical order live, inApproval, problem, blocked, draft"
          },
          "attributes": {
            "type": "array",
            "description": "A list of attributes attached to the product.",
            "items": {
              "$ref": "#/components/schemas/Attribute",
              "example": [
                {
                  "name": "color",
                  "type": "localizedStringList",
                  "value": [
                    {
                      "de_DE": "blau",
                      "en_GB": "blue"
                    },
                    {
                      "de_DE": "schwarz",
                      "en_GB": "black"
                    }
                  ],
                  "isLocked": true
                }
              ]
            }
          },
          "variants": {
            "description": "A list of product variants attached to the product.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductVariant"
            }
          },
          "images": {
            "description": "A list of product images attached to the product.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductImage"
            }
          },
          "productSortings": {
            "description": "A list of product sortings.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductSorting"
            }
          },
          "customData": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomData"
              }
            ],
            "nullable": true
          },
          "sellableTimeframes": {
            "description": "A list of product sellable timeframes.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductSellableTimeframe"
            }
          },
          "isComposite": {
            "type": "boolean",
            "readOnly": true,
            "description": "Indicates whether the product is composite."
          },
          "merchantReferenceKeys": {
            "description": "A list of merchant reference keys the product belongs to.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "uniqueItems": true
          },
          "similarProducts": {
            "description": "A list of similar products.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SimilarProducts"
            }
          }
        },
        "x-ayObjects": [
          {
            "property": "master",
            "className": "Master"
          },
          {
            "property": "variants",
            "isCollection": true,
            "className": "ProductVariant"
          },
          {
            "property": "images",
            "isCollection": true,
            "className": "ProductImage"
          },
          {
            "property": "attributes",
            "isCollection": true,
            "className": "Attribute"
          },
          {
            "property": "productSortings",
            "isCollection": true,
            "className": "ProductSorting"
          },
          {
            "property": "sellableTimeframes",
            "isCollection": true,
            "className": "ProductSellableTimeframe"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createProduct",
            "path": "/products",
            "requestModel": "Product",
            "responseModel": "Product"
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getProduct",
            "path": "/products/{productIdentifier}",
            "responseModel": "Product",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getProducts",
            "path": "/products",
            "isResponseCollection": true,
            "responseModel": "Product"
          },
          {
            "methodName": "update",
            "operation": "put",
            "operationId": "updateProduct",
            "path": "/products/{productIdentifier}",
            "requestModel": "Product",
            "responseModel": "Product",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteProduct",
            "path": "/products/{productIdentifier}",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "updateOrCreateAttribute",
            "operation": "post",
            "operationId": "updateOrCreateProductAttribute",
            "path": "/products/{productIdentifier}/attributes",
            "requestModel": "Attribute",
            "responseModel": "Attribute",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "deleteAttribute",
            "operation": "delete",
            "operationId": "deleteProductAttribute",
            "path": "/products/{productIdentifier}/attributes/{attributeGroupName}",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getAttribute",
            "operation": "get",
            "operationId": "getProductAttribute",
            "path": "/products/{productIdentifier}/attributes/{attributeGroupName}",
            "responseModel": "Attribute",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "allAttributes",
            "operation": "get",
            "operationId": "getProductAttributes",
            "path": "/products/{productIdentifier}/attributes",
            "responseModel": "Attribute",
            "isResponseCollection": true,
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "updateMasterCategories",
            "operation": "put",
            "operationId": "updateProductMasterCategories",
            "path": "/products/{productIdentifier}/master-categories",
            "responseModel": "ProductMasterCategories",
            "requestModel": "ProductMasterCategories",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "createOrUpdateCustomData",
            "operation": "put",
            "operationId": "createOrUpdateProductCustomData",
            "path": "/products/{productIdentifier}/custom-data",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "deleteCustomData",
            "operation": "delete",
            "operationId": "deleteProductCustomData",
            "path": "/products/{productIdentifier}/custom-data",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "getCustomData",
            "operation": "get",
            "operationId": "getProductCustomData",
            "path": "/products/{productIdentifier}/custom-data",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "createOrUpdateCustomDataForKey",
            "operation": "put",
            "operationId": "createOrUpdateProductCustomDataForKey",
            "path": "/products/{productIdentifier}/custom-data/{key}",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "deleteCustomDataForKey",
            "operation": "delete",
            "operationId": "deleteProductCustomDataForKey",
            "path": "/products/{productIdentifier}/custom-data/{key}",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getCustomDataForKey",
            "operation": "get",
            "operationId": "getProductCustomDataForKey",
            "path": "/products/{productIdentifier}/custom-data/{key}",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "createComposite",
            "operation": "post",
            "operationId": "createCompositeProduct",
            "path": "/products/composite",
            "requestModel": "Product",
            "responseModel": "Product"
          },
          {
            "methodName": "updateComposite",
            "operation": "put",
            "operationId": "updateCompositeProduct",
            "path": "/products/composite/{productIdentifier}",
            "requestModel": "Product",
            "responseModel": "Product",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "deleteComposite",
            "operation": "delete",
            "operationId": "deleteCompositeProduct",
            "path": "/products/composite/{productIdentifier}",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "updateState",
            "operation": "put",
            "operationId": "updateProductState",
            "path": "/products/{productIdentifier}/state",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ],
            "requestModel": "ProductState",
            "responseModel": "ProductState"
          },
          {
            "methodName": "patchSimilarProducts",
            "operation": "patch",
            "operationId": "patchSimilarProducts",
            "path": "/products/{productIdentifier}/similar-products",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ],
            "requestModel": "SimilarProducts",
            "isRequestCollection": true
          },
          {
            "methodName": "createBulkRequest",
            "operation": "post",
            "operationId": "createProductBulkRequest",
            "path": "/products/bulk-requests",
            "requestModel": "CreateBulkRequest",
            "responseModel": "BulkRequest"
          },
          {
            "methodName": "createCompositeProductBulkRequest",
            "operation": "post",
            "operationId": "createCompositeProductBulkRequest",
            "path": "/products/composite/bulk-requests",
            "requestModel": "CreateBulkRequest",
            "responseModel": "BulkRequest"
          },
          {
            "methodName": "unlockAttributeGroup",
            "operation": "post",
            "operationId": "unlockProductAttributeGroup",
            "path": "/products/{productIdentifier}/attributes/{attributeGroupName}/unlock",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "unlockAssetSortings",
            "operation": "post",
            "operationId": "unlockProductAssetSortings",
            "path": "/products/{productIdentifier}/unlock-asset-sortings",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ],
            "requestModel": "UnlockAssetSortingsRequest"
          },
          {
            "methodName": "copy",
            "operation": "post",
            "operationId": "copyProduct",
            "path": "/products/{productIdentifier}/copy",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ],
            "requestModel": "CopyProductRequest",
            "responseModel": "Product"
          }
        ]
      },
      "ProductState": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "state"
        ],
        "properties": {
          "state": {
            "$ref": "#/components/schemas/Product/properties/state"
          },
          "merchantReferenceKeys": {
            "description": "A list of merchant reference keys the merchant product belongs to.",
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "merchantProductStates": {
            "type": "array",
            "readOnly": true,
            "description": "A list of merchant keys to which the merchant product belongs to and the state of the merchant product.",
            "items": {
              "$ref": "#/components/schemas/MerchantProductState"
            }
          }
        }
      },
      "MerchantProductState": {
        "type": "object",
        "required": [
          "merchantReferenceKey",
          "state"
        ],
        "properties": {
          "merchantReferenceKey": {
            "type": "string",
            "description": "Reference key of the merchant to which the product belongs to."
          },
          "state": {
            "type": "string",
            "example": "live",
            "description": "State of the merchant product."
          }
        }
      },
      "ProductsFirstLiveAt": {
        "type": "object",
        "required": [
          "shopKey",
          "countryCodes",
          "products"
        ],
        "properties": {
          "shopKey": {
            "type": "string",
            "example": "ms",
            "description": "A key that uniquely identifies the shop within the tenant's ecosystem."
          },
          "countryCodes": {
            "type": "array",
            "example": [
              "DE",
              "GB"
            ],
            "description": "List of country codes.",
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "products": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductsFirstLiveAtProduct"
            }
          }
        },
        "x-ayObjects": [
          {
            "property": "products",
            "className": "ProductsFirstLiveAtProduct",
            "isCollection": true
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "updateProductsFirstLiveAt",
            "operation": "put",
            "operationId": "updateProductsFirstLiveAt",
            "path": "/products/first-live-at",
            "requestModel": "ProductsFirstLiveAt"
          }
        ]
      },
      "ProductsFirstLiveAtProduct": {
        "type": "object",
        "required": [
          "productId",
          "firstLiveAt"
        ],
        "properties": {
          "productId": {
            "type": "integer",
            "example": 12311,
            "description": "Id of the product."
          },
          "firstLiveAt": {
            "type": "string",
            "format": "date-time",
            "example": "2021-01-23T11%3A30%3A58%2B00%3A00",
            "description": "Date and time of first live at."
          }
        }
      },
      "Master": {
        "type": "object",
        "description": "A master product is used for grouping a collection of products (e.g., all colors of a shirt).\nIt defines categories and attributes, which are shared between all products belonging to the same master.\n",
        "required": [
          "referenceKey"
        ],
        "properties": {
          "referenceKey": {
            "type": "string",
            "description": "A key that uniquely identifies a group of products (e.g., all colors of a shirt) within the tenant's ecosystem.",
            "example": "M0001"
          },
          "categories": {
            "$ref": "#/components/schemas/ProductMasterCategories",
            "description": "The master categories all products of this group are attached to."
          },
          "attributes": {
            "type": "array",
            "description": "A list of attributes attached to the master.",
            "items": {
              "$ref": "#/components/schemas/Attribute",
              "example": [
                {
                  "name": "sleeve_length",
                  "type": "localizedString",
                  "value": {
                    "de_DE": "Langarm",
                    "en_GB": "long-sleeved"
                  },
                  "isLocked": true
                }
              ]
            }
          }
        },
        "x-ayObjects": [
          {
            "property": "categories",
            "className": "ProductMasterCategories"
          },
          {
            "property": "attributes",
            "isCollection": true,
            "className": "Attribute"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "updateProductMasterMasterCategories",
            "operation": "put",
            "operationId": "updateProductMasterMasterCategories",
            "path": "/product-masters/{productMasterIdentifier}/master-categories",
            "responseModel": "ProductMasterCategories",
            "requestModel": "ProductMasterCategories",
            "parameters": [
              {
                "name": "productMasterIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "allAttributes",
            "operation": "get",
            "operationId": "getProductMasterAttributes",
            "path": "/product-masters/{productMasterIdentifier}/attributes",
            "responseModel": "Attribute",
            "isResponseCollection": true,
            "parameters": [
              {
                "name": "productMasterIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "updateOrCreateAttribute",
            "operation": "post",
            "operationId": "updateOrCreateProductMasterAttribute",
            "path": "/product-masters/{productMasterIdentifier}/attributes",
            "requestModel": "Attribute",
            "responseModel": "Attribute",
            "parameters": [
              {
                "name": "productMasterIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "getAttribute",
            "operation": "get",
            "operationId": "getProductMasterAttribute",
            "path": "/product-masters/{productMasterIdentifier}/attributes/{attributeGroupName}",
            "responseModel": "Attribute",
            "parameters": [
              {
                "name": "productMasterIdentifier",
                "type": "identifier"
              },
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "deleteAttribute",
            "operation": "delete",
            "operationId": "deleteProductMasterAttribute",
            "path": "/product-masters/{productMasterIdentifier}/attributes/{attributeGroupName}",
            "parameters": [
              {
                "name": "productMasterIdentifier",
                "type": "identifier"
              },
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "unlockAttributeGroup",
            "operation": "post",
            "operationId": "unlockProductMasterAttributeGroup",
            "path": "/product-masters/{productMasterIdentifier}/attributes/{attributeGroupName}/unlock",
            "parameters": [
              {
                "name": "productMasterIdentifier",
                "type": "identifier"
              },
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          }
        ]
      },
      "SimilarProducts": {
        "type": "object",
        "required": [
          "shopKey",
          "productIds"
        ],
        "properties": {
          "shopKey": {
            "type": "string",
            "description": "A key that uniquely identifies the shop within the tenant's ecosystem. Must be **exactly two characters** long.",
            "example": "ay"
          },
          "countryCode": {
            "type": "string",
            "description": "ISO 3166 alpha 2 country code.",
            "example": "DE"
          },
          "productIds": {
            "type": "array",
            "description": "A list of product identifiers similar to the product.",
            "maxItems": 20,
            "items": {
              "type": "integer"
            }
          }
        }
      },
      "UnlockAssetSortingsRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "unlockGlobal": {
            "type": "boolean",
            "description": "When true, remove the global asset sorting lock (row with application_id = null). Optional; when omitted with shopCountrySpecific, semantics depend on the other field."
          },
          "shopCountrySpecific": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/ShopCountryToUnlock"
            },
            "description": "List of shop/country pairs for which to remove the asset sorting lock. Optional."
          }
        },
        "x-ayObjects": [
          {
            "property": "shopCountrySpecific",
            "isCollection": true,
            "className": "ShopCountryToUnlock"
          }
        ]
      },
      "CopyProductRequest": {
        "type": "object",
        "additionalProperties": false,
        "description": "Request payload for copying (cloning) an existing product into a new product within the same environment.\nThe source product is identified by the path parameter; this payload defines the identifiers and options for the new product.\n",
        "required": [
          "referenceKey",
          "variants"
        ],
        "properties": {
          "referenceKey": {
            "type": "string",
            "description": "The reference key to assign to the newly copied product. Must be unique within the tenant's ecosystem.",
            "example": "M0001-blue",
            "pattern": "^[a-zA-Z0-9-_\\. ]*$"
          },
          "variants": {
            "type": "array",
            "minItems": 1,
            "description": "Mapping of every source variant reference key to a new variant reference key. All variants of the source product must be mapped.",
            "items": {
              "$ref": "#/components/schemas/CopyProductVariant"
            }
          },
          "master": {
            "$ref": "#/components/schemas/CopyProductMaster"
          },
          "merchantReferenceKeys": {
            "type": "array",
            "description": "When provided, the copy is only applied to these specific merchant entities.",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "uniqueItems": true,
            "example": [
              "merchant-1"
            ]
          },
          "images": {
            "type": "array",
            "description": "Overrides for source image reference keys on the copied product.\nImage reference keys are globally unique across product images, so any source image that has a `referenceKey` must be remapped here to a new, unique value.\nSource images without a `referenceKey` may also be remapped via this list, but doing so is optional. Source images that are not listed in this mapping are copied without a `referenceKey`.\n",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/CopyProductImage"
            }
          },
          "copyPrices": {
            "type": "boolean",
            "default": false,
            "description": "When true, copies prices from the source product to the new product."
          },
          "copyStocks": {
            "type": "boolean",
            "default": false,
            "description": "When true, copies stocks (including quantities and sellable timeframes) from the source product to the new product."
          }
        },
        "x-ayObjects": [
          {
            "property": "master",
            "className": "CopyProductMaster"
          },
          {
            "property": "variants",
            "isCollection": true,
            "className": "CopyProductVariant"
          },
          {
            "property": "images",
            "isCollection": true,
            "className": "CopyProductImage"
          }
        ]
      },
      "CopyProductMaster": {
        "type": "object",
        "additionalProperties": false,
        "description": "Optional master reference for the copied product.\nIf omitted, the copy is attached to the same ProductMaster as the source product.\nIf provided with a new referenceKey, a new ProductMaster is created.\n",
        "required": [
          "referenceKey"
        ],
        "properties": {
          "referenceKey": {
            "type": "string",
            "description": "The reference key of the master to attach the copied product to. When the value is new, a new ProductMaster is created.",
            "example": "M0002"
          }
        }
      },
      "CopyProductVariant": {
        "type": "object",
        "additionalProperties": false,
        "description": "Maps an existing source variant to a new variant reference key for the cloned product.\nAll variants of the source product must be mapped.\n",
        "required": [
          "sourceReferenceKey",
          "referenceKey"
        ],
        "properties": {
          "sourceReferenceKey": {
            "type": "string",
            "description": "The reference key of the variant in the source product to copy from.",
            "example": "M0001-black-S"
          },
          "referenceKey": {
            "type": "string",
            "description": "The reference key to assign to the corresponding variant in the copied product.",
            "example": "M0001-blue-S"
          }
        }
      },
      "CopyProductImage": {
        "type": "object",
        "additionalProperties": false,
        "description": "Overrides the reference key of a single source image when cloning.\nImage reference keys are globally unique across product images, so any source\nimage that has a `referenceKey` must be remapped here to a new, unique value.\nSource images without a `referenceKey` may also be remapped via this list,\nbut doing so is optional. Source images that are not listed in the parent\n`images` mapping are copied without a `referenceKey`.\n",
        "required": [
          "sourceReferenceKey",
          "referenceKey"
        ],
        "properties": {
          "sourceReferenceKey": {
            "type": "string",
            "description": "The reference key of the image in the source product to copy from.",
            "example": "M0001-front"
          },
          "referenceKey": {
            "type": "string",
            "description": "The reference key to assign to the corresponding image in the copied product. Must be globally unique across product images.",
            "example": "M0001-blue-front"
          }
        }
      },
      "ProductImage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "description": "ID assigned by SCAYLE."
          },
          "referenceKey": {
            "type": "string",
            "description": "A key that uniquely identifies the asset within the tenant's ecosystem.",
            "example": "my_original_name.jpg",
            "pattern": "^[a-zA-Z0-9-_\\. ]*$"
          },
          "name": {
            "type": "string",
            "description": "User defined name of the image.",
            "example": "image.jpg"
          },
          "mimeType": {
            "type": "string",
            "readOnly": true,
            "description": "MIME type identified by SCAYLE."
          },
          "position": {
            "type": "integer",
            "description": "Specifies the position of the image. Counting starts with 0, so when a product image should be on the first position, you have to send 0.",
            "example": 3
          },
          "shopCountrySpecific": {
            "type": "array",
            "minItems": 1,
            "description": "Optional per-shop-country positions for this image. When present, must contain at least one entry.\n",
            "items": {
              "$ref": "#/components/schemas/ProductImageShopCountryPosition"
            }
          },
          "source": {
            "$ref": "#/components/schemas/AssetSource",
            "description": "A source from where to upload an image."
          },
          "assetUrl": {
            "type": "string",
            "description": "URL of the image, either manually specified or generated by SCAYLE, if the SCAYLE CDN is used.",
            "example": "images/my_image.jpg"
          },
          "attributes": {
            "type": "array",
            "description": "A list of attributes attached to the image.",
            "items": {
              "$ref": "#/components/schemas/Attribute"
            },
            "example": [
              {
                "name": "view",
                "type": "simple",
                "value": "front",
                "isLocked": true
              }
            ]
          },
          "customData": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomData"
              }
            ],
            "nullable": true
          }
        },
        "x-ayObjects": [
          {
            "property": "source",
            "className": "AssetSource"
          },
          {
            "property": "attributes",
            "isCollection": true,
            "className": "Attribute"
          },
          {
            "property": "shopCountrySpecific",
            "isCollection": true,
            "className": "ProductImageShopCountryPosition"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createProductImage",
            "path": "/products/{productIdentifier}/images",
            "requestModel": "ProductImage",
            "responseModel": "ProductImage",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getProductImages",
            "path": "/products/{productIdentifier}/images",
            "isResponseCollection": true,
            "responseModel": "ProductImage",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "updatePosition",
            "operation": "patch",
            "operationId": "patchProductImage",
            "path": "/products/{productIdentifier}/images/{imageIdentifier}",
            "requestModel": "ProductImagePosition",
            "responseModel": "ProductImage",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "imageIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteProductImage",
            "path": "/products/{productIdentifier}/images/{imageIdentifier}",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "imageIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "updateOrCreateAttribute",
            "operation": "post",
            "operationId": "updateOrCreateProductImageAttribute",
            "path": "/products/{productIdentifier}/images/{imageIdentifier}/attributes",
            "requestModel": "Attribute",
            "responseModel": "Attribute",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "imageIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "deleteAttribute",
            "operation": "delete",
            "operationId": "deleteProductImageAttribute",
            "path": "/products/{productIdentifier}/images/{imageIdentifier}/attributes/{attributeGroupName}",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "imageIdentifier",
                "type": "identifier"
              },
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getAttribute",
            "operation": "get",
            "operationId": "getProductImageAttribute",
            "path": "/products/{productIdentifier}/images/{imageIdentifier}/attributes/{attributeGroupName}",
            "responseModel": "Attribute",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "imageIdentifier",
                "type": "identifier"
              },
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "allAttributes",
            "operation": "get",
            "operationId": "getProductImageAttributes",
            "path": "/products/{productIdentifier}/images/{imageIdentifier}/attributes",
            "responseModel": "Attribute",
            "isResponseCollection": true,
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "imageIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "unlockAttributeGroup",
            "operation": "post",
            "operationId": "unlockProductImageAttributeGroup",
            "path": "/products/{productIdentifier}/images/{imageIdentifier}/attributes/{attributeGroupName}/unlock",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "imageIdentifier",
                "type": "identifier"
              },
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          }
        ]
      },
      "ProductImagePosition": {
        "type": "object",
        "required": [
          "position"
        ],
        "properties": {
          "position": {
            "type": "integer",
            "description": "Position of the image. Counting starts with 0, so when a product image should be on the first position, you have to send 0.",
            "example": 3
          },
          "shopCountrySpecific": {
            "type": "array",
            "minItems": 1,
            "description": "Optional per-shop-country positions. When present, must contain at least one entry.\n",
            "items": {
              "$ref": "#/components/schemas/ProductImageShopCountryPosition"
            }
          },
          "customData": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomData"
              }
            ],
            "nullable": true
          }
        },
        "x-ayObjects": [
          {
            "property": "shopCountrySpecific",
            "isCollection": true,
            "className": "ProductImageShopCountryPosition"
          }
        ]
      },
      "ProductImageShopCountryPosition": {
        "type": "object",
        "required": [
          "shopKey",
          "countryCode",
          "position"
        ],
        "properties": {
          "shopKey": {
            "type": "string",
            "description": "A key that uniquely identifies the shop within the tenant's ecosystem.",
            "example": "ms"
          },
          "countryCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "ISO 3166-1 alpha-2 country code.",
            "example": "de"
          },
          "position": {
            "type": "integer",
            "description": "Position of the image for this shop-country. Counting starts with 0.\n"
          }
        }
      },
      "ProductVariant": {
        "type": "object",
        "required": [
          "referenceKey"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "description": "ID assigned by SCAYLE."
          },
          "referenceKey": {
            "type": "string",
            "description": "A key that uniquely identifies the variant of a product (usually an SKU) within the tenant's ecosystem.",
            "example": "M0001-black-M",
            "pattern": "^[a-zA-Z0-9-_\\. ]*$"
          },
          "merchantReferenceKeys": {
            "description": "A list of merchant reference keys the variant belongs to.",
            "readOnly": true,
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "uniqueItems": true
          },
          "ean": {
            "type": "string",
            "description": "An ean that refers to a product variant .",
            "example": "0000007619991",
            "maxLength": 55
          },
          "attributes": {
            "description": "A list of attributes attached to the product variant.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attribute"
            },
            "example": [
              {
                "name": "size",
                "type": "simple",
                "value": "M",
                "isLocked": false
              }
            ]
          },
          "prices": {
            "description": "A list of prices attached to the product variant.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductVariantPrice"
            }
          },
          "stocks": {
            "description": "The product variant stock information.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductVariantStock"
            }
          },
          "customData": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomData"
              }
            ],
            "nullable": true
          },
          "isComposite": {
            "type": "boolean",
            "readOnly": true,
            "description": "Indicates whether the variant is composite."
          },
          "relatedVariants": {
            "description": "A list of variants that belong to the composite variant.\nAll variants in the list must use the same identification method, either all use variantId or all use variantReferenceKey.\nEmpty arrays are allowed in responses.\n",
            "oneOf": [
              {
                "type": "array",
                "maxItems": 0,
                "items": {
                  "$ref": "#/components/schemas/RelatedProductVariant"
                }
              },
              {
                "type": "array",
                "minItems": 1,
                "items": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/RelatedProductVariant"
                    },
                    {
                      "required": [
                        "variantId",
                        "isMainVariant"
                      ],
                      "properties": {
                        "variantId": {
                          "type": "integer"
                        },
                        "variantReferenceKey": {
                          "not": {}
                        }
                      }
                    }
                  ]
                }
              },
              {
                "type": "array",
                "minItems": 1,
                "items": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/RelatedProductVariant"
                    },
                    {
                      "required": [
                        "variantReferenceKey",
                        "isMainVariant"
                      ],
                      "properties": {
                        "variantReferenceKey": {
                          "type": "string",
                          "pattern": "^[a-zA-Z0-9-_\\. ]*$"
                        },
                        "variantId": {
                          "not": {}
                        }
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        "x-ayObjects": [
          {
            "property": "prices",
            "isCollection": true,
            "className": "ProductVariantPrice"
          },
          {
            "property": "attributes",
            "isCollection": true,
            "className": "Attribute"
          },
          {
            "property": "relatedVariants",
            "isCollection": true,
            "className": "RelatedProductVariant"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createProductVariant",
            "path": "/products/{productIdentifier}/variants",
            "requestModel": "ProductVariant",
            "responseModel": "ProductVariant",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getProductVariant",
            "path": "/products/{productIdentifier}/variants/{variantIdentifier}",
            "responseModel": "ProductVariant",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "variantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getProductVariants",
            "path": "/products/{productIdentifier}/variants",
            "isResponseCollection": true,
            "responseModel": "ProductVariant",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "update",
            "operation": "put",
            "operationId": "updateProductVariant",
            "path": "/products/{productIdentifier}/variants/{variantIdentifier}",
            "requestModel": "ProductVariant",
            "responseModel": "ProductVariant",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "variantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteProductVariant",
            "path": "/products/{productIdentifier}/variants/{variantIdentifier}",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "variantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "updateOrCreateAttribute",
            "operation": "post",
            "operationId": "updateOrCreateProductVariantAttribute",
            "path": "/products/{productIdentifier}/variants/{variantIdentifier}/attributes",
            "requestModel": "Attribute",
            "responseModel": "Attribute",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "variantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "deleteAttribute",
            "operation": "delete",
            "operationId": "deleteProductVariantAttribute",
            "path": "/products/{productIdentifier}/variants/{variantIdentifier}/attributes/{attributeGroupName}",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "variantIdentifier",
                "type": "identifier"
              },
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getAttribute",
            "operation": "get",
            "operationId": "getProductVariantAttribute",
            "path": "/products/{productIdentifier}/variants/{variantIdentifier}/attributes/{attributeGroupName}",
            "responseModel": "Attribute",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "variantIdentifier",
                "type": "identifier"
              },
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "allAttributes",
            "operation": "get",
            "operationId": "getProductVariantAttributes",
            "path": "/products/{productIdentifier}/variants/{variantIdentifier}/attributes",
            "responseModel": "Attribute",
            "isResponseCollection": true,
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "variantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "createOrUpdateCustomData",
            "operation": "put",
            "operationId": "createOrUpdateProductVariantCustomData",
            "path": "/variants/{variantIdentifier}/custom-data",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "variantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "deleteCustomData",
            "operation": "delete",
            "operationId": "deleteProductVariantCustomData",
            "path": "/variants/{variantIdentifier}/custom-data",
            "parameters": [
              {
                "name": "variantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "getCustomData",
            "operation": "get",
            "operationId": "getProductVariantCustomData",
            "path": "/variants/{variantIdentifier}/custom-data",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "variantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "createOrUpdateCustomDataForKey",
            "operation": "put",
            "operationId": "createOrUpdateProductVariantCustomDataForKey",
            "path": "/variants/{variantIdentifier}/custom-data/{key}",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "variantIdentifier",
                "type": "identifier"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "deleteCustomDataForKey",
            "operation": "delete",
            "operationId": "deleteProductVariantCustomDataForKey",
            "path": "/variants/{variantIdentifier}/custom-data/{key}",
            "parameters": [
              {
                "name": "variantIdentifier",
                "type": "identifier"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getCustomDataForKey",
            "operation": "get",
            "operationId": "getProductVariantCustomDataForKey",
            "path": "/variants/{variantIdentifier}/custom-data/{key}",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "variantIdentifier",
                "type": "identifier"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "createComposite",
            "operation": "post",
            "operationId": "createCompositeProductVariant",
            "path": "/products/composite/{productIdentifier}/variants",
            "requestModel": "ProductVariant",
            "responseModel": "ProductVariant",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "updateComposite",
            "operation": "put",
            "operationId": "updateCompositeProductVariant",
            "path": "/products/composite/{productIdentifier}/variants/{variantIdentifier}",
            "requestModel": "ProductVariant",
            "responseModel": "ProductVariant",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "variantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "deleteComposite",
            "operation": "delete",
            "operationId": "deleteCompositeProductVariant",
            "path": "/products/composite/{productIdentifier}/variants/{variantIdentifier}",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "variantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "unlockAttributeGroup",
            "operation": "post",
            "operationId": "unlockProductVariantAttributeGroup",
            "path": "/products/{productIdentifier}/variants/{variantIdentifier}/attributes/{attributeGroupName}/unlock",
            "parameters": [
              {
                "name": "productIdentifier",
                "type": "identifier"
              },
              {
                "name": "variantIdentifier",
                "type": "identifier"
              },
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          }
        ]
      },
      "RelatedProductVariant": {
        "type": "object",
        "description": "A related product variant can be defined using either the variantReferenceKey or the variantId.\nNote that the variantReferenceKey is only unique when combined with the merchant reference key. Therefore, in multi-merchant scenarios, the variantId should be used instead.\nEither variantReferenceKey or variantId is required.\n",
        "required": [
          "isMainVariant"
        ],
        "properties": {
          "variantReferenceKey": {
            "type": "string",
            "description": "A key that uniquely identifies the variant, which is a part of a composite variant.",
            "example": "M0001-black-M",
            "pattern": "^[a-zA-Z0-9-_\\. ]*$"
          },
          "variantId": {
            "type": "integer",
            "example": 123,
            "description": "The ID of the product variant created by SCAYLE. \nThis can be retrieved from the product variant endpoint.\n"
          },
          "isMainVariant": {
            "type": "boolean",
            "description": "Defines the main variant of a composite product. Each composite product must contain one and only one main variant."
          }
        },
        "maxProperties": 2
      },
      "ProductVariantPrice": {
        "type": "object",
        "required": [
          "price",
          "tax",
          "currencyCode",
          "countryCode"
        ],
        "properties": {
          "key": {
            "type": "string",
            "pattern": "^[12]\\-[1-9][0-9]*$",
            "readOnly": true,
            "description": "Key assigned by SCAYLE.",
            "example": "1-100"
          },
          "price": {
            "type": "integer",
            "description": "Price of the variant.",
            "example": 9999
          },
          "oldPrice": {
            "type": "integer",
            "nullable": true,
            "description": "Old price of the variant.",
            "example": 10999
          },
          "recommendedRetailPrice": {
            "type": "integer",
            "nullable": true,
            "description": "Recommended retail price of the variant.",
            "example": 9999
          },
          "buyingPrice": {
            "type": "integer",
            "nullable": true,
            "description": "Buying price of the variant.",
            "example": 9999
          },
          "tax": {
            "type": "number",
            "format": "double",
            "description": "A valid tax rate.",
            "example": 19
          },
          "countryCode": {
            "type": "string",
            "example": "DE",
            "description": "ISO 3166 alpha 2 country code."
          },
          "currencyCode": {
            "type": "string",
            "example": "EUR",
            "description": "ISO 4217 currency code."
          },
          "groupKey": {
            "type": "string",
            "nullable": true,
            "description": "Key of the group the price is assigned to.",
            "example": "myPriceGroup"
          },
          "promotionKey": {
            "type": "string",
            "nullable": true,
            "example": "myPromotion",
            "pattern": "^[a-zA-Z0-9-_]+$",
            "description": "Key of the promotion the price is assigned to."
          },
          "unitPrice": {
            "$ref": "#/components/schemas/ProductVariantUnitPrice",
            "description": "Describes the price for a specific unit."
          },
          "validFrom": {
            "type": "string",
            "nullable": true,
            "format": "date-time",
            "description": "Controls when the price will be activated. If not present or null, the valid from is specified from now.",
            "example": "2021-09-23T11%3A30%3A58%2B00%3A00"
          },
          "validTo": {
            "type": "string",
            "nullable": true,
            "format": "date-time",
            "example": "2021-09-24T11%3A30%3A58%2B00%3A00",
            "description": "Controls when the price will be deactivated. If not present or null, the price is valid forever."
          },
          "merchantReferenceKey": {
            "description": "A merchant reference key the price belongs to.",
            "type": "string"
          },
          "customData": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomData"
              }
            ],
            "nullable": true
          }
        },
        "x-ayObjects": [
          {
            "property": "unitPrice",
            "className": "ProductVariantUnitPrice"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createProductVariantPrice",
            "path": "/variants/{variantIdentifier}/prices",
            "requestModel": "ProductVariantPrice",
            "responseModel": "ProductVariantPrice",
            "parameters": [
              {
                "name": "variantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getProductVariantPrices",
            "path": "/variants/{variantIdentifier}/prices",
            "isResponseCollection": true,
            "responseModel": "ProductVariantPrice",
            "parameters": [
              {
                "name": "variantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteProductVariantPrice",
            "path": "/variants/{variantIdentifier}/prices/{priceKey}",
            "parameters": [
              {
                "name": "variantIdentifier",
                "type": "identifier"
              },
              {
                "name": "priceKey",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "createOrUpdateCustomData",
            "operation": "put",
            "operationId": "createOrUpdateProductVariantPriceCustomData",
            "path": "/variants/{variantIdentifier}/prices/{priceKey}/custom-data",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "variantIdentifier",
                "type": "identifier"
              },
              {
                "name": "priceKey",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "deleteCustomData",
            "operation": "delete",
            "operationId": "deleteProductVariantPriceCustomData",
            "path": "/variants/{variantIdentifier}/prices/{priceKey}/custom-data",
            "parameters": [
              {
                "name": "variantIdentifier",
                "type": "identifier"
              },
              {
                "name": "priceKey",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getCustomData",
            "operation": "get",
            "operationId": "getProductVariantPriceCustomData",
            "path": "/variants/{variantIdentifier}/prices/{priceKey}/custom-data",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "variantIdentifier",
                "type": "identifier"
              },
              {
                "name": "priceKey",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "createOrUpdateCustomDataForKey",
            "operation": "put",
            "operationId": "createOrUpdateProductVariantPriceCustomDataForKey",
            "path": "/variants/{variantIdentifier}/prices/{priceKey}/custom-data/{key}",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "variantIdentifier",
                "type": "identifier"
              },
              {
                "name": "priceKey",
                "type": "string"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "deleteCustomDataForKey",
            "operation": "delete",
            "operationId": "deleteProductVariantPriceCustomDataForKey",
            "path": "/variants/{variantIdentifier}/prices/{priceKey}/custom-data/{key}",
            "parameters": [
              {
                "name": "variantIdentifier",
                "type": "identifier"
              },
              {
                "name": "priceKey",
                "type": "string"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getCustomDataForKey",
            "operation": "get",
            "operationId": "getProductVariantPriceCustomDataForKey",
            "path": "/variants/{variantIdentifier}/prices/{priceKey}/custom-data/{key}",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "variantIdentifier",
                "type": "identifier"
              },
              {
                "name": "priceKey",
                "type": "string"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "createBulkRequest",
            "operation": "post",
            "operationId": "createProductVariantPriceBulkRequest",
            "path": "/variants/prices/bulk-requests",
            "requestModel": "CreateBulkRequest",
            "responseModel": "BulkRequest"
          }
        ]
      },
      "ProductVariantUnitPrice": {
        "type": "object",
        "description": "Describes the unit price.",
        "required": [
          "unit",
          "amount",
          "price"
        ],
        "properties": {
          "unit": {
            "type": "string",
            "example": "ml",
            "description": "The name of the unit the amount and price references to."
          },
          "amount": {
            "type": "integer",
            "example": 100,
            "description": "The amount referenced by the price."
          },
          "price": {
            "type": "integer",
            "example": 999,
            "description": "The reference price."
          }
        }
      },
      "AttributeTranslation": {
        "type": "object",
        "additionalProperties": {
          "type": "string"
        },
        "minProperties": 1,
        "example": {
          "de_DE": "Zeichenkette in Deutsch",
          "en_GB": "String in english"
        },
        "x-ayOperations": [
          {
            "methodName": "updateOrCreate",
            "operation": "post",
            "operationId": "updateOrCreateAttributeTranslations",
            "path": "/attributes/{attributeGroupName}/translations",
            "requestModel": "AttributeTranslation",
            "parameters": [
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "partialUpdateOrCreate",
            "operation": "patch",
            "operationId": "partialUpdateOrCreateAttributeTranslations",
            "path": "/attributes/{attributeGroupName}/translations",
            "requestModel": "AttributeTranslation",
            "parameters": [
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getAttributeTranslations",
            "path": "/attributes/{attributeGroupName}/translations",
            "isResponseCollection": true,
            "responseModel": "AttributeTranslation",
            "parameters": [
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "updateOrCreateAdvanced",
            "operation": "post",
            "operationId": "updateOrCreateAdvancedAttributeTranslations",
            "path": "/attributes/translations",
            "requestModel": "AttributeTranslation"
          }
        ]
      },
      "ProductVariantStock": {
        "type": "object",
        "required": [
          "quantity",
          "warehouseReferenceKey",
          "changedAt"
        ],
        "properties": {
          "quantity": {
            "type": "integer",
            "example": 27,
            "description": "Current quantity of SKU."
          },
          "warehouseReferenceKey": {
            "type": "string",
            "minLength": 1,
            "example": "DefaultWarehouse",
            "description": "Reference key of warehouse for which the stock update is related to."
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Date time when the stock changed in Iso8601 format.",
            "example": "2020-07-23T11%3A30%3A58%2B00%3A00"
          },
          "sellableWithoutStock": {
            "type": "boolean",
            "description": "Defines if the variant can be sold even when the available stock is 0.",
            "default": false,
            "example": true
          },
          "merchantReferenceKey": {
            "description": "A merchant reference key the stock belongs to.",
            "type": "string"
          },
          "expectedAvailabilityAt": {
            "description": "Date when the stock is expected to be available. If provided, it MUST be in the future.",
            "type": "string",
            "format": "date",
            "example": "2020-07-23",
            "nullable": true
          }
        },
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createProductVariantStock",
            "path": "/variants/{variantIdentifier}/stocks",
            "requestModel": "ProductVariantStock",
            "responseModel": "ProductVariantStock",
            "parameters": [
              {
                "name": "variantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getProductVariantStocks",
            "path": "/variants/{variantIdentifier}/stocks",
            "isResponseCollection": true,
            "responseModel": "ProductVariantStock",
            "parameters": [
              {
                "name": "variantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "createBulkRequest",
            "operation": "post",
            "operationId": "createProductVariantStockBulkRequest",
            "path": "/variants/stocks/bulk-requests",
            "requestModel": "CreateBulkRequest",
            "responseModel": "BulkRequest"
          }
        ]
      },
      "SellableWithoutStock": {
        "type": "object",
        "required": [
          "sellableWithoutStock",
          "warehouseReferenceKey"
        ],
        "properties": {
          "warehouseReferenceKey": {
            "type": "string",
            "minLength": 1,
            "example": "DefaultWarehouse",
            "description": "Reference key of warehouse for which the stock update is related to."
          },
          "sellableWithoutStock": {
            "type": "boolean",
            "description": "Defines if the variant can be sold even when the available stock is 0.",
            "default": false,
            "example": true
          },
          "merchantReferenceKey": {
            "description": "A merchant reference key the stock belongs to.",
            "type": "string"
          }
        },
        "x-ayOperations": [
          {
            "methodName": "setSellableWithoutStock",
            "operation": "put",
            "operationId": "setSellableWithoutStock",
            "path": "/variants/{variantIdentifier}/stocks/sellableWithoutStock",
            "requestModel": "SellableWithoutStock",
            "responseModel": "SellableWithoutStock",
            "parameters": [
              {
                "name": "variantIdentifier",
                "type": "identifier"
              }
            ]
          }
        ]
      },
      "Shop": {
        "type": "object",
        "required": [
          "key",
          "name"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "example": 1,
            "description": "The ID of the shop created by SCAYLE."
          },
          "key": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9]{2}$",
            "example": "ms",
            "description": "A key that uniquely identifies the shop within the tenant's ecosystem. Must be **exactly two characters** long."
          },
          "name": {
            "type": "string",
            "example": "My shop",
            "description": "Full name of the shop."
          },
          "logoUrl": {
            "type": "string",
            "example": "images/logo.png",
            "description": "The URL of the logo assigned to the shop.",
            "nullable": true
          },
          "logoSource": {
            "description": "A source specifying where to download the logo from.",
            "$ref": "#/components/schemas/AssetSource"
          },
          "active": {
            "type": "boolean",
            "description": "Defines if the shop is active.",
            "example": true,
            "readOnly": true
          },
          "deleted": {
            "type": "boolean",
            "description": "Defines if the shop is deleted.",
            "example": false,
            "readOnly": true
          },
          "priceGroupKey": {
            "type": "string",
            "nullable": true,
            "description": "Key of the price group the shop is assigned to.",
            "example": "myPriceGroup"
          },
          "shopCategoryTreeId": {
            "type": "integer",
            "description": "Defines shop category tree id. Can be set only on creation.",
            "example": 1
          },
          "companyId": {
            "type": "integer",
            "description": "The ID of the company the shop is assigned to.",
            "example": 1
          },
          "countries": {
            "type": "array",
            "description": "The countries assigned to the shop. Can be set only on creation.",
            "items": {
              "$ref": "#/components/schemas/ShopCountry"
            }
          },
          "customData": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomData"
              }
            ],
            "nullable": true,
            "description": "Arbitrary fields assigned to Shop"
          },
          "smartSortingKey": {
            "allOf": [
              {
                "type": "string",
                "enum": [
                  "scayle:v1:sales-push",
                  "scayle:v1:new-arrivals",
                  "scayle:v1:balanced-offerings",
                  "scayle:v1:inventory-optimization",
                  "scayle:v1:luxury-promotion",
                  "scayle:v1:stock-coverage",
                  "scayle:v1:topseller",
                  "scayle:v1:revenue-max",
                  "scayle:v1:recently-popular",
                  "scayle:v1:trending"
                ],
                "x-enumName": "SmartSortingKeys",
                "description": "List of smart sorting keys that can be applied to sort the products displayed in a shopCategoryCountry or a Shop. \n  - When a smartSortingKey is not provided for a newly created shopCategoryCountry, it will be inherited from its parent shopCategoryCountry.\n  - When the smartSortingKey is updated for an existing shopCategoryCountry, the update will be propagated to all of its child shopCategoryCountry entries.\n  - When the smartSortingKey is set to null or not provided, it will be removed from all of its child and ancestor shopCategoryCountry entries.\n  - When the parent of a shopCategoryCountry is updated, the smartSortingKey will be propagated from the new parent to the updated shopCategoryCountry and its child shopCategoryCountries.\n",
                "example": "scayle:v1:new-arrivals"
              }
            ],
            "nullable": true
          }
        },
        "x-ayObjects": [
          {
            "property": "logoSource",
            "className": "AssetSource"
          },
          {
            "property": "countries",
            "isCollection": true,
            "className": "ShopCountry"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createShop",
            "path": "/shops",
            "requestModel": "Shop",
            "responseModel": "Shop"
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getShops",
            "path": "/shops",
            "isResponseCollection": true,
            "responseModel": "Shop"
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getShop",
            "path": "/shops/{shopKey}",
            "responseModel": "Shop",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "update",
            "operation": "put",
            "operationId": "updateShop",
            "path": "/shops/{shopKey}",
            "requestModel": "Shop",
            "responseModel": "Shop",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "createOrUpdateCustomData",
            "operation": "put",
            "operationId": "createOrUpdateShopCustomData",
            "path": "/shops/{shopKey}/custom-data",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "deleteCustomData",
            "operation": "delete",
            "operationId": "deleteShopCustomData",
            "path": "/shops/{shopKey}/custom-data",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getCustomData",
            "operation": "get",
            "operationId": "getShopCustomData",
            "path": "/shops/{shopKey}/custom-data",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "createOrUpdateCustomDataForKey",
            "operation": "put",
            "operationId": "createOrUpdateShopCustomDataForKey",
            "path": "/shops/{shopKey}/custom-data/{key}",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "deleteCustomDataForKey",
            "operation": "delete",
            "operationId": "deleteShopCustomDataForKey",
            "path": "/shops/{shopKey}/custom-data/{key}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getCustomDataForKey",
            "operation": "get",
            "operationId": "getShopCustomDataForKey",
            "path": "/shops/{shopKey}/custom-data/{key}",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          }
        ]
      },
      "Assortment": {
        "type": "object",
        "properties": {
          "masterCategories": {
            "description": "Configuration of master category includes/excludes.",
            "$ref": "#/components/schemas/MasterCategoryAssortmentConfiguration"
          },
          "products": {
            "description": "Configuration of product includes/excludes.",
            "$ref": "#/components/schemas/ProductAssortmentConfiguration"
          },
          "attributes": {
            "description": "Configuration of attribute includes/excludes.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttributeAssortmentConfiguration"
            }
          },
          "merchantReferenceKeys": {
            "description": "Configuration of merchant includes/excludes.",
            "$ref": "#/components/schemas/MerchantAssortmentConfiguration"
          }
        },
        "x-ayObjects": [
          {
            "property": "masterCategories",
            "className": "MasterCategoryAssortmentConfiguration"
          },
          {
            "property": "products",
            "className": "ProductAssortmentConfiguration"
          },
          {
            "property": "attributes",
            "isCollection": true,
            "className": "AttributeAssortmentConfiguration"
          },
          {
            "property": "merchantReferenceKeys",
            "className": "MerchantAssortmentConfiguration"
          }
        ]
      },
      "AttributeAssortmentConfiguration": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The attribute name."
          },
          "include": {
            "type": "array",
            "description": "The attribute values to include.",
            "items": {
              "type": "string"
            }
          },
          "exclude": {
            "type": "array",
            "description": "The attribute values to exclude.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "MasterCategoryAssortmentConfiguration": {
        "type": "object",
        "properties": {
          "include": {
            "type": "array",
            "description": "List of master categories to include.",
            "items": {
              "type": "array",
              "minItems": 1,
              "description": "The master category paths to include.",
              "items": {
                "type": "string",
                "example": [
                  "Fashion",
                  "Men",
                  "Shirts"
                ]
              }
            }
          },
          "exclude": {
            "type": "array",
            "description": "List of master categories to exclude.",
            "items": {
              "type": "array",
              "minItems": 1,
              "description": "The master category paths to exclude.",
              "items": {
                "type": "string",
                "example": [
                  "Fashion",
                  "Men",
                  "Shirts"
                ]
              }
            }
          }
        }
      },
      "ProductAssortmentConfiguration": {
        "type": "object",
        "properties": {
          "include": {
            "type": "array",
            "description": "The product IDs to include.",
            "items": {
              "type": "integer"
            }
          },
          "exclude": {
            "type": "array",
            "description": "The product IDs to exclude.",
            "items": {
              "type": "integer"
            }
          }
        }
      },
      "MerchantAssortmentConfiguration": {
        "type": "object",
        "properties": {
          "include": {
            "type": "array",
            "description": "Merchant reference keys to include.",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          },
          "exclude": {
            "type": "array",
            "description": "Merchant reference keys to exclude.",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          }
        }
      },
      "PartialAssortment": {
        "type": "object",
        "properties": {
          "masterCategories": {
            "$ref": "#/components/schemas/PartialMasterCategoryAssortmentConfiguration"
          },
          "products": {
            "$ref": "#/components/schemas/PartialProductAssortmentConfiguration"
          },
          "attributes": {
            "description": "Configuration of attribute includes/excludes.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartialAttributeAssortmentConfiguration"
            }
          },
          "merchantReferenceKeys": {
            "$ref": "#/components/schemas/PartialMerchantAssortmentConfiguration"
          }
        },
        "x-ayObjects": [
          {
            "property": "masterCategories",
            "className": "PartialMasterCategoryAssortmentConfiguration"
          },
          {
            "property": "products",
            "className": "PartialProductAssortmentConfiguration"
          },
          {
            "property": "attributes",
            "isCollection": true,
            "className": "PartialAttributeAssortmentConfiguration"
          },
          {
            "property": "merchantReferenceKeys",
            "className": "PartialMerchantAssortmentConfiguration"
          }
        ]
      },
      "PartialAttributeAssortmentConfiguration": {
        "type": "object",
        "required": [
          "name"
        ],
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "description": "The attribute name."
          },
          "include": {
            "$ref": "#/components/schemas/PartialAttributeAssortmentConfigurationInclude"
          },
          "exclude": {
            "$ref": "#/components/schemas/PartialAttributeAssortmentConfigurationExclude"
          }
        },
        "x-ayObjects": [
          {
            "property": "include",
            "className": "PartialAttributeAssortmentConfigurationInclude"
          },
          {
            "property": "exclude",
            "className": "PartialAttributeAssortmentConfigurationExclude"
          }
        ]
      },
      "PartialAttributeAssortmentConfigurationInclude": {
        "type": "object",
        "properties": {
          "add": {
            "type": "array",
            "description": "The attribute values to be added to the include list.",
            "items": {
              "type": "string"
            },
            "uniqueItems": true,
            "minItems": 1
          },
          "remove": {
            "type": "array",
            "description": "The attribute values to be removed from the include list.",
            "items": {
              "type": "string"
            },
            "uniqueItems": true,
            "minItems": 1
          }
        }
      },
      "PartialAttributeAssortmentConfigurationExclude": {
        "type": "object",
        "properties": {
          "add": {
            "type": "array",
            "description": "The attribute values to be added to the exclude list.",
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "remove": {
            "type": "array",
            "description": "The attribute values to be removed from the exclude list.",
            "items": {
              "type": "string"
            },
            "minItems": 1
          }
        }
      },
      "PartialMasterCategoryAssortmentConfiguration": {
        "type": "object",
        "properties": {
          "include": {
            "$ref": "#/components/schemas/PartialMasterCategoryAssortmentConfigurationInclude"
          },
          "exclude": {
            "$ref": "#/components/schemas/PartialMasterCategoryAssortmentConfigurationExclude"
          }
        },
        "x-ayObjects": [
          {
            "property": "include",
            "className": "PartialMasterCategoryAssortmentConfigurationInclude"
          },
          {
            "property": "exclude",
            "className": "PartialMasterCategoryAssortmentConfigurationExclude"
          }
        ]
      },
      "PartialMasterCategoryAssortmentConfigurationInclude": {
        "type": "object",
        "properties": {
          "add": {
            "type": "array",
            "description": "List of master categories to be added to the include list.",
            "items": {
              "type": "array",
              "description": "The master category paths to be added to the include list.",
              "items": {
                "type": "string",
                "example": [
                  "Fashion",
                  "Men",
                  "Shirts"
                ]
              }
            },
            "minItems": 1
          },
          "remove": {
            "type": "array",
            "description": "List of master categories to be removed from the include list.",
            "items": {
              "type": "array",
              "description": "The master category paths to be removed from the include list.",
              "items": {
                "type": "string",
                "example": [
                  "Fashion",
                  "Men",
                  "Shirts"
                ]
              }
            },
            "minItems": 1
          }
        }
      },
      "PartialMasterCategoryAssortmentConfigurationExclude": {
        "type": "object",
        "properties": {
          "add": {
            "type": "array",
            "description": "List of master categories to be added to the exclude list.",
            "items": {
              "type": "array",
              "description": "The master category paths to be added to the exclude list.",
              "items": {
                "type": "string",
                "example": [
                  "Fashion",
                  "Men",
                  "Shirts"
                ]
              }
            },
            "minItems": 1
          },
          "remove": {
            "type": "array",
            "description": "List of master categories to be removed from the exclude list.",
            "items": {
              "type": "array",
              "description": "The master category paths to be removed from the exclude list.",
              "items": {
                "type": "string",
                "example": [
                  "Fashion",
                  "Men",
                  "Shirts"
                ]
              }
            },
            "minItems": 1
          }
        }
      },
      "PartialProductAssortmentConfiguration": {
        "type": "object",
        "properties": {
          "include": {
            "$ref": "#/components/schemas/PartialProductAssortmentConfigurationInclude"
          },
          "exclude": {
            "$ref": "#/components/schemas/PartialProductAssortmentConfigurationExclude"
          }
        },
        "x-ayObjects": [
          {
            "property": "include",
            "className": "PartialProductAssortmentConfigurationInclude"
          },
          {
            "property": "exclude",
            "className": "PartialProductAssortmentConfigurationExclude"
          }
        ]
      },
      "PartialProductAssortmentConfigurationInclude": {
        "type": "object",
        "properties": {
          "add": {
            "type": "array",
            "description": "The product IDs to be added to the include list.",
            "items": {
              "type": "integer"
            },
            "uniqueItems": true,
            "minItems": 1
          },
          "remove": {
            "type": "array",
            "description": "The product IDs to be removed from the include list.",
            "items": {
              "type": "integer"
            },
            "uniqueItems": true,
            "minItems": 1
          }
        }
      },
      "PartialProductAssortmentConfigurationExclude": {
        "type": "object",
        "properties": {
          "add": {
            "type": "array",
            "description": "The product IDs to be added to the exclude list.",
            "items": {
              "type": "integer"
            },
            "uniqueItems": true,
            "minItems": 1
          },
          "remove": {
            "type": "array",
            "description": "The product IDs to be removed from the exclude list.",
            "items": {
              "type": "integer"
            },
            "uniqueItems": true,
            "minItems": 1
          }
        }
      },
      "PartialMerchantAssortmentConfiguration": {
        "type": "object",
        "properties": {
          "include": {
            "$ref": "#/components/schemas/PartialMerchantAssortmentConfigurationInclude"
          },
          "exclude": {
            "$ref": "#/components/schemas/PartialMerchantAssortmentConfigurationExclude"
          }
        },
        "x-ayObjects": [
          {
            "property": "include",
            "className": "PartialMerchantAssortmentConfigurationInclude"
          },
          {
            "property": "exclude",
            "className": "PartialMerchantAssortmentConfigurationExclude"
          }
        ]
      },
      "PartialMerchantAssortmentConfigurationInclude": {
        "type": "object",
        "properties": {
          "add": {
            "type": "array",
            "description": "Merchant reference keys to be added to the include list.",
            "items": {
              "type": "string"
            },
            "uniqueItems": true,
            "minItems": 1
          },
          "remove": {
            "type": "array",
            "description": "Merchant reference keys to be removed from the include list.",
            "items": {
              "type": "string"
            },
            "uniqueItems": true,
            "minItems": 1
          }
        }
      },
      "PartialMerchantAssortmentConfigurationExclude": {
        "type": "object",
        "properties": {
          "add": {
            "type": "array",
            "description": "Merchant reference keys to be added to the exclude list.",
            "items": {
              "type": "string"
            },
            "uniqueItems": true,
            "minItems": 1
          },
          "remove": {
            "type": "array",
            "description": "Merchant reference keys to be removed from the exclude list.",
            "items": {
              "type": "string"
            },
            "uniqueItems": true,
            "minItems": 1
          }
        }
      },
      "AttributeGroup": {
        "type": "object",
        "required": [
          "name",
          "frontendName",
          "type",
          "isShared",
          "level"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "description": "The ID of the attribute group created by SCAYLE.",
            "example": 1
          },
          "name": {
            "type": "string",
            "description": "A name that uniquely identifies an attribute group. \nPlease ensure the input is URL-encoded, avoid using special characters like `%`, `&`, `#` directly.\n",
            "example": "color"
          },
          "frontendName": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "minProperties": 1,
            "description": "The localized attribute group name. It must include at least the default language that is configured in SCAYLE.",
            "example": {
              "de_DE": "Farbe",
              "en_GB": "Color"
            }
          },
          "type": {
            "type": "string",
            "enum": [
              "simple",
              "simpleList",
              "localizedString",
              "localizedStringList",
              "advanced",
              "advancedList"
            ],
            "x-enumName": "AttributeGroupType",
            "description": "The attribute type of the attribute group.",
            "example": "simple"
          },
          "cluster": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "nullable": true,
            "description": "The attribute group type.",
            "example": "material"
          },
          "isShared": {
            "type": "boolean",
            "description": "Specifies whether an attribute value is shared among multiple entities or if each entity has its own unique value. \nIt's important to note that attributes of advanced types cannot be shared, so 'isShared' must always be set to false in such cases.\n",
            "example": true
          },
          "simpleValueType": {
            "type": "string",
            "enum": [
              "text",
              "longtext",
              "integer",
              "date",
              "attribute",
              "attributeGroup"
            ],
            "x-enumName": "NonSharedSimpleAttributeGroupValueType",
            "description": "Value type. It can only be set for non-shared simple attribute groups and defaults to 'text' if not specified.",
            "example": "text"
          },
          "simpleValueTypeConfig": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "attributeGroupName"
                ],
                "properties": {
                  "attributeGroupName": {
                    "type": "string",
                    "description": "The name of the attribute group whose attributes can be used as values.",
                    "example": "color"
                  }
                }
              },
              {
                "type": "object",
                "required": [
                  "attributeGroupName",
                  "attributeName"
                ],
                "properties": {
                  "attributeGroupName": {
                    "type": "string",
                    "description": "The name of the attribute group whose attribute will be used as value.",
                    "example": "color"
                  },
                  "attributeName": {
                    "type": "string",
                    "description": "The name of the attribute that will be used as value.",
                    "example": "red"
                  }
                }
              }
            ]
          },
          "level": {
            "type": "string",
            "enum": [
              "master",
              "product",
              "variant",
              "image",
              "brand",
              "category"
            ],
            "x-enumName": "AttributeGroupLevel",
            "description": "Defines the attribute group level, specifying the type of entity it is applicable to.",
            "example": "product"
          },
          "structure": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true,
            "description": "A structure, which describes advanced attribute values.\nMandatory for the advanced type.\n",
            "example": {
              "group": {
                "type": "attributeGroup",
                "attributeGroupName": "Obermaterial"
              },
              "components": {
                "type": "array",
                "items": {
                  "fraction": {
                    "type": "integer"
                  },
                  "unit": {
                    "type": "attribute",
                    "attributeGroupName": "unit",
                    "attributeName": "%"
                  },
                  "material": {
                    "type": "attributeGroup",
                    "attributeGroupName": "material"
                  }
                }
              }
            }
          },
          "shopCountries": {
            "type": "array",
            "nullable": true,
            "description": "A list of shop countries the attribute group is valid for.\nThe attribute group is valid for all shop countries if the field is omitted.\n",
            "items": {
              "$ref": "#/components/schemas/AttributeGroupShopCountry",
              "example": [
                {
                  "shopKey": "ms",
                  "countryCode": "de"
                }
              ],
              "minItems": 1
            }
          },
          "isOverridablePerShop": {
            "type": "boolean",
            "default": false,
            "description": "Defines if shop-specific attribute values are allowed for the given attribute group.\n",
            "example": true
          },
          "isDifferentiating": {
            "type": "boolean",
            "default": false,
            "description": "If an attribute group is differentiating, then every entity must have a unique attribute value.\nThis configuration is not applicable to the advanced type, neither to attribute groups marked as isShared=false.\n",
            "example": true
          },
          "group": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "nullable": true,
            "description": "It is used for grouping the display of attribute groups in the Panel.\n",
            "example": "someName"
          }
        },
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createAttributeGroup",
            "path": "/attribute-groups",
            "requestModel": "AttributeGroup",
            "responseModel": "AttributeGroup"
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getAttributeGroup",
            "path": "/attribute-groups/{attributeGroupName}",
            "responseModel": "AttributeGroup",
            "parameters": [
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getAttributeGroups",
            "path": "/attribute-groups",
            "isResponseCollection": true,
            "responseModel": "AttributeGroup"
          },
          {
            "methodName": "update",
            "operation": "put",
            "operationId": "updateAttributeGroup",
            "path": "/attribute-groups/{attributeGroupName}",
            "requestModel": "AttributeGroup",
            "responseModel": "AttributeGroup",
            "parameters": [
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteAttributeGroup",
            "path": "/attribute-groups/{attributeGroupName}",
            "parameters": [
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "updateFrontendName",
            "operation": "put",
            "operationId": "updateFrontendName",
            "path": "/attribute-groups/{attributeGroupName}/frontend-name",
            "requestModel": "AttributeGroupFrontendName",
            "parameters": [
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getAttributes",
            "operation": "get",
            "operationId": "getAttributes",
            "path": "/attribute-groups/{attributeGroupName}/attributes",
            "isResponseCollection": true,
            "responseModel": "AnyType",
            "parameters": [
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "createAttribute",
            "operation": "post",
            "operationId": "createAttributeGroupAttribute",
            "path": "/attribute-groups/{attributeGroupName}/attributes",
            "requestModel": "AttributeGroupAttribute",
            "responseModel": "AttributeGroupAttribute",
            "parameters": [
              {
                "name": "attributeGroupName",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "updateAttribute",
            "operation": "put",
            "operationId": "updateAttributeGroupAttribute",
            "path": "/attribute-groups/{attributeGroupName}/attributes/{attributeValue}",
            "requestModel": "AttributeGroupAttribute",
            "responseModel": "AttributeGroupAttribute",
            "parameters": [
              {
                "name": "attributeGroupName",
                "type": "string"
              },
              {
                "name": "attributeValue",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "deleteAttribute",
            "operation": "delete",
            "operationId": "deleteAttributeGroupAttribute",
            "path": "/attribute-groups/{attributeGroupName}/attributes/{attributeValue}",
            "parameters": [
              {
                "name": "attributeGroupName",
                "type": "string"
              },
              {
                "name": "attributeValue",
                "type": "string"
              }
            ]
          }
        ]
      },
      "AttributeGroupFrontendName": {
        "type": "object",
        "additionalProperties": {
          "type": "string"
        },
        "minProperties": 1,
        "description": "The localized attribute group name. It must include at least the default language that is configured in SCAYLE.",
        "example": {
          "de_DE": "Farbe",
          "en_GB": "Color"
        }
      },
      "AttributeGroupShopCountry": {
        "type": "object",
        "required": [
          "shopKey",
          "countryCode"
        ],
        "properties": {
          "shopKey": {
            "type": "string",
            "example": "ms",
            "description": "A key that uniquely identifies the shop within the tenant's ecosystem."
          },
          "countryCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "example": "DE",
            "description": "ISO 3166 alpha 2 country code."
          }
        }
      },
      "Attribute": {
        "type": "object",
        "required": [
          "name",
          "type",
          "value"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The attribute name."
          },
          "type": {
            "type": "string",
            "enum": [
              "simple",
              "simpleList",
              "localizedString",
              "localizedStringList",
              "advanced",
              "advancedList"
            ],
            "x-enumName": "AttributeType",
            "description": "The attribute type."
          },
          "value": {
            "description": "The attribute value where the datatype is defined by the type property."
          },
          "isLocked": {
            "type": "boolean",
            "description": "Specifies if the attribute group should be locked."
          },
          "shopCountrySpecific": {
            "description": "Used to override the attribute value for a specific shop country. Only supported by products, product masters and variants.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttributeShopCountrySpecific"
            }
          }
        }
      },
      "AttributeGroupAttribute": {
        "type": "object",
        "required": [
          "value"
        ],
        "properties": {
          "value": {
            "anyOf": [
              {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "example": {
                  "de_DE": "value for de_DE locale",
                  "en_EN": "value for en_EN locale"
                }
              },
              {
                "type": "string",
                "example": "test"
              }
            ]
          }
        }
      },
      "AttributeShopCountrySpecific": {
        "type": "object",
        "required": [
          "shopKey",
          "countryCode",
          "value"
        ],
        "properties": {
          "shopKey": {
            "type": "string",
            "example": "ms",
            "description": "A key that uniquely identifies the shop within the tenant's ecosystem."
          },
          "countryCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "example": "DE",
            "description": "ISO 3166 alpha 2 country code."
          },
          "value": {
            "description": "The attribute value where the datatype is defined by the type property."
          },
          "isLocked": {
            "type": "boolean",
            "description": "Specifies if the attribute group should be locked for the shopCountry."
          }
        }
      },
      "Campaign": {
        "type": "object",
        "required": [
          "name",
          "countryCodes",
          "startAt",
          "endAt"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "example": 1,
            "description": "The ID of the campaign created by SCAYLE."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "example": "My Campaign",
            "description": "Name of the campaign."
          },
          "description": {
            "type": "string",
            "example": "My first campaign.",
            "description": "Optional description of the campaign.",
            "nullable": true
          },
          "countryCodes": {
            "type": "array",
            "example": [
              "DE",
              "GB"
            ],
            "description": "List of country codes the campaign is valid for.\nIf the same countryCode exists for multiple shop countries, you can target a specific shop country by passing its shopCountryId instead of the country code.\nExample: [\"139\"] instead of [\"DE\"].\n",
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "reduction": {
            "type": "number",
            "format": "float",
            "minimum": 0,
            "maximum": 99,
            "example": 10.45,
            "description": "The reduction percentage applied to all variants, which do not have a specific reduction set."
          },
          "startAt": {
            "type": "string",
            "format": "date-time",
            "description": "Start time of campaign in Iso8601 format.",
            "example": "2021-01-23T11%3A30%3A58%2B00%3A00"
          },
          "endAt": {
            "type": "string",
            "format": "date-time",
            "description": "End time of campaign in Iso8601 format.",
            "example": "2021-09-23T11%3A30%3A58%2B00%3A00"
          },
          "campaignKey": {
            "type": "string",
            "pattern": "([A-Za-z0-9\\-\\_]+)",
            "maxLength": 36,
            "description": "A specific key to identify the campaign. If not provided, it will be generated by SCAYLE.",
            "example": "05f962c8-857b-462a-bea2-54e2bfecf729"
          },
          "customData": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomData"
              }
            ],
            "nullable": true
          },
          "headline": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true,
            "description": "The localized headline. Recommended max length is up to 30 characters.",
            "example": {
              "de_DE": "Meine Kampagnenüberschrift",
              "en_US": "My campaign headline"
            }
          },
          "subline": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true,
            "description": "The localized sub line. Recommended max length is up to 75 characters.",
            "example": {
              "de_DE": "Meine Kampagnenunterzeile",
              "en_US": "My campaign subline"
            }
          },
          "link": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true,
            "description": "The localized relative link.",
            "example": {
              "de_DE": "/mein-kampagne",
              "en_US": "/my-campaign"
            }
          },
          "condition": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true,
            "description": "The localized condition. Recommended max length is up to 250 characters.",
            "example": {
              "de_DE": "Gilt für Winterprodukte",
              "en_US": "Applies to winter products"
            }
          },
          "hideCountdown": {
            "type": "boolean",
            "default": false,
            "description": "Defines if the count down should be hidden or not. Displayed by default.",
            "example": false
          },
          "product": {
            "$ref": "#/components/schemas/CampaignProduct",
            "description": "The campaign information related to product, for example badge label."
          },
          "color": {
            "$ref": "#/components/schemas/CampaignColor",
            "description": "The color of background and text in hex code with hash"
          }
        },
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createCampaign",
            "path": "/shops/{shopKey}/campaigns",
            "requestModel": "Campaign",
            "responseModel": "Campaign",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getCampaigns",
            "path": "/shops/{shopKey}/campaigns",
            "isResponseCollection": true,
            "responseModel": "Campaign",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getCampaign",
            "path": "/shops/{shopKey}/campaigns/{campaignId}",
            "responseModel": "Campaign",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "campaignId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "update",
            "operation": "put",
            "operationId": "updateCampaign",
            "path": "/shops/{shopKey}/campaigns/{campaignId}",
            "requestModel": "Campaign",
            "responseModel": "Campaign",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "campaignId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteCampaign",
            "path": "/shops/{shopKey}/campaigns/{campaignId}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "campaignId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "updateOrCreateVariantReductions",
            "operation": "post",
            "operationId": "updateOrCreateVariantReductions",
            "path": "/shops/{shopKey}/campaigns/{campaignId}/reductions/variants",
            "requestModel": "ProductVariantCampaignReduction",
            "isRequestCollection": true,
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "campaignId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "updateOrCreateProductReductions",
            "operation": "post",
            "operationId": "updateOrCreateProductReductions",
            "path": "/shops/{shopKey}/campaigns/{campaignId}/reductions/products",
            "requestModel": "ProductCampaignReduction",
            "isRequestCollection": true,
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "campaignId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "allReductions",
            "operation": "get",
            "operationId": "getCampaignReductions",
            "path": "/shops/{shopKey}/campaigns/{campaignId}/reductions/variants",
            "responseModel": "ProductVariantCampaignReduction",
            "isResponseCollection": true,
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "campaignId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "deleteReductions",
            "operation": "delete",
            "operationId": "deleteCampaignReductions",
            "path": "/shops/{shopKey}/campaigns/{campaignId}/reductions",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "campaignId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "createOrUpdateCustomData",
            "operation": "put",
            "operationId": "createOrUpdateCampaignCustomData",
            "path": "/campaigns/{campaignId}/custom-data",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "campaignId",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "deleteCustomData",
            "operation": "delete",
            "operationId": "deleteCampaignCustomData",
            "path": "/campaigns/{campaignId}/custom-data",
            "parameters": [
              {
                "name": "campaignId",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "getCustomData",
            "operation": "get",
            "operationId": "getCampaignCustomData",
            "path": "/campaigns/{campaignId}/custom-data",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "campaignId",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "createOrUpdateCustomDataForKey",
            "operation": "put",
            "operationId": "createOrUpdateCampaignCustomDataForKey",
            "path": "/campaigns/{campaignId}/custom-data/{key}",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "campaignId",
                "type": "identifier"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "deleteCustomDataForKey",
            "operation": "delete",
            "operationId": "deleteCampaignCustomDataForKey",
            "path": "/campaigns/{campaignId}/custom-data/{key}",
            "parameters": [
              {
                "name": "campaignId",
                "type": "identifier"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getCustomDataForKey",
            "operation": "get",
            "operationId": "getCampaignCustomDataForKey",
            "path": "/campaigns/{campaignId}/custom-data/{key}",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "campaignId",
                "type": "identifier"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          }
        ]
      },
      "CampaignColor": {
        "type": "object",
        "nullable": true,
        "additionalProperties": false,
        "minProperties": 1,
        "properties": {
          "background": {
            "type": "string",
            "minLength": 7,
            "maxLength": 7,
            "nullable": true,
            "description": "Background color in hex code with hash",
            "example": "#f0f0f0"
          },
          "text": {
            "type": "string",
            "minLength": 7,
            "maxLength": 7,
            "nullable": true,
            "description": "Text color in hex code with hash",
            "example": "#333333"
          }
        }
      },
      "CampaignProduct": {
        "type": "object",
        "nullable": true,
        "minProperties": 1,
        "properties": {
          "badgeLabel": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true,
            "description": "The localized product badge label. Recommended max length is up to 30 characters.",
            "example": {
              "de_DE": "Angebot",
              "en_US": "Offer"
            }
          }
        }
      },
      "ProductVariantCampaignReduction": {
        "type": "object",
        "required": [
          "reduction"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "example": 1,
            "readOnly": true,
            "description": "SCAYLE's internal reduction identifier."
          },
          "productVariantId": {
            "type": "integer",
            "example": 1,
            "description": "SCAYLE's internal product variant identifier."
          },
          "productVariantReferenceKey": {
            "type": "string",
            "nullable": true,
            "minLength": 1,
            "example": "M0001-red-s",
            "description": "Tenant provided product variant identifier."
          },
          "reduction": {
            "type": "integer",
            "minimum": 0,
            "maximum": 99,
            "example": 10,
            "description": "The reduction percentage applied to this specific variant."
          }
        }
      },
      "ProductCampaignReduction": {
        "type": "object",
        "required": [
          "reduction"
        ],
        "properties": {
          "productId": {
            "type": "integer",
            "example": 1,
            "description": "SCAYLE's internal product identifier."
          },
          "productReferenceKey": {
            "type": "string",
            "minLength": 1,
            "example": "M0001-red",
            "description": "Tenant provided product identifier."
          },
          "reduction": {
            "type": "integer",
            "minimum": 0,
            "maximum": 99,
            "example": 10,
            "description": "The reduction percentage applied to all variants belonging to this product."
          }
        }
      },
      "MasterCategory": {
        "type": "object",
        "required": [
          "path"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "example": 2,
            "description": "The ID of the master category created by SCAYLE."
          },
          "parentId": {
            "type": "integer",
            "readOnly": true,
            "nullable": true,
            "example": 1,
            "description": "The ID of the parent master category if exists."
          },
          "path": {
            "type": "array",
            "example": [
              "Women",
              "Fashion",
              "Shirts"
            ],
            "description": "The complete category path.",
            "items": {
              "type": "string",
              "pattern": "^[^\\|]+$"
            },
            "minItems": 1
          },
          "attributes": {
            "type": "array",
            "description": "List of attributes which are related to this category.",
            "items": {
              "$ref": "#/components/schemas/MasterCategoryAttribute"
            }
          }
        },
        "x-ayObjects": [
          {
            "property": "attributes",
            "isCollection": true,
            "className": "MasterCategoryAttribute"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getMasterCategories",
            "path": "/master-categories",
            "isResponseCollection": true,
            "responseModel": "MasterCategory"
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getMasterCategory",
            "path": "/master-categories/{masterCategoryId}",
            "responseModel": "MasterCategory",
            "parameters": [
              {
                "name": "masterCategoryId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createMasterCategory",
            "path": "/master-categories",
            "requestModel": "MasterCategory",
            "responseModel": "MasterCategory"
          },
          {
            "methodName": "update",
            "operation": "put",
            "operationId": "updateMasterCategory",
            "path": "/master-categories/{masterCategoryId}",
            "requestModel": "MasterCategory",
            "responseModel": "MasterCategory",
            "parameters": [
              {
                "name": "masterCategoryId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteMasterCategory",
            "path": "/master-categories/{masterCategoryId}",
            "parameters": [
              {
                "name": "masterCategoryId",
                "type": "integer"
              }
            ]
          }
        ]
      },
      "MasterCategoryAttribute": {
        "type": "object",
        "required": [
          "name",
          "isMandatory",
          "type"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The attribute name.",
            "example": "color"
          },
          "type": {
            "$ref": "#/components/schemas/Attribute/properties/type"
          },
          "isMandatory": {
            "type": "boolean",
            "description": "Whether the attribute is mandatory or not. Used in the state *calculation*."
          },
          "defaultValue": {
            "description": "The default value of the attribute if it is mandatory. Used in all attribute related processes if that specific attribute is not provided."
          }
        }
      },
      "ShopCategory": {
        "type": "object",
        "minProperties": 1,
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "example": 3,
            "description": "The ID of the shop category."
          },
          "parentId": {
            "type": "integer",
            "nullable": true,
            "example": 1,
            "description": "The ID of the parent shop category."
          },
          "leftSiblingId": {
            "type": "integer",
            "nullable": true,
            "example": 2,
            "description": "The ID of the left sibling shop category. It defines the shop category position in the category tree."
          },
          "name": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "minProperties": 1,
            "description": "The localized category name.",
            "example": {
              "de_DE": "Meine Shop-Kategorie",
              "en_GB": "My Shop Category"
            }
          },
          "productSets": {
            "description": "Product sets define which products to include in the shop category.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShopCategoryProductSet"
            }
          },
          "supportedFilterGroups": {
            "type": "array",
            "description": "List of supported filter groups.",
            "items": {
              "type": "string"
            }
          },
          "properties": {
            "type": "array",
            "minItems": 1,
            "maxItems": 1000,
            "description": "The properties assigned to the shop category. Can be specified on creation only.",
            "items": {
              "$ref": "#/components/schemas/ShopCategoryProperty"
            }
          },
          "isActive": {
            "type": "boolean",
            "example": true,
            "description": "Declares whether the shop category is active or not. Can be specified on creation only."
          },
          "isVisible": {
            "type": "boolean",
            "example": true,
            "description": "Declares whether the shop category is visible in the shop or not. Can be specified on creation only."
          },
          "isExcludedFromSearch": {
            "type": "boolean",
            "example": true,
            "nullable": true,
            "description": "Declares whether the shop category should be excluded from search."
          },
          "customData": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomData"
              }
            ],
            "nullable": true,
            "description": "Arbitrary fields assigned to shop categories"
          },
          "countries": {
            "type": "array",
            "readOnly": true,
            "description": "List of country specific configurations.",
            "items": {
              "$ref": "#/components/schemas/ShopCategoryCountry"
            }
          }
        },
        "x-ayObjects": [
          {
            "property": "productSets",
            "isCollection": true,
            "className": "ShopCategoryProductSet"
          },
          {
            "property": "properties",
            "isCollection": true,
            "className": "ShopCategoryProperty"
          },
          {
            "property": "countries",
            "isCollection": true,
            "className": "ShopCategoryCountry"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createShopCategory",
            "path": "/shops/{shopKey}/categories",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              }
            ],
            "requestModel": "ShopCategory",
            "responseModel": "ShopCategory"
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getShopCategories",
            "path": "/shops/{shopKey}/categories",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              }
            ],
            "isResponseCollection": true,
            "responseModel": "ShopCategory"
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getShopCategory",
            "path": "/shops/{shopKey}/categories/{shopCategoryId}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              }
            ],
            "responseModel": "ShopCategory"
          },
          {
            "methodName": "update",
            "operation": "patch",
            "operationId": "updateShopCategory",
            "path": "/shops/{shopKey}/categories/{shopCategoryId}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              }
            ],
            "requestModel": "ShopCategory",
            "responseModel": "ShopCategory"
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteShopCategory",
            "path": "/shops/{shopKey}/categories/{shopCategoryId}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "updateOrCreateProperty",
            "operation": "post",
            "operationId": "updateOrCreateShopCategoryProperty",
            "path": "/shops/{shopKey}/countries/{countryCode}/categories/{shopCategoryId}/properties",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              }
            ],
            "requestModel": "ShopCategoryProperty",
            "responseModel": "ShopCategoryProperty"
          },
          {
            "methodName": "deleteProperty",
            "operation": "delete",
            "operationId": "deleteShopCategoryProperty",
            "path": "/shops/{shopKey}/countries/{countryCode}/categories/{shopCategoryId}/properties/{shopCategoryPropertyKey}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              },
              {
                "name": "shopCategoryPropertyKey",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getProperty",
            "operation": "get",
            "operationId": "getShopCategoryProperty",
            "path": "/shops/{shopKey}/countries/{countryCode}/categories/{shopCategoryId}/properties/{shopCategoryPropertyKey}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              },
              {
                "name": "shopCategoryPropertyKey",
                "type": "string"
              }
            ],
            "responseModel": "ShopCategoryProperty"
          },
          {
            "methodName": "allProperties",
            "operation": "get",
            "operationId": "getShopCategoryProperties",
            "path": "/shops/{shopKey}/countries/{countryCode}/categories/{shopCategoryId}/properties",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              }
            ],
            "responseModel": "ShopCategoryProperty",
            "isResponseCollection": true
          },
          {
            "methodName": "createOrUpdateCustomData",
            "operation": "put",
            "operationId": "createOrUpdateShopCategoriesCustomData",
            "path": "/shops/{shopKey}/categories/{shopCategoryId}/custom-data",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "deleteCustomData",
            "operation": "delete",
            "operationId": "deleteShopCategoriesCustomData",
            "path": "/shops/{shopKey}/categories/{shopCategoryId}/custom-data",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "getCustomData",
            "operation": "get",
            "operationId": "getShopCategoriesCustomData",
            "path": "/shops/{shopKey}/categories/{shopCategoryId}/custom-data",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "createOrUpdateCustomDataForKey",
            "operation": "put",
            "operationId": "createOrUpdateShopCategoriesCustomDataForKey",
            "path": "/shops/{shopKey}/categories/{shopCategoryId}/custom-data/{key}",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "deleteCustomDataForKey",
            "operation": "delete",
            "operationId": "deleteShopCategoriesCustomDataForKey",
            "path": "/shops/{shopKey}/categories/{shopCategoryId}/custom-data/{key}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getCustomDataForKey",
            "operation": "get",
            "operationId": "getShopCategoriesCustomDataForKey",
            "path": "/shops/{shopKey}/categories/{shopCategoryId}/custom-data/{key}",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "createOrUpdateCustomDataForCountry",
            "operation": "put",
            "operationId": "createOrUpdateShopCategoriesCountryCustomData",
            "path": "/shops/{shopKey}/categories/{shopCategoryId}/countries/{countryCode}/custom-data",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "deleteCustomDataForCountry",
            "operation": "delete",
            "operationId": "deleteShopCategoriesCountryCustomData",
            "path": "/shops/{shopKey}/categories/{shopCategoryId}/countries/{countryCode}/custom-data",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getCustomDataForCountry",
            "operation": "get",
            "operationId": "getShopCategoriesCountryCustomData",
            "path": "/shops/{shopKey}/categories/{shopCategoryId}/countries/{countryCode}/custom-data",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "createOrUpdateCustomDataKeyForCountry",
            "operation": "put",
            "operationId": "createOrUpdateShopCategoriesCountryCustomDataForKey",
            "path": "/shops/{shopKey}/categories/{shopCategoryId}/countries/{countryCode}/custom-data/{key}",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "deleteCustomDataKeyForCountry",
            "operation": "delete",
            "operationId": "deleteShopCategoriesCountryCustomDataForKey",
            "path": "/shops/{shopKey}/categories/{shopCategoryId}/countries/{countryCode}/custom-data/{key}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getCustomDataKeyForCountry",
            "operation": "get",
            "operationId": "getShopCategoriesCountryCustomDataForKey",
            "path": "/shops/{shopKey}/categories/{shopCategoryId}/countries/{countryCode}/custom-data/{key}",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getCountry",
            "operation": "get",
            "operationId": "getShopCategoryCountry",
            "path": "/shops/{shopKey}/countries/{countryCode}/categories/{shopCategoryId}",
            "responseModel": "ShopCategoryCountry",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "updateOrCreateCountry",
            "operation": "post",
            "operationId": "updateOrCreateShopCategoryCountry",
            "path": "/shops/{shopKey}/countries/{countryCode}/categories/{shopCategoryId}",
            "requestModel": "ShopCategoryCountry",
            "responseModel": "ShopCategoryCountry",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "shopCategoryId",
                "type": "integer"
              }
            ]
          }
        ]
      },
      "ShopCategoryProperty": {
        "type": "object",
        "required": [
          "key",
          "value"
        ],
        "properties": {
          "key": {
            "type": "string",
            "example": "myKey",
            "description": "The key of the shop category property."
          },
          "value": {
            "type": "string",
            "example": "myValue",
            "description": "The value of the shop category property."
          }
        }
      },
      "ShopCategoryPropertyKey": {
        "type": "object",
        "required": [
          "key"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "description": "The ID of the shop category property key.",
            "example": 1
          },
          "key": {
            "type": "string",
            "description": "The unique identifier of the shop category property key.",
            "example": "color"
          },
          "isInheritable": {
            "type": "boolean",
            "description": "If true, then properties of the same key are inherited by children.",
            "example": true
          }
        },
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createShopCategoryPropertyKey",
            "path": "/shop-category-property-keys",
            "requestModel": "ShopCategoryPropertyKey",
            "responseModel": "ShopCategoryPropertyKey"
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getShopCategoryPropertyKey",
            "path": "/shop-category-property-keys/{shopCategoryPropertyKey}",
            "responseModel": "ShopCategoryPropertyKey",
            "parameters": [
              {
                "name": "shopCategoryPropertyKey",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getShopCategoryPropertyKeys",
            "path": "/shop-category-property-keys",
            "isResponseCollection": true,
            "responseModel": "ShopCategoryPropertyKey"
          },
          {
            "methodName": "update",
            "operation": "put",
            "operationId": "updateShopCategoryPropertyKey",
            "path": "/shop-category-property-keys/{shopCategoryPropertyKey}",
            "requestModel": "ShopCategoryPropertyKey",
            "responseModel": "ShopCategoryPropertyKey",
            "parameters": [
              {
                "name": "shopCategoryPropertyKey",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteShopCategoryPropertyKey",
            "path": "/shop-category-property-keys/{shopCategoryPropertyKey}",
            "parameters": [
              {
                "name": "shopCategoryPropertyKey",
                "type": "string"
              }
            ]
          }
        ]
      },
      "ShopCategoryProductSet": {
        "type": "object",
        "minProperties": 1,
        "maxProperties": 4,
        "properties": {
          "productSetId": {
            "type": "integer",
            "readOnly": true,
            "example": 3,
            "description": "The ID of the product set."
          },
          "referencedProductSetId": {
            "description": "The ID of the referenced product set.",
            "type": "integer"
          },
          "includeProductIds": {
            "type": "array",
            "description": "Product IDs, which are explicitly included in the shop category (limited to a maximum of 10,000 Product IDS).",
            "maxItems": 10000,
            "items": {
              "type": "integer"
            }
          },
          "excludeProductIds": {
            "type": "array",
            "description": "Product IDs, which are explicitly excluded from the shop category (limited to a maximum of 10,000 Product IDS).",
            "maxItems": 10000,
            "items": {
              "type": "integer"
            }
          },
          "isNew": {
            "type": "boolean",
            "description": "Declares whether the product set should only contain new products.",
            "enum": [
              true
            ]
          },
          "attributes": {
            "type": "array",
            "description": "Defines which products to include or exclude by attributes.",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/ShopCategoryAttributeCriterion"
            }
          }
        },
        "x-ayObjects": [
          {
            "property": "attributes",
            "isCollection": true,
            "className": "ShopCategoryAttributeCriterion"
          }
        ]
      },
      "ShopCategoryProductSetUnlinkInstruction": {
        "type": "object",
        "required": [
          "productSetIds",
          "copyConditions"
        ],
        "properties": {
          "productSetIds": {
            "type": "array",
            "description": "IDs of the referencing product sets for which the reference to the stated product set should be unlinked.",
            "items": {
              "type": "integer"
            }
          },
          "copyConditions": {
            "type": "boolean",
            "example": true,
            "description": "Declares whether the conditions of the stated product set should be copied over to the referencing product sets."
          }
        },
        "x-ayOperations": [
          {
            "methodName": "unlink",
            "operation": "put",
            "operationId": "unlinkReferencingProductSets",
            "path": "/shops/{shopKey}/product-sets/{productSetId}/unlink",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "productSetId",
                "type": "integer"
              }
            ],
            "requestModel": "ShopCategoryProductSetUnlinkInstruction"
          }
        ]
      },
      "ShopCategoryAttributeCriterion": {
        "type": "object",
        "required": [
          "name"
        ],
        "minProperties": 2,
        "maxProperties": 2,
        "properties": {
          "name": {
            "type": "string",
            "description": "The attribute name."
          },
          "include": {
            "type": "array",
            "minItems": 1,
            "description": "The attribute values to include.",
            "items": {
              "type": "string"
            }
          },
          "exclude": {
            "type": "array",
            "minItems": 1,
            "description": "The attribute values to exclude.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ShopCategoryCountry": {
        "type": "object",
        "minProperties": 1,
        "properties": {
          "countryCode": {
            "type": "string",
            "readOnly": true,
            "minLength": 2,
            "maxLength": 2,
            "example": "DE",
            "description": "ISO 3166 alpha 2 country code."
          },
          "shopCountryId": {
            "type": "integer",
            "readOnly": true,
            "example": 1,
            "description": "Id of Shop Country."
          },
          "path": {
            "type": "string",
            "maxLength": 255,
            "readOnly": true,
            "example": "/my-shop-category",
            "description": "String representation of the URL path to the category."
          },
          "isActive": {
            "type": "boolean",
            "example": true,
            "description": "Declares whether the shop category is active or not."
          },
          "isVisible": {
            "type": "boolean",
            "example": true,
            "description": "Declares whether the shop category is visible in the shop or not."
          },
          "isExcludedFromSearch": {
            "type": "boolean",
            "example": true,
            "nullable": true,
            "description": "Declares whether the shop category country should be excluded from search."
          },
          "properties": {
            "type": "array",
            "maxItems": 1000,
            "description": "The properties assigned to the shop category.",
            "items": {
              "$ref": "#/components/schemas/ShopCategoryProperty"
            }
          },
          "customData": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomData"
              }
            ],
            "nullable": true
          },
          "smartSortingKey": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Shop/properties/smartSortingKey/allOf/0"
              }
            ],
            "nullable": true
          },
          "customSortingKey": {
            "type": "string",
            "nullable": true,
            "description": "A custom sorting key that will be applied to sort the products displayed in a shopCategoryCountry. \n- When a customSortingKey is not provided for a newly created shopCategoryCountry, it will be inherited from its parent shopCategoryCountry.\n- When the customSortingKey is updated for an existing shopCategoryCountry, the update will be propagated to all of its child shopCategoryCountry entries.\n- When the customSortingKey is set to null or not provided, it will be removed from all of its child and ancestor shopCategoryCountry entries.\n- When the parent of a shopCategoryCountry is updated, the customSortingKey will be propagated from the new parent to the updated shopCategoryCountry and its child shopCategoryCountries.\n"
          },
          "seo": {
            "allOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "nullable": true,
                "description": "SEO-related configuration for a shop category in a given country. Stored as a whole-object\nreplace: when `seo` is present on the request, the stored value is fully overwritten and any\nomitted sub-fields are cleared. Omit `seo` from the payload to keep the stored value unchanged.\n\nOn responses, only sub-fields that have a non-null value are returned. If no SEO data is set,\n`seo` is returned as `null`.\n",
                "properties": {
                  "metaTitle": {
                    "type": "string",
                    "nullable": true,
                    "example": "My Shop Category",
                    "description": "The `<title>` used for the shop category landing page."
                  },
                  "metaDescription": {
                    "type": "string",
                    "nullable": true,
                    "example": "Short description shown in search engine result snippets.",
                    "description": "The `<meta name=\"description\">` used for the shop category landing page."
                  },
                  "allowSearchEngineIndexing": {
                    "type": "boolean",
                    "nullable": true,
                    "example": true,
                    "description": "Whether search engines are allowed to index the shop category landing page. If false, `noindex` should be emitted."
                  },
                  "seoHeadline": {
                    "type": "string",
                    "nullable": true,
                    "example": "Discover our new arrivals",
                    "description": "SEO headline rendered on the shop category landing page."
                  },
                  "seoDescription": {
                    "type": "string",
                    "nullable": true,
                    "example": "Handpicked selection of seasonal looks.",
                    "description": "SEO description rendered on the shop category landing page body."
                  },
                  "canonicalUrl": {
                    "type": "string",
                    "nullable": true,
                    "format": "uri",
                    "example": "https://shop.example.com/my-shop-category",
                    "description": "Canonical URL for the shop category landing page."
                  }
                }
              }
            ]
          }
        },
        "x-ayObjects": [
          {
            "property": "properties",
            "isCollection": true,
            "className": "ShopCategoryProperty"
          }
        ]
      },
      "ShopCountry": {
        "type": "object",
        "required": [
          "countryCode",
          "defaultLanguageCode",
          "url"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "example": 1,
            "description": "The ID of the shop country created by SCAYLE."
          },
          "shopKey": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9]*$",
            "readOnly": true,
            "example": "ay",
            "description": "A key that uniquely identifies the shop within the tenant's ecosystem. Must be exactly 2 chars long."
          },
          "countryCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "example": "DE",
            "description": "ISO 3166 alpha 2 country code."
          },
          "defaultLanguageCode": {
            "type": "string",
            "maxLength": 5,
            "example": "de_DE",
            "description": "ISO-3166 country code and ISO-639 language code."
          },
          "supportedLanguageCodes": {
            "type": "array",
            "description": "List of supported language codes.",
            "items": {
              "type": "string",
              "maxLength": 5,
              "example": "de_DE",
              "description": "ISO-3166 country code and ISO-639 language code."
            }
          },
          "url": {
            "type": "string",
            "example": "https://www.example.com",
            "description": "Url of the shop country."
          },
          "active": {
            "type": "boolean",
            "description": "Defines if the shop country is active.",
            "example": true,
            "readOnly": true
          },
          "deleted": {
            "type": "boolean",
            "description": "Defines if the shop country is deleted.",
            "example": false,
            "readOnly": true
          },
          "priceGroupKey": {
            "type": "string",
            "nullable": true,
            "description": "Key of the price group the shop country is assigned to.",
            "example": "myPriceGroup",
            "readOnly": true
          },
          "currencyCode": {
            "type": "string",
            "description": "The currency used in the shop country.",
            "example": "EUR",
            "nullable": true
          },
          "assortment": {
            "$ref": "#/components/schemas/Assortment",
            "readOnly": true,
            "description": "Rules that defines what products can be sold within which Shop country"
          },
          "warehouses": {
            "type": "array",
            "readOnly": true,
            "description": "A list of warehouses attached to the shop country.",
            "items": {
              "$ref": "#/components/schemas/ShopCountryWarehouse"
            }
          },
          "priceRoundings": {
            "type": "array",
            "readOnly": true,
            "description": "List of price rounding configurations.",
            "items": {
              "$ref": "#/components/schemas/ShopCountryPriceRounding"
            }
          },
          "smartSortingKey": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Shop/properties/smartSortingKey/allOf/0"
              }
            ],
            "nullable": true
          },
          "customData": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomData"
              }
            ],
            "nullable": true,
            "description": "Arbitrary fields assigned to Shop countries"
          }
        },
        "x-ayObjects": [
          {
            "property": "assortment",
            "className": "Assortment"
          },
          {
            "property": "warehouses",
            "isCollection": true,
            "className": "ShopCountryWarehouse"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createShopCountry",
            "path": "/shops/{shopKey}/countries",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              }
            ],
            "requestModel": "ShopCountry",
            "responseModel": "ShopCountry"
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getShopCountries",
            "path": "/shops/{shopKey}/countries",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              }
            ],
            "isResponseCollection": true,
            "responseModel": "ShopCountry"
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getShopCountry",
            "path": "/shops/{shopKey}/countries/{countryCode}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ],
            "responseModel": "ShopCountry"
          },
          {
            "methodName": "update",
            "operation": "put",
            "operationId": "updateShopCountry",
            "path": "/shops/{shopKey}/countries/{countryCode}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ],
            "requestModel": "ShopCountry",
            "responseModel": "ShopCountry"
          },
          {
            "methodName": "updateAssortment",
            "operation": "put",
            "operationId": "updateAssortment",
            "path": "/shops/{shopKey}/countries/{countryCode}/assortment",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ],
            "requestModel": "Assortment",
            "responseModel": "Assortment"
          },
          {
            "methodName": "partiallyUpdateAssortment",
            "operation": "patch",
            "operationId": "partiallyUpdateAssortment",
            "path": "/shops/{shopKey}/countries/{countryCode}/assortment",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ],
            "requestModel": "PartialAssortment",
            "responseModel": "Assortment"
          },
          {
            "methodName": "createOrUpdateCustomData",
            "operation": "put",
            "operationId": "createOrUpdateShopCountryCustomData",
            "path": "/shops/{shopKey}/countries/{countryCode}/custom-data",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "deleteCustomData",
            "operation": "delete",
            "operationId": "deleteShopCountryCustomData",
            "path": "/shops/{shopKey}/countries/{countryCode}/custom-data",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getCustomData",
            "operation": "get",
            "operationId": "getShopCountryCustomData",
            "path": "/shops/{shopKey}/countries/{countryCode}/custom-data",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "createOrUpdateCustomDataForKey",
            "operation": "put",
            "operationId": "createOrUpdateShopCountryCustomDataForKey",
            "path": "/shops/{shopKey}/countries/{countryCode}/custom-data/{key}",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "deleteCustomDataForKey",
            "operation": "delete",
            "operationId": "deleteShopCountryCustomDataForKey",
            "path": "/shops/{shopKey}/countries/{countryCode}/custom-data/{key}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getCustomDataForKey",
            "operation": "get",
            "operationId": "getShopCountryCustomDataForKey",
            "path": "/shops/{shopKey}/countries/{countryCode}/custom-data/{key}",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          }
        ]
      },
      "CustomData": {
        "type": "object",
        "minProperties": 1,
        "description": "custom data of an entity",
        "additionalProperties": true
      },
      "ProductMasterCategories": {
        "type": "object",
        "required": [
          "paths"
        ],
        "properties": {
          "isLocked": {
            "type": "boolean",
            "readOnly": true,
            "description": "Specifies if the product categories were locked via the SCAYLE Panel."
          },
          "paths": {
            "type": "array",
            "minItems": 1,
            "description": "The master category paths.",
            "items": {
              "type": "array",
              "minItems": 1,
              "description": "The master category path. Sorted from root to leaf.",
              "example": [
                [
                  "Fashion",
                  "Men",
                  "Shirts"
                ]
              ],
              "items": {
                "type": "string",
                "example": [
                  "Fashion",
                  "Men",
                  "Shirts"
                ]
              }
            }
          }
        }
      },
      "Brand": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "example": 1,
            "description": "The ID of the brand created by SCAYLE."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "example": "Edited",
            "description": "Name of the brand."
          },
          "group": {
            "type": "string",
            "example": "Sport Brands",
            "description": "Group name allowing to group different brands.",
            "nullable": true
          },
          "logoUrl": {
            "type": "string",
            "nullable": true,
            "description": "URL of the image, either manually specified or generated by SCAYLE, if the SCAYLE CDN is used.",
            "example": "images/my_image.jpg"
          },
          "logoSource": {
            "description": "A source specifying where to download the logo from.",
            "$ref": "#/components/schemas/AssetSource"
          },
          "attributes": {
            "description": "A list of attributes attached to the brand.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attribute"
            }
          },
          "customData": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomData"
              }
            ],
            "nullable": true,
            "description": "Arbitrary fields assigned to Brands"
          }
        },
        "x-ayObjects": [
          {
            "property": "attributes",
            "isCollection": true,
            "className": "Attribute"
          },
          {
            "property": "logoSource",
            "className": "AssetSource"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getBrands",
            "path": "/brands",
            "isResponseCollection": true,
            "responseModel": "Brand"
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getBrand",
            "path": "/brands/{brandId}",
            "responseModel": "Brand",
            "parameters": [
              {
                "name": "brandId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createBrand",
            "path": "/brands",
            "requestModel": "Brand",
            "responseModel": "Brand"
          },
          {
            "methodName": "update",
            "operation": "put",
            "operationId": "updateBrand",
            "path": "/brands/{brandId}",
            "requestModel": "Brand",
            "responseModel": "Brand",
            "parameters": [
              {
                "name": "brandId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteBrand",
            "path": "/brands/{brandId}",
            "parameters": [
              {
                "name": "brandId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "createOrUpdateCustomData",
            "operation": "put",
            "operationId": "createOrUpdateBrandCustomData",
            "path": "/brands/{brandId}/custom-data",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "brandId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "deleteCustomData",
            "operation": "delete",
            "operationId": "deleteBrandCustomData",
            "path": "/brands/{brandId}/custom-data",
            "parameters": [
              {
                "name": "brandId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "getCustomData",
            "operation": "get",
            "operationId": "getBrandCustomData",
            "path": "/brands/{brandId}/custom-data",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "brandId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "createOrUpdateCustomDataForKey",
            "operation": "put",
            "operationId": "createOrUpdateBrandCustomDataForKey",
            "path": "/brands/{brandId}/custom-data/{key}",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "brandId",
                "type": "integer"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "deleteCustomDataForKey",
            "operation": "delete",
            "operationId": "deleteBrandCustomDataForKey",
            "path": "/brands/{brandId}/custom-data/{key}",
            "parameters": [
              {
                "name": "brandId",
                "type": "integer"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getCustomDataForKey",
            "operation": "get",
            "operationId": "getBrandCustomDataForKey",
            "path": "/brands/{brandId}/custom-data/{key}",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "brandId",
                "type": "integer"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          }
        ]
      },
      "AssetSource": {
        "type": "object",
        "description": "Source where to download the asset from. Either URL or attachment.",
        "minProperties": 1,
        "maxProperties": 1,
        "writeOnly": true,
        "properties": {
          "url": {
            "type": "string",
            "description": "URL of remote asset.",
            "format": "uri",
            "example": "https://example.com/image.png"
          },
          "attachment": {
            "type": "string",
            "description": "Base64-encoded binary asset data.",
            "format": "byte",
            "example": "U3dhZ2dlciByb2Nrcw=="
          }
        }
      },
      "ProductSorting": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "integer",
            "example": 1,
            "description": "SCAYLE's internal product identifier.",
            "writeOnly": true
          },
          "productReferenceKey": {
            "type": "string",
            "minLength": 1,
            "example": "M0001-red",
            "description": "Tenant provided product identifier.",
            "writeOnly": true
          },
          "shopKey": {
            "type": "string",
            "example": "ms",
            "description": "A key that uniquely identifies the shop within the tenant's ecosystem."
          },
          "countryCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "example": "DE",
            "description": "ISO 3166 alpha 2 country code."
          },
          "sortKey": {
            "type": "string",
            "example": "default-ms",
            "description": "The sort key."
          },
          "sortValue": {
            "type": "integer",
            "minimum": 0,
            "example": 1,
            "description": "The value used for sorting."
          }
        },
        "x-ayOperations": [
          {
            "methodName": "updateOrCreate",
            "operation": "post",
            "operationId": "updateOrCreateProductSortings",
            "path": "/product-sortings",
            "requestModel": "ProductSorting",
            "isRequestCollection": true
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteProductSortings",
            "path": "/product-sortings",
            "requestModel": "ProductSorting",
            "isRequestCollection": true
          }
        ]
      },
      "ShopCountryWarehouse": {
        "type": "object",
        "required": [
          "referenceKey"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "example": 1,
            "description": "The ID of the warehouse created by SCAYLE."
          },
          "referenceKey": {
            "type": "string",
            "example": "my-warehouse",
            "description": "A key that uniquely identifies the warehouse within the tenant's ecosystem.",
            "pattern": "^[a-zA-Z0-9-_\\. ]*$"
          },
          "priority": {
            "type": "integer",
            "nullable": true,
            "example": 100,
            "description": "The priority of the warehouse. The higher the value, the higher the priority."
          },
          "packageGroup": {
            "$ref": "#/components/schemas/PackageGroup",
            "nullable": true,
            "description": "The assigned package group of the warehouse."
          }
        },
        "x-ayObjects": [
          {
            "property": "packageGroup",
            "className": "PackageGroup"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createShopCountryWarehouse",
            "path": "/shops/{shopKey}/countries/{countryCode}/warehouses",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ],
            "requestModel": "ShopCountryWarehouse",
            "responseModel": "ShopCountryWarehouse"
          },
          {
            "methodName": "update",
            "operation": "put",
            "operationId": "updateShopCountryWarehouse",
            "path": "/shops/{shopKey}/countries/{countryCode}/warehouses/{warehouseIdentifier}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "warehouseIdentifier",
                "type": "identifier"
              }
            ],
            "requestModel": "ShopCountryWarehouse",
            "responseModel": "ShopCountryWarehouse"
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteShopCountryWarehouse",
            "path": "/shops/{shopKey}/countries/{countryCode}/warehouses/{warehouseIdentifier}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "warehouseIdentifier",
                "type": "identifier"
              }
            ]
          }
        ]
      },
      "ShopCountryPriceRounding": {
        "type": "object",
        "required": [
          "currencyCode",
          "precision",
          "roundingType"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "example": 1,
            "description": "The ID of the price rounding created by SCAYLE."
          },
          "currencyCode": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "example": "EUR",
            "description": "Currency code in ISO 4217 format."
          },
          "precision": {
            "type": "string",
            "enum": [
              "1.00",
              "5.00",
              "0.50",
              "0.05",
              "0.01",
              "0.99",
              "0.95",
              "0.90"
            ],
            "x-enumName": "RoundingPrecision",
            "description": "The precision that should be applied to a price, ENUM of \"1.00\", \"5.00\", \"0.50\", \"0.05\", \"0.01\", \"0.99\", \"0.95\", \"0.90\"."
          },
          "roundingType": {
            "type": "string",
            "enum": [
              "nearest",
              "up",
              "down"
            ],
            "x-enumName": "RoundingType",
            "description": "The rounding type that should be used when rounding a price."
          }
        },
        "x-ayOperations": [
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getShopCountryPriceRoundings",
            "path": "/shops/{shopKey}/countries/{countryCode}/price-roundings",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ],
            "isResponseCollection": true,
            "responseModel": "ShopCountryPriceRounding"
          },
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createShopCountryPriceRounding",
            "path": "/shops/{shopKey}/countries/{countryCode}/price-roundings",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ],
            "requestModel": "ShopCountryPriceRounding",
            "responseModel": "ShopCountryPriceRounding"
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteShopCountryPriceRounding",
            "path": "/shops/{shopKey}/countries/{countryCode}/price-roundings/{priceRoundingId}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "priceRoundingId",
                "type": "integer"
              }
            ]
          }
        ]
      },
      "PackageGroup": {
        "type": "object",
        "nullable": true,
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "nullable": true,
            "example": 1,
            "description": "The ID of the package group."
          }
        },
        "x-ayOperations": [
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getPackageGroups",
            "path": "/shops/{shopKey}/countries/{countryCode}/package-groups",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ],
            "responseModel": "PackageGroup",
            "isResponseCollection": true
          },
          {
            "methodName": "assignPackageGroupToWarehouses",
            "operation": "post",
            "operationId": "assignPackageGroups",
            "path": "/shops/{shopKey}/countries/{countryCode}/package-groups/{packageGroupId}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "packageGroupId",
                "type": "integer"
              }
            ],
            "requestModel": "PackageGroupWarehouse",
            "isRequestCollection": true
          },
          {
            "methodName": "replacePackageGroupForWarehouses",
            "operation": "put",
            "operationId": "replacePackageGroups",
            "path": "/shops/{shopKey}/countries/{countryCode}/package-groups/{packageGroupId}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "packageGroupId",
                "type": "integer"
              }
            ],
            "requestModel": "PackageGroupWarehouse",
            "isRequestCollection": true
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deletePackageGroup",
            "path": "/shops/{shopKey}/countries/{countryCode}/package-groups/{packageGroupId}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "packageGroupId",
                "type": "integer"
              }
            ]
          }
        ]
      },
      "PackageGroupWarehouse": {
        "type": "object",
        "properties": {
          "warehouseId": {
            "type": "integer",
            "readOnly": true,
            "example": 1,
            "description": "The ID of the warehouse created by SCAYLE."
          },
          "warehouseReferenceKey": {
            "type": "string",
            "example": "my-warehouse",
            "description": "A key that uniquely identifies the warehouse within the tenant's ecosystem."
          }
        }
      },
      "Cursor": {
        "type": "object",
        "properties": {
          "next": {
            "type": "string",
            "readOnly": true,
            "nullable": true,
            "example": "MQ==",
            "description": "The cursor pointing to the next page. If null there is no next page available."
          }
        }
      },
      "CustomDataConfig": {
        "type": "object",
        "required": [
          "properties"
        ],
        "properties": {
          "properties": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/CustomDataConfigProperty"
            },
            "description": "Collection of custom config properties.",
            "example": {
              "name": "score",
              "type": "number",
              "defaultValue": 1,
              "inherit": false,
              "rules": {
                "required": true
              }
            }
          }
        },
        "x-ayOperations": [
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getCustomDataConfig",
            "path": "/custom-data-configs/{entity}",
            "responseModel": "CustomDataConfig",
            "parameters": [
              {
                "name": "entity",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createCustomDataConfig",
            "path": "/custom-data-configs/{entity}",
            "requestModel": "CustomDataConfig",
            "responseModel": "CustomDataConfig",
            "parameters": [
              {
                "name": "entity",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "update",
            "operation": "put",
            "operationId": "updateCustomDataConfig",
            "path": "/custom-data-configs/{entity}",
            "requestModel": "CustomDataConfig",
            "responseModel": "CustomDataConfig",
            "parameters": [
              {
                "name": "entity",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteCustomDataConfig",
            "path": "/custom-data-configs/{entity}",
            "parameters": [
              {
                "name": "entity",
                "type": "string"
              }
            ]
          }
        ]
      },
      "CustomDataConfigProperty": {
        "type": "object",
        "required": [
          "name",
          "type"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "example": "score",
            "description": "Name of the property.",
            "pattern": "^[A-Za-z_-][A-Za-z0-9_-]*$"
          },
          "type": {
            "type": "string",
            "minLength": 1,
            "example": "object",
            "description": "Type of the property.",
            "enum": [
              "string",
              "number",
              "boolean",
              "json"
            ],
            "x-enumName": "CustomDataConfigPropertyType"
          },
          "isLocalized": {
            "type": "boolean",
            "example": true,
            "description": "Whether the property is localized or not. Default is `false`, supported only for config properties of type `json` and `string`. Toggling `isLocalized` from `true` to `false` is not supported when there is custom data on the corresponding entity."
          },
          "defaultValue": {
            "example": 100,
            "description": "Default value for the property. If `required` rule is set to `true` then `defaultValue` is mandatory in case there is custom data on the corresponding entity.",
            "nullable": true,
            "default": false
          },
          "rules": {
            "type": "object",
            "properties": {
              "required": {
                "type": "boolean",
                "description": "Whether the property is required or not in the custom data schema.",
                "example": true,
                "nullable": false,
                "default": false
              },
              "minLength": {
                "type": "integer",
                "description": "Specifies the minimum length for a property value, this is only supported for string properties.",
                "example": 1,
                "minimum": 1,
                "maximum": 255,
                "nullable": true
              },
              "maxLength": {
                "type": "integer",
                "description": "Specifies the maximum length for a property value, this is only supported for string properties.",
                "example": 255,
                "minimum": 1,
                "maximum": 255,
                "nullable": true
              },
              "requiredLocales": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Specifies the localization values of a property, supported for string and json properties.",
                "nullable": true,
                "example": [
                  "en_GB",
                  "de_DE"
                ]
              },
              "jsonSchema": {
                "type": "object",
                "additionalProperties": true,
                "description": "Whether the property can hold a custom json schema or not,\n   this is only supported for json properties, expected value should be an actual [json schema](http://json-schema.org).\n",
                "nullable": true
              }
            },
            "description": "A collection of rules that applies to the corresponding property in the entity custom data."
          },
          "inherit": {
            "type": "boolean",
            "description": "Whether the property is inheritable or not this would apply for entities\n   having parent entities or self referencing like categories.\n",
            "example": true
          }
        }
      },
      "Customer": {
        "type": "object",
        "minProperties": 1,
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "description": "The ID of the customer"
          },
          "referenceKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "pattern": "^[0-9a-zA-Z\\-\\\\_\\.\\@]*$",
            "description": "External reference set by the client to integrate a third party system."
          },
          "firstName": {
            "type": "string",
            "description": "First name of the customer"
          },
          "lastName": {
            "type": "string",
            "description": "Last name of the customer"
          },
          "gender": {
            "type": "string",
            "enum": [
              "f",
              "m",
              "d",
              "n"
            ],
            "x-enumName": "Gender",
            "description": "Gender of the customer mentioned as per defined ENUM as \"m\" , \"f\", \"d\", \"n\""
          },
          "birthDate": {
            "type": "string",
            "pattern": "^((19|20)[0-9]{2}\\-[0-9]{2}\\-[0-9]{2})$",
            "description": "Date of birth of the customer in YYYY-MM-DD format"
          },
          "email": {
            "type": "string",
            "pattern": "^(([^<>()\\[\\]\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([^<>()\\[\\]\\.,;:\\s@\"]+\\.)+[a-zA-Z]{2,}))$",
            "description": "email address of the customer"
          },
          "phone": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "00[0-9]{1,3}/[0-9]{1,20}",
                "description": "phone number of the customer"
              },
              {
                "type": "string",
                "pattern": "^(?:\\+|00)[0-9]\\d{3,15}$",
                "description": "phone number in standard E.164 format",
                "example": "+49123456789"
              }
            ]
          },
          "publicKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "pattern": "^[0-9a-zA-Z\\-\\\\_]*$",
            "description": "Public reference set by the client to display to customers in account areas and transactional emails."
          },
          "title": {
            "type": "string",
            "nullable": true,
            "maxLength": 30,
            "description": "User defined title. It can be set to NULL otherwise"
          },
          "type": {
            "type": "string",
            "readOnly": true,
            "description": "Type of customer (like personal)"
          },
          "groups": {
            "type": "array",
            "readOnly": true,
            "description": "Group to which the customer belongs to",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 60,
              "pattern": "^[0-9a-zA-Z\\-\\\\_]*$"
            }
          },
          "identities": {
            "type": "array",
            "description": "A list of Identity Providers (IDP)",
            "items": {
              "$ref": "#/components/schemas/CustomerIdentityProvider"
            }
          },
          "status": {
            "$ref": "#/components/schemas/CustomerStatus",
            "description": "Defines if customer isActive or not and if customer isGuestCustomer or not"
          },
          "company": {
            "readOnly": true,
            "$ref": "#/components/schemas/Company",
            "description": "Company to which the customer belongs to"
          },
          "addresses": {
            "type": "array",
            "readOnly": true,
            "items": {
              "$ref": "#/components/schemas/CustomerAddress"
            },
            "description": "Customers address (es)"
          },
          "legacyCustomData": {
            "description": "Custom data added to the customers (legacy feature)"
          },
          "hasPassword": {
            "type": "boolean",
            "description": "Defines if the customer has a password set.",
            "example": true,
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Timestamp when the customer is created",
            "example": "2021-09-23T11%3A30%3A58%2B00%3A00"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Timestamp when the customer is updated",
            "example": "2021-09-23T11%3A30%3A58%2B00%3A00"
          }
        },
        "x-ayObjects": [
          {
            "property": "status",
            "className": "CustomerStatus"
          },
          {
            "property": "addresses",
            "isCollection": true,
            "className": "CustomerAddress"
          },
          {
            "property": "identities",
            "isCollection": true,
            "className": "CustomerIdentityProvider"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getCustomers",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers",
            "isResponseCollection": true,
            "responseModel": "Customer",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getCustomer",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}",
            "responseModel": "Customer",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createCustomer",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers",
            "requestModel": "Customer",
            "responseModel": "Customer",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "update",
            "operation": "patch",
            "operationId": "updateCustomer",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}",
            "requestModel": "Customer",
            "responseModel": "Customer",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteCustomer",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "updateReferenceKey",
            "operation": "put",
            "operationId": "updateCustomerReferenceKey",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerId}/reference-key",
            "requestModel": "CustomerReferenceKey",
            "responseModel": "Customer",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "createOrUpdateLegacyCustomData",
            "operation": "put",
            "operationId": "createOrUpdateCustomerLegacyCustomData",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerId}/legacy-custom-data",
            "requestModel": "LegacyCustomData",
            "responseModel": "Customer",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "anonymize",
            "operation": "delete",
            "operationId": "anonymizeCustomer",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/anonymize",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "cancelQueuedDeletion",
            "operation": "delete",
            "operationId": "cancelQueuedDeletion",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/queued-deletion",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "setPassword",
            "operation": "put",
            "operationId": "setCustomerPassword",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/password",
            "requestModel": "CustomerPassword",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "setPasswordHash",
            "operation": "put",
            "operationId": "setCustomerPasswordHash",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/password-hash",
            "requestModel": "CustomerPasswordHash",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "getStatus",
            "operation": "get",
            "operationId": "getCustomerStatus",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/status",
            "responseModel": "CustomerStatus",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "updateStatus",
            "operation": "put",
            "operationId": "updateCustomerStatus",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/status",
            "requestModel": "CustomerStatus",
            "responseModel": "CustomerStatus",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "getAddresses",
            "operation": "get",
            "operationId": "getCustomerAddresses",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/addresses",
            "isResponseCollection": true,
            "responseModel": "CustomerAddress",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "getAddress",
            "operation": "get",
            "operationId": "getCustomerAddress",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/addresses/{addressIdentifier}",
            "responseModel": "CustomerAddress",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              },
              {
                "name": "addressIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "createAddress",
            "operation": "post",
            "operationId": "createCustomerAddress",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/addresses",
            "requestModel": "CustomerAddress",
            "responseModel": "CustomerAddress",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "updateAddress",
            "operation": "patch",
            "operationId": "updateCustomerAddress",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/addresses/{addressIdentifier}",
            "requestModel": "CustomerAddress",
            "responseModel": "CustomerAddress",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              },
              {
                "name": "addressIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "updateAddressReferenceKey",
            "operation": "put",
            "operationId": "updateCustomerAddressReferenceKey",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/addresses/{addressId}/reference-key",
            "requestModel": "CustomerAddressReferenceKey",
            "responseModel": "CustomerAddress",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              },
              {
                "name": "addressId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "anonymizeAddress",
            "operation": "delete",
            "operationId": "anonymizeCustomerAddress",
            "deprecated": true,
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/addresses/{addressIdentifier}/anonymize",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              },
              {
                "name": "addressIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "anonymizeAddressByIdentifier",
            "operation": "delete",
            "operationId": "anonymizeCustomerAddressByIdentifier",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/addresses/{addressIdentifier}/anonymize",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "addressIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "resetPassword",
            "operation": "post",
            "operationId": "resetCustomerPassword",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/send-reset-password-email",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "addGroups",
            "operation": "post",
            "operationId": "addCustomerGroups",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/customer-groups",
            "requestModel": "CustomerGroup",
            "responseModel": "Customer",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerId",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "createMembership",
            "operation": "post",
            "operationId": "createCustomerMembership",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/memberships",
            "requestModel": "CustomerMembership",
            "responseModel": "CustomerMembership",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "updateMembership",
            "operation": "put",
            "operationId": "updateCustomerMembership",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/memberships/{membershipId}",
            "requestModel": "CustomerMembership",
            "responseModel": "CustomerMembership",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "membershipId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "getMemberships",
            "operation": "get",
            "operationId": "getCustomerMemberships",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/memberships",
            "isResponseCollection": true,
            "responseModel": "CustomerMembership",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "deleteMembership",
            "operation": "delete",
            "operationId": "deleteCustomerMembership",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/memberships/{membershipId}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "membershipId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "deleteGroup",
            "operation": "delete",
            "operationId": "deleteCustomerGroup",
            "path": "/shops/{shopKey}/countries/{countryCode}/customers/{customerIdentifier}/customer-groups/{customerGroup}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "customerIdentifier",
                "type": "identifier"
              },
              {
                "name": "customerGroup",
                "type": "string"
              }
            ]
          }
        ]
      },
      "LegacyCustomData": {
        "type": "object",
        "minProperties": 1,
        "description": "legacy custom data of an entity",
        "additionalProperties": true
      },
      "CustomerReferenceKey": {
        "type": "object",
        "required": [
          "referenceKey"
        ],
        "properties": {
          "referenceKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "pattern": "^[0-9a-zA-Z\\-\\\\_\\.\\@]*$",
            "description": "External reference set by the client to integrate a third party system."
          }
        }
      },
      "CustomerPassword": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "password"
        ],
        "properties": {
          "hashingType": {
            "type": "string",
            "enum": [
              "internal",
              "external",
              "salesforce"
            ],
            "default": "internal",
            "x-enumName": "CustomerPasswordHashingType"
          },
          "password": {
            "type": "string",
            "maxLength": 70,
            "minLength": 5
          }
        }
      },
      "CustomerPasswordHash": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "hash",
          "hashingType"
        ],
        "properties": {
          "hashingType": {
            "$ref": "#/components/schemas/CustomerPassword/properties/hashingType"
          },
          "hash": {
            "type": "string"
          }
        }
      },
      "CustomerAddress": {
        "type": "object",
        "required": [
          "city",
          "street",
          "countryCode",
          "zipCode",
          "recipient"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "referenceKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "pattern": "^[0-9a-zA-Z\\-\\\\_]*$",
            "example": "my-key",
            "description": "External reference set by the client to integrate third party systems."
          },
          "street": {
            "type": "string",
            "description": "Street is the mandatory string value in recipient's address",
            "example": "Domstraße"
          },
          "houseNumber": {
            "type": "string",
            "description": "House number of the recipient address"
          },
          "additional": {
            "type": "string",
            "description": "Additional data pertaining to the address"
          },
          "zipCode": {
            "type": "string",
            "pattern": "[A-z0-9\\- ]{1,12}",
            "description": "Zip code is the postal code of the recipient's location. Its a mandatory value"
          },
          "city": {
            "type": "string",
            "description": "City of the recipient. It is a mandatory value"
          },
          "countryCode": {
            "type": "string",
            "minLength": 3,
            "maxLength": 3,
            "description": "ISO 3166-1 alpha-3 country code"
          },
          "collectionPoint": {
            "$ref": "#/components/schemas/CustomerAddressCollectionPoint",
            "description": "Details of the point where the parcel is received (if used)"
          },
          "isDefault": {
            "$ref": "#/components/schemas/CustomerAddressDefault",
            "description": "Defines whether the address is the default billing and shipping address"
          },
          "recipient": {
            "$ref": "#/components/schemas/CustomerAddressRecipient",
            "description": "Recipient personal details"
          },
          "phone": {
            "anyOf": [
              {
                "type": "string",
                "readOnly": true
              },
              {
                "$ref": "#/components/schemas/Customer/properties/phone/anyOf/1",
                "readOnly": true
              }
            ]
          },
          "state": {
            "pattern": "[!-ɏ0-9 ]",
            "type": "string"
          },
          "type": {
            "type": "string",
            "readOnly": true,
            "enum": [
              "shipping",
              "billing"
            ],
            "x-enumName": "CustomerAddressType",
            "description": "Defines the type of the address.",
            "example": "shipping"
          },
          "shopCountry": {
            "$ref": "#/components/schemas/ShopCountry"
          }
        },
        "x-ayObjects": [
          {
            "property": "collectionPoint",
            "className": "CustomerAddressCollectionPoint"
          },
          {
            "property": "isDefault",
            "className": "CustomerAddressDefault"
          },
          {
            "property": "recipient",
            "className": "CustomerAddressRecipient"
          }
        ]
      },
      "CustomerAddressCollectionPoint": {
        "type": "object",
        "required": [
          "key",
          "type"
        ],
        "properties": {
          "customerKey": {
            "type": "string",
            "pattern": "[A-z0-9]"
          },
          "description": {
            "type": "string"
          },
          "key": {
            "type": "string",
            "pattern": "[A-z0-9]"
          },
          "type": {
            "type": "string"
          }
        }
      },
      "CustomerAddressDefault": {
        "type": "object",
        "properties": {
          "billing": {
            "type": "boolean",
            "default": false
          },
          "shipping": {
            "type": "boolean",
            "default": false
          }
        }
      },
      "CustomerAddressRecipient": {
        "type": "object",
        "required": [
          "lastName"
        ],
        "properties": {
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "gender": {
            "$ref": "#/components/schemas/Customer/properties/gender"
          },
          "title": {
            "type": "string",
            "nullable": true,
            "maxLength": 30
          },
          "type": {
            "type": "string",
            "enum": [
              "personal",
              "retail",
              "organization",
              "family"
            ],
            "x-enumName": "CustomerAddressRecipientType"
          }
        }
      },
      "CustomerAddressReferenceKey": {
        "type": "object",
        "required": [
          "referenceKey"
        ],
        "properties": {
          "referenceKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "pattern": "^[0-9a-zA-Z\\-\\\\_]*$",
            "description": "External address reference set by the client to integrate a third party system."
          }
        }
      },
      "CustomerGroup": {
        "type": "object",
        "required": [
          "groups"
        ],
        "properties": {
          "groups": {
            "type": "array",
            "description": "Group to which the customer belongs to",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 60,
              "pattern": "^[0-9a-zA-Z\\-\\\\_]*$"
            }
          }
        }
      },
      "CustomerIdentityProvider": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "identityProviderCode": {
            "type": "string",
            "description": "The code of an Identity Provider",
            "example": "keycloak"
          },
          "externalUserId": {
            "type": "string",
            "nullable": true,
            "description": "User ID from the external Identity Provider",
            "example": "qwerty"
          }
        }
      },
      "CustomerMembership": {
        "type": "object",
        "required": [
          "isActive",
          "typeKey",
          "accountNumber"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "isActive": {
            "type": "boolean",
            "example": true,
            "description": "Membership state."
          },
          "typeKey": {
            "type": "string",
            "minLength": 1,
            "pattern": "[A-z0-9]",
            "example": "payback",
            "description": "Membership type key."
          },
          "accountNumber": {
            "type": "string",
            "minLength": 1,
            "pattern": "[A-z0-9]",
            "example": 1234567890,
            "description": "Membership account number."
          },
          "createdAt": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "example": "2023-01-22T11:30:15+00:00",
            "description": "Timestamp when the membership is created."
          },
          "updatedAt": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "example": "2023-01-22T11:30:15+00:00",
            "description": "Timestamp when the membership is updated."
          }
        }
      },
      "CustomerStatus": {
        "type": "object",
        "required": [
          "isActive",
          "isGuestCustomer"
        ],
        "properties": {
          "isActive": {
            "type": "boolean",
            "example": true,
            "description": "Declares whether the customer account is active or not"
          },
          "isGuestCustomer": {
            "type": "boolean",
            "example": false,
            "description": "Declares if the customer have an account or not"
          }
        }
      },
      "Order": {
        "type": "object",
        "required": [
          "cost",
          "currencyCode"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "The ID of the order created"
          },
          "address": {
            "$ref": "#/components/schemas/OrderAddress",
            "description": "Billing and Shipping address of the customer"
          },
          "basketKey": {
            "type": "string",
            "description": "A key that uniquely identifies customer's cart"
          },
          "campaignKey": {
            "type": "string",
            "description": "Reference to the campaign applied to this order"
          },
          "confirmedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the order was confirmed",
            "example": "2021-09-23T11%3A30%3A58%2B00%3A00"
          },
          "contacts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderContact"
            },
            "description": "Collection of contacts"
          },
          "cost": {
            "$ref": "#/components/schemas/OrderCost",
            "description": "Total cost of the order that includes tax, VAT, etc"
          },
          "currencyCode": {
            "type": "string",
            "description": "ISO 4217 currency code"
          },
          "customer": {
            "$ref": "#/components/schemas/Customer",
            "description": "Details about the customer account"
          },
          "shopCountry": {
            "$ref": "#/components/schemas/ShopCountry",
            "description": "Country of the shop as ISO 3166 alpha 2 country code"
          },
          "invoicedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the invoice is sent",
            "example": "2021-09-23T11%3A30%3A58%2B00%3A00"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the order is created",
            "example": "2021-09-23T11%3A30%3A58%2B00%3A00"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Timestamp when the order is updated",
            "example": "2021-09-23T11%3A30%3A58%2B00%3A00"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderItem"
            },
            "description": "Collection of items ordered"
          },
          "legacyCustomData": {
            "type": "object",
            "additionalProperties": true,
            "description": "Custom data added to the order (legacy feature)"
          },
          "membershipDiscount": {
            "additionalProperties": false,
            "readOnly": true,
            "$ref": "#/components/schemas/OrderMembershipDiscount",
            "description": "Membership discount information"
          },
          "packages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderPackage"
            },
            "description": "Details for the package(s) part of the order"
          },
          "payment": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderPayment"
            },
            "description": "Payment details"
          },
          "promotion": {
            "type": "array",
            "nullable": true,
            "readOnly": true,
            "items": {
              "nullable": true,
              "$ref": "#/components/schemas/OrderPromotion"
            },
            "description": "Order promotions"
          },
          "publicKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "pattern": "^[0-9a-zA-Z\\-\\\\_]*$",
            "description": "Public reference set by the client to display to customers in account areas and transactional emails."
          },
          "referenceKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "pattern": "^[0-9a-zA-Z\\-\\\\_\\.\\@]*$",
            "description": "External order reference set by the client to integrate a third party system."
          },
          "shipping": {
            "$ref": "#/components/schemas/OrderShipping",
            "description": "Shipping details"
          },
          "status": {
            "type": "string",
            "enum": [
              "order_open",
              "payment_pending",
              "payment_reserved",
              "invoice_completed",
              "cancellation_pending",
              "cancellation_completed",
              "invoice_partially_completed"
            ],
            "description": "Status of the order, e.g. invoice_completed",
            "x-enumName": "OrderStatusEnum"
          },
          "detailedStatus": {
            "$ref": "#/components/schemas/OrderDetailedStatus"
          },
          "vouchers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderVoucher"
            },
            "description": "Applicable voucher and its details"
          },
          "voucher": {
            "$ref": "#/components/schemas/OrderVoucher",
            "description": "Applicable voucher and its details"
          },
          "loyaltyCard": {
            "$ref": "#/components/schemas/OrderLoyaltyCard"
          },
          "channel": {
            "$ref": "#/components/schemas/OrderChannel"
          }
        },
        "x-ayObjects": [
          {
            "property": "vouchers",
            "isCollection": true,
            "className": "OrderVoucher"
          },
          {
            "property": "shipping",
            "className": "OrderShipping"
          },
          {
            "property": "payment",
            "isCollection": true,
            "className": "OrderPayment"
          },
          {
            "property": "items",
            "isCollection": true,
            "className": "OrderItem"
          },
          {
            "property": "customer",
            "className": "Customer"
          },
          {
            "property": "contacts",
            "isCollection": true,
            "className": "OrderContact"
          },
          {
            "property": "cost",
            "className": "OrderCost"
          },
          {
            "property": "address",
            "className": "OrderAddress"
          },
          {
            "property": "membershipDiscount",
            "className": "OrderMembershipDiscount"
          },
          {
            "property": "packages",
            "isCollection": true,
            "className": "OrderPackage"
          },
          {
            "property": "shopCountry",
            "className": "ShopCountry"
          },
          {
            "property": "loyaltyCard",
            "className": "OrderLoyaltyCard"
          },
          {
            "property": "detailedStatus",
            "className": "OrderDetailedStatus"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getOrder",
            "path": "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}",
            "responseModel": "Order",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "orderIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getOrders",
            "path": "/shops/{shopKey}/countries/{countryCode}/orders",
            "isResponseCollection": true,
            "responseModel": "Order",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "updateReferenceKey",
            "operation": "put",
            "operationId": "updateOrderReferenceKey",
            "path": "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}/reference-key",
            "requestModel": "OrderReferenceKey",
            "responseModel": "Order",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "orderId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createOrder",
            "path": "/shops/{shopKey}/countries/{countryCode}/orders",
            "requestModel": "Order",
            "responseModel": "Order",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteOrder",
            "path": "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "orderIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "getStatus",
            "operation": "get",
            "operationId": "getOrderStatus",
            "path": "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}/status",
            "responseModel": "OrderStatus",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "orderIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "createSubscriptionOrder",
            "operation": "post",
            "operationId": "createSubscriptionOrder",
            "path": "/shops/{shopKey}/countries/{countryCode}/orders/subscription-orders",
            "requestModel": "SubscriptionOrder",
            "responseModel": "Order",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getOrderInvoices",
            "operation": "get",
            "operationId": "getOrderInvoices",
            "path": "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}/invoices",
            "responseModel": "OrderInvoice",
            "isResponseCollection": true,
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "orderIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "getOrderInvoice",
            "operation": "get",
            "operationId": "getOrderInvoice",
            "path": "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}/invoices/{invoiceId}",
            "responseModel": "File",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "orderIdentifier",
                "type": "identifier"
              },
              {
                "name": "invoiceId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "getOrderDocuments",
            "operation": "get",
            "operationId": "getOrderDocuments",
            "path": "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}/documents",
            "responseModel": "OrderDocument",
            "isResponseCollection": true,
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "orderIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "getOrderDocument",
            "operation": "get",
            "operationId": "getOrderDocument",
            "path": "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}/documents/{documentId}/file",
            "responseModel": "File",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "orderIdentifier",
                "type": "identifier"
              },
              {
                "name": "documentId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "createOrUpdateLegacyCustomData",
            "operation": "put",
            "operationId": "createOrUpdateOrderLegacyCustomData",
            "path": "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}/legacy-custom-data",
            "requestModel": "CustomData",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "orderIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "triggerManualCapture",
            "operation": "post",
            "operationId": "triggerManualCapture",
            "path": "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}/payment/manual-capture",
            "responseModel": "Order",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "orderIdentifier",
                "type": "identifier"
              }
            ]
          }
        ]
      },
      "OrderAddress": {
        "type": "object",
        "required": [
          "billing",
          "shipping"
        ],
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/CustomerAddress"
          },
          "forward": {
            "$ref": "#/components/schemas/CustomerAddress"
          },
          "shipping": {
            "$ref": "#/components/schemas/CustomerAddress"
          }
        },
        "x-ayObjects": [
          {
            "property": "billing",
            "className": "CustomerAddress"
          },
          {
            "property": "forward",
            "className": "CustomerAddress"
          },
          {
            "property": "shipping",
            "className": "CustomerAddress"
          }
        ]
      },
      "OrderContact": {
        "type": "object",
        "required": [
          "type"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "OrderCost": {
        "type": "object",
        "properties": {
          "appliedFees": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderFee"
            }
          },
          "appliedReductions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderReduction"
            },
            "description": "If the order has an external price, this field will not be included in the response payload."
          },
          "tax": {
            "$ref": "#/components/schemas/OrderTax"
          },
          "withTax": {
            "type": "integer",
            "description": "The price is calculated including taxes and all applicable reductions such as discounts for sale and campaigns (should a campaign key be provdided on the request)."
          },
          "withoutTax": {
            "type": "integer",
            "description": "This price excludes taxes, but also includes all applicable reductions.\nIf the order has an external price, this field becomes optional.\n"
          },
          "withTaxWithMembershipDiscountWithoutServiceCosts": {
            "type": "integer",
            "description": "The price is calculated including taxes and all applicable reductions such as discounts for sale and campaigns (should a campaign key be provdided on the request), and membership discount."
          },
          "withoutTaxWithMembershipDiscount": {
            "type": "integer",
            "description": "This price excludes taxes, but also includes all applicable reductions and membership discount.\nIf the order has an external price, this field will not be included in the response payload.\n"
          },
          "costCapture": {
            "type": "integer",
            "description": "The exact cost captured: order total value - giftcard value - total membership discount"
          },
          "itemGroups": {
            "readOnly": true,
            "additionalProperties": true,
            "nullable": true
          },
          "hasExternalPrices": {
            "readOnly": true,
            "type": "boolean",
            "description": "Indicates whether the order contains external prices.",
            "default": false
          }
        },
        "x-ayObjects": [
          {
            "property": "appliedFees",
            "className": "OrderFee",
            "isCollection": true
          },
          {
            "property": "appliedReductions",
            "className": "OrderReduction",
            "isCollection": true
          },
          {
            "property": "tax",
            "className": "OrderTax"
          }
        ]
      },
      "OrderFee": {
        "type": "object",
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/OrderFeeAmount",
            "description": "If the order has an external price, this field becomes optional."
          },
          "category": {
            "type": "string",
            "description": "Valid values in case of non-external order: [ payment, delivery, percentage_payment, return, additional]\nIf the order has an external price, this field becomes optional and can contain any string value defined by the client.\n"
          },
          "key": {
            "type": "string",
            "readOnly": true,
            "description": "If the order has an external price, this field becomes optional and can contain any string value defined by the client."
          },
          "option": {
            "type": "string"
          },
          "tax": {
            "$ref": "#/components/schemas/OrderTax"
          },
          "invoiceTriggered": {
            "type": "boolean",
            "readOnly": true,
            "description": "Present on the webhook event in which the fee is being invoiced.\nConsumers should treat these as event signals, not persistent state.\n"
          },
          "refundTriggered": {
            "type": "boolean",
            "readOnly": true,
            "description": "Present on the webhook event in which the fee is being refunded.\nConsumers should treat these as event signals, not persistent state.\n"
          }
        },
        "x-ayObjects": [
          {
            "property": "amount",
            "className": "OrderFeeAmount"
          },
          {
            "property": "tax",
            "className": "OrderTax"
          }
        ]
      },
      "OrderFeeAmount": {
        "type": "object",
        "properties": {
          "withoutTax": {
            "type": "integer",
            "description": "If the order has an external price, this field becomes optional."
          },
          "withTax": {
            "type": "integer",
            "description": "If the order has an external price, this field becomes optional."
          }
        }
      },
      "OrderItem": {
        "type": "object",
        "required": [
          "packageId",
          "price",
          "product",
          "status",
          "variant"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "availableQuantity": {
            "type": "integer"
          },
          "basketItemKey": {
            "type": "string"
          },
          "currency": {
            "type": "string",
            "description": "The three character [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#Active_codes) currency code that identifies the currency. The currency is defined on the configuration of the shop, and can be modified in the cloud panel.",
            "pattern": "^([A-Z]{3})$"
          },
          "deliveryForecast": {
            "$ref": "#/components/schemas/OrderItemDeliveryForecast"
          },
          "legacyCustomData": {
            "description": "Custom data added to the order item (legacy feature)"
          },
          "packageId": {
            "type": "integer"
          },
          "price": {
            "$ref": "#/components/schemas/OrderItemPrice"
          },
          "lowestPriorPrice": {
            "$ref": "#/components/schemas/OrderItemLowestPriorPrice",
            "description": "If the order has an external price, this field will not be included in the response payload."
          },
          "product": {
            "$ref": "#/components/schemas/OrderItemProduct"
          },
          "promotion": {
            "$ref": "#/components/schemas/OrderItemPromotion",
            "description": "Order item promotion; will be soon deprecated."
          },
          "promotions": {
            "type": "array",
            "nullable": true,
            "readOnly": true,
            "items": {
              "nullable": true,
              "$ref": "#/components/schemas/OrderItemPromotion"
            },
            "description": "Order item promotions"
          },
          "key": {
            "type": "string"
          },
          "reservationKey": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "description": "Possible values: available, unavailable, deliverable, undeliverable, cancelled, returned."
          },
          "variant": {
            "$ref": "#/components/schemas/OrderItemVariant"
          },
          "warehouseId": {
            "type": "integer",
            "nullable": true
          },
          "itemGroup": {
            "$ref": "#/components/schemas/OrderItemGroup"
          },
          "campaignKey": {
            "type": "string",
            "description": "Reference to the campaign applied to this order"
          },
          "merchant": {
            "$ref": "#/components/schemas/OrderItemMerchant"
          },
          "merchantAdditionalData": {
            "type": "object",
            "description": "Bundle product information",
            "additionalProperties": true,
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the order item is created",
            "example": "2021-09-23T11%3A30%3A58%2B00%3A00"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Timestamp when the order item is updated",
            "example": "2021-09-23T11%3A30%3A58%2B00%3A00"
          },
          "delegatedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Timestamp when the order item was successfully delegated, in Iso8601 format.",
            "example": "2025-10-02T11%3A30%3A58%2B00%3A00"
          },
          "shippedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Timestamp when the order item was shipped, in Iso8601 format.",
            "example": "2025-10-02T11%3A30%3A58%2B00%3A00"
          },
          "cancelledAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Timestamp when the order item was canceled, in Iso8601 format.",
            "example": "2025-10-02T11%3A30%3A58%2B00%3A00"
          },
          "returnedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Timestamp when the order item was returned by the customer and recorded in the system, in Iso8601 format.",
            "example": "2025-10-02T11%3A30%3A58%2B00%3A00"
          }
        },
        "x-ayObjects": [
          {
            "property": "deliveryForecast",
            "className": "OrderItemDeliveryForecast"
          },
          {
            "property": "price",
            "className": "OrderItemPrice"
          },
          {
            "property": "lowestPriorPrice",
            "className": "OrderItemLowestPriorPrice"
          },
          {
            "property": "product",
            "className": "OrderItemProduct"
          },
          {
            "property": "promotion",
            "className": "OrderItemPromotion"
          },
          {
            "property": "variant",
            "className": "OrderItemVariant"
          },
          {
            "property": "itemGroup",
            "className": "OrderItemGroup"
          },
          {
            "property": "merchant",
            "className": "OrderItemMerchant"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "createOrUpdateLegacyCustomData",
            "operation": "put",
            "operationId": "createOrUpdateOrderItemLegacyCustomData",
            "path": "/shops/{shopKey}/countries/{countryCode}/orders/{orderId}/items/{orderItemId}/legacy-custom-data",
            "requestModel": "CustomData",
            "responseModel": "OrderItem",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "orderId",
                "type": "integer"
              },
              {
                "name": "orderItemId",
                "type": "integer"
              }
            ]
          }
        ]
      },
      "OrderItemDeliveryForecast": {
        "type": "object",
        "properties": {
          "deliverable": {
            "$ref": "#/components/schemas/OrderDeliverable"
          },
          "subsequentDelivery": {
            "$ref": "#/components/schemas/OrderSubsequentDelivery"
          }
        },
        "x-ayObjects": [
          {
            "property": "subsequentDelivery",
            "className": "OrderSubsequentDelivery"
          },
          {
            "property": "deliverable",
            "className": "OrderDeliverable"
          }
        ]
      },
      "OrderItemPrice": {
        "type": "object",
        "required": [
          "withTax"
        ],
        "properties": {
          "appliedReductions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderReduction"
            },
            "description": "If the order has an external price, this field will not be included in the response payload."
          },
          "absoluteVoucherReducedPrice": {
            "$ref": "#/components/schemas/OrderItemAbsoluteVoucherReducedPrice",
            "description": "If the order has an external price, this field will not be included in the response payload."
          },
          "reference": {
            "$ref": "#/components/schemas/OrderItemPriceReference",
            "description": "If the order has an external price, this field will not be included in the response payload."
          },
          "tax": {
            "$ref": "#/components/schemas/OrderTax"
          },
          "withTax": {
            "type": "integer"
          },
          "withoutTax": {
            "type": "integer",
            "readOnly": true,
            "description": "If the order has an external price, this field becomes optional."
          },
          "overrideWithoutTax": {
            "type": "integer",
            "description": "If the order has an external price, this field will not be included in the response payload."
          },
          "overrideWithTax": {
            "type": "integer",
            "description": "If the order has an external price, this field will not be included in the response payload."
          },
          "undiscountedWithOutTax": {
            "type": "integer",
            "description": "Un-discounted item price **excluding** taxes\nIf the order has an external price, this field will not be included in the response payload.\n"
          },
          "undiscountedWithTax": {
            "type": "integer",
            "description": "Un-discounted item price **including** taxes\nIf the order has an external price, this field will not be included in the response payload.\n"
          }
        },
        "x-ayObjects": [
          {
            "property": "appliedReductions",
            "className": "OrderReduction",
            "isCollection": true
          },
          {
            "property": "tax",
            "className": "OrderTax"
          },
          {
            "property": "reference",
            "className": "OrderItemPriceReference"
          },
          {
            "property": "absoluteVoucherReducedPrice",
            "className": "OrderItemAbsoluteVoucherReducedPrice"
          }
        ]
      },
      "OrderItemAbsoluteVoucherReducedPrice": {
        "type": "object",
        "properties": {
          "tax": {
            "$ref": "#/components/schemas/OrderTax"
          },
          "withOutTax": {
            "type": "integer",
            "description": "Item absolute voucher discounted price excluding taxes"
          },
          "withTax": {
            "type": "integer",
            "description": "Item absolute voucher discounted price including taxes"
          }
        }
      },
      "OrderItemLowestPriorPrice": {
        "type": "object",
        "nullable": true,
        "description": "The lowest price in the last 30 days.",
        "required": [
          "relativeDifferenceToPrice",
          "withTax"
        ],
        "properties": {
          "relativeDifferenceToPrice": {
            "type": "number"
          },
          "withTax": {
            "type": "integer",
            "description": "Lowest price including taxes"
          }
        }
      },
      "OrderItemPriceReference": {
        "type": "object",
        "properties": {
          "size": {
            "type": "string"
          },
          "unit": {
            "type": "string"
          },
          "withTax": {
            "type": "integer"
          }
        }
      },
      "OrderItemGroup": {
        "type": "object",
        "additionalProperties": false,
        "nullable": true,
        "required": [
          "id",
          "isMainItem",
          "isRequired"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Item group ID",
            "example": "ab123"
          },
          "isMainItem": {
            "type": "boolean",
            "description": "Specifies the main item in the group (true for only one item in a group)",
            "example": true
          },
          "isRequired": {
            "type": "boolean",
            "description": "Specifies if the item is mandatory or optional",
            "example": true
          }
        }
      },
      "OrderItemProduct": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string",
            "description": "The product name.",
            "example": "Blue Shirt"
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderItemProductImage"
            }
          }
        },
        "x-ayObjects": [
          {
            "property": "images",
            "isCollection": true,
            "className": "OrderItemProductImage"
          }
        ]
      },
      "OrderItemProductImage": {
        "type": "object",
        "required": [
          "hash"
        ],
        "properties": {
          "hash": {
            "type": "string"
          }
        }
      },
      "OrderItemPromotion": {
        "type": "object",
        "required": [
          "id",
          "name",
          "version"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "code": {
            "type": "string"
          }
        }
      },
      "OrderItemVariant": {
        "type": "object",
        "properties": {
          "stock": {
            "$ref": "#/components/schemas/OrderItemVariantStock"
          },
          "id": {
            "type": "integer"
          },
          "referenceKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "pattern": "^[a-zA-Z0-9-_.]*$",
            "example": "my-key",
            "description": "External reference set by the client to integrate third party systems."
          }
        },
        "x-ayObjects": [
          {
            "property": "stock",
            "className": "OrderItemVariantStock"
          }
        ]
      },
      "OrderItemVariantStock": {
        "type": "object",
        "required": [
          "supplierId"
        ],
        "properties": {
          "supplierId": {
            "type": "integer"
          }
        }
      },
      "OrderItemMerchant": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The merchant id to which the item belongs."
          },
          "referenceKey": {
            "type": "string",
            "readOnly": true,
            "description": "A merchant reference key the item belongs to."
          }
        }
      },
      "OrderMembershipDiscount": {
        "type": "object",
        "properties": {
          "membershipCardId": {
            "type": "integer"
          },
          "pointsUsed": {
            "type": "integer"
          },
          "reductionValue": {
            "type": "integer"
          },
          "tax": {
            "type": "integer"
          }
        }
      },
      "OrderPackage": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "integer"
          },
          "shipmentKey": {
            "type": "string"
          },
          "carrierKey": {
            "type": "string",
            "nullable": true
          },
          "deliveryDate": {
            "$ref": "#/components/schemas/OrderPackageDeliveryDate"
          },
          "deliveryStatus": {
            "type": "string"
          },
          "shippedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Timestamp when the order item was shipped, in Iso8601 format.",
            "example": "2025-10-02T11%3A30%3A58%2B00%3A00"
          },
          "tracking": {
            "$ref": "#/components/schemas/OrderPackageTracking"
          },
          "returnIdentCode": {
            "type": "string",
            "nullable": true
          }
        },
        "x-ayObjects": [
          {
            "property": "deliveryDate",
            "className": "OrderPackageDeliveryDate"
          },
          {
            "property": "tracking",
            "className": "OrderPackageTracking"
          }
        ]
      },
      "OrderPromotion": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "reduction": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        }
      },
      "OrderPackageTracking": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "OrderPackageDeliveryDate": {
        "type": "object",
        "required": [
          "maximum",
          "minimum"
        ],
        "properties": {
          "maximum": {
            "type": "string"
          },
          "minimum": {
            "type": "string"
          },
          "desired": {
            "type": "string"
          }
        }
      },
      "OrderReduction": {
        "type": "object",
        "properties": {
          "id": {
            "description": "Reduction identifier",
            "type": "string",
            "readOnly": true
          },
          "amount": {
            "$ref": "#/components/schemas/OrderReductionAmount"
          },
          "category": {
            "type": "string",
            "description": "Possible values: sale, campaign, voucher, promotion, and promotionCode"
          },
          "type": {
            "type": "string",
            "description": "Possible values: relative, absolute"
          },
          "code": {
            "description": "Promotion or voucher code (for promotion / voucher reductions)",
            "type": "string",
            "readOnly": true
          },
          "displayName": {
            "description": "Display name (for promotion reduction)",
            "type": "string",
            "readOnly": true
          }
        },
        "x-ayObjects": [
          {
            "property": "amount",
            "className": "OrderReductionAmount"
          }
        ]
      },
      "OrderReductionAmount": {
        "type": "object",
        "required": [
          "absoluteWithTax",
          "relative"
        ],
        "properties": {
          "absoluteWithTax": {
            "type": "integer"
          },
          "relative": {
            "type": "number"
          }
        }
      },
      "OrderTaxWithMandatoryVat": {
        "type": "object",
        "required": [
          "vat"
        ],
        "properties": {
          "vat": {
            "$ref": "#/components/schemas/OrderVat",
            "required": [
              "amount",
              "rate"
            ]
          }
        }
      },
      "OrderTax": {
        "type": "object",
        "required": [
          "vat"
        ],
        "properties": {
          "vat": {
            "$ref": "#/components/schemas/OrderVat"
          }
        },
        "x-ayObjects": [
          {
            "property": "vat",
            "className": "OrderVat"
          }
        ]
      },
      "OrderPayment": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "integer"
          },
          "data": {
            "type": "object",
            "additionalProperties": true
          },
          "key": {
            "type": "string"
          },
          "transactionKey": {
            "type": "string"
          },
          "installment": {
            "type": "array",
            "description": "Details about installments, included as a listing of the values involved in the Installments transaction.",
            "items": {
              "$ref": "#/components/schemas/OrderPaymentInstallment"
            }
          },
          "options": {
            "$ref": "#/components/schemas/OrderPaymentOptions"
          },
          "isGiftCard": {
            "readOnly": true,
            "type": "boolean"
          }
        },
        "x-ayObjects": [
          {
            "property": "installment",
            "className": "OrderPaymentInstallment"
          },
          {
            "property": "options",
            "className": "OrderPaymentOptions"
          }
        ]
      },
      "OrderPaymentInstallment": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "amount": {
            "type": "integer"
          },
          "type": {
            "type": "string",
            "enum": [
              "annualInterest",
              "firstInstallment",
              "subsequentInstallments"
            ],
            "x-enumName": "OrderPaymentInstallmentType"
          }
        }
      },
      "OrderPaymentOptions": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "countOfInstallments": {
            "type": "integer",
            "description": "Number of installments chosen by the Customer for the Order"
          },
          "hasPaybreak": {
            "type": "boolean",
            "description": "If true, the Customer elected to have a delay in payment capture"
          }
        }
      },
      "OrderBillingStatus": {
        "type": "object",
        "required": [
          "reason"
        ],
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "billing_completed",
              "billing_partially_refunded",
              "billing_refunded",
              "billing_payment_cancelled"
            ],
            "x-enumName": "BillingStatus",
            "description": "Target order billing status value",
            "example": "billing_partially_refunded"
          },
          "reason": {
            "type": "string",
            "description": "A string describing the business case behind the update. Kept in the logs for auditing reasons.",
            "example": "The order is pending payment."
          },
          "items": {
            "type": "array",
            "description": "An list of order items and their new target billing status.",
            "items": {
              "$ref": "#/components/schemas/OrderItemBillingStatus"
            }
          }
        },
        "x-ayObjects": [
          {
            "property": "items",
            "isCollection": true,
            "className": "OrderItemBillingStatus"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "updateOrderBillingStatus",
            "operation": "patch",
            "operationId": "updateOrderBillingStatus",
            "path": "/shops/{shopKey}/countries/{countryCode}/orders/{orderIdentifier}/billing-status",
            "requestModel": "OrderBillingStatus",
            "responseModel": "Order",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "orderId",
                "type": "identifier"
              }
            ]
          }
        ]
      },
      "OrderItemBillingStatus": {
        "type": "object",
        "required": [
          "id",
          "code"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Order item id"
          },
          "code": {
            "$ref": "#/components/schemas/OrderBillingStatus/properties/code"
          }
        }
      },
      "OrderReferenceKey": {
        "type": "object",
        "required": [
          "referenceKey"
        ],
        "properties": {
          "referenceKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "pattern": "^[0-9a-zA-Z\\-\\\\_\\.\\@]*$",
            "description": "External reference set by the client to integrate a third party system."
          }
        }
      },
      "OrderShipping": {
        "type": "object",
        "properties": {
          "policy": {
            "type": "string"
          },
          "deliveredOn": {
            "type": "string",
            "pattern": "[0-9]{4}\\-[0-9]{2}\\-[0-9]{2}"
          },
          "deliveryCosts": {
            "type": "integer",
            "description": "If the order has an external price, this field will not be included in the response payload."
          },
          "expressDeliveryCosts": {
            "type": "integer",
            "description": "If the order has an external price, this field will not be included in the response payload."
          }
        }
      },
      "OrderVoucher": {
        "type": "object",
        "required": [
          "code",
          "value"
        ],
        "properties": {
          "id": {
            "type": "integer"
          },
          "voucherId": {
            "type": "integer",
            "readOnly": true
          },
          "applicableItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderVoucherItem"
            }
          },
          "code": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "absolute",
              "relative"
            ],
            "x-enumName": "VoucherType"
          },
          "value": {
            "type": "integer"
          }
        },
        "x-ayObjects": [
          {
            "property": "applicableItems",
            "className": "OrderVoucherItem",
            "isCollection": true
          }
        ]
      },
      "OrderVoucherItem": {
        "type": "object",
        "properties": {
          "isApplied": {
            "type": "boolean",
            "example": true
          },
          "key": {
            "type": "string"
          }
        }
      },
      "OrderSubsequentDelivery": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "enum": [
              "endOfJanuary",
              "endOfFebruary",
              "endOfMarch",
              "endOfApril",
              "endOfMay",
              "endOfJune",
              "endOfJuly",
              "endOfAugust",
              "endOfSeptember",
              "endOfOctober",
              "endOfNovember",
              "endOfDecember",
              "midOfJanuary",
              "midOfFebruary",
              "midOfMarch",
              "midOfApril",
              "midOfMay",
              "midOfJune",
              "midOfJuly",
              "midOfAugust",
              "midOfSeptember",
              "midOfOctober",
              "midOfNovember",
              "midOfDecember",
              "easter",
              "christmas",
              "available",
              "directShipping",
              "outsol"
            ],
            "x-enumName": "OrderSubsequentDeliveryKey"
          }
        }
      },
      "OrderDeliverable": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          }
        }
      },
      "OrderVat": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number"
          },
          "rate": {
            "type": "number"
          }
        }
      },
      "OrderDetailedStatus": {
        "type": "object",
        "required": [
          "order",
          "shipping",
          "billing"
        ],
        "properties": {
          "order": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OrderDetailedStatusItem"
              },
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string",
                    "description": "Unique identifier of the state. Possible values: order_created, order_open, order_pended, order_confirmed, order_delegated, order_shipped, order_invoiced, order_aborted, order_cancelled, order_imported, order_invoice_error."
                  }
                }
              }
            ]
          },
          "shipping": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OrderDetailedStatusItem"
              },
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string",
                    "description": "Unique identifier of the state. Possible values: shipping_open, shipping_ordered, shipping_delivered, shipping_cancelled, shipping_undeliverable, shipping_partially_delivered."
                  }
                }
              }
            ]
          },
          "billing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OrderDetailedStatusItem"
              },
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string",
                    "description": "Unique identifier of the state. Possible values: billing_open, billing_pending, billing_payment_pending, billing_completed, billing_payment_aborted, billing_payment_cancelled, billing_refunded, billing_denied."
                  }
                }
              }
            ]
          }
        },
        "x-ayObjects": [
          {
            "property": "order",
            "className": "OrderDetailedStatusItem"
          },
          {
            "property": "shipping",
            "className": "OrderDetailedStatusItem"
          },
          {
            "property": "billing",
            "className": "OrderDetailedStatusItem"
          }
        ]
      },
      "OrderDetailedStatusItem": {
        "type": "object",
        "required": [
          "code",
          "name"
        ],
        "properties": {
          "code": {
            "type": "string",
            "description": "Unique identifier of the state"
          },
          "name": {
            "type": "string",
            "description": "Name of the state"
          }
        }
      },
      "OrderStatus": {
        "type": "object",
        "required": [
          "status",
          "detailedStatus"
        ],
        "properties": {
          "status": {
            "$ref": "#/components/schemas/Order/properties/status"
          },
          "detailedStatus": {
            "$ref": "#/components/schemas/OrderDetailedStatus"
          }
        },
        "x-ayObjects": [
          {
            "property": "detailedStatus",
            "className": "OrderDetailedStatus"
          }
        ]
      },
      "OrderInvoice": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "PDF document id (different from invoice identifier)"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "type": {
            "type": "string",
            "example": "invoice",
            "enum": [
              "invoice",
              "partial_invoice",
              "corrective_invoice",
              "merchant_invoice",
              "merchant_partial_invoice",
              "merchant_corrective_invoice",
              "custom_corrective_invoice",
              "historical_corrective_invoice",
              "praz",
              "shipment_return_document"
            ],
            "x-enumName": "InvoiceType",
            "description": "Document types"
          },
          "invoice": {
            "$ref": "#/components/schemas/Invoice"
          },
          "available": {
            "type": "boolean",
            "example": true
          }
        },
        "x-ayObjects": [
          {
            "property": "invoice",
            "className": "Invoice"
          }
        ]
      },
      "OrderDocument": {
        "type": "object",
        "required": [
          "id",
          "availabilityStatus",
          "createdAt",
          "format",
          "type"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Document id (distinct from order identifiers)."
          },
          "availabilityStatus": {
            "type": "boolean",
            "description": "Whether the document content can be fetched."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2026-03-19T14:30:00+00:00"
          },
          "format": {
            "type": "string",
            "example": "pdf",
            "enum": [
              "pdf",
              "eml"
            ],
            "x-enumName": "OrderDocumentFormat",
            "description": "File format of the document (`pdf` for PDF binaries, `eml` for email messages)."
          },
          "type": {
            "type": "string",
            "example": "merchant_partial_invoice",
            "enum": [
              "merchant_partial_invoice",
              "email_shipment"
            ],
            "x-enumName": "OrderDocumentType",
            "description": "Document category. PDF-backed types (for example `merchant_partial_invoice`) return PDF bytes from the show endpoint, same as [order invoices](/en/core-documentation/checkout-guide/features/transactions-and-orders#get-order-invoice).\nEmail-backed types (for example `email_shipment`) are built from JSON stored at the document's storage path and returned as `message/rfc822`.\n"
          }
        }
      },
      "Invoice": {
        "type": "object",
        "properties": {
          "number": {
            "type": "integer",
            "nullable": true,
            "example": 5,
            "description": "Invoice identifier number"
          },
          "fullNumber": {
            "type": "string",
            "nullable": true,
            "example": "ayou-24-5",
            "description": "Invoice identifier number that customer views on Order page"
          }
        }
      },
      "OrderLoyaltyCard": {
        "type": "object",
        "required": [
          "points",
          "provider"
        ],
        "properties": {
          "cardNumber": {
            "type": "string",
            "description": "The loyalty card number"
          },
          "points": {
            "type": "integer",
            "minimum": 0,
            "description": "The number of points received for the purchase"
          },
          "provider": {
            "type": "string",
            "pattern": "[A-Za-z]",
            "description": "The provider of the loyalty card"
          }
        }
      },
      "OrderChannel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Internal channel unique id",
            "example": 123,
            "readOnly": true
          },
          "key": {
            "type": "string",
            "description": "Channel unique key",
            "example": "channel-key",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "description": "Channel name",
            "example": "Channel name",
            "readOnly": true
          },
          "type": {
            "type": "string",
            "description": "Not allowed to be modified after channel is used for an order.",
            "example": [
              "marketplace",
              "in_store"
            ],
            "readOnly": true
          }
        }
      },
      "SubscriptionOrder": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "address",
          "items",
          "customerId",
          "paymentTypes",
          "subscriptionId"
        ],
        "properties": {
          "additionalMetaData": {
            "type": "object",
            "additionalProperties": true
          },
          "address": {
            "$ref": "#/components/schemas/SubscriptionOrderAddress"
          },
          "application": {
            "$ref": "#/components/schemas/SubscriptionOrderApplication"
          },
          "legacyCustomData": {
            "type": "object",
            "additionalProperties": true
          },
          "customerId": {
            "minimum": 1,
            "type": "integer"
          },
          "ipAddress": {
            "type": "string"
          },
          "items": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/SubscriptionOrderItem"
            }
          },
          "membershipCard": {
            "$ref": "#/components/schemas/SubscriptionOrderMembershipCard"
          },
          "paymentTypes": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/SubscriptionOrderPaymentType"
            }
          },
          "subscriptionId": {
            "minLength": 1,
            "type": "string"
          },
          "userAgent": {
            "type": "string"
          },
          "voucher": {
            "$ref": "#/components/schemas/SubscriptionOrderVoucher"
          },
          "carrier": {
            "$ref": "#/components/schemas/SubscriptionOrderCarrier"
          },
          "referenceKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "pattern": "^[0-9a-zA-Z\\-\\\\_\\.\\@]*$",
            "description": "External reference set by the client to integrate 3rd party system"
          }
        },
        "x-ayObjects": [
          {
            "property": "address",
            "className": "SubscriptionOrderAddress"
          },
          {
            "property": "application",
            "className": "SubscriptionOrderApplication"
          },
          {
            "property": "items",
            "isCollection": true,
            "className": "SubscriptionOrderItem"
          },
          {
            "property": "membershipCard",
            "className": "SubscriptionOrderMembershipCard"
          },
          {
            "property": "paymentTypes",
            "isCollection": true,
            "className": "SubscriptionOrderPaymentType"
          },
          {
            "property": "voucher",
            "className": "SubscriptionOrderVoucher"
          },
          {
            "property": "carrier",
            "className": "SubscriptionOrderCarrier"
          }
        ]
      },
      "SubscriptionOrderAddress": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "shipping"
        ],
        "properties": {
          "shipping": {
            "$ref": "#/components/schemas/SubscriptionOrderAddressInstance"
          },
          "billing": {
            "$ref": "#/components/schemas/SubscriptionOrderAddressInstance"
          }
        },
        "x-ayObjects": [
          {
            "property": "shipping",
            "className": "SubscriptionOrderAddressInstance"
          },
          {
            "property": "billing",
            "className": "SubscriptionOrderAddressInstance"
          }
        ]
      },
      "SubscriptionOrderAddressInstance": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "city",
          "countryCode",
          "firstName",
          "gender",
          "houseNumber",
          "lastName",
          "street"
        ],
        "properties": {
          "additional": {
            "maxLength": 60,
            "type": "string"
          },
          "city": {
            "maxLength": 40,
            "minLength": 1,
            "pattern": "^[0-9/\\s\\-\\%\\?!_=+()\\:.,\"´'`^&A-Za-zªµºÀ-ÖØ-öø-ˁͶͷͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝώ-Ὗᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌΐ-ῐΊ-ῖῠ-Ῥῲ-ῴῶ-ῼⱠ-ⳤͰ-Ֆ¿-ʯＡ-Ｚａ-ｚ-]*$",
            "type": "string"
          },
          "countryCode": {
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "firstName": {
            "maxLength": 30,
            "minLength": 1,
            "pattern": "^[0-9/\\s\\-\\%\\?!_=+()\\:.,\"´''´'^&A-Za-zªµºÀ-ÖØ-öø-ˁͶͷͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝώ-Ὗᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌΐ-ῐΊ-ῖῠ-Ῥῲ-ῴῶ-ῼⱠ-ⳤͰ-Ֆ¿-ʯＡ-Ｚａ-ｚ-]*$",
            "type": "string"
          },
          "forwardToCollectionPoint": {
            "type": "boolean"
          },
          "gender": {
            "$ref": "#/components/schemas/Customer/properties/gender"
          },
          "houseNumber": {
            "maxLength": 30,
            "pattern": "^[0-9/\\s\\-\\%\\?!_=+()\\:.,\"´'`^&A-Za-zªµºÀ-ÖØ-öø-ˁͶͷͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝώ-Ὗᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌΐ-ῐΊ-ῖῠ-Ῥῲ-ῴῶ-ῼⱠ-ⳤͰ-Ֆ¿-ʯＡ-Ｚａ-ｚ-]*$",
            "type": "string"
          },
          "lastName": {
            "maxLength": 50,
            "minLength": 1,
            "pattern": "^[0-9/\\s\\-\\%\\?!_=+()\\:.,\"´''´'^&A-Za-zªµºÀ-ÖØ-öø-ˁͶͷͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝώ-Ὗᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌΐ-ῐΊ-ῖῠ-Ῥῲ-ῴῶ-ῼⱠ-ⳤͰ-Ֆ¿-ʯＡ-Ｚａ-ｚ-]*$",
            "type": "string"
          },
          "phone": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 40,
                "minLength": 1,
                "pattern": "^[0-9()+-/ ]*$",
                "nullable": true
              },
              {
                "$ref": "#/components/schemas/Customer/properties/phone/anyOf/1",
                "nullable": true
              }
            ]
          },
          "state": {
            "maxLength": 60,
            "minLength": 1,
            "pattern": "^[0-9/\\s\\-\\%\\?!_=+()\\:.,\"´'`^&A-Za-zªµºÀ-ÖØ-öø-ˁͶͷͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝώ-Ὗᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌΐ-ῐΊ-ῖῠ-Ῥῲ-ῴῶ-ῼⱠ-ⳤͰ-Ֆ¿-ʯＡ-Ｚａ-ｚ-]*$",
            "type": "string",
            "nullable": true
          },
          "street": {
            "maxLength": 60,
            "minLength": 1,
            "pattern": "^[0-9/\\s\\-\\%\\?!_=+()\\:.,\"´'`^&A-Za-zªµºÀ-ÖØ-öø-ˁͶͷͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝώ-Ὗᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌΐ-ῐΊ-ῖῠ-Ῥῲ-ῴῶ-ῼⱠ-ⳤͰ-Ֆ¿-ʯＡ-Ｚａ-ｚ-]*$",
            "type": "string"
          },
          "title": {
            "maxLength": 30,
            "pattern": "^[0-9/\\s\\-\\%\\?!_=+()\\:.,\"´'`^&A-Za-zªµºÀ-ÖØ-öø-ˁͶͷͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝώ-Ὗᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌΐ-ῐΊ-ῖῠ-Ῥῲ-ῴῶ-ῼⱠ-ⳤͰ-Ֆ¿-ʯＡ-Ｚａ-ｚ-]*$",
            "type": "string",
            "nullable": true
          },
          "zipCode": {
            "pattern": "^[0-9/\\s\\-\\%\\?!_=+()\\:.,\"´''´'^&A-Za-zªµºÀ-ÖØ-öø-ˁͶͷͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝώ-Ὗᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌΐ-ῐΊ-ῖῠ-Ῥῲ-ῴῶ-ῼⱠ-ⳤͰ-Ֆ¿-ʯＡ-Ｚａ-ｚ-]*$",
            "type": "string",
            "nullable": true
          },
          "parcelShop": {
            "$ref": "#/components/schemas/SubscriptionOrderAddressInstanceParcelShop"
          }
        },
        "x-ayObjects": [
          {
            "property": "parcelShop",
            "className": "SubscriptionOrderAddressInstanceParcelShop"
          }
        ]
      },
      "SubscriptionOrderAddressInstanceParcelShop": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "description",
          "type"
        ],
        "properties": {
          "id": {
            "pattern": "^[0-9/\\s\\-\\%\\?!_=+()\\:.,\"´'`^&A-Za-zªµºÀ-ÖØ-öø-ˁͶͷͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝώ-Ὗᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌΐ-ῐΊ-ῖῠ-Ῥῲ-ῴῶ-ῼⱠ-ⳤͰ-Ֆ¿-ʯＡ-Ｚａ-ｚ-]*$",
            "type": "string"
          },
          "customerId": {
            "pattern": "^[0-9/\\s\\-\\%\\?!_=+()\\:.,\"´''´'^&A-Za-zªµºÀ-ÖØ-öø-ˁͶͷͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝώ-Ὗᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌΐ-ῐΊ-ῖῠ-Ῥῲ-ῴῶ-ῼⱠ-ⳤͰ-Ֆ¿-ʯＡ-Ｚａ-ｚ-]*$",
            "type": "string",
            "nullable": true
          },
          "delegationId": {
            "pattern": "^[0-9/\\s\\-\\%\\?!_=+()\\:.,\"´'`^&A-Za-zªµºÀ-ÖØ-öø-ˁͶͷͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝώ-Ὗᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌΐ-ῐΊ-ῖῠ-Ῥῲ-ῴῶ-ῼⱠ-ⳤͰ-Ֆ¿-ʯＡ-Ｚａ-ｚ-]*$",
            "type": "string",
            "nullable": true
          },
          "description": {
            "pattern": "^[0-9/\\s\\-\\%\\?!_=+()\\:.,\"´'`^&A-Za-zªµºÀ-ÖØ-öø-ˁͶͷͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝώ-Ὗᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌΐ-ῐΊ-ῖῠ-Ῥῲ-ῴῶ-ῼⱠ-ⳤͰ-Ֆ¿-ʯＡ-Ｚａ-ｚ-]*$",
            "type": "string"
          },
          "type": {
            "pattern": "^[0-9/\\s\\-\\%\\?!_=+()\\:.,\"´'`^&A-Za-zªµºÀ-ÖØ-öø-ˁͶͷͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝώ-Ὗᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌΐ-ῐΊ-ῖῠ-Ῥῲ-ῴῶ-ῼⱠ-ⳤͰ-Ֆ¿-ʯＡ-Ｚａ-ｚ-]*$",
            "type": "string"
          }
        }
      },
      "SubscriptionOrderApplication": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "checkout": {
            "type": "string"
          },
          "device": {
            "enum": [
              "mobile",
              "desktop",
              "app",
              "tablet"
            ],
            "type": "string",
            "x-enumName": "SubscriptionOrderApplicationDevice"
          }
        }
      },
      "SubscriptionOrderCarrier": {
        "type": "object",
        "required": [
          "shippingPolicyKey",
          "carrierKey"
        ],
        "properties": {
          "shippingPolicyKey": {
            "type": "string"
          },
          "carrierKey": {
            "type": "string"
          },
          "deliveryDate": {
            "$ref": "#/components/schemas/SubscriptionOrderCarrierDeliveryDate"
          }
        },
        "x-ayObjects": [
          {
            "property": "deliveryDate",
            "className": "SubscriptionOrderCarrierDeliveryDate"
          }
        ]
      },
      "SubscriptionOrderCarrierDeliveryDate": {
        "type": "object",
        "required": [
          "minimum",
          "maximum"
        ],
        "properties": {
          "maximum": {
            "format": "date",
            "type": "string"
          },
          "minimum": {
            "format": "date",
            "type": "string"
          }
        }
      },
      "SubscriptionOrderItem": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "variantId"
        ],
        "properties": {
          "additionalData": {
            "additionalProperties": true,
            "type": "object"
          },
          "categoryName": {
            "type": "string"
          },
          "initial": {
            "$ref": "#/components/schemas/SubscriptionOrderItemInitial"
          },
          "itemGroup": {
            "$ref": "#/components/schemas/OrderItemGroup"
          },
          "promotion": {
            "$ref": "#/components/schemas/SubscriptionOrderItemPromotion"
          },
          "variantId": {
            "minimum": 1,
            "type": "integer"
          }
        },
        "x-ayObjects": [
          {
            "property": "initial",
            "className": "SubscriptionOrderItemInitial"
          },
          {
            "property": "itemGroup",
            "className": "OrderItemGroup"
          },
          {
            "property": "promotion",
            "className": "SubscriptionOrderItemPromotion"
          }
        ]
      },
      "SubscriptionOrderItemInitial": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "merchantId": {
            "minimum": 1,
            "type": "integer"
          },
          "merchantVariantId": {
            "minLength": 1,
            "type": "string"
          },
          "quantity": {
            "minimum": 1,
            "type": "integer"
          },
          "size": {
            "type": "string"
          },
          "unitCost": {
            "minimum": 1,
            "type": "integer"
          }
        }
      },
      "SubscriptionOrderItemPromotion": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "code": {
            "type": "string"
          }
        }
      },
      "SubscriptionOrderMembershipCard": {
        "type": "object",
        "required": [
          "type",
          "number"
        ],
        "additionalProperties": false,
        "properties": {
          "number": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        }
      },
      "SubscriptionOrderPaymentType": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "authorizedValue",
          "type",
          "transactionId",
          "confirmationData"
        ],
        "properties": {
          "authorizedValue": {
            "type": "integer"
          },
          "confirmationData": {
            "$ref": "#/components/schemas/SubscriptionOrderPaymentTypeConfirmationData"
          },
          "primaryPaymentMerchantKey": {
            "type": "string",
            "nullable": true
          },
          "transactionId": {
            "minLength": 1,
            "pattern": "^[0-9/\\s\\-\\%\\?!_=+()\\:.,\"´''´'^&A-Za-zªµºÀ-ÖØ-öø-ˁͶͷͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝώ-Ὗᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌΐ-ῐΊ-ῖῠ-Ῥῲ-ῴῶ-ῼⱠ-ⳤͰ-Ֆ¿-ʯＡ-Ｚａ-ｚ-]*$",
            "type": "string"
          },
          "type": {
            "pattern": "^[0-9/\\s\\-\\%\\?!_=+()\\:.,\"´''´'^&A-Za-zªµºÀ-ÖØ-öø-ˁͶͷͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝώ-Ὗᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌΐ-ῐΊ-ῖῠ-Ῥῲ-ῴῶ-ῼⱠ-ⳤͰ-Ֆ¿-ʯＡ-Ｚａ-ｚ-]*$",
            "type": "string",
            "nullable": true
          }
        },
        "x-ayObjects": [
          {
            "property": "confirmationData",
            "className": "SubscriptionOrderPaymentTypeConfirmationData"
          }
        ]
      },
      "SubscriptionOrderPaymentTypeConfirmationData": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "subscriptionPaymentReference"
        ],
        "properties": {
          "amount": {
            "type": "number"
          },
          "apiVersion": {
            "minLength": 1,
            "type": "string"
          },
          "authorizationId": {
            "minLength": 1,
            "type": "string"
          },
          "authorizedDate": {
            "minLength": 1,
            "type": "string"
          },
          "chargePermissionId": {
            "minLength": 1,
            "type": "string"
          },
          "checkoutId": {
            "minLength": 1,
            "type": "string"
          },
          "creditCardBrand": {
            "type": "string",
            "nullable": true
          },
          "descriptor": {
            "minLength": 1,
            "type": "string"
          },
          "expirationDate": {
            "minLength": 1,
            "type": "string"
          },
          "giftCardCode": {
            "minLength": 1,
            "type": "string"
          },
          "giftCardPin": {
            "type": "string"
          },
          "isRegularCustomer": {
            "type": "boolean"
          },
          "merchantAccount": {
            "minLength": 1,
            "type": "string"
          },
          "orderId": {
            "minLength": 1,
            "type": "string"
          },
          "orderNumber": {
            "minLength": 1,
            "type": "string"
          },
          "payId": {
            "minLength": 1,
            "type": "string"
          },
          "paymentMeans": {
            "additionalProperties": true,
            "type": "object",
            "nullable": true
          },
          "paymentPurpose": {
            "type": "string",
            "nullable": true
          },
          "paymentSubType": {
            "minLength": 1,
            "type": "string"
          },
          "profileId": {
            "minLength": 1,
            "type": "string",
            "nullable": true
          },
          "pspReference": {
            "minLength": 1,
            "type": "string"
          },
          "serial": {
            "type": "integer"
          },
          "subscriptionPaymentReference": {
            "type": "string"
          },
          "success": {
            "type": "boolean"
          },
          "transactionId": {
            "minLength": 1,
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "userData": {
            "additionalProperties": true,
            "type": "object"
          },
          "XID": {
            "items": {
              "minLength": 1,
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          }
        }
      },
      "SubscriptionOrderVoucher": {
        "type": "object",
        "required": [
          "code"
        ],
        "properties": {
          "code": {
            "type": "string"
          }
        }
      },
      "Shipment": {
        "type": "object",
        "required": [
          "shopKey",
          "countryCode",
          "carrier",
          "deliveryDate",
          "items",
          "orderId",
          "shipmentKey"
        ],
        "properties": {
          "shopKey": {
            "type": "string",
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9]*$",
            "example": "ms",
            "description": "A key that uniquely identifies the shop within the tenant's ecosystem."
          },
          "countryCode": {
            "type": "string",
            "minLength": 1,
            "description": "ISO 3166 alpha 2 country code; use shop country ID instead of country code when a country is ambiguous within a shop"
          },
          "carrier": {
            "type": "string",
            "minLength": 1,
            "description": "Defines the carrier key used, e.g. DHL",
            "example": "Hermes"
          },
          "deliveryDate": {
            "type": "string",
            "minLength": 1,
            "format": "date-time",
            "description": "Defines the timestamp of the package leaving the warehouse",
            "example": "2021-09-23T11%3A30%3A58%2B00%3A00"
          },
          "items": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/ShipmentOrderItem"
            },
            "description": "Collection of items shipped"
          },
          "orderId": {
            "type": "integer",
            "description": "Unique identity of the order the shipment was part of"
          },
          "returnIdentCode": {
            "type": "string",
            "description": "Unique ID generated for product return (in case the customer prefers to return the product in later point of time)"
          },
          "shipmentKey": {
            "type": "string",
            "minLength": 1,
            "description": "A key that is assigned to uniquely identify a Shipment"
          },
          "merchantReferenceKey": {
            "type": "string",
            "description": "Reference key of the merchant to which the shipment belongs to."
          }
        },
        "x-ayObjects": [
          {
            "property": "items",
            "isCollection": true,
            "className": "ShipmentOrderItem"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createShipment",
            "path": "/fulfillment/shipments",
            "requestModel": "Shipment",
            "headers": [
              {
                "name": "X-Company-Id",
                "alias": "companyId",
                "type": "integer",
                "required": false
              }
            ]
          }
        ]
      },
      "ShipmentOrderItem": {
        "type": "object",
        "required": [
          "orderItemId",
          "returnKey"
        ],
        "properties": {
          "orderItemId": {
            "type": "integer"
          },
          "returnKey": {
            "type": "string",
            "minLength": 1
          }
        }
      },
      "WebhookProducerEvent": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "description": "Event ID.",
            "minimum": 1,
            "maximum": 2147483647,
            "example": 1
          },
          "name": {
            "type": "string",
            "description": "Event name.",
            "minLength": 1,
            "maxLength": 50,
            "pattern": "^[a-z0-9_.\\-]+$",
            "example": "customer-created"
          },
          "description": {
            "type": "string",
            "description": "Human-readable explanation of when the event is emitted.",
            "minLength": 1,
            "example": "The event occurs whenever a new customer is registered or connected via a social network on the checkout application."
          },
          "targetSchema": {
            "description": "Subset of JSON Schema describing validated fields present in webhook payloads for this event.",
            "type": "object",
            "required": [
              "type",
              "properties"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "object"
                ],
                "x-enumName": "WebhookProducerEventJsonSchemaRootType",
                "description": "Root JSON Schema `type`; event target schemas (`targetSchema`) are always objects.",
                "example": "object"
              },
              "properties": {
                "type": "object",
                "additionalProperties": {
                  "type": "object",
                  "required": [
                    "type"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "string",
                        "number",
                        "integer",
                        "boolean",
                        "array",
                        "object"
                      ],
                      "x-enumName": "WebhookProducerEventJsonSchemaPropertyType",
                      "description": "Allowed JSON Schema `type` values for properties inside a `targetSchema` object.",
                      "example": "integer"
                    }
                  },
                  "additionalProperties": true
                },
                "minProperties": 1,
                "description": "Map of property names to schemas describing each field in the event payload."
              },
              "required": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "uniqueItems": true,
                "minItems": 1,
                "description": "Property names that are required in the target payload."
              }
            },
            "additionalProperties": true
          }
        }
      },
      "WebhookProducer": {
        "type": "object",
        "description": "Namespace for webhook operations.\n",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the webhook producer.\n"
          }
        },
        "x-ayOperations": [
          {
            "methodName": "allEvents",
            "operation": "get",
            "operationId": "getWebhookProducerEvents",
            "path": "/webhooks/producers/{producerIdentifier}/events",
            "isResponseCollection": true,
            "responseModel": "WebhookProducerEvent",
            "parameters": [
              {
                "name": "producerIdentifier",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "allSubscriptions",
            "operation": "get",
            "operationId": "getWebhookProducerSubscriptions",
            "path": "/webhooks/producers/{producerIdentifier}/subscriptions",
            "isResponseCollection": true,
            "responseModel": "WebhookProducerSubscription",
            "parameters": [
              {
                "name": "producerIdentifier",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "createSubscription",
            "operation": "post",
            "operationId": "createWebhookProducerSubscription",
            "path": "/webhooks/producers/{producerIdentifier}/subscriptions",
            "requestModel": "WebhookProducerSubscription",
            "responseModel": "WebhookProducerSubscription",
            "parameters": [
              {
                "name": "producerIdentifier",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getSubscription",
            "operation": "get",
            "operationId": "getWebhookProducerSubscription",
            "path": "/webhooks/producers/{producerIdentifier}/subscriptions/{subscriptionId}",
            "responseModel": "WebhookProducerSubscription",
            "parameters": [
              {
                "name": "producerIdentifier",
                "type": "string"
              },
              {
                "name": "subscriptionId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "updateSubscription",
            "operation": "put",
            "operationId": "updateWebhookProducerSubscription",
            "path": "/webhooks/producers/{producerIdentifier}/subscriptions/{subscriptionId}",
            "requestModel": "WebhookProducerSubscription",
            "responseModel": "WebhookProducerSubscription",
            "parameters": [
              {
                "name": "producerIdentifier",
                "type": "string"
              },
              {
                "name": "subscriptionId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "deleteSubscription",
            "operation": "delete",
            "operationId": "deleteWebhookProducerSubscription",
            "path": "/webhooks/producers/{producerIdentifier}/subscriptions/{subscriptionId}",
            "parameters": [
              {
                "name": "producerIdentifier",
                "type": "string"
              },
              {
                "name": "subscriptionId",
                "type": "integer"
              }
            ]
          }
        ]
      },
      "WebhookProducerSubscription": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "eventName",
          "url"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "description": "Subscription ID.",
            "minimum": 1,
            "maximum": 2147483647,
            "example": 1
          },
          "externalId": {
            "type": "string",
            "nullable": true,
            "description": "Identifier in an external system; must be unique per producer when set.",
            "minLength": 1,
            "maxLength": 255,
            "example": "ext-sub-1"
          },
          "eventName": {
            "type": "string",
            "description": "Event name this subscription listens to.",
            "minLength": 1,
            "maxLength": 50,
            "pattern": "^[a-z0-9_.\\-]+$",
            "example": "customer-created"
          },
          "url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "Delivery URL including scheme (HTTP or HTTPS).",
            "example": "https://consumer.example.com/hooks"
          },
          "target": {
            "type": "object",
            "additionalProperties": true,
            "minProperties": 1,
            "description": "Subscription scope context (for example company or shop country identifiers) used for routing and filtering.",
            "example": {
              "companyId": 1,
              "shopCountryId": 2
            }
          },
          "enabled": {
            "type": "boolean",
            "default": true,
            "x-isBoolean": true,
            "x-isTrueDefault": true,
            "description": "When false, webhooks are not delivered until re-enabled.",
            "example": true
          },
          "disabledReason": {
            "type": "string",
            "nullable": true,
            "readOnly": true,
            "enum": [
              "max_suspensions"
            ],
            "x-enumName": "WebhookProducerSubscriptionDisabledReason",
            "description": "Set when the subscription was automatically disabled (for example due to excessive delivery failures). The only sentinel value exposed today is `max_suspensions`.",
            "example": "max_suspensions"
          },
          "auth": {
            "allOf": [
              {
                "$ref": "#/components/schemas/WebhookProducerSubscriptionBasicAuth"
              }
            ]
          },
          "customHeaders": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "minProperties": 1,
            "description": "Extra HTTP headers attached to webhook requests.",
            "example": {
              "X-Integration-Id": "acme-webhooks"
            }
          },
          "rpm": {
            "type": "integer",
            "description": "Maximum delivery requests per minute for this subscription.",
            "minimum": 1,
            "maximum": 2147483647,
            "example": 60
          },
          "suspendedUntil": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "When set, deliveries are deferred until after this timestamp.",
            "example": "2024-09-30T09:31:43.235Z"
          },
          "email": {
            "type": "string",
            "format": "email",
            "description": "Notification email (for example when a subscription becomes suspended).",
            "example": "alerts@biz.example"
          },
          "isInternal": {
            "type": "boolean",
            "description": "When true, the subscription is used for a managed integration path. When false, notifications are sent to the HTTPS URL you configure in `url`.",
            "example": false
          }
        },
        "x-ayObjects": [
          {
            "property": "auth",
            "className": "WebhookProducerSubscriptionBasicAuth"
          }
        ]
      },
      "WebhookProducerSubscriptionBasicAuth": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "username",
          "password"
        ],
        "properties": {
          "username": {
            "type": "string",
            "minLength": 1,
            "description": "Username for HTTP Basic authentication when invoking the webhook URL.",
            "example": "admin"
          },
          "password": {
            "type": "string",
            "minLength": 1,
            "description": "Password for HTTP Basic authentication when invoking the webhook URL.",
            "example": "12345"
          }
        },
        "description": "Optional HTTP Basic authentication used when delivering webhooks."
      },
      "WebhookEvent": {
        "type": "object",
        "properties": {
          "event": {
            "type": "string",
            "readOnly": true,
            "example": "customer-created",
            "description": "Name of the hook event."
          },
          "version": {
            "type": "integer",
            "readOnly": true,
            "description": "The version of the hook.",
            "example": 1
          },
          "description": {
            "type": "string",
            "readOnly": true,
            "description": "Explaination for the hook.",
            "example": "Called when a customer is created."
          },
          "isDeprecated": {
            "type": "boolean",
            "readOnly": true,
            "description": "The webhook event is deprecated and is not allowed for new subscriptions.",
            "example": false
          },
          "isBlocking": {
            "type": "boolean",
            "readOnly": true,
            "description": "Indicates whether the event triggers a blocking or non-blocking webhook.",
            "example": false
          },
          "supportedFilters": {
            "$ref": "#/components/schemas/WebhookEventSupportedFilters"
          }
        },
        "x-ayOperations": [
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getWebhookEvents",
            "path": "/webhooks/events",
            "responseModel": "WebhookEvent",
            "isResponseCollection": true
          }
        ]
      },
      "WebhookEventSupportedFilters": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "merchants": {
            "type": "boolean",
            "description": "Specifies if the webhook event could be filtered by merchant keys",
            "example": true
          }
        }
      },
      "WebhookSubscription": {
        "type": "object",
        "required": [
          "event",
          "version",
          "url"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "description": "The unique webhook identifier.",
            "example": 1
          },
          "event": {
            "type": "string",
            "description": "Name of the hook event.",
            "example": "customer-created"
          },
          "version": {
            "type": "integer",
            "description": "The version of the hook.",
            "example": 1
          },
          "url": {
            "type": "string",
            "description": "The URL that will be called whenever the hook is triggered. Sensitive data will be obfuscated in responses.",
            "example": "https://foo:bar@foobar.tld/notifiy"
          },
          "filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebhookSubscriptionFilter"
            }
          }
        },
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createWebhookSubscription",
            "path": "/webhooks/subscriptions",
            "requestModel": "WebhookSubscription",
            "responseModel": "WebhookSubscription"
          },
          {
            "methodName": "update",
            "operation": "patch",
            "operationId": "updateWebhookSubscription",
            "path": "/webhooks/subscriptions/{subscriptionId}",
            "requestModel": "WebhookSubscriptionPatch",
            "responseModel": "WebhookSubscription",
            "parameters": [
              {
                "name": "subscriptionId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getWebhookSubscription",
            "path": "/webhooks/subscriptions/{subscriptionId}",
            "responseModel": "WebhookSubscription",
            "parameters": [
              {
                "name": "subscriptionId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getWebhookSubscriptions",
            "path": "/webhooks/subscriptions",
            "isResponseCollection": true,
            "responseModel": "WebhookSubscription"
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteWebhookSubscription",
            "path": "/webhooks/subscriptions/{subscriptionId}",
            "parameters": [
              {
                "name": "subscriptionId",
                "type": "integer"
              }
            ]
          }
        ]
      },
      "WebhookSubscriptionPatch": {
        "type": "object",
        "description": "url and filters are optional fields but at least one should be present.",
        "properties": {
          "url": {
            "type": "string",
            "description": "The URL that will be called whenever the hook is triggered. Sensitive data will be obfuscated in responses.",
            "example": "https://foo:bar@foobar.tld/notify"
          },
          "filters": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/PartialWebhookSubscriptionFilter"
            }
          }
        }
      },
      "WebhookSubscriptionFilter": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "merchantReferenceKeys": {
            "$ref": "#/components/schemas/WebhookSubscriptionMerchantFilter"
          }
        }
      },
      "WebhookSubscriptionMerchantFilter": {
        "type": "object",
        "additionalProperties": false,
        "description": "Must contain either 'include' or 'exclude', but not both.",
        "properties": {
          "include": {
            "type": "array",
            "description": "Merchant reference keys included.",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          },
          "exclude": {
            "type": "array",
            "description": "Merchant reference keys excluded.",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          }
        }
      },
      "PartialWebhookSubscriptionFilter": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "merchantReferenceKeys": {
            "$ref": "#/components/schemas/PartialWebhookSubscriptionMerchantFilter"
          }
        }
      },
      "PartialWebhookSubscriptionMerchantFilter": {
        "type": "object",
        "additionalProperties": false,
        "description": "Although the include and exclude lists are mutually exclusive, both can appear in a patch request when one is intended to cancel out the other.",
        "properties": {
          "include": {
            "$ref": "#/components/schemas/PartialWebhookSubscriptionMerchantFilterIncludeExclude"
          },
          "exclude": {
            "$ref": "#/components/schemas/PartialWebhookSubscriptionMerchantFilterIncludeExclude"
          }
        }
      },
      "PartialWebhookSubscriptionMerchantFilterIncludeExclude": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "add": {
            "type": "array",
            "description": "List of merchants to be added to the list.",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "uniqueItems": true
          },
          "remove": {
            "type": "array",
            "description": "List of merchants to be removed from the list.",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "uniqueItems": true
          }
        }
      },
      "Cancellation": {
        "type": "object",
        "required": [
          "shopKey",
          "countryCode",
          "items",
          "orderId"
        ],
        "properties": {
          "shopKey": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9]*$",
            "description": "A key that uniquely identifies the shop within the tenant's ecosystem. Must be exactly 2 chars long."
          },
          "countryCode": {
            "type": "string",
            "description": "ISO 3166 alpha 2 country code; use shop country ID instead of country code when a country is ambiguous within a shop"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CancellationItem"
            },
            "description": "Collection of items requested for cancellation"
          },
          "orderId": {
            "type": "integer",
            "description": "Unique identity of the order for which the cancellation was requested"
          },
          "merchantReferenceKey": {
            "type": "string",
            "description": "Reference key of the merchant to which the cancellation belongs to."
          }
        },
        "x-ayObjects": [
          {
            "property": "items",
            "isCollection": true,
            "className": "CancellationItem"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "send",
            "operation": "post",
            "operationId": "sendCancellation",
            "path": "/fulfillment/cancellations",
            "requestModel": "Cancellation",
            "headers": [
              {
                "name": "X-Company-Id",
                "alias": "companyId",
                "type": "integer",
                "required": false
              }
            ]
          }
        ]
      },
      "CancellationItem": {
        "type": "object",
        "required": [
          "orderItemId"
        ],
        "properties": {
          "orderItemId": {
            "type": "integer"
          }
        }
      },
      "ReturnItem": {
        "type": "object",
        "required": [
          "received",
          "returnKey"
        ],
        "properties": {
          "received": {
            "type": "string",
            "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}",
            "description": "Timestamp when the product return is received"
          },
          "returnKey": {
            "type": "string",
            "description": "A key that is assigned to uniquely identify a return request"
          },
          "returnReason": {
            "type": "string",
            "description": "Description of why the return is initiated"
          },
          "merchantReferenceKey": {
            "type": "string",
            "description": "Reference key of the merchant to which the return belongs to.\nPlease note that all items in the request should belong to same merchant.\n"
          }
        },
        "x-ayOperations": [
          {
            "methodName": "send",
            "operation": "post",
            "operationId": "returnItems",
            "path": "/fulfillment/return-items",
            "requestModel": "ReturnItem",
            "isRequestCollection": true,
            "headers": [
              {
                "name": "X-Company-Id",
                "alias": "companyId",
                "type": "integer",
                "required": false
              }
            ]
          }
        ]
      },
      "Voucher": {
        "type": "object",
        "required": [
          "name",
          "type",
          "value"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "code": {
            "type": "string",
            "minLength": 4,
            "maxLength": 20
          },
          "constraints": {
            "$ref": "#/components/schemas/VoucherConstraints"
          },
          "criteria": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VoucherCriterion"
            }
          },
          "isApplicableToPromotions": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "inactive",
              "pending-review",
              "archived"
            ],
            "x-enumName": "VoucherStatus"
          },
          "summary": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "absolute",
              "relative"
            ],
            "x-enumName": "VoucherType"
          },
          "value": {
            "type": "number",
            "format": "float",
            "example": 0.1
          }
        },
        "x-ayObjects": [
          {
            "property": "constraints",
            "className": "VoucherConstraints"
          },
          {
            "property": "criteria",
            "isCollection": true,
            "className": "VoucherCriterion"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getVouchers",
            "path": "/shops/{shopKey}/countries/{countryCode}/vouchers",
            "isResponseCollection": true,
            "responseModel": "Voucher",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getVoucher",
            "path": "/shops/{shopKey}/countries/{countryCode}/vouchers/{voucherId}",
            "responseModel": "Voucher",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "voucherId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createVoucher",
            "path": "/shops/{shopKey}/countries/{countryCode}/vouchers",
            "requestModel": "Voucher",
            "responseModel": "Voucher",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "update",
            "operation": "patch",
            "operationId": "updateVoucher",
            "path": "/shops/{shopKey}/countries/{countryCode}/vouchers/{voucherId}",
            "requestModel": "Voucher",
            "responseModel": "Voucher",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "voucherId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteVoucher",
            "path": "/shops/{shopKey}/countries/{countryCode}/vouchers/{voucherId}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "voucherId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "getCriteria",
            "operation": "get",
            "operationId": "getVoucherCriteria",
            "path": "/shops/{shopKey}/countries/{countryCode}/vouchers/{voucherId}/criteria",
            "isResponseCollection": true,
            "responseModel": "VoucherCriterion",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "voucherId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "getCriterion",
            "operation": "get",
            "operationId": "getVoucherCriterion",
            "path": "/shops/{shopKey}/countries/{countryCode}/vouchers/{voucherId}/criteria/{voucherCriterionId}",
            "responseModel": "VoucherCriterion",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "voucherId",
                "type": "integer"
              },
              {
                "name": "voucherCriterionId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "createCriterion",
            "operation": "post",
            "operationId": "createVoucherCriterion",
            "path": "/shops/{shopKey}/countries/{countryCode}/vouchers/{voucherId}/criteria",
            "requestModel": "VoucherCriterion",
            "responseModel": "VoucherCriterion",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "voucherId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "updateCriterion",
            "operation": "put",
            "operationId": "updateVoucherCriterion",
            "path": "/shops/{shopKey}/countries/{countryCode}/vouchers/{voucherId}/criteria/{voucherCriterionId}",
            "requestModel": "VoucherCriterion",
            "responseModel": "VoucherCriterion",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "voucherId",
                "type": "integer"
              },
              {
                "name": "voucherCriterionId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "deleteCriterion",
            "operation": "delete",
            "operationId": "deleteVoucherCriterion",
            "path": "/shops/{shopKey}/countries/{countryCode}/vouchers/{voucherId}/criteria/{voucherCriterionId}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "voucherId",
                "type": "integer"
              },
              {
                "name": "voucherCriterionId",
                "type": "integer"
              }
            ]
          }
        ]
      },
      "VoucherConstraints": {
        "type": "object",
        "properties": {
          "date": {
            "$ref": "#/components/schemas/VoucherConstraintsDate"
          },
          "isValidOnCampaigns": {
            "type": "boolean"
          },
          "maxApplications": {
            "$ref": "#/components/schemas/VoucherConstraintsApplications"
          },
          "orderValue": {
            "$ref": "#/components/schemas/VoucherConstraintsOrder"
          }
        },
        "x-ayObjects": [
          {
            "property": "date",
            "className": "VoucherConstraintsDate"
          },
          {
            "property": "maxApplications",
            "className": "VoucherConstraintsApplications"
          },
          {
            "property": "orderValue",
            "className": "VoucherConstraintsOrder"
          }
        ]
      },
      "VoucherConstraintsApplications": {
        "type": "object",
        "required": [
          "count",
          "restriction"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "format": "int64"
          },
          "restriction": {
            "type": "string",
            "enum": [
              "customer",
              "order"
            ],
            "x-enumName": "VoucherConstraintsApplicationsRestriction"
          }
        }
      },
      "VoucherConstraintsDate": {
        "type": "object",
        "properties": {
          "max": {
            "type": "string",
            "format": "date-time",
            "example": "2021-12-23T11%3A30%3A58%2B00%3A00"
          },
          "min": {
            "type": "string",
            "format": "date-time",
            "example": "2021-01-23T11%3A30%3A58%2B00%3A00"
          }
        }
      },
      "VoucherConstraintsOrder": {
        "type": "object",
        "properties": {
          "max": {
            "type": "integer"
          },
          "min": {
            "type": "integer"
          }
        }
      },
      "VoucherCriterion": {
        "type": "object",
        "required": [
          "key",
          "type",
          "value"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "key": {
            "type": "string",
            "enum": [
              "shopCategoryId",
              "masterCategoryId",
              "customerId",
              "emailHash",
              "brandId",
              "productId",
              "customerGroup",
              "shopCountryId"
            ],
            "x-enumName": "VoucherCriteriaKey"
          },
          "type": {
            "type": "string",
            "enum": [
              "include",
              "exclude"
            ],
            "x-enumName": "VoucherCriteriaKeyType",
            "description": "If the 'shopCategoryId' key is utilized, it should be associated with a 'country' type of application rather than 'shop'."
          },
          "value": {
            "type": "array",
            "items": {}
          }
        }
      },
      "CustomerEvent": {
        "x-ignore": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderEvent/allOf/0"
          },
          {
            "type": "object",
            "properties": {
              "payload": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Customer"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "shopCountry": {
                        "$ref": "#/components/schemas/ShopCountry"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "CustomerAnonymizedEvent": {
        "x-ignore": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderEvent/allOf/0"
          },
          {
            "type": "object",
            "properties": {
              "payload": {
                "type": "object",
                "required": [
                  "id",
                  "anonymizationStatus",
                  "createdAt",
                  "updatedAt"
                ],
                "properties": {
                  "id": {
                    "type": "integer"
                  },
                  "anonymizationStatus": {
                    "type": "string",
                    "enum": [
                      "initiated",
                      "executed",
                      "cancelled"
                    ],
                    "description": "Status of the customer anonymization process.",
                    "x-enumName": "CustomAnonymizationStatus"
                  },
                  "createdAt": {
                    "type": "string",
                    "format": "date-time",
                    "description": "Date and time when the customer was created."
                  },
                  "updatedAt": {
                    "type": "string",
                    "format": "date-time",
                    "description": "Date and time when the customer was last updated."
                  },
                  "shopCountry": {
                    "$ref": "#/components/schemas/ShopCountry"
                  },
                  "referenceKey": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100,
                    "pattern": "^[0-9a-zA-Z\\-\\\\_\\.\\@]*$",
                    "description": "External reference set by the client to integrate a third party system."
                  },
                  "publicKey": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100,
                    "pattern": "^[0-9a-zA-Z\\-\\\\_]*$",
                    "description": "Public reference set by the client to display to customers in account areas and transactional emails."
                  }
                }
              }
            }
          }
        ]
      },
      "CustomerAddressEvent": {
        "x-ignore": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderEvent/allOf/0"
          },
          {
            "type": "object",
            "properties": {
              "payload": {
                "type": "object",
                "required": [
                  "customer",
                  "address"
                ],
                "properties": {
                  "customer": {
                    "$ref": "#/components/schemas/Customer"
                  },
                  "address": {
                    "$ref": "#/components/schemas/CustomerAddress"
                  },
                  "shopCountry": {
                    "$ref": "#/components/schemas/ShopCountry"
                  }
                }
              }
            }
          }
        ]
      },
      "OrderEvent": {
        "x-ignore": true,
        "allOf": [
          {
            "type": "object",
            "required": [
              "key",
              "meta",
              "occurredAt",
              "type",
              "payload"
            ],
            "properties": {
              "key": {
                "type": "string",
                "format": "uuid",
                "description": "Unique webhook request identifier. You can use this value to ensure you do not process a request twice."
              },
              "meta": {
                "type": "object",
                "description": "Additional meta data for the webhook.",
                "required": [
                  "xRequestId"
                ],
                "properties": {
                  "xRequestId": {
                    "type": "string",
                    "description": "It is the same as `X-Request-Id` which is attached to HTTP request and response headers or a\nunique generated value (in case `X-Request-Id` is not available).\n\nIt is attached to our internal logs for better debugging of\nfailed requests.\n"
                  }
                }
              },
              "occurredAt": {
                "type": "string",
                "pattern": "^[0-9]{4}-(1[0-2]|0[1-9])-(0[1-9]|[12][0-9]|3[01])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])\\+[0-9]{2}:[0-9]{2}$",
                "example": "2019-08-09T15:01:26+00:00",
                "description": "Date and time when the webhook event was triggered first."
              },
              "type": {
                "type": "string",
                "description": "Contains the name / type of the triggered webhook."
              },
              "payload": {
                "type": "object"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "payload": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Order"
                  },
                  {
                    "type": "object",
                    "required": [
                      "basketKey",
                      "status",
                      "detailedStatus"
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "shopCountry": {
                        "$ref": "#/components/schemas/ShopCountry"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "OrderCustomDataUpdatedEvent": {
        "x-ignore": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderEvent/allOf/0"
          },
          {
            "type": "object",
            "properties": {
              "payload": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Order"
                  },
                  {
                    "$ref": "#/components/schemas/OrderEvent/allOf/1/properties/payload/allOf/1"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "items": {
                        "type": "array",
                        "items": {
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/OrderItem"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "legacyCustomDataDiff": {
                                  "$ref": "#/components/schemas/CustomData",
                                  "description": "legacy custom data of an item"
                                }
                              }
                            }
                          ]
                        }
                      }
                    }
                  },
                  {
                    "type": "object",
                    "properties": {
                      "shopCountry": {
                        "$ref": "#/components/schemas/ShopCountry"
                      }
                    }
                  },
                  {
                    "type": "object",
                    "properties": {
                      "legacyCustomDataDiff": {
                        "$ref": "#/components/schemas/CustomData",
                        "description": "legacy custom data of an order"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "OrderItemEvent": {
        "x-ignore": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderEvent/allOf/0"
          },
          {
            "type": "object",
            "properties": {
              "payload": {
                "type": "object",
                "required": [
                  "order",
                  "items"
                ],
                "properties": {
                  "order": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/Order"
                      },
                      {
                        "$ref": "#/components/schemas/OrderEvent/allOf/1/properties/payload/allOf/1"
                      }
                    ]
                  },
                  "items": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/OrderItem"
                    }
                  },
                  "shopCountry": {
                    "$ref": "#/components/schemas/ShopCountry"
                  }
                }
              }
            }
          }
        ]
      },
      "PriceEvent": {
        "x-ignore": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderEvent/allOf/0"
          },
          {
            "type": "object",
            "properties": {
              "payload": {
                "type": "object",
                "properties": {
                  "productVariant": {
                    "type": "object",
                    "required": [
                      "referenceKey"
                    ],
                    "properties": {
                      "id": {
                        "type": "integer",
                        "description": "ID of the product variant."
                      },
                      "referenceKey": {
                        "type": "string",
                        "description": "A key that uniquely identifies the variant of a product (usually an SKU) within the tenant's ecosystem.",
                        "example": "M0001-black-M",
                        "pattern": "^[a-zA-Z0-9-_\\. ]*$"
                      }
                    }
                  },
                  "prices": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/ProductVariantPrice"
                    }
                  },
                  "merchantReferenceKey": {
                    "description": "A merchant reference key the variant belongs to.",
                    "type": "string"
                  }
                }
              }
            }
          }
        ]
      },
      "Company": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "example": 1,
            "description": "The ID of the company created by SCAYLE."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "example": "My Company",
            "description": "Name of the company."
          }
        },
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createCompany",
            "path": "/companies",
            "requestModel": "Company",
            "responseModel": "Company"
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getCompanies",
            "path": "/companies",
            "isResponseCollection": true,
            "responseModel": "Company"
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getCompany",
            "path": "/companies/{companyId}",
            "responseModel": "Company",
            "parameters": [
              {
                "name": "companyId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "update",
            "operation": "put",
            "operationId": "updateCompany",
            "path": "/companies/{companyId}",
            "requestModel": "Company",
            "responseModel": "Company",
            "parameters": [
              {
                "name": "companyId",
                "type": "integer"
              }
            ]
          }
        ]
      },
      "ProductEvent": {
        "x-ignore": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderEvent/allOf/0"
          },
          {
            "type": "object",
            "properties": {
              "payload": {
                "$ref": "#/components/schemas/Product"
              }
            }
          }
        ]
      },
      "ProductMasterUpdatedEvent": {
        "x-ignore": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderEvent/allOf/0"
          },
          {
            "type": "object",
            "properties": {
              "payload": {
                "$ref": "#/components/schemas/Master"
              }
            }
          }
        ]
      },
      "ProductVariantAvailabilityEvent": {
        "x-ignore": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderEvent/allOf/0"
          },
          {
            "type": "object",
            "properties": {
              "payload": {
                "type": "object",
                "properties": {
                  "productVariant": {
                    "$ref": "#/components/schemas/PriceEvent/allOf/1/properties/payload/properties/productVariant"
                  },
                  "product": {
                    "$ref": "#/components/schemas/ProductVariantStockEvent/allOf/1/properties/payload/properties/product"
                  },
                  "availabilities": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "shopCountry": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "integer",
                              "description": "The identifier of the shop country"
                            },
                            "shopKey": {
                              "type": "string",
                              "description": "A key that uniquely identifies the shop within the tenant's ecosystem."
                            },
                            "countryCode": {
                              "type": "string",
                              "description": "ISO 3166 alpha 2 country code."
                            }
                          }
                        },
                        "available": {
                          "type": "boolean",
                          "description": "The state of availability of the variant on the corresponding shop country."
                        }
                      }
                    }
                  },
                  "merchantReferenceKey": {
                    "description": "A merchant reference key the variant belongs to.",
                    "type": "string"
                  }
                }
              }
            }
          }
        ]
      },
      "ShopCategoryTreeEvent": {
        "x-ignore": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderEvent/allOf/0"
          },
          {
            "type": "object",
            "properties": {
              "payload": {
                "type": "object",
                "properties": {
                  "shop": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "integer",
                        "description": "The identifier of the shop"
                      },
                      "key": {
                        "type": "string",
                        "description": "A key that uniquely identifies the shop within the tenant's ecosystem."
                      }
                    }
                  }
                }
              }
            }
          }
        ]
      },
      "ProductVariantStockEvent": {
        "x-ignore": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderEvent/allOf/0"
          },
          {
            "type": "object",
            "properties": {
              "payload": {
                "type": "object",
                "properties": {
                  "productVariant": {
                    "$ref": "#/components/schemas/PriceEvent/allOf/1/properties/payload/properties/productVariant"
                  },
                  "product": {
                    "type": "object",
                    "required": [
                      "id",
                      "referenceKey"
                    ],
                    "properties": {
                      "id": {
                        "type": "integer",
                        "description": "ID of the product."
                      },
                      "referenceKey": {
                        "type": "string",
                        "description": "A key that uniquely identifies the product (e.g., a shirt in a specific color) within the tenant's ecosystem.",
                        "example": "M0001-black",
                        "pattern": "^[a-zA-Z0-9-_\\. ]*$"
                      }
                    }
                  },
                  "warehouse": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "integer",
                        "example": 20,
                        "description": "Id of the warehouse"
                      },
                      "referenceKey": {
                        "type": "string",
                        "example": "tb_warehouse",
                        "minLength": 1,
                        "description": "Reference key of warehouse for which the stock update is related to."
                      }
                    }
                  },
                  "quantity": {
                    "type": "integer",
                    "description": "Current quantity of the variant in the warehouse",
                    "example": 20
                  },
                  "sellableWithoutStock": {
                    "type": "boolean",
                    "description": "Defines if the variant can be sold even when the available stock is 0.",
                    "default": false,
                    "example": true
                  },
                  "changedAt": {
                    "type": "string",
                    "format": "date-time",
                    "description": "Date time when the stock changed in Iso8601 format.",
                    "example": "2020-07-23T11%3A30%3A58%2B00%3A00"
                  },
                  "merchantReferenceKey": {
                    "description": "A merchant reference key the stock belongs to.",
                    "type": "string"
                  },
                  "expectedAvailabilityAt": {
                    "description": "Date when the stock is expected to be available.",
                    "type": "string",
                    "format": "date",
                    "example": "2020-07-23",
                    "nullable": true
                  }
                }
              }
            }
          }
        ]
      },
      "PaymentEvent": {
        "x-ignore": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderEvent/allOf/0"
          },
          {
            "type": "object",
            "properties": {
              "payload": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Order"
                  },
                  {
                    "$ref": "#/components/schemas/OrderEvent/allOf/1/properties/payload/allOf/1"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "shopCountry": {
                        "$ref": "#/components/schemas/ShopCountry"
                      }
                    }
                  },
                  {
                    "type": "object",
                    "properties": {
                      "transaction": {
                        "$ref": "#/components/schemas/Transaction"
                      }
                    }
                  },
                  {
                    "type": "object",
                    "properties": {
                      "payment": {
                        "type": "array",
                        "items": {
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/OrderPayment"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "items": {
                                  "type": "array",
                                  "items": {
                                    "$ref": "#/components/schemas/PaymentOperationItem"
                                  }
                                }
                              }
                            }
                          ]
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "PaymentOperationItem": {
        "type": "object",
        "properties": {
          "brand": {
            "type": "string",
            "nullable": true
          },
          "bruttoDiscount": {
            "type": "integer"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "descriptionAddition": {
            "type": "string",
            "nullable": true
          },
          "merchantProductId": {
            "type": "string",
            "nullable": true
          },
          "nettoPrice": {
            "type": "integer"
          },
          "orderProductId": {
            "type": "integer"
          },
          "price": {
            "type": "integer"
          },
          "quantity": {
            "type": "integer"
          },
          "tax": {
            "type": "integer"
          },
          "undiscountedUnitPrice": {
            "type": "integer"
          },
          "unitPrice": {
            "type": "integer"
          },
          "unitPriceWithoutTaxWithVoucher": {
            "type": "integer"
          },
          "unitTaxValueWithVoucher": {
            "type": "integer"
          },
          "variantId": {
            "type": "integer"
          },
          "voucherCode": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Transaction": {
        "type": "object",
        "required": [
          "transactionId",
          "operationStatus"
        ],
        "properties": {
          "transactionId": {
            "type": "string"
          },
          "operationStatus": {
            "type": "string",
            "enum": [
              "successful",
              "failed"
            ],
            "x-enumName": "TransactionOperationStatus"
          }
        }
      },
      "Asset": {
        "type": "object",
        "required": [
          "source"
        ],
        "properties": {
          "source": {
            "$ref": "#/components/schemas/AssetSource",
            "description": "A source from where to upload an asset."
          }
        },
        "x-ayObjects": [
          {
            "property": "source",
            "className": "AssetSource"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createAsset",
            "path": "/assets",
            "requestModel": "Asset",
            "responseModel": "AssetUrl"
          }
        ]
      },
      "AssetUrl": {
        "type": "object",
        "required": [
          "assetUrl"
        ],
        "properties": {
          "assetUrl": {
            "type": "string",
            "description": "URL of the image, generated by SCAYLE.",
            "example": "images/084dace7d7ff691e97982fa554113c29"
          }
        }
      },
      "Carrier": {
        "type": "object",
        "required": [
          "key",
          "name"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "example": 1,
            "description": "The ID of the carrier created by SCAYLE."
          },
          "key": {
            "type": "string",
            "minLength": 1,
            "example": "DHL_STD_NATIONAL",
            "description": "The key of the carrier."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "example": "DHL",
            "description": "Name of the carrier."
          },
          "trackingUrl": {
            "type": "string",
            "nullable": true,
            "minLength": 1,
            "example": "http://nolp.dhl.de/nextt-online-public/set_identcodes.do",
            "description": "Tracking URL of the carrier."
          }
        },
        "x-ayOperations": [
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getCarriers",
            "path": "/carriers",
            "isResponseCollection": true,
            "responseModel": "Carrier"
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getCarrier",
            "path": "/carriers/{carrierId}",
            "responseModel": "Carrier",
            "parameters": [
              {
                "name": "carrierIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createCarrier",
            "path": "/carriers",
            "requestModel": "Carrier",
            "responseModel": "Carrier"
          },
          {
            "methodName": "update",
            "operation": "put",
            "operationId": "updateCarrier",
            "path": "/carriers/{carrierId}",
            "requestModel": "Carrier",
            "responseModel": "Carrier",
            "parameters": [
              {
                "name": "carrierIdentifier",
                "type": "identifier"
              }
            ]
          }
        ]
      },
      "Merchant": {
        "type": "object",
        "required": [
          "referenceKey",
          "name"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "example": 1,
            "description": "The ID of the merchant created by SCAYLE."
          },
          "referenceKey": {
            "type": "string",
            "minLength": 1,
            "example": "acme",
            "description": "Reference key of the merchant."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "example": "ACME",
            "description": "Name of the merchant."
          },
          "priority": {
            "type": "integer",
            "example": 1,
            "description": "Priority of the merchant."
          },
          "orderDelegationUrl": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "URL to send order delegation requests to the merchants."
          },
          "cancellationUrl": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "URL to send order cancellation requests."
          },
          "contacts": {
            "description": "A list of merchant contacts.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MerchantContact"
            }
          },
          "returnAddresses": {
            "description": "A list of merchant return addresses.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MerchantReturnAddress"
            }
          },
          "carriers": {
            "description": "A list of carriers attached to the merchant.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MerchantCarrier"
            }
          },
          "warehouses": {
            "description": "A list of warehouses attached to the merchant.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MerchantWarehouse"
            }
          },
          "customData": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomData"
              }
            ],
            "nullable": true
          }
        },
        "x-ayObjects": [
          {
            "property": "contacts",
            "isCollection": true,
            "className": "MerchantContact"
          },
          {
            "property": "returnAddresses",
            "isCollection": true,
            "className": "MerchantReturnAddress"
          },
          {
            "property": "carriers",
            "isCollection": true,
            "className": "MerchantCarrier"
          },
          {
            "property": "warehouses",
            "isCollection": true,
            "className": "MerchantWarehouse"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getMerchants",
            "path": "/merchants",
            "isResponseCollection": true,
            "responseModel": "Merchant"
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getMerchant",
            "path": "/merchants/{merchantIdentifier}",
            "responseModel": "Merchant",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createMerchant",
            "path": "/merchants",
            "requestModel": "MerchantCreateOrUpdate",
            "responseModel": "MerchantCreateOrUpdate"
          },
          {
            "methodName": "update",
            "operation": "put",
            "operationId": "updateMerchant",
            "path": "/merchants/{merchantIdentifier}",
            "requestModel": "MerchantCreateOrUpdate",
            "responseModel": "MerchantCreateOrUpdate",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "allContacts",
            "operation": "get",
            "operationId": "getMerchantContacts",
            "path": "/merchants/{merchantIdentifier}/contacts",
            "isResponseCollection": true,
            "responseModel": "MerchantContact",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "getContact",
            "operation": "get",
            "operationId": "getMerchantContact",
            "path": "/merchants/{merchantIdentifier}/contacts/{merchantContactId}",
            "responseModel": "MerchantContact",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              },
              {
                "name": "merchantContactId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "createContact",
            "operation": "post",
            "operationId": "createMerchantContact",
            "path": "/merchants/{merchantIdentifier}/contacts",
            "requestModel": "MerchantContact",
            "responseModel": "MerchantContact",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "updateContact",
            "operation": "put",
            "operationId": "updateMerchantContact",
            "path": "/merchants/{merchantIdentifier}/contacts/{merchantContactId}",
            "requestModel": "MerchantContact",
            "responseModel": "MerchantContact",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              },
              {
                "name": "merchantContactId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "deleteContact",
            "operation": "delete",
            "operationId": "deleteMerchantContact",
            "path": "/merchants/{merchantIdentifier}/contacts/{merchantContactId}",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              },
              {
                "name": "merchantContactId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "allReturnAddresses",
            "operation": "get",
            "operationId": "getMerchantReturnAddresses",
            "path": "/merchants/{merchantIdentifier}/return-addresses",
            "isResponseCollection": true,
            "responseModel": "MerchantReturnAddress",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "getReturnAddress",
            "operation": "get",
            "operationId": "getMerchantReturnAddress",
            "path": "/merchants/{merchantIdentifier}/return-addresses/{merchantReturnAddressId}",
            "responseModel": "MerchantReturnAddress",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              },
              {
                "name": "merchantReturnAddressId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "createReturnAddress",
            "operation": "post",
            "operationId": "createMerchantReturnAddress",
            "path": "/merchants/{merchantIdentifier}/return-addresses",
            "requestModel": "MerchantReturnAddress",
            "responseModel": "MerchantReturnAddress",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "updateReturnAddress",
            "operation": "put",
            "operationId": "updateMerchantReturnAddress",
            "path": "/merchants/{merchantIdentifier}/return-addresses/{merchantReturnAddressId}",
            "requestModel": "MerchantReturnAddress",
            "responseModel": "MerchantReturnAddress",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              },
              {
                "name": "merchantReturnAddressId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "deleteReturnAddress",
            "operation": "delete",
            "operationId": "deleteMerchantReturnAddress",
            "path": "/merchants/{merchantIdentifier}/return-addresses/{merchantReturnAddressId}",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              },
              {
                "name": "merchantReturnAddressId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "attachCarrier",
            "operation": "post",
            "operationId": "attachMerchantCarrier",
            "path": "/merchants/{merchantIdentifier}/carriers/{carrierIdentifier}/countries/{countryCode}",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              },
              {
                "name": "carrierIdentifier",
                "type": "identifier"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "detachCarrier",
            "operation": "delete",
            "operationId": "detachMerchantCarrier",
            "path": "/merchants/{merchantIdentifier}/carriers/{carrierIdentifier}/countries/{countryCode}",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              },
              {
                "name": "carrierIdentifier",
                "type": "identifier"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "allWarehouses",
            "operation": "get",
            "operationId": "getMerchantWarehouses",
            "path": "/merchants/{merchantIdentifier}/warehouses",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              }
            ],
            "isResponseCollection": true,
            "responseModel": "Warehouse"
          },
          {
            "methodName": "attachWarehouse",
            "operation": "post",
            "operationId": "attachMerchantWarehouse",
            "path": "/merchants/{merchantIdentifier}/warehouses/{warehouseIdentifier}",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              },
              {
                "name": "warehouseIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "detachWarehouse",
            "operation": "delete",
            "operationId": "detachMerchantWarehouse",
            "path": "/merchants/{merchantIdentifier}/warehouses/{warehouseIdentifier}",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              },
              {
                "name": "warehouseIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "createOrUpdateCustomData",
            "operation": "put",
            "operationId": "createOrUpdateMerchantCustomData",
            "path": "/merchants/{merchantIdentifier}/custom-data",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "deleteCustomData",
            "operation": "delete",
            "operationId": "deleteMerchantCustomData",
            "path": "/merchants/{merchantIdentifier}/custom-data",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "getCustomData",
            "operation": "get",
            "operationId": "getMerchantCustomData",
            "path": "/merchants/{merchantIdentifier}/custom-data",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              }
            ]
          },
          {
            "methodName": "createOrUpdateCustomDataForKey",
            "operation": "put",
            "operationId": "createOrUpdateMerchantCustomDataForKey",
            "path": "/merchants/{merchantIdentifier}/custom-data/{key}",
            "requestModel": "CustomData",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "deleteCustomDataForKey",
            "operation": "delete",
            "operationId": "deleteMerchantCustomDataForKey",
            "path": "/merchants/{merchantIdentifier}/custom-data/{key}",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getCustomDataForKey",
            "operation": "get",
            "operationId": "getMerchantCustomDataForKey",
            "path": "/merchants/{merchantIdentifier}/custom-data/{key}",
            "responseModel": "CustomData",
            "parameters": [
              {
                "name": "merchantIdentifier",
                "type": "identifier"
              },
              {
                "name": "key",
                "type": "string"
              }
            ]
          }
        ]
      },
      "MerchantCreateOrUpdate": {
        "type": "object",
        "required": [
          "referenceKey",
          "name"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "example": 1,
            "description": "The ID of the merchant created by SCAYLE."
          },
          "referenceKey": {
            "type": "string",
            "minLength": 1,
            "example": "acme",
            "description": "Reference key of the merchant."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "example": "ACME",
            "description": "Name of the merchant."
          },
          "priority": {
            "type": "integer",
            "example": 1,
            "description": "Priority of the merchant."
          },
          "orderDelegationUrl": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "URL to send order delegation requests to the merchants."
          },
          "cancellationUrl": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "URL to send order cancellation requests."
          },
          "customData": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomData"
              }
            ],
            "nullable": true
          }
        }
      },
      "MerchantContact": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "example": 1,
            "description": "The ID of the contact created by SCAYLE."
          },
          "name": {
            "type": "string",
            "nullable": true,
            "example": "John Doe",
            "description": "The name of the contact."
          },
          "email": {
            "type": "string",
            "nullable": true,
            "example": "foo@bar.org",
            "description": "The email of the contact."
          },
          "phone": {
            "type": "string",
            "nullable": true,
            "example": 123456789,
            "description": "The phone of the contact."
          },
          "cellPhone": {
            "type": "string",
            "nullable": true,
            "example": 123456789,
            "description": "The cell phone of the contact."
          },
          "type": {
            "type": "string",
            "nullable": true,
            "example": "general",
            "description": "The type of the contact."
          },
          "position": {
            "type": "string",
            "nullable": true,
            "example": "Partner Service",
            "description": "The position of the contact."
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "The description of the contact."
          }
        }
      },
      "MerchantReturnAddress": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "example": 1,
            "description": "The ID of the return address created by SCAYLE."
          },
          "name": {
            "type": "string",
            "nullable": true,
            "example": "Return Point",
            "description": "The name of the return address."
          },
          "street": {
            "type": "string",
            "nullable": true,
            "example": "Domstrasse",
            "description": "The street name of the return address."
          },
          "streetNo": {
            "type": "string",
            "nullable": true,
            "example": 10,
            "description": "The street number of the return address."
          },
          "zipCode": {
            "type": "string",
            "nullable": true,
            "example": 22303,
            "description": "The postal code of the return address."
          },
          "city": {
            "type": "string",
            "nullable": true,
            "example": "Hamburg",
            "description": "The city name of the return address."
          },
          "countryCode": {
            "type": "string",
            "nullable": true,
            "minLength": 2,
            "maxLength": 2,
            "example": "DE",
            "description": "ISO 3166 alpha 2 country code."
          },
          "dhlCode": {
            "type": "string",
            "nullable": true,
            "example": "JVGL0849489024",
            "description": "The DHL code of the return address."
          }
        }
      },
      "MerchantCarrier": {
        "type": "object",
        "required": [
          "countryCode",
          "carrier"
        ],
        "properties": {
          "countryCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "example": "DE",
            "description": "ISO 3166 alpha 2 country code."
          },
          "carrier": {
            "$ref": "#/components/schemas/Carrier"
          }
        }
      },
      "MerchantWarehouse": {
        "type": "object",
        "required": [
          "referenceKey"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "example": 1,
            "description": "The ID of the warehouse created by SCAYLE."
          },
          "referenceKey": {
            "type": "string",
            "example": "my-warehouse",
            "description": "A key that uniquely identifies the warehouse within the tenant's ecosystem.",
            "pattern": "^[a-zA-Z0-9-_\\. ]*$"
          }
        }
      },
      "Warehouse": {
        "type": "object",
        "required": [
          "referenceKey"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "example": 1,
            "description": "The ID of the warehouse created by SCAYLE."
          },
          "referenceKey": {
            "type": "string",
            "example": "my-warehouse",
            "description": "A key that uniquely identifies the warehouse within the tenant's ecosystem.",
            "pattern": "^[a-zA-Z0-9-_\\. ]*$"
          },
          "isZeosWarehouse": {
            "type": "boolean",
            "default": false,
            "description": "This flag should be set to true only when warehouse is a Zeos warehouse. It is not allowed to update this field after creation of the warehouse\n"
          },
          "merchants": {
            "description": "A list of merchants the warehouse is attached to.",
            "type": "array",
            "readOnly": true,
            "items": {
              "$ref": "#/components/schemas/Merchant"
            }
          },
          "shopCountries": {
            "description": "Shop country information related to the warehouse.",
            "type": "array",
            "readOnly": true,
            "items": {
              "$ref": "#/components/schemas/WarehouseShopCountry"
            }
          }
        },
        "x-ayObjects": [
          {
            "property": "merchants",
            "isCollection": true,
            "className": "Merchant"
          },
          {
            "property": "shopCountries",
            "isCollection": true,
            "className": "WarehouseShopCountry"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getWarehouses",
            "path": "/warehouses",
            "isResponseCollection": true,
            "responseModel": "Warehouse"
          },
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createWarehouse",
            "path": "/warehouses",
            "requestModel": "Warehouse",
            "responseModel": "Warehouse"
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteWarehouse",
            "path": "/warehouses/{warehouseIdentifier}",
            "parameters": [
              {
                "name": "warehouseIdentifier",
                "type": "identifier"
              }
            ]
          }
        ]
      },
      "WarehouseShopCountry": {
        "type": "object",
        "required": [
          "shopKey",
          "countryCode"
        ],
        "properties": {
          "shopKey": {
            "type": "string",
            "example": "ms",
            "description": "A key that uniquely identifies the shop within the tenant's ecosystem. Must be exactly 2 chars long."
          },
          "countryCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "example": "DE",
            "description": "ISO 3166 alpha 2 country code."
          },
          "priority": {
            "type": "integer",
            "nullable": true,
            "example": 100,
            "description": "The priority of the warehouse. The higher the value, the higher the priority."
          },
          "packageGroup": {
            "$ref": "#/components/schemas/PackageGroup",
            "nullable": true,
            "description": "The assigned package group of the warehouse."
          }
        }
      },
      "PromotionCodes": {
        "type": "object",
        "required": [
          "promotionCodes"
        ],
        "properties": {
          "promotionCodes": {
            "type": "array",
            "example": [
              "BF24",
              "XMAS24"
            ],
            "description": "List of promotion codes",
            "items": {
              "type": "string",
              "minLength": 2,
              "maxLength": 30
            },
            "minItems": 1,
            "maxItems": 1000
          }
        },
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createPromotionCodes",
            "path": "/promotions/{promotionId}/codes",
            "requestModel": "PromotionCodes",
            "responseModel": "PromotionCodes",
            "parameters": [
              {
                "name": "promotionId",
                "type": "string",
                "extra": {
                  "example": "645e0c241a93369ff53f26e0"
                }
              }
            ]
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getPromotionCodes",
            "path": "/promotions/{promotionId}/codes",
            "responseModel": "PromotionCode",
            "isResponseCollection": true,
            "parameters": [
              {
                "name": "promotionId",
                "type": "string",
                "extra": {
                  "example": "645e0c241a93369ff53f26e0"
                }
              }
            ]
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deletePromotionCodes",
            "path": "/promotions/{promotionId}/codes",
            "parameters": [
              {
                "name": "promotionId",
                "type": "string",
                "extra": {
                  "example": "645e0c241a93369ff53f26e0"
                }
              }
            ]
          }
        ]
      },
      "PromotionCode": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "BF24",
            "minLength": 2,
            "maxLength": 30
          },
          "enabled": {
            "type": "boolean",
            "example": true
          }
        }
      },
      "PromotionItemSet": {
        "type": "object",
        "required": [
          "name",
          "eligibleItemsQuantity"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "64cbc70225ae598c0d0d0334",
            "description": "Item Set id",
            "maxLength": 24,
            "minLength": 24,
            "readOnly": true
          },
          "name": {
            "type": "string",
            "example": "T-Shirts",
            "description": "Name of the item set",
            "minLength": 3
          },
          "variantIds": {
            "type": "array",
            "example": [
              1,
              2,
              3
            ],
            "items": {
              "type": "integer"
            },
            "description": "A list of variant ids that belong to the item set",
            "minItems": 1,
            "uniqueItems": true
          },
          "condition": {
            "type": "string",
            "example": "payload.items.exists(i, 11003 in i.variant.id)",
            "description": "A Common Expression Language valid condition"
          },
          "eligibleItemsQuantity": {
            "type": "integer",
            "example": 1,
            "description": "Specifies how many items need to be in a basket to form a group. The usage of this configuration depends on a promotion `max_count_type` configuration."
          }
        },
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createPromotionItemSet",
            "path": "/promotions/item-sets",
            "requestModel": "PromotionItemSet",
            "responseModel": "PromotionItemSet"
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getPromotionItemSet",
            "path": "/promotions/item-sets/{promotionItemSetId}",
            "responseModel": "PromotionItemSet",
            "parameters": [
              {
                "name": "id",
                "type": "string",
                "extra": {
                  "example": "64cbc70225ae598c0d0d0334"
                }
              }
            ]
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deletePromotionItemSet",
            "path": "/promotions/item-sets/{promotionItemSetId}",
            "parameters": [
              {
                "name": "promotionItemSetId",
                "type": "string",
                "extra": {
                  "example": "645e0c241a93369ff53f26e0"
                }
              }
            ]
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getPromotionItemSets",
            "path": "/promotions/item-sets",
            "isResponseCollection": true,
            "responseModel": "PromotionItemSet"
          }
        ]
      },
      "PromotionV1": {
        "type": "object",
        "required": [
          "name",
          "schedule",
          "isActive",
          "shopId",
          "companyId",
          "effect"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "645e0c241a93369ff53f26e0",
            "description": "Promotion id",
            "maxLength": 24,
            "minLength": 24,
            "readOnly": true
          },
          "version": {
            "type": "string",
            "example": "645e0c241a93369ff53f26e0",
            "description": "Promotion version",
            "maxLength": 24,
            "minLength": 24,
            "readOnly": true
          },
          "name": {
            "type": "string",
            "example": "Christmas Promotion",
            "description": "Name of the promotion",
            "minLength": 3
          },
          "schedule": {
            "$ref": "#/components/schemas/PromotionScheduleV1",
            "description": "Time range when the promotion is active"
          },
          "isActive": {
            "type": "boolean",
            "description": "Promotion active flag"
          },
          "shopId": {
            "type": "array",
            "example": [
              "139",
              "554"
            ],
            "items": {
              "type": "string",
              "uniqueItems": true
            },
            "description": "The list of shop ids where the promotion takes place",
            "minItems": 1
          },
          "companyId": {
            "type": "array",
            "example": [
              "100"
            ],
            "items": {
              "type": "string",
              "uniqueItems": true
            },
            "description": "The list of company ids where the promotion takes place",
            "minItems": 1
          },
          "siblingPromotions": {
            "$ref": "#/components/schemas/PromotionSiblingPromotionsV1",
            "description": "Sibling promotions allow/block other promotions from being used together with this one"
          },
          "audiences": {
            "$ref": "#/components/schemas/PromotionAudiencesV1",
            "description": "Audiences allow/block list. Use it to restrict promotions to specific customer groups"
          },
          "effect": {
            "$ref": "#/components/schemas/PromotionEffectV1",
            "description": "The effect that will be applied if all conditions are satisfied"
          },
          "globalConditions": {
            "type": "array",
            "items": {
              "type": "object",
              "$ref": "#/components/schemas/PromotionGlobalConditionV1"
            },
            "description": "The list of conditions ('payload.*') that determines whether the promotion is applicable or not"
          },
          "itemConditions": {
            "type": "array",
            "items": {
              "type": "object",
              "$ref": "#/components/schemas/PromotionItemConditionV1"
            },
            "description": "The list conditions ('item.*') that determine whether promotion is applicable or not for a particular item"
          },
          "priority": {
            "type": "string",
            "example": "1",
            "description": "Priority of the promotion"
          },
          "additionalData": {
            "type": "object",
            "example": {
              "variant_ids": [
                12389244,
                23985437
              ],
              "max_count": 1,
              "max_count_type": "per_eligible_items_quantity",
              "eligible_items_quantity": 6
            },
            "description": "Additional data of the promotion. Can be legal text or some other info, that will be shown to customer",
            "additionalProperties": true
          },
          "tiers": {
            "type": "array",
            "items": {
              "type": "object",
              "$ref": "#/components/schemas/PromotionTierV1"
            },
            "description": "The list of promotion tiers. Tiers must be sent in ascending order"
          }
        },
        "x-ayObjects": [
          {
            "property": "schedule",
            "className": "PromotionScheduleV1"
          },
          {
            "property": "siblingPromotions",
            "className": "PromotionSiblingPromotionsV1"
          },
          {
            "property": "audiences",
            "className": "PromotionAudiencesV1"
          },
          {
            "property": "effect",
            "className": "PromotionEffectV1"
          },
          {
            "property": "globalConditions",
            "className": "PromotionGlobalConditionV1",
            "isCollection": true
          },
          {
            "property": "itemConditions",
            "className": "PromotionItemConditionV1",
            "isCollection": true
          },
          {
            "property": "tiers",
            "className": "PromotionTierV1",
            "isCollection": true
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createV1Promotion",
            "path": "/create-promotion",
            "requestModel": "PromotionV1",
            "responseModel": "PromotionV1"
          },
          {
            "methodName": "update",
            "operation": "put",
            "operationId": "updateV1Promotion",
            "path": "/update-promotion/{promotionId}",
            "requestModel": "PromotionV1",
            "responseModel": "PromotionV1",
            "parameters": [
              {
                "name": "promotionId",
                "type": "string"
              }
            ]
          }
        ]
      },
      "PromotionAudiencesV1": {
        "type": "object",
        "properties": {
          "allowList": {
            "type": "array",
            "example": [
              "645e0c241a93369ff53f26e0",
              "646235bf496f8f56171c3762"
            ],
            "items": {
              "type": "string",
              "maxLength": 24,
              "minLength": 24,
              "uniqueItems": true
            },
            "description": "The list of audience ids that can use this promotion"
          },
          "blockList": {
            "type": "array",
            "example": [
              "64623787496f8f56171c3763"
            ],
            "items": {
              "type": "string",
              "maxLength": 24,
              "minLength": 24,
              "uniqueItems": true
            },
            "description": "The list of audience ids that can not use this promotion"
          }
        }
      },
      "PromotionEffectV1": {
        "type": "object",
        "required": [
          "id",
          "additionalData"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/PromotionEffect/properties/type"
          },
          "additionalData": {
            "type": "object",
            "example": {
              "variant_ids": [
                12389244,
                23985437
              ],
              "max_count": 1,
              "max_count_type": "per_eligible_items_quantity",
              "eligible_items_quantity": 6
            },
            "description": "Additional data of the promotion effect, max_count_type and eligible_items_quantity are optional",
            "additionalProperties": true
          }
        }
      },
      "PromotionGlobalConditionV1": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "example": "mov_100",
            "description": "Key of the condition. Can be used to identify which condition failed in the validate endpoint"
          },
          "condition": {
            "type": "string",
            "example": "payload.items.exists(i, 11003 in i.variant.id)",
            "title": "A Common Expression Language valid condition.\nAvailable replacements keys:\n{{thisPromotionId}} - will be replace on current promotion id, example:\n   \"payload.customData.promotions.exists(i, i == '{{thisPromotionId}}')\"",
            "minLength": 1
          }
        }
      },
      "PromotionItemConditionV1": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "example": "mov_100",
            "description": "Key of the condition. Can be used to identify which condition failed in the validate endpoint"
          },
          "condition": {
            "type": "string",
            "example": "item.color == 'yellow'",
            "title": "A Common Expression Language valid condition.\nAvailable replacements keys:\n{{thisPromotionId}} - will be replace on current promotion id, example:\n   \"item.promotions == '{{thisPromotionId}}'\"",
            "minLength": 1
          }
        }
      },
      "PromotionScheduleV1": {
        "type": "object",
        "required": [
          "from",
          "to"
        ],
        "properties": {
          "from": {
            "type": "string",
            "example": "2023-05-10T10:00:00+00:00",
            "description": "The beginning of the time range when the promotion is active",
            "pattern": "^((?:(\\d{4}-\\d{2}-\\d{2})(T)(\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{2})?))(Z|[\\+-]\\d{2}:\\d{2}))$"
          },
          "to": {
            "type": "string",
            "example": "2024-05-10T10:00:00+00:00",
            "description": "The end of the time range when the promotion is active",
            "pattern": "^((?:(\\d{4}-\\d{2}-\\d{2})(T)(\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{2})?))(Z|[\\+-]\\d{2}:\\d{2}))$"
          }
        }
      },
      "PromotionSiblingPromotionsV1": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "allowList": {
            "type": "array",
            "example": [
              "645e0c241a93369ff53f26e0",
              "646235bf496f8f56171c3762"
            ],
            "items": {
              "type": "string",
              "maxLength": 24,
              "minLength": 24,
              "uniqueItems": true
            },
            "description": "The list of promotion ids that can be applied together with this promotion"
          },
          "blockList": {
            "type": "array",
            "example": [
              "64623787496f8f56171c3763"
            ],
            "items": {
              "type": "string",
              "maxLength": 24,
              "minLength": 24,
              "uniqueItems": true
            },
            "description": "The list of promotion ids that can not be applied together with this promotion"
          },
          "level": {
            "type": "string",
            "example": "basket",
            "enum": [
              "basket"
            ],
            "x-enumName": "PromotionSiblingPromotionsLevel",
            "description": "The level on which promotion is applied"
          }
        }
      },
      "PromotionTierV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "example": 1,
            "description": "Autogenerated tier id",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "example": "Tier 1",
            "minLength": 1
          },
          "effect": {
            "$ref": "#/components/schemas/PromotionTierEffectV1",
            "description": "The tier effect overwrites the original Promotion effect, if tier conditions are met"
          },
          "mov": {
            "type": "integer",
            "format": "int32",
            "example": 10000,
            "description": "Minimal order value requirement for a tier. Value should be in a fractional currency (e.g. cents), if a currency has fractions"
          }
        },
        "x-ayObjects": [
          {
            "property": "effect",
            "className": "PromotionTierEffectV1"
          }
        ]
      },
      "PromotionTierEffectV1": {
        "type": "object",
        "properties": {
          "additionalData": {
            "type": "object",
            "example": {
              "variant_ids": [
                12389244,
                23985437
              ],
              "max_count": 1
            },
            "description": "Additional data of the promotion tier effect",
            "additionalProperties": true
          }
        }
      },
      "Promotion": {
        "type": "object",
        "required": [
          "name",
          "status",
          "schedule",
          "companyIds",
          "shopCountryIds",
          "effect",
          "activationType",
          "level",
          "conditions"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "645e0c241a93369ff53f26e0",
            "description": "Promotion id",
            "maxLength": 24,
            "minLength": 24,
            "readOnly": true
          },
          "version": {
            "type": "string",
            "example": "645e0c241a93369ff53f26e0",
            "description": "Promotion version",
            "maxLength": 24,
            "minLength": 24,
            "readOnly": true
          },
          "name": {
            "type": "string",
            "example": "Christmas Promotion",
            "description": "Name of the promotion",
            "minLength": 3
          },
          "displayName": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Display name localisation",
            "example": {
              "de_DE": "Weihnachtsaktion",
              "en_US": "Christmas promotion"
            }
          },
          "status": {
            "type": "string",
            "example": "active",
            "enum": [
              "archived",
              "inactive",
              "active"
            ],
            "x-enumName": "PromotionStatus",
            "description": "The status of the promotion"
          },
          "activationType": {
            "type": "string",
            "example": "code",
            "enum": [
              "automatic",
              "code"
            ],
            "x-enumName": "PromotionActivationType",
            "description": "Promotion activation type"
          },
          "level": {
            "type": "string",
            "enum": [
              "basket",
              "item"
            ],
            "x-enumName": "PromotionLevel",
            "description": "Promotion application level"
          },
          "schedule": {
            "$ref": "#/components/schemas/PromotionSchedule",
            "description": "Time range when the promotion is active"
          },
          "companyIds": {
            "type": "array",
            "example": [
              100
            ],
            "items": {
              "type": "integer"
            },
            "description": "The list of company ids where the promotion takes place",
            "minItems": 1,
            "uniqueItems": true
          },
          "shopCountryIds": {
            "$ref": "#/components/schemas/PromotionShopCountryId",
            "description": "The list of shop country ids where the promotion takes place"
          },
          "siblingPromotions": {
            "$ref": "#/components/schemas/PromotionSiblingPromotion",
            "description": "Sibling promotions allow/block other promotions from being used together with this one"
          },
          "audiences": {
            "$ref": "#/components/schemas/PromotionAudience",
            "description": "Audiences allow/block list. Use it to restrict promotions to specific customer groups"
          },
          "effect": {
            "$ref": "#/components/schemas/PromotionEffect",
            "description": "The effect that will be applied if all conditions are satisfied"
          },
          "conditions": {
            "type": "array",
            "items": {
              "type": "object",
              "$ref": "#/components/schemas/PromotionCondition"
            },
            "description": "The list of conditions ('payload.*') that determines whether the promotion is applicable or not"
          },
          "itemSetIds": {
            "type": "array",
            "example": [
              "645e0c241a93369ff53f26e0"
            ],
            "items": {
              "type": "string",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "The list of itemSet IDs that can be applied into the promotion",
            "uniqueItems": true
          },
          "priority": {
            "type": "integer",
            "example": 1,
            "description": "Priority of the promotion"
          },
          "customData": {
            "type": "object",
            "example": {
              "legalText": "Supported neglected met she therefore unwilling discovery remainder. Way sentiments two indulgence uncommonly own."
            },
            "description": "Additional data of the promotion. Can be legal text or some other info, that will be shown to customer",
            "additionalProperties": true
          },
          "tiers": {
            "type": "array",
            "items": {
              "type": "object",
              "$ref": "#/components/schemas/PromotionTier"
            },
            "description": "The list of promotion tiers. Tiers must be sent in ascending order"
          },
          "usageLimit": {
            "$ref": "#/components/schemas/PromotionUsageLimit"
          }
        },
        "x-ayObjects": [
          {
            "property": "schedule",
            "className": "PromotionSchedule"
          },
          {
            "property": "siblingPromotions",
            "className": "PromotionSiblingPromotion"
          },
          {
            "property": "audiences",
            "className": "PromotionAudience"
          },
          {
            "property": "effect",
            "className": "PromotionEffect"
          },
          {
            "property": "conditions",
            "className": "PromotionCondition",
            "isCollection": true
          },
          {
            "property": "tiers",
            "className": "PromotionTier",
            "isCollection": true
          },
          {
            "property": "usageLimit",
            "className": "PromotionUsageLimit"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getPromotions",
            "path": "/promotions",
            "isResponseCollection": true,
            "responseModel": "Promotion"
          },
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createPromotion",
            "path": "/promotions",
            "requestModel": "Promotion",
            "responseModel": "Promotion"
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getPromotion",
            "path": "/promotions/{promotionId}",
            "isResponseCollection": false,
            "responseModel": "Promotion",
            "parameters": [
              {
                "name": "promotionId",
                "type": "string",
                "extra": {
                  "example": "645e0c241a93369ff53f26e0"
                }
              }
            ]
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deletePromotion",
            "path": "/promotions/{promotionId}",
            "parameters": [
              {
                "name": "promotionId",
                "type": "string",
                "extra": {
                  "example": "645e0c241a93369ff53f26e0"
                }
              }
            ]
          },
          {
            "methodName": "update",
            "operation": "put",
            "operationId": "updatePromotion",
            "path": "/promotions/{promotionId}",
            "requestModel": "Promotion",
            "responseModel": "Promotion",
            "parameters": [
              {
                "name": "promotionId",
                "type": "string",
                "extra": {
                  "example": "645e0c241a93369ff53f26e0"
                }
              }
            ]
          }
        ]
      },
      "PromotionAudience": {
        "type": "object",
        "properties": {
          "allowList": {
            "type": "array",
            "example": [
              "645e0c241a93369ff53f26e0",
              "646235bf496f8f56171c3762"
            ],
            "items": {
              "type": "string",
              "maxLength": 24,
              "minLength": 24
            },
            "uniqueItems": true,
            "description": "The list of audience ids that can use this promotion"
          },
          "blockList": {
            "type": "array",
            "example": [
              "64623787496f8f56171c3763"
            ],
            "items": {
              "type": "string",
              "maxLength": 24,
              "minLength": 24
            },
            "uniqueItems": true,
            "description": "The list of audience ids that can not use this promotion"
          }
        }
      },
      "PromotionEffect": {
        "type": "object",
        "required": [
          "type",
          "additionalData"
        ],
        "properties": {
          "type": {
            "type": "string",
            "example": "buy_x_get_y",
            "enum": [
              "buy_x_get_y",
              "automatic_discount",
              "combo_deal"
            ],
            "x-enumName": "PromotionEffectType",
            "description": "Type of the promotion"
          },
          "additionalData": {
            "description": "Additional data of the promotion effect, maxCountType and eligibleItemsQuantity are optional",
            "oneOf": [
              {
                "$ref": "#/components/schemas/PromotionEffectBuyXGetY"
              },
              {
                "$ref": "#/components/schemas/PromotionEffectAutomaticDiscount"
              },
              {
                "$ref": "#/components/schemas/PromotionEffectComboDeal"
              }
            ]
          }
        }
      },
      "PromotionEffectAutomaticDiscount": {
        "type": "object",
        "description": "Applicable when `type = automatic_discount`",
        "required": [
          "type",
          "value"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "relative",
              "absolute"
            ],
            "x-enumName": "PromotionEffectAutomationDiscountType",
            "description": "Depicts if the discount should be % of item cost or absolute amount that can be reduced from the item cost.",
            "example": "relative"
          },
          "value": {
            "type": "number",
            "format": "float",
            "description": "Integer value that depicts relative (percentage) or absolute amount - currency is considered from the shop settings.",
            "example": 10
          },
          "discountDistribution": {
            "$ref": "#/components/schemas/PromotionEffectBuyXGetY/properties/discountDistribution"
          }
        }
      },
      "PromotionEffectBuyXGetY": {
        "type": "object",
        "description": "Applicable when `type = buy_x_get_y`",
        "additionalProperties": false,
        "required": [
          "maxCount"
        ],
        "properties": {
          "variantIds": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "Depicts what items can be given away for free when the promotion conditions match.",
            "example": [
              12389244,
              23985437
            ]
          },
          "maxCount": {
            "type": "integer",
            "example": 1,
            "description": "Depicts maximum no of items that can be given for free as part of this promotion"
          },
          "maxCountType": {
            "type": "string",
            "enum": [
              "",
              "per_eligible_unique_items",
              "per_eligible_items_quantity",
              "per_item_set",
              "single_item"
            ],
            "x-enumName": "PromotionEffectMaxCountType",
            "description": "Has to be configured together with `eligibleItemsQuantity`. String, available values:\n* omit for empty\n* `per_eligible_unique_items`: Requires a total `eligibleItemsQuantity` of unique eligible items. Quantity is summed across all item sets if multiple are used.\n* `per_eligible_items_quantity`: Requires a total `eligibleItemsQuantity` of eligible items. Quantity is summed across all item sets if multiple are used.\n* `per_item_set`: Requires `eligibleItemsQuantity` of eligible items from each item set. Not applicable if the item_sets list is empty.\n* `single_item`: Requires `eligibleItemsQuantity` of any single eligible item.\n",
            "example": "per_eligible_unique_items"
          },
          "eligibleItemsQuantity": {
            "type": "integer",
            "description": "Has to be configured with `maxCountType=per_eligible_items_quantity`. Used for calculating of limit free items, check formula above.",
            "example": 6
          },
          "discountType": {
            "type": "string",
            "enum": [
              "absolute",
              "relative"
            ],
            "x-enumName": "PromotionEffectBuyXGetYDiscountType",
            "description": "Depicts if the discount should be % of item cost or absolute amount that can be reduced from the item cost.",
            "example": "relative"
          },
          "discountValue": {
            "type": "number",
            "format": "float",
            "description": "Integer value that depicts relative (percentage) or absolute amount - currency is considered from the shop settings.",
            "example": 10
          },
          "discountDistribution": {
            "type": "string",
            "enum": [
              "none",
              "pro_rata"
            ],
            "x-enumName": "PromotionEffectDiscountDistribution",
            "description": "- **none**: Applies the promotion reduction only to unit items specified in `promotionGroups.*.applicableUnitItemIds`. Items in `promotionGroups.*.eligibleUnitItemIds` receive a reduction of 0.\n- **pro_rata**: Distributes the promotion reduction proportionally among all `promotionGroups` and unit items within them.\n",
            "example": "pro_rata"
          },
          "applicableItemSelectionType": {
            "type": "string",
            "enum": [
              "variant_ids",
              "cheapest",
              "most_expensive"
            ],
            "x-enumName": "PromotionEffectBuyXGetYApplicableItemSelectionType",
            "description": "Allows different `y` item selection strategies:  \n* `variant_ids`: The `y` item is selected from the provided `additionalData.variantIds` list. This type allows to support already existing promotions.\n* `cheapest`:\n  * `x` item - the most expensive item from eligible items is selected\n  * `y` item - the cheapest item from eligible items is selected\n* `most_expensive`:\n  * `x` item - the first most expensive item from eligible items is selected\n  * `y` item - the second most expensive item from eligible items is selected\n",
            "example": "variant_ids"
          }
        }
      },
      "PromotionEffectComboDeal": {
        "type": "object",
        "description": "Applicable when `type = combo_deal`",
        "required": [
          "price",
          "maxCountType"
        ],
        "properties": {
          "price": {
            "type": "integer",
            "example": 1000
          },
          "maxCountType": {
            "type": "string",
            "enum": [
              "per_eligible_items_quantity",
              "per_item_set",
              "single_item"
            ],
            "x-enumName": "PromotionEffectComboDealMaxCountType",
            "description": "Has to be configured together with `eligibleItemsQuantity`. String, available values:\n* `per_eligible_items_quantity`: a customer needs to have a total `eligible_items_quantity` amount of items in the basket.\n* `per_item_set`: a customer needs to have a certain amount of items from item sets. The amount of items from each set can be configured in `additional_data.item_sets_configuration`. It can't be used if `itemSets` list is empty.\n* `single_item`: a customer needs to have an `eligibleItemsQuantity` amount of any single item\n",
            "example": "per_eligible_items_quantity"
          },
          "eligibleItemsQuantity": {
            "type": "integer",
            "description": "How many eligible items a customer needs to have in the basket to fulfill the promotion condition.",
            "example": 6
          }
        }
      },
      "PromotionCondition": {
        "type": "object",
        "required": [
          "level",
          "key",
          "condition"
        ],
        "properties": {
          "level": {
            "type": "string",
            "enum": [
              "global",
              "item"
            ],
            "x-enumName": "PromotionConditionLevel",
            "example": "global",
            "description": "The list of conditions ('payload.*') that determines whether the promotion is applicable or not.\nIf `level = global`, a condition ('payload.*') that determines whether the promotion is applicable or not.\nIf `level = item`, a conditions ('item.*') that determines whether promotion is applicable or not for a particular item.\n"
          },
          "key": {
            "type": "string",
            "example": "mov_100",
            "description": "Key of the condition. Can be used to identify which condition failed in the validate endpoint"
          },
          "condition": {
            "type": "string",
            "example": "payload.items.exists(i, 11003 in i.variant.id)",
            "description": "A Common Expression Language valid condition.\n\nAvailable replacements keys:\n`{{thisPromotionId}}` - will be replace on current promotion id, example:\n```\n\"payload.customData.promotions.exists(i, i == '{{thisPromotionId}}')\"\n```\n",
            "minLength": 1
          }
        }
      },
      "PromotionSchedule": {
        "type": "object",
        "required": [
          "from",
          "to"
        ],
        "properties": {
          "from": {
            "type": "string",
            "format": "date-time",
            "example": "2023-05-10T10:00:00+00:00",
            "description": "The beginning of the time range when the promotion is active",
            "pattern": "^((?:(\\d{4}-\\d{2}-\\d{2})(T)(\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{2})?))(Z|[\\+-]\\d{2}:\\d{2}))$"
          },
          "to": {
            "type": "string",
            "format": "date-time",
            "example": "2024-05-10T10:00:00+00:00",
            "description": "The end of the time range when the promotion is active",
            "pattern": "^((?:(\\d{4}-\\d{2}-\\d{2})(T)(\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{2})?))(Z|[\\+-]\\d{2}:\\d{2}))$"
          }
        }
      },
      "PromotionShopCountryId": {
        "type": "object",
        "properties": {
          "allowList": {
            "type": "array",
            "example": [
              1,
              2
            ],
            "items": {
              "type": "integer"
            },
            "uniqueItems": true,
            "minItems": 1,
            "description": "The list of shop IDs where the promotion is allowed"
          },
          "blockList": {
            "type": "array",
            "example": [
              3,
              4
            ],
            "items": {
              "type": "integer"
            },
            "minItems": 1,
            "uniqueItems": true,
            "description": "The list of shop IDs where the promotion is blocked"
          }
        }
      },
      "PromotionSiblingPromotion": {
        "type": "object",
        "required": [
          "enabled"
        ],
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "allowList": {
            "type": "array",
            "example": [
              "645e0c241a93369ff53f26e0",
              "646235bf496f8f56171c3762"
            ],
            "items": {
              "type": "string",
              "maxLength": 24,
              "minLength": 24
            },
            "uniqueItems": true,
            "description": "The list of promotion ids that can be applied together with this promotion"
          },
          "blockList": {
            "type": "array",
            "example": [
              "64623787496f8f56171c3763"
            ],
            "items": {
              "type": "string",
              "maxLength": 24,
              "minLength": 24
            },
            "uniqueItems": true,
            "description": "The list of promotion ids that can not be applied together with this promotion"
          },
          "level": {
            "type": "string",
            "example": "basket",
            "enum": [
              "basket"
            ],
            "x-enumName": "PromotionSiblingPromotionLevel",
            "description": "The level on which promotion is applied"
          }
        }
      },
      "PromotionTier": {
        "type": "object",
        "required": [
          "name",
          "effect",
          "mov"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "example": 1,
            "description": "Autogenerated tier id",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "example": "Tier 1",
            "minLength": 1
          },
          "effect": {
            "required": [
              "additionalData"
            ],
            "properties": {
              "additionalData": {
                "$ref": "#/components/schemas/PromotionEffectAutomaticDiscount"
              }
            }
          },
          "mov": {
            "type": "integer",
            "example": 10000,
            "description": "Minimal order value requirement for a tier. Value should be in a fractional currency (e.g. cents), if a currency has fractions"
          }
        }
      },
      "PromotionUsageLimit": {
        "type": "object",
        "properties": {
          "promotion": {
            "$ref": "#/components/schemas/PromotionUsageLimitPromotion"
          },
          "promotionCodes": {
            "$ref": "#/components/schemas/PromotionUsageLimitPromotionCode"
          }
        },
        "x-ayObjects": [
          {
            "property": "promotion",
            "className": "PromotionUsageLimitPromotion"
          },
          {
            "property": "promotionCodes",
            "className": "PromotionUsageLimitPromotionCode"
          }
        ]
      },
      "PromotionUsageLimitPromotion": {
        "type": "object",
        "required": [
          "count"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 100,
            "description": "Promotion total usage limit count"
          }
        }
      },
      "PromotionUsageLimitPromotionCode": {
        "type": "object",
        "required": [
          "count",
          "type"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 100,
            "description": "Promotion code usage limit count"
          },
          "type": {
            "type": "string",
            "enum": [
              "order",
              "customer"
            ],
            "x-enumName": "PromotionUsageLimitPromotionCodeType",
            "example": "order",
            "description": "Promotion code usage limit count type. \nMay be one of the following values: \n* order\n* customer\n\nOrder - if different customers use the same code, it counts toward the total limit. \nCustomer - if different customers use the same code, each customer has their own limit count'\n"
          }
        }
      },
      "Audience": {
        "type": "object",
        "required": [
          "name",
          "description",
          "companyIds",
          "customerIds"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "645e0c241a93369ff53f26e0",
            "description": "Audience id",
            "maxLength": 24,
            "minLength": 24,
            "readOnly": true
          },
          "name": {
            "type": "string",
            "example": "VIP customers",
            "description": "Internal name of the audience",
            "minLength": 3
          },
          "description": {
            "type": "string",
            "example": "German VIP Customers from Hamburg only",
            "description": "Internal description of the audience",
            "minLength": 3
          },
          "companyIds": {
            "type": "array",
            "example": [
              100
            ],
            "items": {
              "type": "integer"
            },
            "uniqueItems": true,
            "description": "The list of company ids where the audience takes place",
            "minItems": 1
          },
          "customerIds": {
            "type": "array",
            "example": [
              345,
              456,
              567
            ],
            "items": {
              "type": "integer"
            },
            "uniqueItems": true,
            "description": "The list of customer ids",
            "minItems": 1
          },
          "createdAt": {
            "type": "string",
            "example": "2023-05-10T10:00:00+00:00",
            "description": "Created at date",
            "minLength": 1,
            "pattern": "^((?:(\\d{4}-\\d{2}-\\d{2})(T)(\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{2})?))(Z|[\\+-]\\d{2}:\\d{2}))$",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "example": "2023-05-10T10:00:00+00:00",
            "description": "Updated at date",
            "minLength": 1,
            "pattern": "^((?:(\\d{4}-\\d{2}-\\d{2})(T)(\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{2})?))(Z|[\\+-]\\d{2}:\\d{2}))$",
            "readOnly": true
          }
        },
        "x-ayOperations": [
          {
            "methodName": "getAudiences",
            "operation": "get",
            "operationId": "getAudiences",
            "path": "/promotions/audiences",
            "isResponseCollection": true,
            "responseModel": "Audience"
          },
          {
            "methodName": "createAudience",
            "operation": "post",
            "operationId": "createAudience",
            "path": "/promotions/audiences",
            "requestModel": "Audience",
            "responseModel": "Audience"
          },
          {
            "methodName": "getAudience",
            "operation": "get",
            "operationId": "getAudience",
            "path": "/promotions/audiences/{audienceId}",
            "responseModel": "Audience",
            "parameters": [
              {
                "name": "audienceId",
                "type": "string",
                "extra": {
                  "example": "645e0c241a93369ff53f26e0"
                }
              }
            ]
          },
          {
            "methodName": "deleteAudience",
            "operation": "delete",
            "operationId": "deleteAudience",
            "path": "/promotions/audiences/{audienceId}",
            "parameters": [
              {
                "name": "audienceId",
                "type": "string",
                "extra": {
                  "example": "645e0c241a93369ff53f26e0"
                }
              }
            ]
          },
          {
            "methodName": "updateAudience",
            "operation": "put",
            "operationId": "updateAudience",
            "path": "/promotions/audiences/{audienceId}",
            "requestModel": "AudienceUpdateRequest",
            "responseModel": "Audience",
            "parameters": [
              {
                "name": "audienceId",
                "type": "string",
                "extra": {
                  "example": "645e0c241a93369ff53f26e0"
                }
              }
            ]
          }
        ]
      },
      "AudienceUpdateRequest": {
        "type": "object",
        "required": [
          "name",
          "description",
          "customerIds"
        ],
        "properties": {
          "name": {
            "type": "string",
            "example": "VIP customers",
            "description": "Internal name of the audience",
            "minLength": 3
          },
          "description": {
            "type": "string",
            "example": "German VIP Customers from Hamburg only",
            "description": "Internal description of the audience",
            "minLength": 3
          },
          "customerIds": {
            "type": "array",
            "example": [
              345,
              456,
              567
            ],
            "items": {
              "type": "integer"
            },
            "uniqueItems": true,
            "description": "The list of customer ids",
            "minItems": 1
          }
        }
      },
      "CustomerSegment": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "format": "uuid",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "readOnly": true,
            "description": "Unique identifier of the segment."
          },
          "referenceKey": {
            "type": "string",
            "description": "Business-facing identifier."
          },
          "name": {
            "type": "string",
            "description": "Display name of the segment."
          },
          "criteriaDsl": {
            "type": "string",
            "description": "Criteria DSL defining the segment rules (e.g. `\"TIER-A\" IN groups AND LTV > 1000`)."
          },
          "rules": {
            "type": "integer",
            "readOnly": true,
            "description": "The number of conditions in the criteriaDsl."
          },
          "active": {
            "type": "boolean",
            "description": "Whether the segment is active."
          },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updatedDate": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "x-ayOperations": [
          {
            "methodName": "getCustomerSegments",
            "operation": "get",
            "operationId": "getCustomerSegments",
            "path": "/shops/{shopKey}/countries/{countryCode}/customer-segments",
            "isResponseCollection": true,
            "responseModel": "CustomerSegment",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "createCustomerSegment",
            "operation": "post",
            "operationId": "createCustomerSegment",
            "path": "/shops/{shopKey}/countries/{countryCode}/customer-segments",
            "requestModel": "CustomerSegment",
            "responseModel": "CustomerSegment",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "getCustomerSegment",
            "operation": "get",
            "operationId": "getCustomerSegment",
            "path": "/shops/{shopKey}/countries/{countryCode}/customer-segments/{segmentGuid}",
            "responseModel": "CustomerSegment",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "segmentGuid",
                "type": "string",
                "extra": {
                  "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
                }
              }
            ]
          },
          {
            "methodName": "updateCustomerSegment",
            "operation": "patch",
            "operationId": "updateCustomerSegment",
            "path": "/shops/{shopKey}/countries/{countryCode}/customer-segments/{segmentGuid}",
            "requestModel": "CustomerSegment",
            "responseModel": "CustomerSegment",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "segmentGuid",
                "type": "string",
                "extra": {
                  "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
                }
              }
            ]
          },
          {
            "methodName": "deleteCustomerSegment",
            "operation": "delete",
            "operationId": "deleteCustomerSegment",
            "path": "/shops/{shopKey}/countries/{countryCode}/customer-segments/{segmentGuid}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "segmentGuid",
                "type": "string",
                "extra": {
                  "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
                }
              }
            ]
          }
        ]
      },
      "Reservation": {
        "type": "object",
        "required": [
          "referenceKey"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "referenceKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "warehouseReferenceKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "reservationTtl": {
            "type": "integer",
            "minimum": 1
          },
          "variant": {
            "$ref": "#/components/schemas/ReservationVariant"
          },
          "error": {
            "$ref": "#/components/schemas/ReservationError"
          }
        },
        "x-ayObjects": [
          {
            "property": "variant",
            "className": "ReservationVariant"
          },
          {
            "property": "error",
            "className": "ReservationError"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createReservations",
            "path": "/reservations",
            "isRequestCollection": true,
            "requestModel": "Reservation",
            "isResponseCollection": true,
            "responseModel": "Reservation"
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteReservation",
            "path": "/reservations/{reservationIdentifier}",
            "parameters": [
              {
                "name": "reservationIdentifier",
                "type": "identifier"
              }
            ]
          }
        ]
      },
      "ReservationVariant": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "referenceKey": {
            "type": "string"
          },
          "merchantReferenceKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          }
        }
      },
      "ReservationError": {
        "type": "object",
        "readOnly": true,
        "required": [
          "errorKey",
          "message"
        ],
        "properties": {
          "errorKey": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      },
      "Redirect": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "description": "id of the redirect",
            "example": 83070
          },
          "source": {
            "type": "string",
            "description": "url of the source",
            "example": "https://forceful-poem.net/"
          },
          "target": {
            "type": "string",
            "description": "url of the target",
            "example": "https://extra-small-mouser.net/"
          },
          "statusCode": {
            "type": "integer",
            "description": "status of the redirect",
            "example": 302
          },
          "isRegex": {
            "type": "boolean",
            "example": false
          },
          "parent": {
            "$ref": "#/components/schemas/Redirect"
          },
          "priority": {
            "type": "integer",
            "example": 700
          },
          "error": {
            "$ref": "#/components/schemas/RedirectError"
          },
          "createdAt": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "description": "Timestamp when the redirect is created",
            "example": "2023-05-10T10:00:00+00:00"
          },
          "updatedAt": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "description": "Timestamp when the redirect is updated",
            "example": "2023-05-11T10:00:00+00:00"
          }
        },
        "x-ayObjects": [
          {
            "property": "parent",
            "className": "Redirect"
          },
          {
            "property": "error",
            "className": "RedirectError"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getRedirects",
            "path": "/shops/{shopKey}/redirects",
            "isResponseCollection": true,
            "responseModel": "Redirect",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "createOrUpdateBulk",
            "operation": "put",
            "operationId": "createOrUpdateRedirects",
            "path": "/shops/{shopKey}/redirects/bulk",
            "requestModel": "Redirect",
            "isRequestCollection": true,
            "responseModel": "Redirect",
            "isResponseCollection": true,
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "deleteBulk",
            "operation": "delete",
            "operationId": "deleteRedirects",
            "path": "/shops/{shopKey}/redirects/bulk",
            "requestModel": "Redirect",
            "isRequestCollection": true,
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              }
            ]
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteRedirect",
            "path": "/shops/{shopKey}/redirects/{redirectId}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "redirectId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createRedirect",
            "path": "/shops/{shopKey}/redirects",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              }
            ],
            "requestModel": "Redirect",
            "responseModel": "Redirect"
          },
          {
            "methodName": "update",
            "operation": "put",
            "operationId": "updateRedirect",
            "path": "/shops/{shopKey}/redirects/{redirectId}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "redirectId",
                "type": "integer"
              }
            ],
            "requestModel": "Redirect",
            "responseModel": "Redirect"
          }
        ]
      },
      "RedirectError": {
        "type": "object",
        "readOnly": true,
        "nullable": true,
        "required": [
          "errorKey",
          "message"
        ],
        "properties": {
          "errorKey": {
            "type": "string",
            "description": "A key that describes the occurred error."
          },
          "message": {
            "type": "string",
            "description": "Some human readable description of the error."
          }
        }
      },
      "EmailKey": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "key": {
            "maxLength": 100,
            "minLength": 2,
            "pattern": "^[a-zA-Z]+(-[a-zA-Z]+)*$",
            "type": "string"
          },
          "name": {
            "maxLength": 200,
            "minLength": 2,
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "readOnly": true
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string",
            "readOnly": true
          }
        },
        "x-ayOperations": [
          {
            "methodName": "create",
            "operation": "post",
            "operationId": "createEmailKey",
            "path": "/shops/{shopKey}/countries/{countryCode}/emails/keys",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ],
            "requestModel": "EmailKey",
            "responseModel": "EmailKey"
          },
          {
            "methodName": "update",
            "operation": "patch",
            "operationId": "updateEmailKey",
            "requestModel": "EmailKey",
            "responseModel": "EmailKey",
            "path": "/shops/{shopKey}/countries/{countryCode}/emails/keys/{emailKeyId}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "emailKeyId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "delete",
            "operation": "delete",
            "operationId": "deleteEmailKey",
            "path": "/shops/{shopKey}/countries/{countryCode}/emails/keys/{emailKeyId}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "emailKeyId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "get",
            "operation": "get",
            "operationId": "getEmailKey",
            "responseModel": "EmailKey",
            "path": "/shops/{shopKey}/countries/{countryCode}/emails/keys/{emailKeyId}",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              },
              {
                "name": "emailKeyId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getEmailKeys",
            "path": "/shops/{shopKey}/countries/{countryCode}/emails/keys",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ],
            "responseModel": "EmailKey",
            "isResponseCollection": true
          }
        ]
      },
      "Email": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "key",
          "payload",
          "recipient"
        ],
        "properties": {
          "key": {
            "type": "string"
          },
          "payload": {
            "type": "object",
            "additionalProperties": true
          },
          "recipient": {
            "type": "string",
            "maxLength": 60,
            "pattern": "^(([^<>()\\[\\]\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([^<>()\\[\\]\\.,;:\\s@\"]+\\.)+[a-zA-Z]{2,}))$"
          },
          "orderId": {
            "type": "integer"
          }
        },
        "x-ayOperations": [
          {
            "methodName": "send",
            "operation": "post",
            "operationId": "sendEmail",
            "path": "/shops/{shopKey}/countries/{countryCode}/emails/send",
            "parameters": [
              {
                "name": "shopKey",
                "type": "string"
              },
              {
                "name": "countryCode",
                "type": "string"
              }
            ],
            "requestModel": "Email"
          }
        ]
      },
      "CreateBulkRequest": {
        "type": "object",
        "properties": {
          "callbacks": {
            "$ref": "#/components/schemas/BulkRequestCallbacks"
          },
          "operations": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/CreateBulkOperation"
            }
          }
        },
        "x-ayObjects": [
          {
            "property": "callbacks",
            "className": "BulkRequestCallbacks"
          },
          {
            "property": "operations",
            "isCollection": true,
            "className": "CreateBulkOperation"
          }
        ]
      },
      "BulkRequest": {
        "type": "object",
        "properties": {
          "key": {
            "type": "integer",
            "description": "Bulk request identifier",
            "example": 123
          }
        },
        "x-ayOperations": [
          {
            "methodName": "cancel",
            "responseModel": "BulkRequestStatus",
            "operation": "put",
            "operationId": "cancelBulkRequest",
            "path": "/bulk-requests/{requestKey}/cancel",
            "parameters": [
              {
                "name": "requestKey",
                "type": "integer"
              }
            ]
          }
        ]
      },
      "BulkRequestStatus": {
        "type": "object",
        "required": [
          "key",
          "status"
        ],
        "properties": {
          "key": {
            "type": "integer",
            "description": "Bulk request identifier",
            "example": 123
          },
          "status": {
            "type": "string",
            "enum": [
              "new",
              "pending",
              "processing",
              "processed",
              "failed",
              "cancelled",
              "aborted"
            ],
            "x-enumName": "BulkRequestStatusEnum",
            "description": "Status of the bulk request",
            "example": "cancelled"
          },
          "progress": {
            "$ref": "#/components/schemas/BulkRequestProgress"
          }
        },
        "x-ayObjects": [
          {
            "property": "progress",
            "className": "BulkRequestProgress"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "all",
            "responseModel": "BulkRequestStatus",
            "isResponseCollection": true,
            "operation": "get",
            "operationId": "getBulkRequestStatuses",
            "path": "/bulk-requests"
          },
          {
            "methodName": "get",
            "responseModel": "BulkRequestStatus",
            "operation": "get",
            "operationId": "getBulkRequestStatus",
            "path": "/bulk-requests/{requestKey}/status",
            "parameters": [
              {
                "name": "requestKey",
                "type": "integer"
              }
            ]
          }
        ]
      },
      "BulkOperationStatus": {
        "type": "object",
        "required": [
          "key",
          "status"
        ],
        "properties": {
          "key": {
            "type": "string",
            "maxLength": 100,
            "description": "Operation key, that is unique within the given bulk request",
            "example": "add-product"
          },
          "status": {
            "type": "string",
            "enum": [
              "new",
              "processing",
              "processed",
              "failed"
            ],
            "x-enumName": "BulkOperationStatusEnum",
            "description": "Status of the bulk operation",
            "example": "processed"
          },
          "response": {
            "$ref": "#/components/schemas/BulkOperationResponse"
          },
          "bulkRequest": {
            "$ref": "#/components/schemas/BulkRequestStatus"
          }
        },
        "x-ayObjects": [
          {
            "property": "response",
            "className": "BulkOperationResponse"
          },
          {
            "property": "bulkRequest",
            "className": "BulkRequestStatus"
          }
        ],
        "x-ayOperations": [
          {
            "methodName": "get",
            "responseModel": "BulkOperationStatus",
            "operation": "get",
            "operationId": "getBulkOperationStatus",
            "path": "/bulk-requests/{requestKey}/operations/{operationKey}/status",
            "parameters": [
              {
                "name": "requestKey",
                "type": "integer"
              },
              {
                "name": "operationKey",
                "type": "string"
              }
            ]
          }
        ]
      },
      "BulkRequestCallbacks": {
        "type": "object",
        "properties": {
          "requestUrl": {
            "type": "string",
            "format": "url",
            "nullable": true,
            "maxLength": 255,
            "description": "Callback url, which will be triggered when request status is changed",
            "example": "https://example.com/api/internal/callback/request"
          },
          "operationUrl": {
            "type": "string",
            "format": "url",
            "nullable": true,
            "maxLength": 255,
            "description": "Callback url, which will be triggered when operation status is changed",
            "example": "https://client.aboutyou.cloud/api/internal/callback/operation"
          },
          "requestStatus": {
            "type": "string",
            "enum": [
              "complete",
              "incomplete"
            ],
            "x-enumName": "BulkRequestCreationStatus",
            "description": "Status of the bulk request creation",
            "example": "complete",
            "default": "complete"
          },
          "bulkRequestKey": {
            "type": "integer",
            "nullable": true,
            "description": "Key indicating the bulk request id. To split a bulk request into multiple chunks, create the request with requestStatus=incomplete, then pass the returned key as bulkRequestKey when submitting additional chunks. For the final chunk, pass the same bulkRequestKey and set requestStatus=complete so the request can be queued for processing. Completed bulk requests cannot be extended. When extending a bulk request, operation keys that were already submitted in previous chunks are not checked again. When not provided, a new bulk request is created.",
            "example": 2241
          }
        }
      },
      "CreateBulkOperation": {
        "type": "object",
        "required": [
          "key",
          "url",
          "method"
        ],
        "properties": {
          "key": {
            "type": "string",
            "maxLength": 100,
            "description": "Operation key, which is unique within the given bulk request",
            "example": "create-product"
          },
          "url": {
            "type": "string",
            "maxLength": 255,
            "description": "Operation relative url",
            "example": "/products"
          },
          "method": {
            "type": "string",
            "enum": [
              "GET",
              "HEAD",
              "POST",
              "PUT",
              "PATCH",
              "DELETE"
            ],
            "x-enumName": "BulkOperationMethod",
            "description": "Operation HTTP method",
            "example": "POST"
          },
          "headers": {
            "type": "object",
            "additionalProperties": true,
            "description": "Operation additional HTTP headers",
            "example": {
              "X-Merchant-Key": 123
            }
          },
          "body": {
            "type": "object",
            "description": "Operation request body",
            "additionalProperties": true,
            "example": {
              "referenceKey": "M0001-black",
              "name": {
                "de_DE": "Blaues Shirt",
                "en_GB": "Blue Shirt"
              },
              "state": "draft",
              "master": {
                "referenceKey": "M0001",
                "categories": {
                  "paths": [
                    [
                      "Fashion",
                      "Men",
                      "Shirts"
                    ]
                  ]
                }
              }
            }
          }
        }
      },
      "BulkRequestProgress": {
        "type": "object",
        "required": [
          "totalOperations",
          "processedOperations",
          "failedOperations"
        ],
        "description": "Current progress of the bulk request",
        "properties": {
          "totalOperations": {
            "type": "integer",
            "description": "Total number of operations",
            "example": 13636
          },
          "processedOperations": {
            "type": "integer",
            "description": "Number of processed operations",
            "example": 4987
          },
          "failedOperations": {
            "type": "integer",
            "description": "Number of failed operations",
            "example": 41
          }
        }
      },
      "BulkRequestStatusChangedEvent": {
        "x-ignore": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderEvent/allOf/0"
          },
          {
            "type": "object",
            "properties": {
              "payload": {
                "$ref": "#/components/schemas/BulkRequestStatus"
              }
            }
          }
        ]
      },
      "BulkOperationStatusChangedEvent": {
        "x-ignore": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderEvent/allOf/0"
          },
          {
            "type": "object",
            "properties": {
              "payload": {
                "$ref": "#/components/schemas/BulkOperationStatus"
              }
            }
          }
        ]
      },
      "BulkOperationResponse": {
        "type": "object",
        "nullable": true,
        "required": [
          "body",
          "statusCode"
        ],
        "description": "Operation response data. Can be null if operation hasn't been processed yet",
        "properties": {
          "body": {
            "type": "object",
            "nullable": true,
            "description": "Operation response body. Can be null if operation doesn't return any response (e.g. 204 status code)",
            "additionalProperties": true,
            "example": {
              "referenceKey": "M0001-black",
              "name": {
                "de_DE": "Blaues Shirt",
                "en_GB": "Blue Shirt"
              },
              "state": "draft",
              "master": {
                "referenceKey": "M0001",
                "categories": {
                  "paths": [
                    [
                      "Fashion",
                      "Men",
                      "Shirts"
                    ]
                  ]
                }
              }
            }
          },
          "statusCode": {
            "type": "integer",
            "nullable": true,
            "description": "Operation response status code.",
            "example": 201
          }
        }
      },
      "ProductSellableTimeframe": {
        "type": "object",
        "required": [
          "shopKey",
          "countryCode",
          "sellableFrom",
          "sellableTo"
        ],
        "properties": {
          "productId": {
            "type": "integer",
            "description": "The ID of the product",
            "example": 12345
          },
          "shopKey": {
            "type": "string",
            "description": "The shop key identifier",
            "example": "ay"
          },
          "countryCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "The ISO 3166-1 alpha-2 country code",
            "example": "de"
          },
          "sellableFrom": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "The date and time from which the product is sellable",
            "example": "2025-01-01T00:00:00Z"
          },
          "sellableTo": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "The date and time until which the product is sellable",
            "example": "2025-12-31T23:59:59Z"
          }
        },
        "x-ayOperations": [
          {
            "methodName": "batchProcess",
            "operation": "put",
            "operationId": "batchProcessProductSellableTimeframes",
            "path": "/products/sellable-timeframes",
            "requestModel": "ProductSellableTimeframe",
            "isRequestCollection": true
          }
        ]
      },
      "ShopCountriesToUnlock": {
        "type": "object",
        "required": [
          "shopCountries"
        ],
        "properties": {
          "shopCountries": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/ShopCountryToUnlock"
            }
          }
        },
        "x-ayObjects": [
          {
            "property": "shopCountries",
            "isCollection": true,
            "className": "ShopCountryToUnlock"
          }
        ]
      },
      "ShopCountryToUnlock": {
        "type": "object",
        "required": [
          "shopKey",
          "countryCode"
        ],
        "properties": {
          "shopKey": {
            "type": "string",
            "example": "ms",
            "description": "A key that uniquely identifies the shop within the tenant's ecosystem."
          },
          "countryCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "example": "DE",
            "description": "ISO 3166 alpha 2 country code."
          }
        }
      },
      "Channel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Numeric primary key generated during creation.",
            "example": 101,
            "readOnly": true
          },
          "key": {
            "type": "string",
            "maxLength": 255,
            "description": "Slug short key to identify the channel. Not allowed to be modified after channel is used for an order.",
            "example": "online-store-de",
            "readOnly": true
          },
          "type": {
            "type": "string",
            "description": "Not allowed to be modified after channel is used for an order.",
            "example": [
              "marketplace",
              "in_store"
            ],
            "readOnly": true
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Custom name of the channel.",
            "example": "Online Store (Germany)",
            "readOnly": true
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "Optional description about the channel in text format.",
            "example": "Primary sales channel for all German marketplace orders.",
            "readOnly": true
          },
          "shopCountry": {
            "$ref": "#/components/schemas/ShopCountry"
          },
          "defaultPaymentMethod": {
            "$ref": "#/components/schemas/DefaultPaymentMethodResponse"
          },
          "active": {
            "type": "boolean",
            "default": true,
            "description": "If set to false, the channel cannot be used during external order creation.",
            "x-isBoolean": true,
            "x-isTrueDefault": true,
            "readOnly": true
          },
          "isUsedInOrders": {
            "type": "boolean",
            "description": "Shows if the channel is already used in orders.",
            "example": true,
            "readOnly": true
          },
          "configs": {
            "$ref": "#/components/schemas/ChannelConfigsWithDefaults"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time when the channel was created.",
            "example": "2021-09-23T11%3A30%3A58%2B00%3A00",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time when the channel was last updated.",
            "example": "2021-09-23T11%3A30%3A58%2B00%3A00",
            "readOnly": true
          }
        },
        "x-ayOperations": [
          {
            "methodName": "createChannel",
            "operation": "post",
            "operationId": "createChannel",
            "path": "/companies/{companyId}/channels",
            "requestModel": "ChannelCreateRequest",
            "responseModel": "Channel",
            "parameters": [
              {
                "name": "companyId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "getChannel",
            "operation": "get",
            "operationId": "getChannel",
            "path": "/companies/{companyId}/channels/{channelId}",
            "responseModel": "Channel",
            "parameters": [
              {
                "name": "companyId",
                "type": "integer"
              },
              {
                "name": "channelId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "all",
            "operation": "get",
            "operationId": "getChannels",
            "path": "/companies/{companyId}/channels",
            "isResponseCollection": true,
            "responseModel": "Channel",
            "parameters": [
              {
                "name": "companyId",
                "type": "integer"
              }
            ]
          },
          {
            "methodName": "updateChannel",
            "operation": "put",
            "operationId": "updateChannel",
            "path": "/companies/{companyId}/channels/{channelId}",
            "requestModel": "ChannelUpdateRequest",
            "responseModel": "Channel",
            "parameters": [
              {
                "name": "companyId",
                "type": "integer"
              },
              {
                "name": "channelId",
                "type": "integer"
              }
            ]
          }
        ]
      },
      "ChannelCreateRequest": {
        "type": "object",
        "required": [
          "key",
          "type",
          "name",
          "shopCountryId"
        ],
        "properties": {
          "key": {
            "type": "string",
            "maxLength": 255,
            "description": "Slug short key to identify the channel. Not allowed to be modified after channel is used for an order.",
            "example": "online-store-de"
          },
          "type": {
            "type": "string",
            "description": "Not allowed to be modified after channel is used for an order.",
            "example": [
              "marketplace",
              "in_store"
            ]
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Custom name of the channel.",
            "example": "Online Store (Germany)"
          },
          "description": {
            "type": "string",
            "description": "Optional description about the channel in text format.",
            "example": "Primary sales channel for all German marketplace orders."
          },
          "shopCountryId": {
            "type": "integer",
            "description": "The application / shop country association of the channel. References an existing company application.",
            "example": 5
          },
          "defaultPaymentMethod": {
            "$ref": "#/components/schemas/DefaultPaymentMethod"
          },
          "active": {
            "type": "boolean",
            "default": true,
            "description": "If set to false, the channel cannot be used during external order creation.",
            "x-isBoolean": true,
            "x-isTrueDefault": true
          },
          "configs": {
            "$ref": "#/components/schemas/ChannelConfigsWithDefaults"
          }
        }
      },
      "ChannelUpdateRequest": {
        "type": "object",
        "required": [
          "key",
          "type",
          "name",
          "shopCountryId"
        ],
        "properties": {
          "key": {
            "type": "string",
            "maxLength": 255,
            "description": "Slug short key to identify the channel. Not allowed to be modified after channel is used for an order.",
            "example": "online-store-de"
          },
          "type": {
            "type": "string",
            "description": "Not allowed to be modified after channel is used for an order.",
            "example": [
              "marketplace",
              "in_store"
            ]
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Custom name of the channel.",
            "example": "Online Store (Germany)"
          },
          "description": {
            "type": "string",
            "description": "Optional description about the channel in text format.",
            "example": "Primary sales channel for all German marketplace orders."
          },
          "shopCountryId": {
            "type": "integer",
            "description": "The application / shop country association of the channel. References an existing company application.",
            "example": 5
          },
          "defaultPaymentMethod": {
            "$ref": "#/components/schemas/DefaultPaymentMethod"
          },
          "active": {
            "type": "boolean",
            "description": "If set to false, the channel cannot be used during external order creation."
          },
          "configs": {
            "$ref": "#/components/schemas/ChannelConfigs"
          }
        }
      },
      "ChannelConfigs": {
        "type": "object",
        "description": "A object containing a custom set of configs representing tenant configurations.",
        "properties": {
          "emailsEnabled": {
            "type": "boolean",
            "description": "State of the tenant config email.all.enabled for the channel and shopCountryId combination."
          },
          "invoicesEnabled": {
            "type": "boolean",
            "description": "State of the tenant config invoiceGenerateDocument.enabled for the channel and shopCountryId combination."
          },
          "externalPriceOverrideEnabled": {
            "type": "boolean",
            "description": "State of the tenant config externalOrder.priceOverride.enabled for the channel and shopCountryId combination."
          }
        }
      },
      "ChannelConfigsWithDefaults": {
        "type": "object",
        "description": "A object containing a custom set of configs representing tenant configurations.",
        "properties": {
          "emailsEnabled": {
            "type": "boolean",
            "default": true,
            "x-isBoolean": true,
            "x-isTrueDefault": true,
            "description": "State of the tenant config email.all.enabled for the channel and shopCountryId combination."
          },
          "invoicesEnabled": {
            "type": "boolean",
            "default": true,
            "x-isBoolean": true,
            "x-isTrueDefault": true,
            "description": "State of the tenant config invoiceGenerateDocument.enabled for the channel and shopCountryId combination."
          },
          "externalPriceOverrideEnabled": {
            "type": "boolean",
            "default": false,
            "x-isBoolean": true,
            "x-isTrueDefault": false,
            "description": "State of the tenant config externalOrder.priceOverride.enabled for the channel and shopCountryId combination."
          }
        }
      },
      "DefaultPaymentMethod": {
        "type": "object",
        "description": "Optional default payment method. If set, the payment method does not need to be set during order creation and it falls back to this method.",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "ID of the default payment method.",
            "example": 22
          },
          "key": {
            "type": "string",
            "description": "Key of the default payment method.",
            "readOnly": true,
            "example": "credit-card"
          }
        }
      },
      "DefaultPaymentMethodResponse": {
        "type": "object",
        "nullable": true,
        "description": "Optional default payment method. If set, the payment method does not need to be set during order creation and it falls back to this method.",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "ID of the default payment method.",
            "example": 22
          },
          "key": {
            "type": "string",
            "description": "Key of the default payment method.",
            "readOnly": true,
            "example": "credit-card"
          }
        }
      }
    },
    "examples": {
      "CompleteProductRequest": {
        "value": {
          "referenceKey": "M0001-black",
          "name": {
            "de_DE": "Blaues Shirt",
            "en_GB": "Blue Shirt"
          },
          "state": "live",
          "master": {
            "referenceKey": "M0001",
            "categories": {
              "paths": [
                [
                  "Fashion",
                  "Men",
                  "Shirts"
                ]
              ]
            },
            "attributes": [
              {
                "name": "collection",
                "type": "localizedString",
                "value": {
                  "de_DE": "einzigartig",
                  "en_GB": "unique"
                }
              },
              {
                "name": "season",
                "type": "simpleList",
                "value": [
                  "autumn",
                  "winter"
                ]
              }
            ]
          },
          "attributes": [
            {
              "name": "dimensions",
              "type": "advanced",
              "value": {
                "height": 100,
                "width": 30,
                "unit": "cm"
              }
            },
            {
              "name": "material",
              "type": "advancedList",
              "value": [
                {
                  "name": "wool",
                  "percentage": 80
                },
                {
                  "name": "cotton",
                  "percentage": 20
                }
              ]
            }
          ],
          "variants": [
            {
              "referenceKey": "M0001-black-M",
              "attributes": [
                {
                  "name": "size",
                  "type": "simple",
                  "value": "M"
                },
                {
                  "name": "color",
                  "type": "localizedStringList",
                  "value": [
                    {
                      "de_DE": "weiß",
                      "en_GB": "white"
                    },
                    {
                      "de_DE": "schwarz",
                      "en_GB": "black"
                    }
                  ]
                }
              ],
              "prices": [
                {
                  "price": 80,
                  "oldPrice": 100,
                  "recommendedRetailPrice": 90,
                  "buyingPrice": 70,
                  "tax": 19,
                  "countryCode": "DE",
                  "currencyCode": "EUR",
                  "groupKey": "myGroupKey",
                  "promotionKey": "myPromotionKey",
                  "unitPrice": {
                    "unit": "ml",
                    "amount": 100,
                    "price": 399
                  },
                  "validFrom": "2021-09-23T11:30:58+00:00",
                  "validTo": null,
                  "merchantReferenceKey": "merchant-1"
                }
              ]
            }
          ],
          "images": [
            {
              "assetUrl": "images/084dace7d7ff691e97982fa554113c29",
              "attributes": [
                {
                  "name": "view",
                  "type": "simple",
                  "value": "front"
                }
              ]
            }
          ],
          "customData": {
            "isValid": true,
            "name": "ayou",
            "score": 100,
            "some-json": {
              "de_DE": {
                "color": "weiss"
              },
              "en_GB": {
                "color": "white"
              }
            }
          },
          "merchantReferenceKeys": [
            "merchant-1",
            "merchant-2"
          ],
          "sellableTimeframes": [
            {
              "shopKey": "ay",
              "countryCode": "DE",
              "sellableFrom": "2022-01-20T00:00:00+00:00",
              "sellableTo": "2022-02-20T00:00:00+00:00"
            },
            {
              "shopKey": "ay",
              "countryCode": "AT",
              "sellableFrom": "2022-01-20T00:00:00+00:00",
              "sellableTo": "2022-02-20T00:00:00+00:00"
            },
            {
              "shopKey": "ay",
              "countryCode": "CH",
              "sellableFrom": null,
              "sellableTo": null
            }
          ],
          "similarProducts": [
            {
              "shopKey": "ay",
              "countryCode": "DE",
              "productIds": [
                1,
                2
              ]
            },
            {
              "shopKey": "ay",
              "productIds": [
                1,
                2
              ]
            }
          ]
        }
      },
      "CompleteProductResponse": {
        "value": {
          "id": 9,
          "referenceKey": "M00012-black",
          "state": "live",
          "master": {
            "referenceKey": "M00012",
            "categories": {
              "isLocked": false,
              "paths": [
                [
                  "Fashion",
                  "Men",
                  "Shirts"
                ]
              ]
            },
            "attributes": [
              {
                "name": "collection",
                "type": "localizedString",
                "value": {
                  "de_DE": "einzigartig",
                  "en_GB": "unique"
                },
                "isLocked": false
              },
              {
                "name": "season",
                "type": "simpleList",
                "value": [
                  "autumn",
                  "winter"
                ],
                "isLocked": false
              }
            ]
          },
          "name": {
            "de_DE": "Blaues Shirt",
            "en_GB": "Blue Shirt"
          },
          "attributes": [
            {
              "name": "dimensions",
              "type": "advanced",
              "value": {
                "height": 100,
                "width": 30,
                "unit": "cm"
              },
              "isLocked": false
            },
            {
              "name": "material",
              "type": "advancedList",
              "value": [
                {
                  "name": "wool",
                  "percentage": 80
                },
                {
                  "name": "cotton",
                  "percentage": 20
                }
              ],
              "isLocked": false
            }
          ],
          "variants": [
            {
              "id": 7,
              "referenceKey": "M00012-black-M",
              "merchantReferenceKeys": [
                "merchant-1",
                "merchant-2"
              ],
              "attributes": [
                {
                  "name": "size",
                  "type": "simple",
                  "value": "M",
                  "isLocked": false
                },
                {
                  "name": "color",
                  "type": "localizedStringList",
                  "value": [
                    {
                      "de_DE": "weiß",
                      "en_GB": "white"
                    },
                    {
                      "de_DE": "schwarz",
                      "en_GB": "black"
                    }
                  ],
                  "isLocked": false
                }
              ],
              "prices": [
                {
                  "key": "1-100",
                  "price": 80,
                  "oldPrice": 100,
                  "recommendedRetailPrice": 90,
                  "buyingPrice": 70,
                  "tax": 19,
                  "countryCode": "DE",
                  "currencyCode": "EUR",
                  "groupKey": "myGroupKey",
                  "promotionKey": "myPromotionKey",
                  "unitPrice": {
                    "unit": "ml",
                    "amount": 100,
                    "price": 399
                  },
                  "validFrom": "2021-09-23T11:30:58+00:00",
                  "validTo": null,
                  "merchantReferenceKey": "merchant-1"
                }
              ],
              "isComposite": true,
              "relatedVariants": [
                {
                  "variantReferenceKey": "M0001-black-s",
                  "isMainVariant": true
                },
                {
                  "variantReferenceKey": "L0001-meister",
                  "isMainVariant": false
                }
              ]
            }
          ],
          "images": [
            {
              "id": 13,
              "name": "images/084dace7d7ff691e97982fa554113c29",
              "assetUrl": "images/084dace7d7ff691e97982fa554113c29",
              "mimeType": "image/jpeg",
              "position": 0,
              "attributes": [
                {
                  "name": "view",
                  "type": "simple",
                  "value": "front",
                  "isLocked": false
                }
              ]
            },
            {
              "id": 14,
              "name": "images/f829b914fc47cfc9c0747c119c27cf1b",
              "assetUrl": "images/f829b914fc47cfc9c0747c119c27cf1b",
              "mimeType": "image/png",
              "position": 1,
              "attributes": [
                {
                  "name": "view",
                  "type": "simple",
                  "value": "back",
                  "isLocked": false
                }
              ]
            }
          ],
          "productSortings": [
            {
              "shopKey": "ks",
              "sortKey": "default",
              "sortValue": 1
            },
            {
              "shopKey": "ms",
              "sortKey": "default",
              "sortValue": 2
            }
          ],
          "customData": {
            "isValid": true,
            "name": "ayou",
            "score": 100,
            "some-json": {
              "de_DE": {
                "color": "weiss"
              },
              "en_GB": {
                "color": "white"
              }
            }
          },
          "isComposite": true,
          "merchantReferenceKeys": [
            "merchant-1",
            "merchant-2"
          ],
          "sellableTimeframes": [
            {
              "shopKey": "ay",
              "countryCode": "DE",
              "sellableFrom": "2022-01-20T00:00:00+00:00",
              "sellableTo": "2022-02-20T00:00:00+00:00"
            },
            {
              "shopKey": "ay",
              "countryCode": "AT",
              "sellableFrom": "2022-01-20T00:00:00+00:00",
              "sellableTo": "2022-02-20T00:00:00+00:00"
            }
          ],
          "similarProducts": [
            {
              "shopKey": "ay",
              "countryCode": "DE",
              "productIds": [
                1,
                2
              ]
            },
            {
              "shopKey": "ay",
              "productIds": [
                1,
                2
              ]
            }
          ]
        }
      },
      "CompleteProductCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 9,
              "referenceKey": "M00012-black",
              "state": "live",
              "master": {
                "referenceKey": "M00012",
                "categories": {
                  "isLocked": false,
                  "paths": [
                    [
                      "Fashion",
                      "Men",
                      "Shirts"
                    ]
                  ]
                },
                "attributes": [
                  {
                    "name": "collection",
                    "type": "localizedString",
                    "value": {
                      "de_DE": "einzigartig",
                      "en_GB": "unique"
                    },
                    "isLocked": false
                  },
                  {
                    "name": "season",
                    "type": "simpleList",
                    "value": [
                      "autumn",
                      "winter"
                    ],
                    "isLocked": false
                  }
                ]
              },
              "name": {
                "de_DE": "Blaues Shirt",
                "en_GB": "Blue Shirt"
              },
              "attributes": [
                {
                  "name": "dimensions",
                  "type": "advanced",
                  "value": {
                    "height": 100,
                    "width": 30,
                    "unit": "cm"
                  },
                  "isLocked": false
                },
                {
                  "name": "material",
                  "type": "advancedList",
                  "value": [
                    {
                      "name": "wool",
                      "percentage": 80
                    },
                    {
                      "name": "cotton",
                      "percentage": 20
                    }
                  ],
                  "isLocked": false
                }
              ],
              "variants": [
                {
                  "id": 7,
                  "referenceKey": "M00012-black-M",
                  "merchantReferenceKeys": [
                    "merchant-1",
                    "merchant-2"
                  ],
                  "attributes": [
                    {
                      "name": "size",
                      "type": "simple",
                      "value": "M",
                      "isLocked": false
                    },
                    {
                      "name": "color",
                      "type": "localizedStringList",
                      "value": [
                        {
                          "de_DE": "weiß",
                          "en_GB": "white"
                        },
                        {
                          "de_DE": "schwarz",
                          "en_GB": "black"
                        }
                      ],
                      "isLocked": false
                    }
                  ],
                  "prices": [
                    {
                      "key": "1-100",
                      "price": 80,
                      "oldPrice": 100,
                      "recommendedRetailPrice": 90,
                      "buyingPrice": 70,
                      "tax": 19,
                      "countryCode": "DE",
                      "currencyCode": "EUR",
                      "groupKey": "myGroupKey",
                      "promotionKey": "myPromotionKey",
                      "unitPrice": {
                        "unit": "ml",
                        "amount": 100,
                        "price": 399
                      },
                      "validFrom": "2021-09-23T11:30:58+00:00",
                      "validTo": null,
                      "merchantReferenceKey": "merchant-1"
                    }
                  ],
                  "isComposite": true,
                  "relatedVariants": [
                    {
                      "variantReferenceKey": "M0001-black-s",
                      "isMainVariant": true
                    },
                    {
                      "variantReferenceKey": "L0001-meister",
                      "isMainVariant": false
                    }
                  ]
                }
              ],
              "images": [
                {
                  "id": 13,
                  "name": "images/084dace7d7ff691e97982fa554113c29",
                  "assetUrl": "images/084dace7d7ff691e97982fa554113c29",
                  "mimeType": "image/jpeg",
                  "position": 0,
                  "attributes": [
                    {
                      "name": "view",
                      "type": "simple",
                      "value": "front",
                      "isLocked": false
                    }
                  ]
                },
                {
                  "id": 14,
                  "name": "images/f829b914fc47cfc9c0747c119c27cf1b",
                  "assetUrl": "images/f829b914fc47cfc9c0747c119c27cf1b",
                  "mimeType": "image/png",
                  "position": 1,
                  "attributes": [
                    {
                      "name": "view",
                      "type": "simple",
                      "value": "back",
                      "isLocked": false
                    }
                  ]
                }
              ],
              "productSortings": [
                {
                  "shopKey": "ks",
                  "sortKey": "default",
                  "sortValue": 1
                },
                {
                  "shopKey": "ms",
                  "sortKey": "default",
                  "sortValue": 2
                }
              ],
              "customData": {
                "isValid": true,
                "name": "ayou",
                "score": 100,
                "some-json": {
                  "de_DE": {
                    "color": "weiss"
                  },
                  "en_GB": {
                    "color": "white"
                  }
                }
              },
              "isComposite": true,
              "merchantReferenceKeys": [
                "merchant-1",
                "merchant-2"
              ]
            }
          ],
          "cursor": {
            "next": null
          }
        }
      },
      "MinimalDraftProductRequest": {
        "value": {
          "referenceKey": "M0001-black",
          "name": {
            "de_DE": "Blaues Shirt",
            "en_GB": "Blue Shirt"
          },
          "state": "draft",
          "master": {
            "referenceKey": "M0001",
            "categories": {
              "paths": [
                [
                  "Fashion",
                  "Men",
                  "Shirts"
                ]
              ]
            }
          }
        }
      },
      "MinimalDraftProductResponse": {
        "value": {
          "id": 9,
          "referenceKey": "M0001-black",
          "state": "draft",
          "master": {
            "referenceKey": "M0001",
            "categories": {
              "isLocked": false,
              "paths": [
                [
                  "Fashion",
                  "Men",
                  "Shirts"
                ]
              ]
            }
          },
          "name": {
            "de_DE": "Blaues Shirt",
            "en_GB": "Blue Shirt"
          },
          "attributes": [],
          "variants": [],
          "images": [],
          "isComposite": false,
          "merchantReferenceKeys": []
        }
      },
      "ProductState": {
        "value": {
          "state": "live",
          "merchantReferenceKeys": [
            "merchant-1",
            "merchant-2"
          ]
        }
      },
      "SimilarProductsList": {
        "value": [
          {
            "shopKey": "ay",
            "productIds": [
              1,
              2
            ]
          },
          {
            "shopKey": "ay",
            "countryCode": "DE",
            "productIds": [
              1,
              2
            ]
          }
        ]
      },
      "UnlockAllRequest": {
        "value": {}
      },
      "UnlockGlobalOnlyRequest": {
        "value": {
          "unlockGlobal": true
        }
      },
      "UnlockShopCountriesOnlyRequest": {
        "value": {
          "shopCountrySpecific": [
            {
              "shopKey": "ms",
              "countryCode": "de"
            }
          ]
        }
      },
      "ProductUnlockAssetSortingsRequest": {
        "value": {
          "unlockGlobal": true,
          "shopCountrySpecific": [
            {
              "shopKey": "ms",
              "countryCode": "de"
            },
            {
              "shopKey": "ms",
              "countryCode": "at"
            }
          ]
        }
      },
      "UnlockShopCountriesOnlyExplicitRequest": {
        "value": {
          "unlockGlobal": false,
          "shopCountrySpecific": [
            {
              "shopKey": "ms",
              "countryCode": "de"
            }
          ]
        }
      },
      "ProductCopyRequest": {
        "value": {
          "referenceKey": "M0001-blue",
          "variants": [
            {
              "sourceReferenceKey": "M0001-black-S",
              "referenceKey": "M0001-blue-S"
            },
            {
              "sourceReferenceKey": "M0001-black-M",
              "referenceKey": "M0001-blue-M"
            }
          ],
          "copyPrices": false,
          "copyStocks": false
        }
      },
      "ProductCopyMinimalRequest": {
        "value": {
          "referenceKey": "M0001-blue",
          "variants": [
            {
              "sourceReferenceKey": "M0001-black-S",
              "referenceKey": "M0001-blue-S"
            }
          ]
        }
      },
      "ProductCopyWithNewMasterRequest": {
        "value": {
          "referenceKey": "M0002-black",
          "variants": [
            {
              "sourceReferenceKey": "M0001-black-S",
              "referenceKey": "M0002-black-S"
            },
            {
              "sourceReferenceKey": "M0001-black-M",
              "referenceKey": "M0002-black-M"
            }
          ],
          "master": {
            "referenceKey": "M0002"
          }
        }
      },
      "ProductCopyWithMerchantsRequest": {
        "value": {
          "referenceKey": "M0001-blue",
          "variants": [
            {
              "sourceReferenceKey": "M0001-black-S",
              "referenceKey": "M0001-blue-S"
            },
            {
              "sourceReferenceKey": "M0001-black-M",
              "referenceKey": "M0001-blue-M"
            }
          ],
          "merchantReferenceKeys": [
            "merchant-1"
          ],
          "copyPrices": true,
          "copyStocks": true
        }
      },
      "ProductCopyWithImagesRequest": {
        "value": {
          "referenceKey": "M0001-blue",
          "variants": [
            {
              "sourceReferenceKey": "M0001-black-S",
              "referenceKey": "M0001-blue-S"
            },
            {
              "sourceReferenceKey": "M0001-black-M",
              "referenceKey": "M0001-blue-M"
            }
          ],
          "images": [
            {
              "sourceReferenceKey": "M0001-front",
              "referenceKey": "M0001-blue-front"
            },
            {
              "sourceReferenceKey": "M0001-back",
              "referenceKey": "M0001-blue-back"
            }
          ]
        }
      },
      "ProductCopyResponse": {
        "value": {
          "id": 10,
          "referenceKey": "M0001-blue",
          "state": "draft",
          "master": {
            "referenceKey": "M0001",
            "categories": {
              "isLocked": false,
              "paths": [
                [
                  "Fashion",
                  "Men",
                  "Shirts"
                ]
              ]
            }
          },
          "name": {
            "de_DE": "Blaues Shirt",
            "en_GB": "Blue Shirt"
          },
          "attributes": [],
          "variants": [
            {
              "referenceKey": "M0001-blue-S"
            },
            {
              "referenceKey": "M0001-blue-M"
            }
          ],
          "images": [],
          "isComposite": false,
          "merchantReferenceKeys": []
        }
      },
      "ProductsFirstLiveAtRequest": {
        "value": {
          "shopKey": "ms",
          "countryCodes": [
            "DE",
            "AT",
            "CH"
          ],
          "products": [
            {
              "productId": 1,
              "firstLiveAt": "2023-07-20T11:30:58+00:00"
            },
            {
              "productId": 2,
              "firstLiveAt": "2020-07-19T12:20:11+00:00"
            }
          ]
        }
      },
      "CompleteVariantRequest": {
        "value": {
          "referenceKey": "M0001-black-M",
          "ean": "0000007619991",
          "attributes": [
            {
              "name": "size",
              "type": "simple",
              "value": "M"
            },
            {
              "name": "season",
              "type": "simpleList",
              "value": [
                "autumn",
                "winter"
              ]
            },
            {
              "name": "collection",
              "type": "localizedString",
              "value": {
                "de_DE": "einzigartig",
                "en_GB": "unique"
              }
            },
            {
              "name": "color",
              "type": "localizedStringList",
              "value": [
                {
                  "de_DE": "weiß",
                  "en_GB": "white"
                },
                {
                  "de_DE": "schwarz",
                  "en_GB": "black"
                }
              ]
            },
            {
              "name": "dimensions",
              "type": "advanced",
              "value": {
                "height": 100,
                "width": 80,
                "unit": "cm"
              }
            },
            {
              "name": "material",
              "type": "advancedList",
              "value": [
                {
                  "name": "wool",
                  "percentage": 80
                },
                {
                  "name": "cotton",
                  "percentage": 20
                }
              ]
            }
          ],
          "prices": [
            {
              "price": 80,
              "oldPrice": 100,
              "recommendedRetailPrice": 90,
              "buyingPrice": 70,
              "tax": 19,
              "countryCode": "DE",
              "currencyCode": "EUR",
              "groupKey": "myGroupKey",
              "promotionKey": "myPromotionKey",
              "unitPrice": {
                "unit": "ml",
                "amount": 100,
                "price": 399
              },
              "validFrom": "2021-09-23T11:30:58+00:00",
              "validTo": null,
              "merchantReferenceKey": "merchant-1"
            }
          ],
          "stocks": [
            {
              "quantity": 17,
              "warehouseReferenceKey": "myWarehouse",
              "changedAt": "2020-07-23T11:30:58+00:00",
              "sellableWithoutStock": false,
              "merchantReferenceKey": "merchant-1"
            }
          ],
          "customData": {
            "isValid": true,
            "name": "ayou",
            "score": 100,
            "some-json": {
              "de_DE": {
                "color": "weiss"
              },
              "en_GB": {
                "color": "white"
              }
            }
          },
          "isComposite": false
        }
      },
      "CompleteVariantResponse": {
        "value": {
          "id": 7,
          "referenceKey": "M0001-black-M",
          "merchantReferenceKeys": [
            "merchant-1",
            "merchant-2"
          ],
          "ean": "0000007619991",
          "attributes": [
            {
              "name": "size",
              "type": "simple",
              "value": "M",
              "isLocked": false
            },
            {
              "name": "season",
              "type": "simpleList",
              "value": [
                "autumn",
                "winter"
              ],
              "isLocked": false
            },
            {
              "name": "collection",
              "type": "localizedString",
              "value": {
                "de_DE": "einzigartig",
                "en_GB": "unique"
              },
              "isLocked": false
            },
            {
              "name": "color",
              "type": "localizedStringList",
              "value": [
                {
                  "de_DE": "weiß",
                  "en_GB": "white"
                },
                {
                  "de_DE": "schwarz",
                  "en_GB": "black"
                }
              ],
              "isLocked": false
            },
            {
              "name": "dimensions",
              "type": "advanced",
              "value": {
                "height": 100,
                "width": 80,
                "unit": "cm"
              },
              "isLocked": false
            },
            {
              "name": "material",
              "type": "advancedList",
              "value": [
                {
                  "name": "wool",
                  "percentage": 80
                },
                {
                  "name": "cotton",
                  "percentage": 20
                }
              ],
              "isLocked": false
            }
          ],
          "prices": [
            {
              "key": "1-100",
              "price": 80,
              "oldPrice": 100,
              "recommendedRetailPrice": 90,
              "buyingPrice": 70,
              "tax": 19,
              "countryCode": "DE",
              "currencyCode": "EUR",
              "groupKey": "myGroupKey",
              "promotionKey": "myPromotionKey",
              "unitPrice": {
                "unit": "ml",
                "amount": 100,
                "price": 399
              },
              "validFrom": "2021-09-23T11:30:58+00:00",
              "validTo": null,
              "merchantReferenceKey": "merchant-1"
            }
          ],
          "stocks": [
            {
              "quantity": 17,
              "warehouseReferenceKey": "myWarehouse",
              "changedAt": "2020-07-23T11:30:58+00:00",
              "sellableWithoutStock": false,
              "merchantReferenceKey": "merchant-1"
            }
          ],
          "customData": {
            "isValid": true,
            "name": "ayou",
            "score": 100,
            "some-json": {
              "de_DE": {
                "color": "weiss"
              },
              "en_GB": {
                "color": "white"
              }
            }
          },
          "isComposite": true,
          "relatedVariants": [
            {
              "variantReferenceKey": "M0001-black-s",
              "isMainVariant": true
            },
            {
              "variantReferenceKey": "L0001-meister",
              "isMainVariant": false
            }
          ]
        }
      },
      "CompleteVariantCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 7,
              "referenceKey": "M0001-black-M",
              "merchantReferenceKeys": [
                "merchant-1",
                "merchant-2"
              ],
              "ean": "0000007619991",
              "attributes": [
                {
                  "name": "size",
                  "type": "simple",
                  "value": "M",
                  "isLocked": false
                },
                {
                  "name": "season",
                  "type": "simpleList",
                  "value": [
                    "autumn",
                    "winter"
                  ],
                  "isLocked": false
                },
                {
                  "name": "collection",
                  "type": "localizedString",
                  "value": {
                    "de_DE": "einzigartig",
                    "en_GB": "unique"
                  },
                  "isLocked": false
                },
                {
                  "name": "color",
                  "type": "localizedStringList",
                  "value": [
                    {
                      "de_DE": "weiß",
                      "en_GB": "white"
                    },
                    {
                      "de_DE": "schwarz",
                      "en_GB": "black"
                    }
                  ],
                  "isLocked": false
                },
                {
                  "name": "dimensions",
                  "type": "advanced",
                  "value": {
                    "height": 100,
                    "width": 80,
                    "unit": "cm"
                  },
                  "isLocked": false
                },
                {
                  "name": "material",
                  "type": "advancedList",
                  "value": [
                    {
                      "name": "wool",
                      "percentage": 80
                    },
                    {
                      "name": "cotton",
                      "percentage": 20
                    }
                  ],
                  "isLocked": false
                }
              ],
              "prices": [
                {
                  "key": "1-100",
                  "price": 80,
                  "oldPrice": 100,
                  "recommendedRetailPrice": 90,
                  "buyingPrice": 70,
                  "tax": 19,
                  "countryCode": "DE",
                  "currencyCode": "EUR",
                  "groupKey": "myGroupKey",
                  "promotionKey": "myPromotionKey",
                  "unitPrice": {
                    "unit": "ml",
                    "amount": 100,
                    "price": 399
                  },
                  "validFrom": "2021-09-23T11:30:58+00:00",
                  "validTo": null,
                  "merchantReferenceKey": "merchant-1"
                }
              ],
              "stocks": [
                {
                  "quantity": 17,
                  "warehouseReferenceKey": "myWarehouse",
                  "changedAt": "2020-07-23T11:30:58+00:00",
                  "sellableWithoutStock": false,
                  "merchantReferenceKey": "merchant-1"
                }
              ],
              "customData": {
                "isValid": true,
                "name": "ayou",
                "score": 100,
                "some-json": {
                  "de_DE": {
                    "color": "weiss"
                  },
                  "en_GB": {
                    "color": "white"
                  }
                }
              },
              "isComposite": true,
              "relatedVariants": [
                {
                  "variantReferenceKey": "M0001-black-s",
                  "isMainVariant": true
                },
                {
                  "variantReferenceKey": "L0001-meister",
                  "isMainVariant": false
                }
              ]
            }
          ],
          "cursor": {
            "next": null
          }
        }
      },
      "MinimalVariantRequest": {
        "value": {
          "referenceKey": "M0001-black-M"
        }
      },
      "MinimalVariantResponse": {
        "value": {
          "id": 7,
          "referenceKey": "M0001-black-M",
          "merchantReferenceKeys": [
            "merchant-1",
            "merchant-2"
          ],
          "ean": "",
          "attributes": [],
          "prices": [],
          "isComposite": false,
          "relatedVariants": []
        }
      },
      "VariantPriceRequest": {
        "value": {
          "price": 80,
          "oldPrice": 100,
          "recommendedRetailPrice": 90,
          "buyingPrice": 70,
          "tax": 19,
          "countryCode": "DE",
          "currencyCode": "EUR",
          "groupKey": "myGroupKey",
          "promotionKey": "myPromotionKey",
          "unitPrice": {
            "unit": "ml",
            "amount": 100,
            "price": 399
          },
          "validFrom": "2021-09-23T11:30:58+00:00",
          "validTo": null,
          "merchantReferenceKey": "merchant-1",
          "customData": {
            "pricingNote": "margin-protected",
            "channel": "b2c"
          }
        }
      },
      "VariantPriceResponse": {
        "value": {
          "key": "1-100",
          "price": 80,
          "oldPrice": 100,
          "recommendedRetailPrice": 90,
          "buyingPrice": 70,
          "tax": 19,
          "countryCode": "DE",
          "currencyCode": "EUR",
          "groupKey": "myGroupKey",
          "promotionKey": "myPromotionKey",
          "unitPrice": {
            "unit": "ml",
            "amount": 100,
            "price": 399
          },
          "validFrom": "2021-09-23T11:30:58+00:00",
          "validTo": null,
          "merchantReferenceKey": "merchant-1",
          "customData": {
            "pricingNote": "margin-protected",
            "channel": "b2c"
          }
        }
      },
      "VariantPriceCollectionResponse": {
        "value": {
          "entities": [
            {
              "key": "1-100",
              "price": 80,
              "oldPrice": 100,
              "recommendedRetailPrice": 90,
              "buyingPrice": 70,
              "tax": 19,
              "countryCode": "DE",
              "currencyCode": "EUR",
              "groupKey": "myGroupKey",
              "promotionKey": "myPromotionKey",
              "unitPrice": {
                "unit": "ml",
                "amount": 100,
                "price": 399
              },
              "validFrom": "2021-09-23T11:30:58+00:00",
              "validTo": null,
              "merchantReferenceKey": "merchant-1",
              "customData": {
                "pricingNote": "margin-protected",
                "channel": "b2c"
              }
            }
          ]
        }
      },
      "ProductImageUrlSourceRequest": {
        "$ref": "#/components/examples/ProductImageResponse"
      },
      "ProductImageAttachmentSourceRequest": {
        "$ref": "#/components/examples/ProductImageResponse"
      },
      "ProductImageAssetUrlRequest": {
        "$ref": "#/components/examples/ProductImageResponse"
      },
      "ProductImageResponse": {
        "value": {
          "referenceKey": "myReferenceKey",
          "name": "some_name",
          "source": {
            "url": "https://cdn.aboutstatic.com/file/3f5a809d399b58ddf5c50025f984de18"
          },
          "attributes": [
            {
              "name": "size",
              "type": "simple",
              "value": "M"
            },
            {
              "name": "season",
              "type": "simpleList",
              "value": [
                "autumn",
                "winter"
              ]
            },
            {
              "name": "collection",
              "type": "localizedString",
              "value": {
                "de_DE": "einzigartig",
                "en_GB": "unique"
              }
            },
            {
              "name": "color",
              "type": "localizedStringList",
              "value": [
                {
                  "de_DE": "weiß",
                  "en_GB": "white"
                },
                {
                  "de_DE": "schwarz",
                  "en_GB": "black"
                }
              ]
            }
          ]
        }
      },
      "ProductImageCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 13,
              "name": "some_name",
              "assetUrl": "images/084dace7d7ff691e97982fa554113c29",
              "mimeType": "image/jpeg",
              "position": 0,
              "attributes": [
                {
                  "name": "size",
                  "type": "simple",
                  "value": "M",
                  "isLocked": false
                },
                {
                  "name": "season",
                  "type": "simpleList",
                  "value": [
                    "autumn",
                    "winter"
                  ],
                  "isLocked": false
                },
                {
                  "name": "collection",
                  "type": "localizedString",
                  "value": {
                    "de_DE": "einzigartig",
                    "en_GB": "unique"
                  },
                  "isLocked": false
                },
                {
                  "name": "color",
                  "type": "localizedStringList",
                  "value": [
                    {
                      "de_DE": "weiß",
                      "en_GB": "white"
                    },
                    {
                      "de_DE": "schwarz",
                      "en_GB": "black"
                    }
                  ],
                  "isLocked": false
                }
              ],
              "customData": {
                "isValid": true,
                "name": "ayou",
                "score": 100,
                "some-json": {
                  "de_DE": {
                    "color": "weiss"
                  },
                  "en_GB": {
                    "color": "white"
                  }
                }
              }
            }
          ]
        }
      },
      "VariantStockRequest": {
        "value": {
          "quantity": 17,
          "warehouseReferenceKey": "myWarehouse",
          "changedAt": "2020-07-23T11:30:58+00:00",
          "sellableWithoutStock": false,
          "merchantReferenceKey": "merchant-1",
          "expectedAvailabilityAt": "2020-07-24"
        }
      },
      "VariantStockResponse": {
        "value": {
          "quantity": 17,
          "warehouseReferenceKey": "myWarehouse",
          "changedAt": "2020-07-23T11:30:58+00:00",
          "sellableWithoutStock": false,
          "merchantReferenceKey": "merchant-1",
          "expectedAvailabilityAt": "2020-07-24"
        }
      },
      "VariantBulkStockRequest": {
        "value": {
          "callbacks": {
            "requestUrl": "https://example.com/api/internal/callback/request",
            "operationUrl": "https://client.aboutyou.cloud/api/internal/callback/operation",
            "requestStatus": "complete"
          },
          "operations": [
            {
              "key": "create-product-variant-stock",
              "url": "/variants/123/stocks",
              "method": "POST",
              "headers": {
                "X-Merchant-Key": "M0001-black"
              },
              "body": {
                "warehouseReferenceKey": "warehouse-1",
                "quantity": 100,
                "changedAt": "2024-07-23T11:30:58+00:00",
                "merchantReferenceKey": "merchant-stock-1"
              }
            }
          ]
        }
      },
      "SellableWithoutStockRequest": {
        "value": {
          "warehouseReferenceKey": "myWarehouse",
          "sellableWithoutStock": true,
          "merchantReferenceKey": "merchant-1"
        }
      },
      "SellableWithoutStockResponse": {
        "value": {
          "warehouseReferenceKey": "myWarehouse",
          "sellableWithoutStock": true,
          "merchantReferenceKey": "merchant-1"
        }
      },
      "VariantStockCollectionResponse": {
        "value": {
          "entities": [
            {
              "quantity": 3,
              "warehouseReferenceKey": "myFirstWarehouse",
              "changedAt": "2020-07-23T11:30:58+00:00",
              "sellableWithoutStock": false,
              "merchantReferenceKey": "merchant-1",
              "expectedAvailabilityAt": null
            },
            {
              "quantity": 3,
              "warehouseReferenceKey": "mySecondWarehouse",
              "changedAt": "2020-07-23T11:30:58+00:00",
              "sellableWithoutStock": true,
              "merchantReferenceKey": "merchant-1",
              "expectedAvailabilityAt": "2020-07-24"
            }
          ]
        }
      },
      "AttributeTranslationRequest": {
        "value": {
          "de_DE": "deutsche Zeichenkette",
          "en_GB": "english string"
        }
      },
      "AttributeTranslationCollectionResponse": {
        "value": {
          "entities": [
            {
              "de_DE": "deutsche Zeichenkette",
              "en_GB": "english string"
            }
          ]
        }
      },
      "MinimalShopRequestCreate": {
        "value": {
          "key": "ms",
          "name": "My Shop",
          "priceGroupKey": "myPriceGroup"
        }
      },
      "CompleteShopRequestCreate": {
        "value": {
          "key": "ms",
          "name": "My Shop",
          "priceGroupKey": "myPriceGroup",
          "logoSource": {
            "url": "https://example.com/logo.png"
          },
          "shopCategoryTreeId": 1,
          "countries": [
            {
              "countryCode": "DE",
              "currencyCode": "EUR",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "url": "https://www.shop.de"
            }
          ],
          "customData": {
            "isValid": true,
            "name": "ayou",
            "score": 100,
            "some-json": {
              "de_DE": {
                "color": "weiss"
              },
              "en_GB": {
                "color": "white"
              }
            }
          },
          "smartSortingKey": "scayle:v1:inventory-optimization"
        }
      },
      "MinimalShopRequestUpdate": {
        "value": {
          "key": "ms",
          "name": "My Shop Updated"
        }
      },
      "CompleteShopRequestUpdate": {
        "value": {
          "key": "ms",
          "name": "My Shop",
          "logoSource": {
            "url": "https://example.com/logo.png"
          },
          "customData": {
            "isValid": true,
            "name": "ayou",
            "score": 100,
            "some-json": {
              "foo": "bar",
              "de_DE": {
                "color": "weiss"
              },
              "en_GB": {
                "color": "white"
              }
            }
          },
          "smartSortingKey": "scayle:v1:inventory-optimization"
        }
      },
      "ShopResponse": {
        "value": {
          "id": 1,
          "key": "ay",
          "name": "My Shop",
          "logoUrl": "images/3123adasd23asd.png",
          "priceGroupKey": "myPriceGroup",
          "active": true,
          "deleted": false,
          "shopCategoryTreeId": 1,
          "companyId": 1,
          "countries": [
            {
              "countryCode": "DE",
              "currencyCode": "EUR",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "url": "https://www.shop.de"
            }
          ]
        }
      },
      "CompleteShopResponse": {
        "value": {
          "id": 1,
          "key": "ay",
          "name": "My Shop",
          "logoUrl": "images/3123adasd23asd.png",
          "priceGroupKey": "myPriceGroup",
          "active": true,
          "deleted": false,
          "shopCategoryTreeId": 1,
          "companyId": 1,
          "countries": [
            {
              "countryCode": "DE",
              "currencyCode": "EUR",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "url": "https://www.shop.de",
              "assortment": {
                "masterCategories": {
                  "include": [
                    [
                      "root",
                      "leaf"
                    ]
                  ],
                  "exclude": [
                    [
                      "root",
                      "leaf"
                    ]
                  ]
                },
                "products": {
                  "include": [
                    1,
                    2,
                    3
                  ],
                  "exclude": [
                    4,
                    5,
                    6
                  ]
                },
                "attributes": [
                  {
                    "name": "color",
                    "include": [
                      "red"
                    ],
                    "exclude": [
                      "blue"
                    ]
                  }
                ],
                "merchantReferenceKeys": {
                  "include": [
                    "merchant-1",
                    "merchant-2"
                  ],
                  "exclude": []
                }
              },
              "warehouses": [
                {
                  "id": 1,
                  "referenceKey": "my-warehouse",
                  "priority": 1,
                  "packageGroup": {
                    "id": 3
                  }
                }
              ]
            }
          ],
          "customData": {
            "isValid": true,
            "name": "ayou",
            "score": 100,
            "some-json": {
              "foo": "bar",
              "de_DE": {
                "color": "weiss"
              },
              "en_GB": {
                "color": "white"
              }
            }
          },
          "smartSortingKey": "scayle:v1:inventory-optimization"
        }
      },
      "CompleteShopCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 1,
              "key": "ay",
              "name": "My Shop",
              "logoUrl": "images/3123adasd23asd.png",
              "priceGroupKey": "myPriceGroup",
              "active": true,
              "deleted": false,
              "shopCategoryTreeId": 1,
              "companyId": 1,
              "countries": [
                {
                  "countryCode": "DE",
                  "currencyCode": "EUR",
                  "defaultLanguageCode": "de_DE",
                  "supportedLanguageCodes": [
                    "de_DE",
                    "en_GB"
                  ],
                  "url": "https://www.shop.de",
                  "assortment": {
                    "masterCategories": {
                      "include": [
                        [
                          "root",
                          "leaf"
                        ]
                      ],
                      "exclude": [
                        [
                          "root",
                          "leaf"
                        ]
                      ]
                    },
                    "products": {
                      "include": [
                        1,
                        2,
                        3
                      ],
                      "exclude": [
                        4,
                        5,
                        6
                      ]
                    },
                    "attributes": [
                      {
                        "name": "color",
                        "include": [
                          "red"
                        ],
                        "exclude": [
                          "blue"
                        ]
                      }
                    ],
                    "merchantReferenceKeys": {
                      "include": [
                        "merchant-1",
                        "merchant-2"
                      ],
                      "exclude": []
                    }
                  },
                  "warehouses": [
                    {
                      "id": 1,
                      "referenceKey": "my-warehouse",
                      "priority": 1,
                      "packageGroup": {
                        "id": 3
                      }
                    }
                  ]
                }
              ],
              "customData": {
                "isValid": true,
                "name": "ayou",
                "score": 100,
                "some-json": {
                  "de_DE": {
                    "color": "weiss"
                  },
                  "en_GB": {
                    "color": "white"
                  }
                }
              },
              "smartSortingKey": "scayle:v1:inventory-optimization"
            }
          ],
          "cursor": {
            "next": null
          }
        }
      },
      "AssortmentIncludeRequest": {
        "value": {
          "masterCategories": {
            "include": [
              [
                "root",
                "leaf"
              ]
            ]
          },
          "products": {
            "include": [
              1,
              2,
              3
            ]
          },
          "attributes": [
            {
              "name": "color",
              "include": [
                "red"
              ]
            }
          ],
          "merchantReferenceKeys": {
            "include": [
              "merchant-1",
              "merchant-2"
            ]
          }
        }
      },
      "AssortmentExcludeRequest": {
        "$ref": "#/components/examples/AssortmentIncludeRequest"
      },
      "AssortmentResponse": {
        "value": {
          "masterCategories": {
            "include": [
              [
                "root",
                "leaf"
              ]
            ],
            "exclude": []
          },
          "products": {
            "include": [
              1,
              2,
              3
            ],
            "exclude": [
              4,
              5,
              6
            ]
          },
          "attributes": [
            {
              "name": "color",
              "include": [
                "red"
              ],
              "exclude": []
            }
          ],
          "merchantReferenceKeys": {
            "include": [
              "merchant-1",
              "merchant-2"
            ],
            "exclude": []
          }
        }
      },
      "PartialAssortmentFullRequest": {
        "value": {
          "masterCategories": {
            "include": {
              "add": [
                [
                  "root",
                  "leaf"
                ]
              ],
              "remove": [
                [
                  "root2",
                  "leaf"
                ]
              ]
            },
            "exclude": {
              "add": [
                [
                  "root",
                  "leaf"
                ]
              ],
              "remove": [
                [
                  "root2",
                  "leaf"
                ]
              ]
            }
          },
          "products": {
            "include": {
              "add": [
                1,
                2
              ],
              "remove": [
                3
              ]
            },
            "exclude": {
              "add": [
                4,
                5
              ],
              "remove": [
                6
              ]
            }
          },
          "attributes": [
            {
              "name": "color",
              "include": {
                "add": [
                  "red"
                ],
                "remove": [
                  "blue"
                ]
              },
              "exclude": {
                "add": [
                  "yellow"
                ],
                "remove": [
                  "green"
                ]
              }
            }
          ],
          "merchantReferenceKeys": {
            "include": {
              "add": [
                "merchant-1",
                "merchant-2"
              ],
              "remove": [
                "merchant-3"
              ]
            },
            "exclude": {
              "add": [
                "merchant-4",
                "merchant-5"
              ],
              "remove": [
                "merchant-6"
              ]
            }
          }
        }
      },
      "PartialAssortmentMasterCategoriesInclude": {
        "value": {
          "masterCategories": {
            "include": {
              "add": [
                [
                  "root",
                  "node1",
                  "node2",
                  "leaf"
                ]
              ]
            }
          }
        }
      },
      "PartialAssortmentProductsIncludeAndExclude": {
        "value": {
          "products": {
            "include": {
              "add": [
                1,
                2
              ]
            },
            "exclude": {
              "remove": [
                3
              ]
            }
          }
        }
      },
      "PartialAssortmentAttributesIncludeAndExclude": {
        "value": {
          "attributes": [
            {
              "name": "color",
              "include": {
                "add": [
                  "silver"
                ]
              },
              "exclude": {
                "remove": [
                  "silver"
                ]
              }
            }
          ]
        }
      },
      "PartialAssortmentMerchantReferenceKeysExclude": {
        "value": {
          "merchantReferenceKeys": {
            "exclude": {
              "add": [
                "m1",
                "m2"
              ]
            }
          }
        }
      },
      "SimpleAttributeGroupRequest": {
        "value": {
          "name": "color",
          "frontendName": {
            "de_DE": "Farbe",
            "en_GB": "Color"
          },
          "type": "simple",
          "cluster": "material",
          "isShared": true,
          "level": "product",
          "group": "someName"
        }
      },
      "SimpleNonSharedAttributeGroupValueTypeIntegerRequest": {
        "value": {
          "name": "someName",
          "frontendName": {
            "de_DE": "Nummer",
            "en_GB": "Number"
          },
          "type": "simple",
          "cluster": "material",
          "simpleValueType": "integer",
          "isShared": false,
          "level": "product",
          "group": "someName"
        }
      },
      "SimpleNonSharedAttributeGroupValueTypeAttributeRequest": {
        "value": {
          "name": "someName",
          "frontendName": {
            "de_DE": "Attribut",
            "en_GB": "Attribute"
          },
          "type": "simple",
          "cluster": "material",
          "simpleValueType": "attribute",
          "simpleValueTypeConfig": {
            "attributeGroupName": "color",
            "attributeName": "red"
          },
          "isShared": false,
          "level": "product",
          "group": "someName"
        }
      },
      "SimpleListAttributeGroupRequest": {
        "value": {
          "name": "season",
          "frontendName": {
            "de_DE": "Saison",
            "en_GB": "Season"
          },
          "type": "simpleList",
          "cluster": "material",
          "isShared": true,
          "level": "product",
          "group": "someName"
        }
      },
      "LocalizedStringAttributeGroupRequest": {
        "value": {
          "name": "brand",
          "frontendName": {
            "de_DE": "Marke",
            "en_GB": "Brand"
          },
          "type": "localizedString",
          "cluster": "material",
          "isShared": true,
          "level": "product",
          "group": "someName"
        }
      },
      "LocalizedStringListAttributeGroupRequest": {
        "value": {
          "name": "notes",
          "frontendName": {
            "de_DE": "Hinweise",
            "en_GB": "Notes"
          },
          "type": "localizedStringList",
          "cluster": "material",
          "isShared": false,
          "level": "product",
          "group": "someName"
        }
      },
      "AdvancedAttributeGroupRequest": {
        "value": {
          "name": "material_composition_textile",
          "frontendName": {
            "de_DE": "Materialzusammensetzung",
            "en_GB": "Material Composition"
          },
          "type": "advanced",
          "cluster": "material",
          "isShared": false,
          "level": "product",
          "group": "someName",
          "structure": {
            "group": {
              "type": "attributeGroup",
              "attributeGroupName": "Obermaterial"
            },
            "components": {
              "type": "array",
              "items": {
                "fraction": {
                  "type": "integer"
                },
                "unit": {
                  "type": "attribute",
                  "attributeGroupName": "unit",
                  "attributeName": "%"
                },
                "material": {
                  "type": "attributeGroup",
                  "attributeGroupName": "material"
                }
              }
            }
          },
          "shopCountries": [
            {
              "shopKey": "ms",
              "countryCode": "de"
            }
          ],
          "isOverridablePerShop": true,
          "isDifferentiating": false
        }
      },
      "SimpleAttributeGroupResponse": {
        "value": {
          "id": 1,
          "name": "color",
          "frontendName": {
            "de_DE": "Farbe",
            "en_GB": "Color"
          },
          "type": "simple",
          "cluster": "material",
          "structure": null,
          "isShared": true,
          "level": "product",
          "group": "someName",
          "shopCountries": null,
          "isOverridablePerShop": false,
          "isDifferentiating": false
        }
      },
      "NonSharedSimpleAttributeGroupValueTypeIntegerResponse": {
        "value": {
          "id": 1,
          "name": "someName",
          "frontendName": {
            "de_DE": "Nummer",
            "en_GB": "Number"
          },
          "type": "simple",
          "cluster": "material",
          "simpleValueType": "integer",
          "structure": null,
          "isShared": false,
          "level": "product",
          "group": "someName",
          "shopCountries": null,
          "isOverridablePerShop": false,
          "isDifferentiating": false
        }
      },
      "NonSharedSimpleAttributeGroupValueTypeAttributeResponse": {
        "value": {
          "id": 1,
          "name": "someName",
          "frontendName": {
            "de_DE": "Attribut",
            "en_GB": "Attribute"
          },
          "type": "simple",
          "cluster": "material",
          "simpleValueType": "attribute",
          "simpleValueTypeConfig": {
            "attributeGroupName": "color",
            "attributeName": "red"
          },
          "structure": null,
          "isShared": true,
          "level": "product",
          "group": "someName",
          "shopCountries": null,
          "isOverridablePerShop": false,
          "isDifferentiating": false
        }
      },
      "SimpleListAttributeGroupResponse": {
        "value": {
          "id": 1,
          "name": "season",
          "frontendName": {
            "de_DE": "Saison",
            "en_GB": "Season"
          },
          "type": "simpleList",
          "cluster": "material",
          "structure": null,
          "isShared": true,
          "level": "product",
          "group": "someName",
          "shopCountries": null,
          "isOverridablePerShop": false,
          "isDifferentiating": false
        }
      },
      "LocalizedStringAttributeGroupResponse": {
        "value": {
          "id": 1,
          "name": "brand",
          "frontendName": {
            "de_DE": "Marke",
            "en_GB": "Brand"
          },
          "type": "localizedString",
          "cluster": "material",
          "structure": null,
          "isShared": true,
          "level": "product",
          "group": "someName",
          "shopCountries": null,
          "isOverridablePerShop": false,
          "isDifferentiating": false
        }
      },
      "LocalizedStringListAttributeGroupResponse": {
        "value": {
          "id": 1,
          "name": "notes",
          "frontendName": {
            "de_DE": "Hinweise",
            "en_GB": "Notes"
          },
          "type": "localizedStringList",
          "cluster": "material",
          "structure": null,
          "isShared": false,
          "level": "product",
          "group": "someName",
          "shopCountries": null,
          "isOverridablePerShop": false,
          "isDifferentiating": false
        }
      },
      "AdvancedAttributeGroupResponse": {
        "value": {
          "id": 1,
          "name": "material_composition_textile",
          "frontendName": {
            "de_DE": "Materialzusammensetzung",
            "en_GB": "Material Composition"
          },
          "type": "advanced",
          "cluster": "material",
          "structure": {
            "group": {
              "type": "attributeGroup",
              "attributeGroupName": "Obermaterial"
            },
            "components": {
              "type": "array",
              "items": {
                "fraction": {
                  "type": "integer"
                },
                "unit": {
                  "type": "attribute",
                  "attributeGroupName": "unit",
                  "attributeName": "%"
                },
                "material": {
                  "type": "attributeGroup",
                  "attributeGroupName": "material"
                }
              }
            }
          },
          "isShared": false,
          "level": "product",
          "group": "someName",
          "shopCountries": [
            {
              "shopKey": "ms",
              "countryCode": "de"
            }
          ],
          "isOverridablePerShop": true,
          "isDifferentiating": false
        }
      },
      "AttributeGroupCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 1,
              "name": "color",
              "frontendName": {
                "de_DE": "Farbe",
                "en_GB": "Color"
              },
              "type": "simple",
              "cluster": "material",
              "structure": null,
              "isShared": true,
              "level": "product",
              "group": "someName",
              "shopCountries": null,
              "isOverridablePerShop": false,
              "isDifferentiating": false
            },
            {
              "id": 2,
              "name": "season",
              "frontendName": {
                "de_DE": "Saison",
                "en_GB": "Season"
              },
              "type": "simpleList",
              "cluster": "material",
              "structure": null,
              "isShared": true,
              "level": "product",
              "group": "someName",
              "shopCountries": null,
              "isOverridablePerShop": false,
              "isDifferentiating": false
            },
            {
              "id": 3,
              "name": "brand",
              "frontendName": {
                "de_DE": "Marke",
                "en_GB": "Brand"
              },
              "type": "localizedString",
              "cluster": "material",
              "structure": null,
              "isShared": true,
              "level": "product",
              "group": "someName",
              "shopCountries": null,
              "isOverridablePerShop": false,
              "isDifferentiating": false
            },
            {
              "id": 4,
              "name": "notes",
              "frontendName": {
                "de_DE": "Hinweise",
                "en_GB": "Notes"
              },
              "type": "localizedStringList",
              "cluster": "material",
              "structure": null,
              "isShared": false,
              "level": "product",
              "group": "someName",
              "shopCountries": null,
              "isOverridablePerShop": false,
              "isDifferentiating": false
            },
            {
              "id": 5,
              "name": "material_composition_textile",
              "frontendName": {
                "de_DE": "Materialzusammensetzung",
                "en_GB": "Material Composition"
              },
              "type": "advanced",
              "cluster": "material",
              "structure": {
                "group": {
                  "type": "attributeGroup",
                  "attributeGroupName": "Obermaterial"
                },
                "components": {
                  "type": "array",
                  "items": {
                    "fraction": {
                      "type": "integer"
                    },
                    "unit": {
                      "type": "attribute",
                      "attributeGroupName": "unit",
                      "attributeName": "%"
                    },
                    "material": {
                      "type": "attributeGroup",
                      "attributeGroupName": "material"
                    }
                  }
                }
              },
              "isShared": false,
              "level": "product",
              "group": "someName",
              "shopCountries": [
                {
                  "shopKey": "ms",
                  "countryCode": "de"
                }
              ],
              "isOverridablePerShop": true,
              "isDifferentiating": false
            }
          ],
          "cursor": {
            "next": null
          }
        }
      },
      "AttributeGroupFrontendNameRequest": {
        "value": {
          "de_DE": "Materialzusammensetzung",
          "en_GB": "Material Composition"
        }
      },
      "SimpleAttributeRequest": {
        "value": {
          "name": "size",
          "type": "simple",
          "value": "M"
        }
      },
      "SimpleAttributeResponse": {
        "value": {
          "name": "size",
          "type": "simple",
          "value": "M",
          "isLocked": false
        }
      },
      "SimpleListAttributeRequest": {
        "value": {
          "name": "season",
          "type": "simpleList",
          "value": [
            "autumn",
            "winter"
          ]
        }
      },
      "SimpleListAttributeResponse": {
        "value": {
          "name": "season",
          "type": "simpleList",
          "value": [
            "autumn",
            "winter"
          ],
          "isLocked": false
        }
      },
      "LocalizedStringAttributeRequest": {
        "value": {
          "name": "collection",
          "type": "localizedString",
          "value": {
            "de_DE": "einzigartig",
            "en_GB": "unique"
          }
        }
      },
      "LocalizedStringAttributeResponse": {
        "value": {
          "name": "collection",
          "type": "localizedString",
          "value": {
            "de_DE": "einzigartig",
            "en_GB": "unique"
          },
          "isLocked": false
        }
      },
      "LocalizedStringListAttributeRequest": {
        "value": {
          "name": "color",
          "type": "localizedStringList",
          "value": [
            {
              "de_DE": "weiß",
              "en_GB": "white"
            },
            {
              "de_DE": "schwarz",
              "en_GB": "black"
            }
          ]
        }
      },
      "LocalizedStringListAttributeResponse": {
        "value": {
          "name": "color",
          "type": "localizedStringList",
          "value": [
            {
              "de_DE": "weiß",
              "en_GB": "white"
            },
            {
              "de_DE": "schwarz",
              "en_GB": "black"
            }
          ],
          "isLocked": false
        }
      },
      "AdvancedAttributeRequest": {
        "value": {
          "name": "dimensions",
          "type": "advanced",
          "value": {
            "height": 100,
            "width": 30,
            "unit": "cm"
          }
        }
      },
      "AdvancedAttributeResponse": {
        "value": {
          "name": "dimensions",
          "type": "advanced",
          "value": {
            "height": 100,
            "width": 80,
            "unit": "cm"
          },
          "isLocked": false
        }
      },
      "AdvancedListAttributeRequest": {
        "value": {
          "name": "material",
          "type": "advancedList",
          "value": [
            {
              "name": "wool",
              "percentage": 80
            },
            {
              "name": "cotton",
              "percentage": 20
            }
          ]
        }
      },
      "AdvancedListAttributeResponse": {
        "value": {
          "name": "material",
          "type": "advancedList",
          "value": [
            {
              "name": "wool",
              "percentage": 80
            },
            {
              "name": "cotton",
              "percentage": 20
            }
          ],
          "isLocked": false
        }
      },
      "AttributeCollectionResponse": {
        "value": {
          "entities": [
            {
              "name": "size",
              "type": "simple",
              "value": "M",
              "isLocked": false
            },
            {
              "name": "season",
              "type": "simpleList",
              "value": [
                "autumn",
                "winter"
              ],
              "isLocked": false
            },
            {
              "name": "collection",
              "type": "localizedString",
              "value": {
                "de_DE": "einzigartig",
                "en_GB": "unique"
              },
              "isLocked": false
            },
            {
              "name": "color",
              "type": "localizedStringList",
              "value": [
                {
                  "de_DE": "weiß",
                  "en_GB": "white"
                },
                {
                  "de_DE": "schwarz",
                  "en_GB": "black"
                }
              ],
              "isLocked": false
            },
            {
              "name": "dimensions",
              "type": "advanced",
              "value": {
                "height": 100,
                "width": 80,
                "unit": "cm"
              },
              "isLocked": false
            },
            {
              "name": "material",
              "type": "advancedList",
              "value": [
                {
                  "name": "wool",
                  "percentage": 80
                },
                {
                  "name": "cotton",
                  "percentage": 20
                }
              ],
              "isLocked": false
            }
          ]
        }
      },
      "SimpleAttributeCollectionResponse": {
        "value": {
          "entities": [
            {
              "name": "size",
              "type": "simple",
              "value": "M",
              "isLocked": false
            },
            {
              "name": "season",
              "type": "simpleList",
              "value": [
                "autumn",
                "winter"
              ],
              "isLocked": false
            },
            {
              "name": "collection",
              "type": "localizedString",
              "value": {
                "de_DE": "einzigartig",
                "en_GB": "unique"
              },
              "isLocked": false
            },
            {
              "name": "color",
              "type": "localizedStringList",
              "value": [
                {
                  "de_DE": "weiß",
                  "en_GB": "white"
                },
                {
                  "de_DE": "schwarz",
                  "en_GB": "black"
                }
              ],
              "isLocked": false
            }
          ]
        }
      },
      "NonTranslatableAttributePaginatedCollectionResponse": {
        "value": {
          "entities": [
            "Baumwolle",
            "Polyester",
            "Holz",
            "Wolle",
            "Leder",
            "Synthetic",
            "Baumwolle test locked",
            "BaumwolleOne"
          ],
          "cursor": {
            "next": null
          }
        }
      },
      "TranslatableAttributePaginatedCollectionResponse": {
        "value": {
          "entities": [
            {
              "de_DE": "Blue"
            },
            {
              "de_DE": "Black",
              "en_GB": "Black-Test"
            },
            {
              "de_DE": "Yellow",
              "en_GB": "English Blue",
              "fr_FR": "French Bleu",
              "es_ES": "Español Azul"
            }
          ],
          "cursor": {
            "next": null
          }
        }
      },
      "NonLocalizedStringAttributeGroupAttributeRequest": {
        "value": {
          "value": "M"
        }
      },
      "LocalizedStringAttributeGroupAttributeRequest": {
        "value": {
          "value": {
            "de_DE": "einzigartig",
            "en_GB": "unique"
          }
        }
      },
      "NonLocalizedStringAttributeGroupAttributeResponse": {
        "value": {
          "value": "M"
        }
      },
      "LocalizedStringAttributeGroupAttributeResponse": {
        "value": {
          "value": {
            "de_DE": "einzigartig",
            "en_GB": "unique"
          }
        }
      },
      "CampaignRequest": {
        "value": {
          "name": "My Campaign",
          "description": "My first campaign",
          "countryCodes": [
            "DE",
            "AT"
          ],
          "reduction": 14.75,
          "startAt": "2021-01-23T11:30:58+00:00",
          "endAt": "2021-09-23T11:30:58+00:00",
          "campaignKey": "05f962c8-857b-462a-bea2-54e2bfecf729",
          "customData": {
            "devicesAllowed": [
              "app",
              "web"
            ]
          }
        }
      },
      "CampaignResponse": {
        "value": {
          "id": 1,
          "name": "My Campaign",
          "description": "My first campaign",
          "countryCodes": [
            "DE",
            "AT"
          ],
          "reduction": 14.75,
          "startAt": "2021-01-23T11:30:58+00:00",
          "endAt": "2021-09-23T11:30:58+00:00",
          "campaignKey": "e7e9b3cb-49dd-4d31-93b9-53e4ebd8b016",
          "customData": {
            "devicesAllowed": [
              "app",
              "web"
            ]
          }
        }
      },
      "CustomDataRequest": {
        "value": {
          "isValid": true,
          "name": "ayou",
          "score": 100,
          "some-json": {
            "de_DE": {
              "color": "weiss"
            },
            "en_GB": {
              "color": "white"
            }
          }
        }
      },
      "CustomDataResponse": {
        "value": {
          "isValid": true,
          "name": "ayou",
          "score": 100,
          "some-json": {
            "de_DE": {
              "color": "weiss"
            },
            "en_GB": {
              "color": "white"
            }
          }
        }
      },
      "CustomDataRequestForKey": {
        "value": {
          "isValid": true
        }
      },
      "CustomDataResponseForKey": {
        "value": {
          "isValid": true
        }
      },
      "CampaignCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 1,
              "name": "My Campaign",
              "description": "My first campaign",
              "countryCodes": [
                "DE",
                "AT"
              ],
              "reduction": 14.75,
              "startAt": "2021-01-23T11:30:58+00:00",
              "endAt": "2021-09-23T11:30:58+00:00",
              "customData": {
                "devicesAllowed": [
                  "app",
                  "web"
                ]
              }
            }
          ],
          "cursor": {
            "next": null
          }
        }
      },
      "ProductVariantCampaignReductionRequest": {
        "value": [
          {
            "productVariantId": 123,
            "reduction": 10
          },
          {
            "productVariantReferenceKey": "myKey",
            "reduction": 10
          }
        ]
      },
      "ProductCampaignReductionRequest": {
        "value": [
          {
            "productId": 123,
            "reduction": 10
          },
          {
            "productReferenceKey": "myKey",
            "reduction": 10
          }
        ]
      },
      "MasterCategoryRequest": {
        "value": {
          "path": [
            "Fashion",
            "Men"
          ],
          "attributes": [
            {
              "name": "season",
              "type": "simple",
              "isMandatory": false
            }
          ]
        }
      },
      "MasterCategoryResponse": {
        "value": {
          "id": 3,
          "parentId": 1,
          "path": [
            "Fashion",
            "Men"
          ],
          "attributes": [
            {
              "name": "season",
              "type": "simple",
              "isMandatory": false
            }
          ]
        }
      },
      "MasterCategoryCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 1,
              "path": [
                "Fashion"
              ]
            },
            {
              "id": 2,
              "parentId": 1,
              "path": [
                "Fashion",
                "Women"
              ]
            },
            {
              "id": 3,
              "parentId": 1,
              "path": [
                "Fashion",
                "Men"
              ],
              "attributes": [
                {
                  "name": "seasoon",
                  "type": "simple",
                  "isMandatory": false
                }
              ]
            }
          ],
          "cursor": {
            "next": null
          }
        }
      },
      "MinimalShopCategoryCreateRequest": {
        "value": {
          "name": {
            "de_DE": "Meine Shop Kategorie",
            "en_GB": "My Shop Category"
          },
          "properties": [
            {
              "key": "myKey",
              "value": "myValue"
            }
          ],
          "isActive": true,
          "isVisible": true
        }
      },
      "CompleteShopCategoryCreateRequest": {
        "value": {
          "parentId": 1,
          "leftSiblingId": 2,
          "name": {
            "de_DE": "Meine Shop-Kategorie",
            "en_GB": "My Shop Category"
          },
          "productSets": [
            {
              "referencedProductSetId": 98,
              "includeProductIds": [
                1
              ]
            },
            {
              "excludeProductIds": [
                2
              ]
            },
            {
              "referencedProductSetId": 99,
              "isNew": true,
              "attributes": [
                {
                  "name": "color",
                  "include": [
                    "red"
                  ]
                }
              ]
            }
          ],
          "supportedFilterGroups": [
            "material",
            "maker"
          ],
          "properties": [
            {
              "key": "myKey",
              "value": "myValue"
            }
          ],
          "isActive": true,
          "isVisible": true,
          "isExcludedFromSearch": false,
          "customData": {
            "isValid": true,
            "name": "ayou",
            "score": 100,
            "some-json": {
              "foo": "bar",
              "de_DE": {
                "color": "weiss"
              },
              "en_GB": {
                "color": "white"
              }
            }
          }
        }
      },
      "MinimalShopCategoryUpdateRequest": {
        "value": {
          "name": {
            "de_DE": "Meine Shop-Kategorie",
            "en_GB": "My Updated Shop Category"
          }
        }
      },
      "CompleteShopCategoryUpdateRequest": {
        "value": {
          "parentId": 1,
          "leftSiblingId": 2,
          "name": {
            "de_DE": "Meine Shop-Kategorie",
            "en_GB": "My Shop Category"
          },
          "productSets": [
            {
              "productSetId": 100,
              "referencedProductSetId": 98,
              "includeProductIds": [
                1
              ]
            },
            {
              "productSetId": 101,
              "excludeProductIds": [
                2
              ]
            },
            {
              "productSetId": 102,
              "referencedProductSetId": 99,
              "isNew": true,
              "attributes": [
                {
                  "name": "color",
                  "include": [
                    "red"
                  ]
                }
              ]
            }
          ],
          "supportedFilterGroups": [
            "material",
            "maker"
          ],
          "customData": {
            "isValid": true,
            "name": "ayou",
            "score": 100,
            "some-json": {
              "foo": "bar",
              "de_DE": {
                "color": "weiss"
              },
              "en_GB": {
                "color": "white"
              }
            }
          },
          "countries": [
            {
              "countryCode": "DE",
              "isActive": true,
              "isVisible": true,
              "isExcludedFromSearch": false
            },
            {
              "countryCode": "AT",
              "customSortingKey": "most:sale"
            }
          ]
        }
      },
      "ShopCategoryPatchWithCountriesRequest": {
        "summary": "Global fields and country-specific configs in one request",
        "value": {
          "name": {
            "de_DE": "Aktualisierter Name"
          },
          "countries": [
            {
              "countryCode": "DE",
              "isActive": true,
              "isVisible": true
            },
            {
              "countryCode": "AT",
              "isExcludedFromSearch": false,
              "customSortingKey": "most:sale"
            }
          ]
        }
      },
      "ShopCategoryPatchWithCountriesByShopCountryIdRequest": {
        "summary": "Target specific shop countries when countryCode is shared",
        "value": {
          "countries": [
            {
              "countryCode": "DE",
              "shopCountryId": 10001,
              "seo": {
                "metaTitle": "DE German storefront"
              }
            },
            {
              "countryCode": "DE",
              "shopCountryId": 10002,
              "seo": {
                "metaTitle": "DE English storefront"
              }
            }
          ]
        }
      },
      "ShopCategoryResponse": {
        "value": {
          "id": 3,
          "parentId": 1,
          "name": {
            "de_DE": "Meine Shop-Kategorie",
            "en_GB": "My Shop Category"
          },
          "productSets": [
            {
              "productSetId": 100,
              "referencedProductSetId": 98,
              "includeProductIds": [
                1
              ]
            },
            {
              "productSetId": 101,
              "excludeProductIds": [
                2
              ]
            },
            {
              "productSetId": 102,
              "referencedProductSetId": 99,
              "isNew": true,
              "attributes": [
                {
                  "name": "color",
                  "include": [
                    "red"
                  ]
                }
              ]
            }
          ],
          "supportedFilterGroups": [
            "material",
            "maker"
          ],
          "customData": {
            "isValid": true,
            "name": "ayou",
            "score": 100,
            "some-json": {
              "foo": "bar",
              "de_DE": {
                "color": "weiss"
              },
              "en_GB": {
                "color": "white"
              }
            }
          },
          "countries": [
            {
              "countryCode": "DE",
              "shopCountryId": 1,
              "isActive": true,
              "isVisible": true,
              "isExcludedFromSearch": false,
              "properties": [
                {
                  "key": "myKey",
                  "value": "myValue"
                }
              ],
              "customData": {
                "isValid": true,
                "name": "ayou",
                "score": 100,
                "some-json": {
                  "foo": "bar",
                  "de_DE": {
                    "color": "weiss"
                  },
                  "en_GB": {
                    "color": "white"
                  }
                }
              }
            }
          ]
        }
      },
      "ProductMasterCategoriesRequest": {
        "value": {
          "paths": [
            [
              "Fashion",
              "Men",
              "Shirts"
            ]
          ]
        }
      },
      "ProductMasterCategoriesResponse": {
        "value": {
          "isLocked": false,
          "paths": [
            [
              "Fashion",
              "Men",
              "Shirts"
            ]
          ]
        }
      },
      "ShopCategoryProductSetUnlinkInstructionRequest": {
        "value": {
          "productSetIds": [
            2,
            3
          ],
          "copyConditions": true
        }
      },
      "ShopCategoryPropertyRequest": {
        "value": {
          "key": "sale",
          "value": "NoSale"
        }
      },
      "ShopCategoryPropertyResponse": {
        "value": {
          "key": "sale",
          "value": "NoSale"
        }
      },
      "ShopCategoryPropertyCollectionResponse": {
        "value": {
          "entities": [
            {
              "key": "sale",
              "value": "NoSale"
            }
          ]
        }
      },
      "ShopCategoryPropertyKeyRequest": {
        "value": {
          "key": "myKey",
          "isInheritable": true
        }
      },
      "ShopCategoryPropertyKeyResponse": {
        "value": {
          "id": 1,
          "key": "myKey",
          "isInheritable": true
        }
      },
      "ShopCategoryPropertyKeyCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 1,
              "key": "myKey",
              "isInheritable": true
            }
          ]
        }
      },
      "MinimalShopCategoryCountryRequest": {
        "value": {
          "isActive": true,
          "isVisible": true
        }
      },
      "CompleteShopCategoryCountryRequest": {
        "value": {
          "isActive": true,
          "isVisible": true,
          "isExcludedFromSearch": false,
          "smartSortingKey": "scayle:v1:inventory-optimization",
          "customSortingKey": "most:sale",
          "properties": [
            {
              "key": "myKey",
              "value": "myValue"
            }
          ],
          "customData": {
            "isValid": true,
            "name": "ayou",
            "score": 100,
            "some-json": {
              "de_DE": {
                "color": "weiss"
              },
              "en_GB": {
                "color": "white"
              }
            }
          },
          "seo": {
            "metaTitle": "My Shop Category",
            "metaDescription": "Short description shown in search engine result snippets.",
            "allowSearchEngineIndexing": true,
            "seoHeadline": "Discover our new arrivals",
            "seoDescription": "Handpicked selection of seasonal looks.",
            "canonicalUrl": "https://shop.example.com/my-shop-category"
          }
        }
      },
      "ShopCategoryCountryResponse": {
        "value": {
          "countryCode": "DE",
          "shopCountryId": 1,
          "path": "/my-category",
          "isActive": true,
          "isVisible": true,
          "isExcludedFromSearch": null,
          "smartSortingKey": "scayle:v1:inventory-optimization",
          "customSortingKey": "most:sale",
          "properties": [
            {
              "key": "myKey",
              "value": "myValue"
            }
          ],
          "customData": {
            "isValid": true,
            "name": "ayou",
            "score": 100,
            "some-json": {
              "de_DE": {
                "color": "weiss"
              },
              "en_GB": {
                "color": "white"
              }
            }
          },
          "seo": {
            "metaTitle": "My Shop Category",
            "metaDescription": "Short description shown in search engine result snippets.",
            "allowSearchEngineIndexing": true,
            "seoHeadline": "Discover our new arrivals",
            "seoDescription": "Handpicked selection of seasonal looks.",
            "canonicalUrl": "https://shop.example.com/my-shop-category"
          }
        }
      },
      "ShopCountryRequest": {
        "value": {
          "countryCode": "DE",
          "currencyCode": "EUR",
          "defaultLanguageCode": "de_DE",
          "supportedLanguageCodes": [
            "de_DE",
            "en_GB"
          ],
          "url": "https://www.shop.de",
          "smartSortingKey": "scayle:v1:inventory-optimization"
        }
      },
      "ShopCountryRequestWithCustomData": {
        "value": {
          "countryCode": "DE",
          "currencyCode": "EUR",
          "defaultLanguageCode": "de_DE",
          "supportedLanguageCodes": [
            "de_DE",
            "en_GB"
          ],
          "url": "https://www.shop.de",
          "smartSortingKey": "scayle:v1:inventory-optimization",
          "customData": {
            "isValid": true,
            "score": 100,
            "color": {
              "de_DE": "weiss"
            },
            "someJson": {
              "foo": "bar"
            }
          }
        }
      },
      "ShopCountryResponse": {
        "value": {
          "id": 2,
          "countryCode": "DE",
          "currencyCode": "EUR",
          "defaultLanguageCode": "de_DE",
          "supportedLanguageCodes": [
            "de_DE",
            "en_GB"
          ],
          "priceGroupKey": "myPriceGroup",
          "url": "https://www.shop.de",
          "active": true,
          "deleted": false,
          "smartSortingKey": "scayle:v1:inventory-optimization",
          "assortment": {
            "masterCategories": {
              "include": [
                [
                  "root",
                  "leaf"
                ]
              ],
              "exclude": [
                [
                  "root",
                  "leaf"
                ]
              ]
            },
            "products": {
              "include": [
                1,
                2,
                3
              ],
              "exclude": [
                4,
                5,
                6
              ]
            },
            "attributes": [
              {
                "name": "color",
                "include": [
                  "red"
                ],
                "exclude": [
                  "blue"
                ]
              }
            ],
            "merchantReferenceKeys": {
              "include": [
                "merchant-1",
                "merchant-2"
              ],
              "exclude": []
            }
          },
          "warehouses": [
            {
              "id": 1,
              "referenceKey": "my-warehouse",
              "priority": 1,
              "packageGroup": {
                "id": 3
              }
            }
          ],
          "priceRoundings": [
            {
              "id": 1,
              "currencyCode": "EUR",
              "precision": "0.99",
              "roundingType": "nearest"
            }
          ],
          "customData": {
            "isValid": true,
            "score": 100,
            "color": {
              "de_DE": "weiss"
            },
            "someJson": {
              "foo": "bar"
            }
          }
        }
      },
      "ShopCountryCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 2,
              "countryCode": "DE",
              "currencyCode": "EUR",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "priceGroupKey": "myPriceGroup",
              "url": "https://www.shop.de",
              "active": true,
              "deleted": false,
              "smartSortingKey": "scayle:v1:inventory-optimization",
              "assortment": {
                "masterCategories": {
                  "include": [
                    [
                      "root",
                      "leaf"
                    ]
                  ],
                  "exclude": [
                    [
                      "root",
                      "leaf"
                    ]
                  ]
                },
                "products": {
                  "include": [
                    1,
                    2,
                    3
                  ],
                  "exclude": [
                    4,
                    5,
                    6
                  ]
                },
                "attributes": [
                  {
                    "name": "color",
                    "include": [
                      "red"
                    ],
                    "exclude": [
                      "blue"
                    ]
                  }
                ],
                "merchantReferenceKeys": {
                  "include": [
                    "merchant-1",
                    "merchant-2"
                  ],
                  "exclude": []
                }
              },
              "warehouses": [
                {
                  "id": 1,
                  "referenceKey": "my-warehouse",
                  "priority": 1,
                  "packageGroup": {
                    "id": 3
                  }
                }
              ],
              "priceRoundings": [
                {
                  "id": 1,
                  "currencyCode": "EUR",
                  "precision": "0.99",
                  "roundingType": "nearest"
                }
              ],
              "customData": {
                "isValid": true,
                "score": 100,
                "color": {
                  "de_DE": "weiss"
                },
                "someJson": {
                  "foo": "bar"
                }
              }
            }
          ],
          "cursor": {
            "next": null
          }
        }
      },
      "MinimalBrandRequest": {
        "value": {
          "name": "Edited"
        }
      },
      "CompleteBrandRequest": {
        "value": {
          "name": "Edited",
          "logoSource": {
            "url": "https://test.com/image.png"
          },
          "attributes": [
            {
              "name": "size",
              "type": "simple",
              "value": "M"
            },
            {
              "name": "season",
              "type": "simpleList",
              "value": [
                "autumn",
                "winter"
              ]
            },
            {
              "name": "collection",
              "type": "localizedString",
              "value": {
                "de_DE": "einzigartig",
                "en_GB": "unique"
              }
            },
            {
              "name": "color",
              "type": "localizedStringList",
              "value": [
                {
                  "de_DE": "weiß",
                  "en_GB": "white"
                },
                {
                  "de_DE": "schwarz",
                  "en_GB": "black"
                }
              ]
            }
          ],
          "customData": {
            "isValid": true,
            "name": "ayou",
            "score": 100,
            "some-json": {
              "de_DE": {
                "color": "weiss"
              },
              "en_GB": {
                "color": "white"
              }
            }
          }
        }
      },
      "BrandCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 1,
              "name": "Edited",
              "group": null,
              "logoUrl": "images/123123123123.jpg",
              "attributes": [
                {
                  "name": "size",
                  "type": "simple",
                  "value": "M",
                  "isLocked": false
                },
                {
                  "name": "season",
                  "type": "simpleList",
                  "value": [
                    "autumn",
                    "winter"
                  ],
                  "isLocked": false
                },
                {
                  "name": "collection",
                  "type": "localizedString",
                  "value": {
                    "de_DE": "einzigartig",
                    "en_GB": "unique"
                  },
                  "isLocked": false
                },
                {
                  "name": "color",
                  "type": "localizedStringList",
                  "value": [
                    {
                      "de_DE": "weiß",
                      "en_GB": "white"
                    },
                    {
                      "de_DE": "schwarz",
                      "en_GB": "black"
                    }
                  ],
                  "isLocked": false
                }
              ],
              "customData": {
                "isValid": true,
                "name": "ayou",
                "score": 100,
                "some-json": {
                  "de_DE": {
                    "color": "weiss"
                  },
                  "en_GB": {
                    "color": "white"
                  }
                }
              }
            }
          ],
          "cursor": {
            "next": null
          }
        }
      },
      "BrandResponse": {
        "value": {
          "id": 1,
          "name": "Edited",
          "group": null,
          "logoUrl": "images/123123123123.jpg",
          "attributes": [
            {
              "name": "size",
              "type": "simple",
              "value": "M",
              "isLocked": false
            },
            {
              "name": "season",
              "type": "simpleList",
              "value": [
                "autumn",
                "winter"
              ],
              "isLocked": false
            },
            {
              "name": "collection",
              "type": "localizedString",
              "value": {
                "de_DE": "einzigartig",
                "en_GB": "unique"
              },
              "isLocked": false
            },
            {
              "name": "color",
              "type": "localizedStringList",
              "value": [
                {
                  "de_DE": "weiß",
                  "en_GB": "white"
                },
                {
                  "de_DE": "schwarz",
                  "en_GB": "black"
                }
              ],
              "isLocked": false
            }
          ],
          "customData": {
            "isValid": true,
            "name": "ayou",
            "score": 100,
            "some-json": {
              "de_DE": {
                "color": "weiss"
              },
              "en_GB": {
                "color": "white"
              }
            }
          }
        }
      },
      "ProductSortingRequest": {
        "value": [
          {
            "productId": 1,
            "shopKey": "ms",
            "sortKey": "default",
            "sortValue": 1
          },
          {
            "productReferenceKey": "my-product",
            "shopKey": "ms",
            "countryCode": "DE",
            "sortKey": "default",
            "sortValue": 2
          }
        ]
      },
      "ShopCountryWarehouseRequest": {
        "value": {
          "referenceKey": "my-warehouse",
          "priority": 100
        }
      },
      "ShopCountryWarehouseWithPackageGroupRequest": {
        "value": {
          "referenceKey": "my-warehouse",
          "priority": 100,
          "packageGroup": {
            "id": 3
          }
        }
      },
      "ShopCountryWarehouseResponse": {
        "value": {
          "id": 1,
          "referenceKey": "my-warehouse",
          "priority": 100,
          "packageGroup": {
            "id": 3
          }
        }
      },
      "shopCountrySpecificUnlockRequest": {
        "value": {
          "shopCountries": [
            {
              "shopKey": "ay",
              "countryCode": "DE"
            },
            {
              "shopKey": "ay",
              "countryCode": "AT"
            }
          ]
        }
      },
      "PackageGroupCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 3
            },
            {
              "id": 7
            }
          ]
        }
      },
      "AssignPackageGroupWarehouseRequest": {
        "value": [
          {
            "warehouseReferenceKey": "my-warehouse"
          },
          {
            "warehouseId": 2
          }
        ]
      },
      "CustomDataConfigRequest": {
        "value": {
          "properties": [
            {
              "name": "test",
              "type": "string",
              "defaultValue": "default value",
              "inherit": false,
              "rules": {
                "required": true
              }
            }
          ]
        }
      },
      "CustomDataConfigResponse": {
        "value": {
          "properties": [
            {
              "name": "test",
              "type": "string",
              "defaultValue": "default value",
              "inherit": false,
              "rules": {
                "required": true
              }
            }
          ]
        }
      },
      "LocalizedStringTypeCustomDataConfigRequest": {
        "value": {
          "properties": [
            {
              "name": "test",
              "type": "string",
              "isLocalized": true,
              "rules": {
                "requiredLocales": [
                  "de_DE",
                  "en_GB"
                ]
              }
            }
          ]
        }
      },
      "LocalizedJsonTypeCustomDataConfigRequest": {
        "value": {
          "properties": [
            {
              "name": "sampleJson",
              "type": "json",
              "defaultValue": {
                "de_DE": {
                  "dummy": "bar"
                },
                "en_GB": {
                  "dummy": "foo"
                }
              },
              "isLocalized": true,
              "rules": {
                "required": false,
                "requiredLocales": [
                  "de_DE",
                  "en_GB"
                ],
                "jsonSchema": {
                  "type": "object",
                  "properties": {
                    "dummy": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "dummy"
                  ],
                  "additionalProperties": false
                }
              }
            }
          ]
        }
      },
      "CustomerCreateRequest": {
        "value": {
          "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
          "firstName": "John",
          "lastName": "Doe",
          "gender": "m",
          "birthDate": "1980-01-01",
          "email": "john.doe@example.com",
          "phone": "0049/1234567890",
          "publicKey": "customer-1234",
          "title": "Prof.",
          "groups": [
            "employee"
          ],
          "identities": [
            {
              "identityProviderCode": "keycloak",
              "externalUserId": "qwerty"
            },
            {
              "identityProviderCode": "apple",
              "externalUserId": null
            }
          ],
          "legacyCustomData": {
            "score": {
              "generatedOn": "2018-05-20T19:45:15+00:00",
              "result": "green"
            }
          }
        }
      },
      "CustomerLegacyCustomDataRequest": {
        "value": {
          "score": {
            "generatedOn": "2018-05-20T19:45:15+00:00",
            "result": "green"
          }
        }
      },
      "CustomerPatchRequest": {
        "value": {
          "firstName": "John",
          "lastName": "Doe",
          "gender": "m",
          "birthDate": "1980-01-01",
          "email": "john.doe@example.com",
          "phone": "0049/1234567890",
          "publicKey": "customer-1234",
          "title": "Prof."
        }
      },
      "CustomerResponse": {
        "value": {
          "id": 1,
          "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
          "firstName": "John",
          "lastName": "Doe",
          "gender": "m",
          "birthDate": "1980-01-01",
          "email": "john.doe@example.com",
          "phone": "0049/1234567890",
          "publicKey": "customer-1234",
          "title": "Prof.",
          "type": "personal",
          "groups": [
            "employee"
          ],
          "identities": [
            {
              "identityProviderCode": "keycloak",
              "externalUserId": null
            },
            {
              "identityProviderCode": "apple",
              "externalUserId": "qwerty"
            }
          ],
          "status": {
            "isActive": true,
            "isGuestCustomer": false
          },
          "addresses": [
            {
              "id": 998,
              "referenceKey": "my-key",
              "street": "Street",
              "houseNumber": "1",
              "additional": "erste Stock",
              "zipCode": "123456",
              "city": "Hamburg",
              "countryCode": "DEU",
              "collectionPoint": {
                "customerKey": "bced-234-234",
                "description": "Kiosk",
                "key": "12345-a",
                "type": "hermes_parcelshop"
              },
              "isDefault": {
                "billing": false,
                "shipping": true
              },
              "recipient": {
                "firstName": "John",
                "gender": "m",
                "lastName": "Doe",
                "title": "Prof."
              }
            }
          ],
          "legacyCustomData": {
            "score": {
              "generatedOn": "2018-05-20T19:45:15+00:00",
              "result": "green"
            }
          },
          "createdAt": "2018-01-22T11:30:15+00:00",
          "updatedAt": "2018-01-22T11:30:15+00:00"
        }
      },
      "CustomerReferenceKeyRequest": {
        "value": {
          "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
        }
      },
      "CustomerSetPasswordRequest": {
        "value": {
          "hashingType": "internal",
          "password": "password-to-be-set"
        }
      },
      "CustomerSetPasswordHashRequest": {
        "value": {
          "hash": "$2y$12$r/rLM3HSgMVc8YTRncu4nOkDi46DIkyhr1K/yBNZKhDbIfZJpTd0a",
          "hashingType": "internal"
        }
      },
      "CreateCustomerAddressRequest": {
        "value": {
          "referenceKey": "my-key",
          "street": "Domstraße",
          "houseNumber": "1",
          "additional": "erste Stock",
          "zipCode": "123456",
          "city": "Hamburg",
          "countryCode": "DEU",
          "state": "Hamburg",
          "phone": "+49123456789",
          "collectionPoint": {
            "customerKey": "bced-234-234",
            "description": "Kiosk",
            "key": "12345-a",
            "type": "hermes_parcelshop"
          },
          "isDefault": {
            "billing": false,
            "shipping": true
          },
          "recipient": {
            "firstName": "John",
            "gender": "m",
            "lastName": "Doe",
            "title": "Prof."
          }
        }
      },
      "UpdateCustomerAddressRequest": {
        "value": {
          "street": "Domstraße",
          "houseNumber": "1",
          "additional": "erste Stock",
          "zipCode": "123456",
          "city": "Hamburg",
          "countryCode": "DEU",
          "state": "Hamburg",
          "collectionPoint": {
            "customerKey": "bced-234-234",
            "description": "Kiosk",
            "key": "12345-a",
            "type": "hermes_parcelshop"
          },
          "isDefault": {
            "billing": false,
            "shipping": true
          },
          "recipient": {
            "firstName": "John",
            "gender": "m",
            "lastName": "Doe",
            "title": "Prof."
          }
        }
      },
      "CustomerAddressResponse": {
        "value": {
          "id": 1,
          "referenceKey": "my-key",
          "street": "Street",
          "houseNumber": "1",
          "additional": "erste Stock",
          "zipCode": "123456",
          "city": "Hamburg",
          "countryCode": "DEU",
          "phone": "+49123456789",
          "collectionPoint": {
            "customerKey": "bced-234-234",
            "description": "Kiosk",
            "key": "12345-a",
            "type": "hermes_parcelshop"
          },
          "isDefault": {
            "billing": false,
            "shipping": true
          },
          "recipient": {
            "firstName": "John",
            "gender": "m",
            "lastName": "Doe",
            "title": "Prof."
          },
          "type": "shipping",
          "shopCountry": {
            "id": 998,
            "shopKey": "msde",
            "countryCode": "DE",
            "defaultLanguageCode": "en_GB",
            "supportedLanguageCodes": [],
            "priceGroupKey": null,
            "url": "www.example.com",
            "active": true,
            "currencyCode": null,
            "deleted": false
          }
        }
      },
      "CustomerAddressCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 1,
              "referenceKey": "my-key",
              "street": "Street",
              "houseNumber": "1",
              "additional": "erste Stock",
              "zipCode": "123456",
              "city": "Hamburg",
              "countryCode": "DEU",
              "collectionPoint": {
                "customerKey": "bced-234-234",
                "description": "Kiosk",
                "key": "12345-a",
                "type": "hermes_parcelshop"
              },
              "isDefault": {
                "billing": false,
                "shipping": true
              },
              "recipient": {
                "firstName": "John",
                "gender": "m",
                "lastName": "Doe",
                "title": "Prof."
              },
              "type": "shipping",
              "shopCountry": {
                "id": 998,
                "shopKey": "msde",
                "countryCode": "DE",
                "defaultLanguageCode": "en_GB",
                "supportedLanguageCodes": [],
                "priceGroupKey": null,
                "url": "www.example.com",
                "active": true,
                "currencyCode": null,
                "deleted": false
              }
            }
          ]
        }
      },
      "CustomerAddressReferenceKeyRequest": {
        "value": {
          "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
        }
      },
      "CustomerStatusRequest": {
        "value": {
          "isActive": true,
          "isGuestCustomer": false
        }
      },
      "CustomerStatusResponse": {
        "value": {
          "isActive": true,
          "isGuestCustomer": false
        }
      },
      "CustomerGroupRequest": {
        "value": {
          "groups": [
            "employee"
          ]
        }
      },
      "CustomerMembershipRequest": {
        "value": {
          "isActive": true,
          "accountNumber": "1234567890",
          "typeKey": "payback"
        }
      },
      "CustomerMembershipResponse": {
        "value": {
          "id": 5,
          "isActive": true,
          "accountNumber": "1234567890",
          "typeKey": "payback",
          "createdAt": "2023-01-22T11:30:15+00:00",
          "updatedAt": "2023-01-22T11:30:15+00:00"
        }
      },
      "CustomerSegmentCreate": {
        "value": {
          "criteriaDsl": "id > 10 && \"vip\" in groups",
          "active": true,
          "referenceKey": "segment_vip_001",
          "name": "VIP Segment"
        }
      },
      "CustomerSegmentResponse": {
        "value": {
          "guid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "referenceKey": "segment_vip_001",
          "name": "VIP Segment",
          "criteriaDsl": "id > 10 && \"vip\" in groups",
          "rules": 1,
          "active": true,
          "createdDate": "2026-04-14T09:31:06+00:00",
          "updatedDate": "2026-04-14T09:31:06+00:00"
        }
      },
      "CustomerSegmentsCollectionResponse": {
        "value": {
          "entities": [
            {
              "guid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "referenceKey": "segment_vip_001",
              "name": "VIP Segment",
              "criteriaDsl": "id > 10 && \"vip\" in groups",
              "rules": 1,
              "active": true,
              "createdDate": "2026-04-14T09:31:06+00:00",
              "updatedDate": "2026-04-14T09:31:06+00:00"
            }
          ],
          "cursor": {
            "next": "2"
          }
        }
      },
      "OrderResponse": {
        "value": {
          "address": {
            "billing": {
              "city": "Hamburg",
              "countryCode": "DEU",
              "id": 7353,
              "isDefault": {
                "billing": false,
                "shipping": false
              },
              "recipient": {
                "firstName": "Anna!",
                "gender": "m",
                "lastName": "Fohlmeister",
                "type": "personal"
              },
              "street": "test",
              "zipCode": "1200"
            },
            "shipping": {
              "city": "Hamburg",
              "collectionPoint": {
                "customerKey": "bced-234-234",
                "description": "Pedros Kiosk",
                "key": "12345-a",
                "type": "hermes_parcelshop"
              },
              "countryCode": "DEU",
              "houseNumber": "10",
              "id": 7354,
              "isDefault": {
                "billing": false,
                "shipping": false
              },
              "recipient": {
                "firstName": "Anna!",
                "gender": "m",
                "lastName": "Fohlmeister",
                "type": "personal"
              },
              "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
              "street": "Domstrasse",
              "zipCode": "20459"
            }
          },
          "basketKey": "imported-basket",
          "confirmedAt": "2018-01-20T11:30:15+00:00",
          "contacts": [
            {
              "type": "carrier"
            }
          ],
          "cost": {
            "appliedFees": [
              {
                "amount": {
                  "withTax": 200,
                  "withoutTax": 168
                },
                "category": "delivery",
                "key": "least_packages",
                "option": "deliveryCosts",
                "tax": {
                  "vat": {
                    "amount": 32,
                    "rate": 0.19
                  }
                }
              }
            ],
            "costCapture": 1390,
            "tax": {
              "vat": {
                "amount": 222
              }
            },
            "withTax": 1390,
            "withTaxWithMembershipDiscountWithoutServiceCosts": 1190,
            "withoutTax": 1168,
            "withoutTaxWithMembershipDiscount": 1168
          },
          "createdAt": "2018-01-20T09:30:15+00:00",
          "currencyCode": "EUR",
          "legacyCustomData": {
            "key": "value",
            "origin": "data-importer"
          },
          "customer": {
            "createdAt": "2021-11-29T16:39:02+00:00",
            "email": "ada75@hotmail.com",
            "firstName": "Sylvia",
            "gender": "m",
            "groups": [
              "new",
              "initial-data"
            ],
            "id": 1,
            "lastName": "McCullough",
            "publicKey": "customer-a5666d13bcadd56342da3644681e96c0",
            "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
            "status": {
              "isActive": true,
              "isGuestCustomer": false
            },
            "title": "Dr.",
            "type": "personal",
            "updatedAt": "2021-12-03T10:58:37+00:00"
          },
          "detailedStatus": {
            "billing": {
              "code": "billing_payment_pending",
              "name": "Zahlung reserviert"
            },
            "order": {
              "code": "order_delegated",
              "name": "Delegated"
            },
            "shipping": {
              "code": "shipping_delivered",
              "name": "Ware versendet"
            }
          },
          "id": 901,
          "items": [
            {
              "createdAt": "2018-01-20T09:30:15+00:00",
              "currency": "EUR",
              "legacyCustomData": {
                "key": "value"
              },
              "id": 10976510,
              "key": "e3f0643cd35403f954828e745797260b",
              "merchant": {
                "referenceKey": "m1"
              },
              "packageId": 45,
              "price": {
                "overrideWithTax": 0,
                "overrideWithoutTax": 0,
                "tax": {
                  "vat": {
                    "amount": 190,
                    "rate": 0.19
                  }
                },
                "undiscountedWithOutTax": 1000,
                "undiscountedWithTax": 1190,
                "withTax": 1190,
                "withoutTax": 1000
              },
              "product": {
                "id": 4564545
              },
              "status": "delivered",
              "variant": {
                "id": 1234567,
                "referenceKey": "563843898",
                "stock": {
                  "supplierId": 1
                }
              },
              "delegatedAt": "2018-01-20T09:40:15+00:00",
              "shippedAt": "2018-01-21T09:30:15+00:00"
            }
          ],
          "packages": [
            {
              "deliveryDate": {
                "maximum": "2018-02-05",
                "minimum": "2018-02-05"
              },
              "deliveryStatus": "shipment_completed",
              "id": 45,
              "shipmentKey": "shpmnt-61-1",
              "tracking": {
                "id": "shpmnt-61-1"
              },
              "shippedAt": "2018-01-21T09:30:15+00:00"
            }
          ],
          "payment": [
            {
              "amount": 1190,
              "data": {
                "CCBrand": "VISA",
                "CCExpiry": "202005",
                "IPCity": "charlottenburg",
                "IPLatitude": "52.5151",
                "IPLongitude": "13.3053",
                "IPState": "berlin",
                "IPZone": "276",
                "IPZoneA2": "de"
              },
              "key": "accounting",
              "transactionKey": "creditcard-abcde"
            }
          ],
          "publicKey": "666",
          "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJU2",
          "shipping": {
            "deliveryCosts": 200,
            "expressDeliveryCosts": 0,
            "policy": "least_packages"
          },
          "status": "payment_reserved",
          "updatedAt": "2018-01-20T09:30:15+00:00",
          "vouchers": [
            {
              "applicableItems": [
                {
                  "isApplied": false,
                  "key": "e3f0643cd35403f954828e745797260b"
                }
              ],
              "code": "fashion2020",
              "id": 346,
              "type": "relative",
              "value": 1000,
              "voucherId": 0
            }
          ],
          "shopCountry": {
            "id": 5502,
            "shopKey": "msde",
            "countryCode": "DE",
            "defaultLanguageCode": "en_GB",
            "supportedLanguageCodes": [],
            "priceGroupKey": null,
            "url": "www.example.com",
            "active": true,
            "currencyCode": null,
            "deleted": false
          },
          "channel": {
            "id": 123,
            "key": "channel-key",
            "name": "Channel name",
            "type": "marketplace"
          }
        }
      },
      "CreateOrderRequest": {
        "value": {
          "id": 901,
          "address": {
            "billing": {
              "zipCode": "1200",
              "countryCode": "DEU",
              "city": "Hamburg",
              "street": "test",
              "recipient": {
                "firstName": "Anna!",
                "lastName": "Fohlmeister",
                "gender": "m",
                "type": "personal"
              },
              "isDefault": {
                "billing": false,
                "shipping": false
              }
            },
            "shipping": {
              "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
              "zipCode": "20459",
              "countryCode": "DEU",
              "city": "Hamburg",
              "street": "Domstrasse",
              "houseNumber": "10",
              "recipient": {
                "firstName": "Anna!",
                "lastName": "Fohlmeister",
                "gender": "m",
                "type": "personal"
              },
              "isDefault": {
                "billing": false,
                "shipping": true
              },
              "collectionPoint": {
                "customerKey": "bced-234-234",
                "description": "Pedro's Kiosk",
                "key": "12345-a",
                "type": "hermes_parcelshop"
              }
            }
          },
          "confirmedAt": "2018-01-20T11:30:15+00:00",
          "createdAt": "2018-01-20T09:30:15+00:00",
          "updatedAt": "2018-01-20T09:30:15+00:00",
          "cost": {
            "appliedFees": [
              {
                "amount": {
                  "withoutTax": 168,
                  "withTax": 200
                },
                "category": "delivery",
                "option": "deliveryCosts",
                "tax": {
                  "vat": {
                    "amount": 32,
                    "rate": 0.19
                  }
                }
              }
            ],
            "appliedReductions": [
              {
                "amount": {
                  "absoluteWithTax": 100,
                  "relative": 0.5
                },
                "category": "voucher",
                "type": "absolute"
              }
            ],
            "withTax": 1390,
            "withoutTax": 1168
          },
          "currencyCode": "EUR",
          "customer": {
            "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
          },
          "invoicedAt": "2018-01-22T11:30:15+00:00",
          "items": [
            {
              "deliveryForecast": {
                "subsequentDelivery": {
                  "key": "christmas"
                }
              },
              "legacyCustomData": {
                "key": "value"
              },
              "packageId": 1,
              "price": {
                "appliedReductions": [
                  {
                    "amount": {
                      "absoluteWithTax": 100,
                      "relative": 0.5
                    },
                    "category": "sale",
                    "type": "relative"
                  }
                ],
                "tax": {
                  "vat": {
                    "amount": 190,
                    "rate": 0.19
                  }
                },
                "reference": {
                  "withTax": 595,
                  "size": "100",
                  "unit": "ml"
                },
                "withTax": 1190,
                "withoutTax": 11
              },
              "product": {
                "id": 4564545
              },
              "key": "test",
              "reservationKey": "6nq69bzzkd5xufxliwg8",
              "status": "available",
              "variant": {
                "id": 1234567,
                "referenceKey": "563843898",
                "stock": {
                  "supplierId": 1
                }
              },
              "warehouseId": 12345,
              "createdAt": "2018-01-20T09:30:15+00:00",
              "updatedAt": "2018-01-20T09:30:15+00:00"
            }
          ],
          "packages": [
            {
              "carrierKey": "dhl",
              "deliveryDate": {
                "maximum": "2018-02-05",
                "minimum": "2018-02-02"
              },
              "deliveryStatus": "open",
              "shipmentKey": "shpmnt-61-1",
              "id": 1
            }
          ],
          "payment": [
            {
              "amount": 1190,
              "data": {
                "CCBrand": "VISA",
                "CCExpiry": "202005",
                "IPCity": "charlottenburg",
                "IPLatitude": "52.5151",
                "IPLongitude": "13.3053",
                "IPState": "berlin",
                "IPZone": "276",
                "IPZoneA2": "de"
              },
              "key": "accounting",
              "transactionKey": "creditcard-abcde"
            }
          ],
          "publicKey": "666",
          "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJU2",
          "shipping": {
            "policy": "least_packages"
          },
          "status": "invoice_completed",
          "voucher": {
            "applicableItems": [
              {
                "isApplied": true,
                "key": "a87ff679a2f3e71d9181a67b7542122c"
              },
              {
                "isApplied": false,
                "key": "eccbc87e4b5ce2fe28308fd9f2a7baf3"
              }
            ],
            "code": "fashion2020",
            "type": "relative",
            "value": 1000
          },
          "legacyCustomData": {
            "key": "value"
          }
        }
      },
      "CreateSubscriptionOrderRequest": {
        "value": {
          "address": {
            "billing": {
              "city": "New York",
              "countryCode": "DEU",
              "firstName": "Michael",
              "gender": "m",
              "houseNumber": "1650",
              "lastName": "Jackson",
              "phone": "0049/1234567890",
              "street": "Bedford Ave",
              "zipCode": "11225"
            },
            "shipping": {
              "city": "New York",
              "countryCode": "DEU",
              "firstName": "Michael",
              "gender": "m",
              "houseNumber": "1650",
              "lastName": "Jackson",
              "phone": "0049/1234567890",
              "street": "Bedford Ave",
              "zipCode": "11225"
            }
          },
          "legacyCustomData": {
            "basketId": "mop_basket_ID"
          },
          "customerId": 1263116,
          "ipAddress": "127.0.0.1",
          "items": [
            {
              "variantId": 46892617
            }
          ],
          "paymentTypes": [
            {
              "authorizedValue": 2990,
              "confirmationData": {
                "descriptor": "DG0452755Z3",
                "profileId": "ABOUTYOU_TE_DE",
                "subscriptionPaymentReference": "74-201507071360201",
                "transactionId": "74-201507071360201",
                "type": "accounting"
              },
              "transactionId": "74-201507071360201",
              "type": "accounting"
            }
          ],
          "subscriptionId": "1234567abcdef",
          "carrier": {
            "carrierKey": "dhl",
            "deliveryDate": {
              "maximum": "2025-01-09",
              "minimum": "2025-01-15"
            },
            "shippingPolicyKey": "standard_delivery"
          },
          "referenceKey": "abc0123"
        }
      },
      "OrderReferenceKeyRequest": {
        "value": {
          "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
        }
      },
      "OrderStatusResponse": {
        "value": {
          "status": "invoice_completed",
          "detailedStatus": {
            "billing": {
              "code": "billing_payment_pending",
              "name": "Zahlung reserviert"
            },
            "order": {
              "code": "order_invoiced",
              "name": "Invoiced"
            },
            "shipping": {
              "code": "shipping_partially_returned",
              "name": "Teilweise Retoure"
            }
          }
        }
      },
      "OrderInvoiceCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 1,
              "createdAt": "2025-01-29T16:39:53+00:00",
              "type": "partial_invoice",
              "invoice": {
                "number": 5,
                "fullNumber": "ayou-24-5"
              },
              "available": true
            }
          ],
          "cursor": {
            "next": "Mgo="
          }
        }
      },
      "OrderDocumentCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 1,
              "availabilityStatus": true,
              "createdAt": "2026-03-19T14:30:00+00:00",
              "format": "pdf",
              "type": "merchant_partial_invoice"
            },
            {
              "id": 2,
              "availabilityStatus": true,
              "createdAt": "2026-03-19T14:30:00+00:00",
              "format": "eml",
              "type": "email_shipment"
            }
          ],
          "cursor": {
            "next": "Mgo="
          }
        }
      },
      "OrderCollectionResponse": {
        "value": {
          "entities": [
            {
              "address": {
                "billing": {
                  "id": 998,
                  "referenceKey": "my-key",
                  "street": "Street",
                  "houseNumber": "1",
                  "additional": "erste Stock",
                  "zipCode": "123456",
                  "city": "Hamburg",
                  "countryCode": "DEU",
                  "collectionPoint": {
                    "customerKey": "bced-234-234",
                    "description": "Kiosk",
                    "key": "12345-a",
                    "type": "hermes_parcelshop"
                  },
                  "isDefault": {
                    "billing": false,
                    "shipping": true
                  },
                  "recipient": {
                    "firstName": "John",
                    "gender": "m",
                    "lastName": "Doe",
                    "title": "Prof."
                  }
                },
                "forward": {
                  "id": 998,
                  "referenceKey": "my-key",
                  "street": "Street",
                  "houseNumber": "1",
                  "additional": "erste Stock",
                  "zipCode": "123456",
                  "city": "Hamburg",
                  "countryCode": "DEU",
                  "collectionPoint": {
                    "customerKey": "bced-234-234",
                    "description": "Kiosk",
                    "key": "12345-a",
                    "type": "hermes_parcelshop"
                  },
                  "isDefault": {
                    "billing": false,
                    "shipping": true
                  },
                  "recipient": {
                    "firstName": "John",
                    "gender": "m",
                    "lastName": "Doe",
                    "title": "Prof."
                  }
                },
                "shipping": {
                  "id": 998,
                  "referenceKey": "my-key",
                  "street": "Street",
                  "houseNumber": "1",
                  "additional": "erste Stock",
                  "zipCode": "123456",
                  "city": "Hamburg",
                  "countryCode": "DEU",
                  "collectionPoint": {
                    "customerKey": "bced-234-234",
                    "description": "Kiosk",
                    "key": "12345-a",
                    "type": "hermes_parcelshop"
                  },
                  "isDefault": {
                    "billing": false,
                    "shipping": true
                  },
                  "recipient": {
                    "firstName": "John",
                    "gender": "m",
                    "lastName": "Doe",
                    "title": "Prof."
                  }
                }
              },
              "basketKey": "basket-c6v7k4eer1",
              "confirmedAt": "2018-01-20T11:30:15+00:00",
              "contacts": [
                {
                  "type": "carrier",
                  "value": "+385 95 677 8888"
                }
              ],
              "cost": {
                "appliedFees": [
                  {
                    "amount": {
                      "withTax": 200,
                      "withoutTax": 168
                    },
                    "category": "delivery",
                    "key": "hermes",
                    "option": "express",
                    "tax": {
                      "vat": {
                        "amount": 32,
                        "rate": 1
                      }
                    }
                  }
                ],
                "appliedReductions": [
                  {
                    "amount": {
                      "absoluteWithTax": 100,
                      "relative": 1
                    },
                    "category": "voucher",
                    "type": "absolute"
                  }
                ],
                "tax": {
                  "vat": {
                    "amount": 11,
                    "rate": 0.19
                  }
                },
                "withTax": 1390,
                "withoutTax": 1168,
                "withTaxWithMembershipDiscountWithoutServiceCosts": 1337,
                "withoutTaxWithMembershipDiscount": 1234,
                "costCapture": 1390,
                "hasExternalPrices": false
              },
              "currencyCode": "EUR",
              "id": 123,
              "invoicedAt": "2018-01-22T11:30:15+00:00",
              "items": [
                {
                  "id": 1,
                  "availableQuantity": 20,
                  "deliveryForecast": {
                    "subsequentDelivery": {
                      "key": "christmas"
                    }
                  },
                  "legacyCustomData": {
                    "key": "value"
                  },
                  "packageId": 1,
                  "price": {
                    "appliedReductions": [
                      {
                        "amount": {
                          "absoluteWithTax": 100,
                          "relative": 1
                        },
                        "category": "sale",
                        "type": "relative"
                      }
                    ],
                    "reference": {
                      "size": "100",
                      "unit": "ml",
                      "withTax": 595
                    },
                    "tax": {
                      "vat": {
                        "amount": 190,
                        "rate": 1
                      }
                    },
                    "withTax": 1190,
                    "withoutTax": 1000
                  },
                  "product": {
                    "id": 123456,
                    "name": "Blue Shirt"
                  },
                  "key": "ac834d23e689u678",
                  "reservationKey": "6nq69bzzkd5xufxliwg8",
                  "status": "available",
                  "variant": {
                    "id": 7,
                    "referenceKey": "M00012-black-M"
                  },
                  "warehouseId": 12345,
                  "itemGroup": {
                    "id": "ab123",
                    "isMainItem": true,
                    "isRequired": true
                  },
                  "campaignKey": "sale15",
                  "merchant": {
                    "referenceKey": "merchant-1"
                  },
                  "delegatedAt": "2018-01-20T09:40:15+00:00",
                  "shippedAt": "2018-01-21T09:30:15+00:00"
                }
              ],
              "legacyCustomData": {
                "score": {
                  "generatedOn": "2018-05-20T19:45:15+00:00",
                  "result": "green"
                }
              },
              "membershipDiscount": {
                "membershipCardId": 1,
                "pointsUsed": 1356,
                "reductionValue": 127,
                "tax": 0
              },
              "packages": [
                {
                  "carrierKey": "dhl",
                  "deliveryDate": {
                    "maximum": "2018-02-05",
                    "minimum": "2018-02-02"
                  },
                  "deliveryStatus": "open",
                  "id": 1,
                  "shippedAt": "2018-01-21T09:30:15+00:00"
                }
              ],
              "payment": [
                {
                  "amount": 1190,
                  "data": {
                    "CCBrand": "VISA",
                    "CCExpiry": "202005",
                    "IPCity": "charlottenburg",
                    "IPLatitude": "52.5151",
                    "IPLongitude": "13.3053",
                    "IPState": "berlin",
                    "IPZone": "276",
                    "IPZoneA2": "de"
                  },
                  "key": "computop_creditcard",
                  "transactionKey": "creditcard-abcde"
                }
              ],
              "publicKey": "666",
              "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
              "shipping": {
                "policy": "least_packages"
              },
              "status": "invoice_completed",
              "detailedStatus": {
                "billing": {
                  "code": "billing_payment_pending",
                  "name": "Zahlung reserviert"
                },
                "order": {
                  "code": "order_invoiced",
                  "name": "Invoiced"
                },
                "shipping": {
                  "code": "shipping_partially_returned",
                  "name": "Teilweise Retoure"
                }
              },
              "vouchers": [
                {
                  "id": 198234,
                  "applicableItems": [
                    {
                      "isApplied": true,
                      "key": "a87ff679a2f3e71d9181a67b7542122c"
                    }
                  ],
                  "code": "fashion2020",
                  "type": "absolute",
                  "value": 1000,
                  "voucherId": 1443
                }
              ],
              "shopCountry": {
                "id": 1,
                "shopKey": "ay",
                "countryCode": "DE",
                "defaultLanguageCode": "de_DE",
                "supportedLanguageCodes": [
                  "de_DE",
                  "en_GB"
                ],
                "active": true,
                "deleted": false,
                "url": "www.example.com",
                "currencyCode": "EUR",
                "priceGroupKey": "myPriceGroup"
              },
              "customer": {
                "id": 1,
                "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
                "firstName": "John",
                "lastName": "Doe",
                "gender": "m",
                "birthDate": "1980-01-01",
                "email": "john.doe@example.com",
                "phone": "0049/1234567890",
                "publicKey": "customer-1234",
                "title": "Prof.",
                "type": "personal",
                "groups": [
                  "employee"
                ],
                "status": {
                  "isActive": true,
                  "isGuestCustomer": false
                }
              },
              "channel": {
                "id": 123,
                "key": "channel-key",
                "name": "Channel name",
                "type": "marketplace"
              }
            },
            {
              "address": {
                "billing": {
                  "city": "Hamburg",
                  "countryCode": "DEU",
                  "id": 7353,
                  "isDefault": {
                    "billing": false,
                    "shipping": false
                  },
                  "recipient": {
                    "firstName": "Anna!",
                    "gender": "m",
                    "lastName": "Fohlmeister",
                    "type": "personal"
                  },
                  "street": "test",
                  "zipCode": "1200"
                },
                "shipping": {
                  "city": "Hamburg",
                  "collectionPoint": {
                    "customerKey": "bced-234-234",
                    "description": "Pedros Kiosk",
                    "key": "12345-a",
                    "type": "hermes_parcelshop"
                  },
                  "countryCode": "DEU",
                  "houseNumber": "10",
                  "id": 7354,
                  "isDefault": {
                    "billing": false,
                    "shipping": false
                  },
                  "recipient": {
                    "firstName": "Anna!",
                    "gender": "m",
                    "lastName": "Fohlmeister",
                    "type": "personal"
                  },
                  "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
                  "street": "Domstrasse",
                  "zipCode": "20459"
                }
              },
              "basketKey": "external-basket",
              "confirmedAt": "2018-01-20T11:30:15+00:00",
              "contacts": [
                {
                  "type": "carrier"
                }
              ],
              "cost": {
                "appliedFees": [
                  {
                    "amount": {
                      "withTax": 200
                    },
                    "category": "client_category",
                    "key": "client_key",
                    "option": "client_option",
                    "tax": {
                      "vat": {
                        "amount": 32,
                        "rate": 0.19
                      }
                    }
                  }
                ],
                "costCapture": 1390,
                "withTax": 1390,
                "withTaxWithMembershipDiscountWithoutServiceCosts": 1190,
                "withoutTax": 1168,
                "hasExternalPrices": true,
                "tax": {
                  "vat": {
                    "amount": 32
                  }
                }
              },
              "createdAt": "2018-01-20T09:30:15+00:00",
              "currencyCode": "EUR",
              "legacyCustomData": {
                "key": "value",
                "origin": "data-importer"
              },
              "customer": {
                "createdAt": "2021-11-29T16:39:02+00:00",
                "email": "ada75@hotmail.com",
                "firstName": "Sylvia",
                "gender": "m",
                "groups": [
                  "new",
                  "initial-data"
                ],
                "id": 1,
                "lastName": "McCullough",
                "publicKey": "customer-a5666d13bcadd56342da3644681e96c0",
                "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
                "status": {
                  "isActive": true,
                  "isGuestCustomer": false
                },
                "title": "Dr.",
                "type": "personal",
                "updatedAt": "2021-12-03T10:58:37+00:00"
              },
              "detailedStatus": {
                "billing": {
                  "code": "billing_payment_pending",
                  "name": "Zahlung reserviert"
                },
                "order": {
                  "code": "order_delegated",
                  "name": "Delegated"
                },
                "shipping": {
                  "code": "shipping_delivered",
                  "name": "Ware versendet"
                }
              },
              "id": 124,
              "items": [
                {
                  "createdAt": "2018-01-20T09:30:15+00:00",
                  "currency": "EUR",
                  "legacyCustomData": {
                    "key": "value"
                  },
                  "id": 10976510,
                  "key": "e3f0643cd35403f954828e745797260b",
                  "merchant": {
                    "referenceKey": "m1"
                  },
                  "packageId": 45,
                  "price": {
                    "withTax": 1190,
                    "withoutTax": 1000
                  },
                  "product": {
                    "id": 4564545
                  },
                  "status": "delivered",
                  "variant": {
                    "id": 1234567,
                    "referenceKey": "563843898",
                    "stock": {
                      "supplierId": 1
                    }
                  },
                  "delegatedAt": "2018-01-20T09:40:15+00:00",
                  "shippedAt": "2018-01-21T09:30:15+00:00"
                }
              ],
              "packages": [
                {
                  "deliveryDate": {
                    "maximum": "2018-02-05",
                    "minimum": "2018-02-05"
                  },
                  "deliveryStatus": "shipment_completed",
                  "id": 45,
                  "shipmentKey": "shpmnt-61-1",
                  "tracking": {
                    "id": "shpmnt-61-1"
                  },
                  "shippedAt": "2018-01-21T09:30:15+00:00"
                }
              ],
              "payment": [
                {
                  "amount": 1190,
                  "data": {
                    "CCBrand": "VISA",
                    "CCExpiry": "202005",
                    "IPCity": "charlottenburg",
                    "IPLatitude": "52.5151",
                    "IPLongitude": "13.3053",
                    "IPState": "berlin",
                    "IPZone": "276",
                    "IPZoneA2": "de"
                  },
                  "key": "accounting",
                  "transactionKey": "creditcard-abcde"
                }
              ],
              "publicKey": "666",
              "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJU1",
              "shipping": {
                "policy": "least_packages"
              },
              "status": "payment_reserved",
              "updatedAt": "2018-01-20T09:30:15+00:00",
              "vouchers": [],
              "shopCountry": {
                "id": 5502,
                "shopKey": "msde",
                "countryCode": "DE",
                "defaultLanguageCode": "en_GB",
                "supportedLanguageCodes": [],
                "priceGroupKey": null,
                "url": "www.example.com",
                "active": true,
                "currencyCode": null,
                "deleted": false
              }
            }
          ],
          "cursor": {
            "next": "2"
          }
        }
      },
      "OrderItemLegacyCustomData": {
        "value": {
          "propA": 1,
          "propB": true,
          "propC": "test23",
          "propD": {
            "propD1": "45"
          },
          "propE": null
        }
      },
      "OrderItem": {
        "value": {
          "id": 4898484,
          "availableQuantity": 20,
          "basketItemKey": "563843898-234324",
          "currency": "EUR",
          "deliveryForecast": {
            "deliverable": {
              "key": "directShipping"
            },
            "subsequentDelivery": {
              "key": "christmas"
            }
          },
          "legacyCustomData": {
            "key": "value"
          },
          "packageId": 1,
          "price": {
            "appliedReductions": [
              {
                "amount": {
                  "absoluteWithTax": 100,
                  "relative": 0.5
                },
                "category": "sale",
                "type": "relative",
                "code": "ayou123",
                "displayName": "Summer Sale"
              }
            ],
            "absoluteVoucherReducedPrice": {
              "tax": {
                "vat": {
                  "amount": 190,
                  "rate": 0.19
                }
              },
              "withOutTax": 11,
              "withTax": 1190
            },
            "reference": {
              "size": "100",
              "unit": "ml",
              "withTax": 595
            },
            "tax": {
              "vat": {
                "amount": 190,
                "rate": 0.19
              }
            },
            "withTax": 1190,
            "withoutTax": 11,
            "overrideWithoutTax": 1000,
            "overrideWithTax": 1190,
            "undiscountedWithOutTax": 1000,
            "undiscountedWithTax": 1190
          },
          "lowestPriorPrice": {
            "relativeDifferenceToPrice": -0.25,
            "withTax": 1000
          },
          "product": {
            "id": 4564545,
            "name": "Chelsea Boots",
            "images": [
              {
                "hash": "9f6c628a98106dcce2bc5a4ac1de9c14"
              }
            ]
          },
          "promotion": {
            "id": "649178aa530da10426f3f8d1",
            "name": "PromoABC",
            "version": "649178aa530da10426f3f8d2",
            "displayName": "Winter sales 2024",
            "code": "PROMO0124"
          },
          "key": "test",
          "reservationKey": "6nq69bzzkd5xufxliwg8",
          "status": "available",
          "variant": {
            "id": 1234567,
            "referenceKey": "563843898",
            "stock": {
              "supplierId": 271
            }
          },
          "warehouseId": 1,
          "itemGroup": {
            "id": "ab123",
            "isMainItem": true,
            "isRequired": true
          },
          "campaignKey": "fooCampaign",
          "merchant": {
            "referenceKey": "default"
          },
          "createdAt": "2018-01-20T09:30:15+00:00",
          "updatedAt": "2018-01-20T09:30:15+00:00"
        }
      },
      "ShipmentRequest": {
        "value": {
          "shopKey": "ms",
          "countryCode": "de",
          "carrier": "HERMES_KLV",
          "deliveryDate": "2021-09-23T11:30:58+00:00",
          "items": [
            {
              "orderItemId": 67219436,
              "returnKey": "550357807160"
            }
          ],
          "orderId": 123,
          "returnIdentCode": "123456789012",
          "shipmentKey": "582301b967d97"
        }
      },
      "WebhookProducerAllEventsResponse": {
        "value": {
          "entities": [
            {
              "id": 1,
              "name": "customer-created",
              "description": "The event occurs whenever a new customer is registered or connected via a social network on the checkout application.",
              "targetSchema": {
                "type": "object",
                "properties": {
                  "companyId": {
                    "type": "integer"
                  },
                  "shopCountryId": {
                    "type": "integer"
                  }
                },
                "required": [
                  "companyId",
                  "shopCountryId"
                ]
              }
            }
          ],
          "cursor": {
            "next": "dGVzdDE"
          }
        }
      },
      "WebhookProducerSubscriptionCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 42,
              "externalId": null,
              "eventName": "customer-created",
              "url": "https://consumer.example.com/webhooks/scayle",
              "target": {
                "companyId": 1,
                "shopCountryId": 2
              },
              "enabled": true,
              "disabledReason": null,
              "auth": {
                "username": "hook-user",
                "password": "hook-secret"
              },
              "rpm": 60,
              "email": "ops@consumer.example",
              "isInternal": false
            }
          ],
          "cursor": {
            "next": "Mg"
          }
        }
      },
      "WebhookProducerSubscriptionCreateRequest": {
        "value": {
          "eventName": "customer-created",
          "url": "https://consumer.example.com/webhooks/scayle",
          "target": {
            "companyId": 1,
            "shopCountryId": 2
          },
          "enabled": true,
          "rpm": 60,
          "email": "ops@consumer.example",
          "isInternal": false,
          "auth": {
            "username": "hook-user",
            "password": "hook-secret"
          },
          "customHeaders": {
            "X-Integration-Id": "acme-webhooks"
          }
        }
      },
      "WebhookProducerSubscriptionCreateResponse": {
        "value": {
          "id": 42,
          "externalId": null,
          "eventName": "customer-created",
          "url": "https://consumer.example.com/webhooks/scayle",
          "target": {
            "companyId": 1,
            "shopCountryId": 2
          },
          "enabled": true,
          "disabledReason": null,
          "auth": {
            "username": "hook-user",
            "password": "hook-secret"
          },
          "customHeaders": {
            "X-Integration-Id": "acme-webhooks"
          },
          "rpm": 60,
          "email": "ops@consumer.example",
          "isInternal": false
        }
      },
      "WebhookProducerSubscriptionResponse": {
        "value": {
          "id": 42,
          "externalId": "ext-sub-1",
          "eventName": "customer-created",
          "url": "https://consumer.example.com/webhooks/scayle-v2",
          "target": {
            "companyId": 1,
            "shopCountryId": 2
          },
          "enabled": true,
          "disabledReason": null,
          "auth": {
            "username": "hook-user",
            "password": "hook-secret"
          },
          "customHeaders": {
            "X-Integration-Id": "acme-webhooks"
          },
          "rpm": 60,
          "email": "ops@consumer.example",
          "isInternal": false
        }
      },
      "WebhookProducerSubscriptionUpdateRequest": {
        "value": {
          "eventName": "customer-created",
          "url": "https://consumer.example.com/webhooks/scayle-v2",
          "target": {
            "companyId": 1,
            "shopCountryId": 2
          },
          "enabled": false,
          "rpm": 30,
          "email": "ops@consumer.example",
          "isInternal": false
        }
      },
      "WebhookProducerSubscriptionUpdateResponse": {
        "value": {
          "id": 42,
          "externalId": "ext-sub-1",
          "eventName": "customer-created",
          "url": "https://consumer.example.com/webhooks/scayle-v2",
          "target": {
            "companyId": 1,
            "shopCountryId": 2
          },
          "enabled": false,
          "disabledReason": null,
          "auth": {
            "username": "hook-user",
            "password": "hook-secret"
          },
          "customHeaders": {
            "X-Integration-Id": "acme-webhooks"
          },
          "rpm": 30,
          "email": "ops@consumer.example",
          "isInternal": false
        }
      },
      "WebhookEventCollectionResponse": {
        "value": {
          "entities": [
            {
              "event": "customer-created",
              "version": 1,
              "description": "Called when a customer is created.",
              "isDeprecated": false,
              "supportedFilters": {
                "merchants": false
              }
            }
          ]
        }
      },
      "WebhookSubscriptionRequest": {
        "value": {
          "event": "customer-created",
          "version": 1,
          "url": "https://foo:bar@foobar.tld/notifiy",
          "filters": [
            {
              "merchantReferenceKeys": {
                "include": [
                  "merchant-1",
                  "merchant-2"
                ]
              }
            }
          ]
        }
      },
      "WebhookSubscriptionResponse": {
        "value": {
          "id": 42,
          "event": "customer-created",
          "version": 1,
          "url": "https://***:***@foobar.tld/notifiy",
          "filters": [
            {
              "merchantReferenceKeys": {
                "include": [
                  "merchant-1",
                  "merchant-2"
                ]
              }
            }
          ]
        }
      },
      "WebhookSubscriptionCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 42,
              "event": "customer-created",
              "version": 1,
              "url": "https://***:***@foobar.tld/notifiy",
              "filters": [
                {
                  "merchantReferenceKeys": {
                    "include": [
                      "merchant-1",
                      "merchant-2"
                    ]
                  }
                }
              ]
            }
          ]
        }
      },
      "CancellationRequest": {
        "value": {
          "shopKey": "ms",
          "countryCode": "de",
          "items": [
            {
              "orderItemId": 67
            }
          ],
          "orderId": 123
        }
      },
      "ReturnItemsRequest": {
        "value": [
          {
            "received": "2021-11-09 07:30:27",
            "returnKey": "ayou-139-13376599_48_1",
            "returnReason": "cci-manual-return"
          },
          {
            "received": "2021-11-09 07:30:27",
            "returnKey": "ayou-139-13376599_48_1",
            "returnReason": "cci-manual-return"
          }
        ]
      },
      "VoucherCreateRequest": {
        "value": {
          "code": "testcode",
          "constraints": {
            "date": {
              "max": "2021-12-23T11:30:58+00:00",
              "min": "2021-01-23T11:30:58+00:00"
            },
            "isValidOnCampaigns": true,
            "maxApplications": {
              "count": 1,
              "restriction": "customer"
            },
            "orderValue": {
              "max": 200000,
              "min": 7500
            }
          },
          "isApplicableToPromotions": true,
          "name": "Testvoucher",
          "status": "active",
          "summary": "Voucher utilised for automated for testing",
          "type": "relative",
          "value": 0.1,
          "criteria": [
            {
              "id": 1,
              "key": "customerId",
              "type": "include",
              "value": [
                1
              ]
            }
          ]
        }
      },
      "VoucherUpdateRequest": {
        "value": {
          "code": "testcode",
          "constraints": {
            "date": {
              "max": "2021-12-23T11:30:58+00:00",
              "min": "2021-01-23T11:30:58+00:00"
            },
            "isValidOnCampaigns": true,
            "maxApplications": {
              "count": 1,
              "restriction": "customer"
            },
            "orderValue": {
              "max": 200000,
              "min": 7500
            }
          },
          "isApplicableToPromotions": true,
          "name": "Testvoucher",
          "status": "active",
          "summary": "Voucher utilised for automated for testing",
          "type": "relative",
          "value": 0.1
        }
      },
      "VoucherCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 1234567980,
              "code": "testcode",
              "constraints": {
                "date": {
                  "max": "2021-12-23T11:30:58+00:00",
                  "min": "2021-01-23T11:30:58+00:00"
                },
                "isValidOnCampaigns": true,
                "maxApplications": {
                  "count": 1,
                  "restriction": "customer"
                },
                "orderValue": {
                  "max": 200000,
                  "min": 7500
                }
              },
              "criteria": [
                {
                  "id": 1,
                  "key": "customerId",
                  "type": "include",
                  "value": [
                    1
                  ]
                }
              ],
              "name": "Testvoucher",
              "status": "active",
              "summary": "Voucher utilised for automated for testing",
              "type": "relative",
              "value": 0.1,
              "isApplicableToPromotions": true
            }
          ]
        }
      },
      "VoucherResponse": {
        "value": {
          "id": 1234567980,
          "code": "testcode",
          "constraints": {
            "date": {
              "max": "2021-12-23T11:30:58+00:00",
              "min": "2021-01-23T11:30:58+00:00"
            },
            "isValidOnCampaigns": true,
            "maxApplications": {
              "count": 1,
              "restriction": "customer"
            },
            "orderValue": {
              "max": 200000,
              "min": 7500
            }
          },
          "criteria": [
            {
              "id": 1,
              "key": "customerId",
              "type": "include",
              "value": [
                1
              ]
            }
          ],
          "name": "Testvoucher",
          "status": "active",
          "summary": "Voucher utilised for automated for testing",
          "type": "relative",
          "value": 0.1,
          "isApplicableToPromotions": true
        }
      },
      "VoucherCriterionRequest": {
        "value": {
          "key": "customerId",
          "type": "include",
          "value": [
            1
          ]
        }
      },
      "VoucherCriteriaResponse": {
        "value": {
          "entities": [
            {
              "id": 1,
              "key": "customerId",
              "type": "include",
              "value": [
                1
              ]
            }
          ]
        }
      },
      "VoucherCriterionResponse": {
        "value": {
          "id": 1,
          "key": "customerId",
          "type": "include",
          "value": [
            1
          ]
        }
      },
      "CustomerCreatedEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2019-08-09T15:01:26+00:00",
          "type": "customer-created",
          "payload": {
            "id": 1,
            "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
            "firstName": "John",
            "lastName": "Doe",
            "gender": "m",
            "birthDate": "1980-01-01",
            "email": "john.doe@example.com",
            "phone": "0049/1234567890",
            "publicKey": "customer-1234",
            "title": "Prof.",
            "type": "personal",
            "groups": [
              "employee"
            ],
            "status": {
              "isActive": true,
              "isGuestCustomer": false
            },
            "company": {
              "id": 1,
              "name": "default"
            },
            "addresses": [
              {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              }
            ],
            "legacyCustomData": {
              "score": {
                "generatedOn": "2018-05-20T19:45:15+00:00",
                "result": "green"
              }
            },
            "shopCountry": {
              "id": 1,
              "shopKey": "ay",
              "countryCode": "DE",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "active": true,
              "deleted": false,
              "url": "www.example.com",
              "currencyCode": "EUR",
              "priceGroupKey": "myPriceGroup"
            }
          }
        }
      },
      "CustomerUpdatedEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2019-08-09T15:01:26+00:00",
          "type": "customer-updated",
          "payload": {
            "id": 1,
            "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
            "firstName": "John",
            "lastName": "Doe",
            "gender": "m",
            "birthDate": "1980-01-01",
            "email": "john.doe@example.com",
            "phone": "0049/1234567890",
            "publicKey": "customer-1234",
            "title": "Prof.",
            "type": "personal",
            "groups": [
              "employee"
            ],
            "status": {
              "isActive": true,
              "isGuestCustomer": false
            },
            "company": {
              "id": 1,
              "name": "default"
            },
            "addresses": [
              {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              }
            ],
            "legacyCustomData": {
              "score": {
                "generatedOn": "2018-05-20T19:45:15+00:00",
                "result": "green"
              }
            },
            "shopCountry": {
              "id": 1,
              "shopKey": "ay",
              "countryCode": "DE",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "active": true,
              "deleted": false,
              "url": "www.example.com",
              "currencyCode": "EUR",
              "priceGroupKey": "myPriceGroup"
            }
          }
        }
      },
      "CustomerLoginEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2019-08-09T15:01:26+00:00",
          "type": "customer-login",
          "payload": {
            "id": 1,
            "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
            "firstName": "John",
            "lastName": "Doe",
            "gender": "m",
            "birthDate": "1980-01-01",
            "email": "john.doe@example.com",
            "phone": "0049/1234567890",
            "publicKey": "customer-1234",
            "title": "Prof.",
            "type": "personal",
            "groups": [
              "employee"
            ],
            "status": {
              "isActive": true,
              "isGuestCustomer": false
            },
            "company": {
              "id": 1,
              "name": "default"
            },
            "addresses": [
              {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              }
            ],
            "legacyCustomData": {
              "score": {
                "generatedOn": "2018-05-20T19:45:15+00:00",
                "result": "green"
              }
            },
            "shopCountry": {
              "id": 1,
              "shopKey": "ay",
              "countryCode": "DE",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "active": true,
              "deleted": false,
              "url": "www.example.com",
              "currencyCode": "EUR",
              "priceGroupKey": "myPriceGroup"
            }
          }
        }
      },
      "CustomerLogoutEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2019-08-09T15:01:26+00:00",
          "type": "customer-logout",
          "payload": {
            "id": 1,
            "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
            "firstName": "John",
            "lastName": "Doe",
            "gender": "m",
            "birthDate": "1980-01-01",
            "email": "john.doe@example.com",
            "phone": "0049/1234567890",
            "publicKey": "customer-1234",
            "title": "Prof.",
            "type": "personal",
            "groups": [
              "employee"
            ],
            "status": {
              "isActive": true,
              "isGuestCustomer": false
            },
            "company": {
              "id": 1,
              "name": "default"
            },
            "addresses": [
              {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              }
            ],
            "legacyCustomData": {
              "score": {
                "generatedOn": "2018-05-20T19:45:15+00:00",
                "result": "green"
              }
            },
            "shopCountry": {
              "id": 1,
              "shopKey": "ay",
              "countryCode": "DE",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "active": true,
              "deleted": false,
              "url": "www.example.com",
              "currencyCode": "EUR",
              "priceGroupKey": "myPriceGroup"
            }
          }
        }
      },
      "CustomerPasswordResetEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2019-08-09T15:01:26+00:00",
          "type": "customer-password-reset",
          "payload": {
            "customer": {
              "id": 1,
              "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
              "firstName": "John",
              "lastName": "Doe",
              "gender": "m",
              "birthDate": "1980-01-01",
              "email": "john.doe@example.com",
              "phone": "0049/1234567890",
              "publicKey": "customer-1234",
              "title": "Prof.",
              "type": "personal",
              "groups": [
                "employee"
              ],
              "status": {
                "isActive": true,
                "isGuestCustomer": false
              },
              "company": {
                "id": 1,
                "name": "default"
              },
              "addresses": [
                {
                  "id": 998,
                  "referenceKey": "my-key",
                  "street": "Street",
                  "houseNumber": "1",
                  "additional": "erste Stock",
                  "zipCode": "123456",
                  "city": "Hamburg",
                  "countryCode": "DEU",
                  "collectionPoint": {
                    "customerKey": "bced-234-234",
                    "description": "Kiosk",
                    "key": "12345-a",
                    "type": "hermes_parcelshop"
                  },
                  "isDefault": {
                    "billing": false,
                    "shipping": true
                  },
                  "recipient": {
                    "firstName": "John",
                    "gender": "m",
                    "lastName": "Doe",
                    "title": "Prof."
                  }
                }
              ],
              "legacyCustomData": {
                "score": {
                  "generatedOn": "2018-05-20T19:45:15+00:00",
                  "result": "green"
                }
              }
            },
            "url": "www.shop.de/reset",
            "expiresAt": "2020-05-20T19:45:15+00:00",
            "shopCountry": {
              "id": 1,
              "shopKey": "ay",
              "countryCode": "DE",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "active": true,
              "deleted": false,
              "url": "www.example.com",
              "currencyCode": "EUR",
              "priceGroupKey": "myPriceGroup"
            }
          }
        }
      },
      "CustomerAnonymizedEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2019-08-09T15:01:26+00:00",
          "type": "customer-anonymized",
          "payload": {
            "id": 1,
            "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
            "publicKey": "customer-1234",
            "anonymizationStatus": "anonymized",
            "createdAt": "2023-08-09T15:01:26+00:00",
            "updatedAt": "2023-08-09T15:01:26+00:00",
            "shopCountry": {
              "id": 1,
              "shopKey": "ay",
              "countryCode": "DE",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "active": true,
              "deleted": false,
              "url": "www.example.com",
              "currencyCode": "EUR",
              "priceGroupKey": "myPriceGroup"
            }
          }
        }
      },
      "CustomerAddressCreatedEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2019-08-09T15:01:26+00:00",
          "type": "customer-address-created",
          "payload": {
            "customer": {
              "id": 1,
              "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
              "firstName": "John",
              "lastName": "Doe",
              "gender": "m",
              "birthDate": "1980-01-01",
              "email": "john.doe@example.com",
              "phone": "0049/1234567890",
              "publicKey": "customer-1234",
              "title": "Prof.",
              "type": "personal",
              "groups": [
                "employee"
              ],
              "status": {
                "isActive": true,
                "isGuestCustomer": false
              },
              "company": {
                "id": 1,
                "name": "default"
              },
              "legacyCustomData": {
                "score": {
                  "generatedOn": "2018-05-20T19:45:15+00:00",
                  "result": "green"
                }
              }
            },
            "address": {
              "id": 1,
              "referenceKey": "my-key",
              "street": "Street",
              "houseNumber": "1",
              "additional": "erste Stock",
              "zipCode": "123456",
              "city": "Hamburg",
              "countryCode": "DEU",
              "collectionPoint": {
                "customerKey": "bced-234-234",
                "description": "Kiosk",
                "key": "12345-a",
                "type": "hermes_parcelshop"
              },
              "isDefault": {
                "billing": false,
                "shipping": true
              },
              "recipient": {
                "firstName": "John",
                "gender": "m",
                "lastName": "Doe",
                "title": "Prof."
              }
            },
            "shopCountry": {
              "id": 1,
              "shopKey": "ay",
              "countryCode": "DE",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "active": true,
              "deleted": false,
              "url": "www.example.com",
              "currencyCode": "EUR",
              "priceGroupKey": "myPriceGroup"
            }
          }
        }
      },
      "CustomerAddressUpdatedEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2019-08-09T15:01:26+00:00",
          "type": "customer-address-updated",
          "payload": {
            "customer": {
              "id": 1,
              "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
              "firstName": "John",
              "lastName": "Doe",
              "gender": "m",
              "birthDate": "1980-01-01",
              "email": "john.doe@example.com",
              "phone": "0049/1234567890",
              "publicKey": "customer-1234",
              "title": "Prof.",
              "type": "personal",
              "groups": [
                "employee"
              ],
              "status": {
                "isActive": true,
                "isGuestCustomer": false
              },
              "company": {
                "id": 1,
                "name": "default"
              },
              "legacyCustomData": {
                "score": {
                  "generatedOn": "2018-05-20T19:45:15+00:00",
                  "result": "green"
                }
              }
            },
            "address": {
              "id": 1,
              "referenceKey": "my-key",
              "street": "Street",
              "houseNumber": "1",
              "additional": "erste Stock",
              "zipCode": "123456",
              "city": "Hamburg",
              "countryCode": "DEU",
              "collectionPoint": {
                "customerKey": "bced-234-234",
                "description": "Kiosk",
                "key": "12345-a",
                "type": "hermes_parcelshop"
              },
              "isDefault": {
                "billing": false,
                "shipping": true
              },
              "recipient": {
                "firstName": "John",
                "gender": "m",
                "lastName": "Doe",
                "title": "Prof."
              }
            },
            "shopCountry": {
              "id": 1,
              "shopKey": "ay",
              "countryCode": "DE",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "active": true,
              "deleted": false,
              "url": "www.example.com",
              "currencyCode": "EUR",
              "priceGroupKey": "myPriceGroup"
            }
          }
        }
      },
      "OrderConfirmedEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2019-08-09T15:01:26+00:00",
          "type": "order-confirmed",
          "payload": {
            "address": {
              "billing": {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              },
              "forward": {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              },
              "shipping": {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              }
            },
            "basketKey": "basket-c6v7k4eer1",
            "confirmedAt": "2018-01-20T11:30:15+00:00",
            "contacts": [
              {
                "type": "carrier",
                "value": "+385 95 677 8888"
              }
            ],
            "cost": {
              "appliedFees": [
                {
                  "amount": {
                    "withTax": 200,
                    "withoutTax": 168
                  },
                  "category": "delivery",
                  "key": "hermes",
                  "option": "express",
                  "tax": {
                    "vat": {
                      "amount": 32,
                      "rate": 1
                    }
                  }
                }
              ],
              "appliedReductions": [
                {
                  "amount": {
                    "absoluteWithTax": 100,
                    "relative": 1
                  },
                  "category": "voucher",
                  "type": "absolute"
                }
              ],
              "tax": {
                "vat": {
                  "amount": 11
                }
              },
              "withTax": 1390,
              "withoutTax": 1168,
              "withTaxWithMembershipDiscountWithoutServiceCosts": 1337,
              "withoutTaxWithMembershipDiscount": 1234,
              "costCapture": 1390
            },
            "currencyCode": "EUR",
            "customer": {
              "id": 9876,
              "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
            },
            "id": 123,
            "invoicedAt": "2018-01-22T11:30:15+00:00",
            "items": [
              {
                "id": 1,
                "availableQuantity": 20,
                "deliveryForecast": {
                  "subsequentDelivery": {
                    "key": "christmas"
                  }
                },
                "legacyCustomData": {
                  "key": "value"
                },
                "packageId": 1,
                "price": {
                  "appliedReductions": [
                    {
                      "amount": {
                        "absoluteWithTax": 100,
                        "relative": 1
                      },
                      "category": "sale",
                      "type": "relative"
                    }
                  ],
                  "reference": {
                    "size": "100",
                    "unit": "ml",
                    "withTax": 595
                  },
                  "tax": {
                    "vat": {
                      "amount": 190,
                      "rate": 1
                    }
                  },
                  "withTax": 1190,
                  "withoutTax": 1000
                },
                "product": {
                  "id": 123456,
                  "referenceKey": "M0001-black"
                },
                "promotion": {
                  "id": "649178aa530da10426f3f8d1",
                  "name": "PromoABC",
                  "version": "v1"
                },
                "key": "ac834d23e689u678",
                "reservationKey": "6nq69bzzkd5xufxliwg8",
                "status": "available",
                "variant": {
                  "id": 7,
                  "referenceKey": "M00012-black-M"
                },
                "warehouseId": 12345,
                "itemGroup": {
                  "id": "ab123",
                  "isMainItem": true,
                  "isRequired": true
                },
                "campaignKey": "sale15",
                "merchant": {
                  "referenceKey": "merchant-1"
                }
              }
            ],
            "legacyCustomData": {
              "score": {
                "generatedOn": "2018-05-20T19:45:15+00:00",
                "result": "green"
              }
            },
            "membershipDiscount": {
              "membershipCardId": 1,
              "pointsUsed": 1356,
              "reductionValue": 127,
              "tax": 0
            },
            "packages": [
              {
                "carrierKey": "dhl",
                "deliveryDate": {
                  "maximum": "2018-02-05",
                  "minimum": "2018-02-02"
                },
                "deliveryStatus": "open",
                "id": 1
              }
            ],
            "payment": [
              {
                "amount": 1190,
                "data": {
                  "CCBrand": "VISA",
                  "CCExpiry": "202005",
                  "IPCity": "charlottenburg",
                  "IPLatitude": "52.5151",
                  "IPLongitude": "13.3053",
                  "IPState": "berlin",
                  "IPZone": "276",
                  "IPZoneA2": "de"
                },
                "key": "computop_creditcard",
                "transactionKey": "creditcard-abcde"
              }
            ],
            "publicKey": "666",
            "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
            "shipping": {
              "policy": "least_packages"
            },
            "shopCountry": {
              "id": 1,
              "shopKey": "ay",
              "countryCode": "DE",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "active": true,
              "deleted": false,
              "url": "www.example.com",
              "currencyCode": "EUR",
              "priceGroupKey": "myPriceGroup"
            },
            "status": "invoice_completed",
            "detailedStatus": {
              "billing": {
                "code": "billing_payment_pending",
                "name": "Zahlung reserviert"
              },
              "order": {
                "code": "order_invoiced",
                "name": "Invoiced"
              },
              "shipping": {
                "code": "shipping_partially_returned",
                "name": "Teilweise Retoure"
              }
            },
            "vouchers": [
              {
                "id": 198234,
                "applicableItems": [
                  {
                    "isApplied": true,
                    "key": "a87ff679a2f3e71d9181a67b7542122c"
                  }
                ],
                "code": "fashion2020",
                "type": "absolute",
                "value": 1000,
                "voucherId": 1443
              }
            ]
          }
        }
      },
      "OrderCancelledEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2019-08-09T15:01:26+00:00",
          "type": "order-cancelled",
          "payload": {
            "address": {
              "billing": {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              },
              "forward": {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              },
              "shipping": {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              }
            },
            "basketKey": "basket-c6v7k4eer1",
            "confirmedAt": "2018-01-20T11:30:15+00:00",
            "contacts": [
              {
                "type": "carrier",
                "value": "+385 95 677 8888"
              }
            ],
            "cost": {
              "appliedFees": [
                {
                  "amount": {
                    "withTax": 200,
                    "withoutTax": 168
                  },
                  "category": "delivery",
                  "key": "hermes",
                  "option": "express",
                  "tax": {
                    "vat": {
                      "amount": 32,
                      "rate": 1
                    }
                  }
                }
              ],
              "appliedReductions": [
                {
                  "amount": {
                    "absoluteWithTax": 100,
                    "relative": 1
                  },
                  "category": "voucher",
                  "type": "absolute"
                }
              ],
              "tax": {
                "vat": {
                  "amount": 11
                }
              },
              "withTax": 1390,
              "withoutTax": 1168,
              "withTaxWithMembershipDiscountWithoutServiceCosts": 1337,
              "withoutTaxWithMembershipDiscount": 1234,
              "costCapture": 1390
            },
            "currencyCode": "EUR",
            "customer": {
              "id": 9876,
              "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
            },
            "id": 123,
            "invoicedAt": "2018-01-22T11:30:15+00:00",
            "items": [
              {
                "id": 1,
                "availableQuantity": 20,
                "deliveryForecast": {
                  "subsequentDelivery": {
                    "key": "christmas"
                  }
                },
                "legacyCustomData": {
                  "key": "value"
                },
                "packageId": 1,
                "price": {
                  "appliedReductions": [
                    {
                      "amount": {
                        "absoluteWithTax": 100,
                        "relative": 1
                      },
                      "category": "sale",
                      "type": "relative"
                    }
                  ],
                  "reference": {
                    "size": "100",
                    "unit": "ml",
                    "withTax": 595
                  },
                  "tax": {
                    "vat": {
                      "amount": 190,
                      "rate": 1
                    }
                  },
                  "withTax": 1190,
                  "withoutTax": 1000
                },
                "product": {
                  "id": 123456,
                  "referenceKey": "M0001-black"
                },
                "promotion": {
                  "id": "649178aa530da10426f3f8d1",
                  "name": "PromoABC",
                  "version": "v1"
                },
                "key": "ac834d23e689u678",
                "reservationKey": "6nq69bzzkd5xufxliwg8",
                "status": "available",
                "variant": {
                  "id": 7,
                  "referenceKey": "M00012-black-M"
                },
                "warehouseId": 12345,
                "itemGroup": {
                  "id": "ab123",
                  "isMainItem": true,
                  "isRequired": true
                },
                "campaignKey": "sale15",
                "merchant": {
                  "referenceKey": "merchant-1"
                }
              }
            ],
            "legacyCustomData": {
              "score": {
                "generatedOn": "2018-05-20T19:45:15+00:00",
                "result": "green"
              }
            },
            "membershipDiscount": {
              "membershipCardId": 1,
              "pointsUsed": 1356,
              "reductionValue": 127,
              "tax": 0
            },
            "packages": [
              {
                "carrierKey": "dhl",
                "deliveryDate": {
                  "maximum": "2018-02-05",
                  "minimum": "2018-02-02"
                },
                "deliveryStatus": "open",
                "id": 1
              }
            ],
            "payment": [
              {
                "amount": 1190,
                "data": {
                  "CCBrand": "VISA",
                  "CCExpiry": "202005",
                  "IPCity": "charlottenburg",
                  "IPLatitude": "52.5151",
                  "IPLongitude": "13.3053",
                  "IPState": "berlin",
                  "IPZone": "276",
                  "IPZoneA2": "de"
                },
                "key": "computop_creditcard",
                "transactionKey": "creditcard-abcde"
              }
            ],
            "publicKey": "666",
            "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
            "shipping": {
              "policy": "least_packages"
            },
            "shopCountry": {
              "id": 1,
              "shopKey": "ay",
              "countryCode": "DE",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "active": true,
              "deleted": false,
              "url": "www.example.com",
              "currencyCode": "EUR",
              "priceGroupKey": "myPriceGroup"
            },
            "status": "invoice_completed",
            "detailedStatus": {
              "billing": {
                "code": "billing_payment_pending",
                "name": "Zahlung reserviert"
              },
              "order": {
                "code": "order_invoiced",
                "name": "Invoiced"
              },
              "shipping": {
                "code": "shipping_partially_returned",
                "name": "Teilweise Retoure"
              }
            },
            "vouchers": [
              {
                "id": 198234,
                "applicableItems": [
                  {
                    "isApplied": true,
                    "key": "a87ff679a2f3e71d9181a67b7542122c"
                  }
                ],
                "code": "fashion2020",
                "type": "absolute",
                "value": 1000,
                "voucherId": 1443
              }
            ]
          }
        }
      },
      "OrderDelegatedEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2019-08-09T15:01:26+00:00",
          "type": "order-delegated",
          "payload": {
            "address": {
              "billing": {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              },
              "forward": {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              },
              "shipping": {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              }
            },
            "basketKey": "basket-c6v7k4eer1",
            "confirmedAt": "2018-01-20T11:30:15+00:00",
            "contacts": [
              {
                "type": "carrier",
                "value": "+385 95 677 8888"
              }
            ],
            "cost": {
              "appliedFees": [
                {
                  "amount": {
                    "withTax": 200,
                    "withoutTax": 168
                  },
                  "category": "delivery",
                  "key": "hermes",
                  "option": "express",
                  "tax": {
                    "vat": {
                      "amount": 32,
                      "rate": 1
                    }
                  }
                }
              ],
              "appliedReductions": [
                {
                  "amount": {
                    "absoluteWithTax": 100,
                    "relative": 1
                  },
                  "category": "voucher",
                  "type": "absolute"
                }
              ],
              "tax": {
                "vat": {
                  "amount": 11
                }
              },
              "withTax": 1390,
              "withoutTax": 1168,
              "withTaxWithMembershipDiscountWithoutServiceCosts": 1337,
              "withoutTaxWithMembershipDiscount": 1234,
              "costCapture": 1390
            },
            "currencyCode": "EUR",
            "customer": {
              "id": 9876,
              "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
            },
            "id": 123,
            "invoicedAt": "2018-01-22T11:30:15+00:00",
            "items": [
              {
                "id": 1,
                "availableQuantity": 20,
                "deliveryForecast": {
                  "subsequentDelivery": {
                    "key": "christmas"
                  }
                },
                "legacyCustomData": {
                  "key": "value"
                },
                "packageId": 1,
                "price": {
                  "appliedReductions": [
                    {
                      "amount": {
                        "absoluteWithTax": 100,
                        "relative": 1
                      },
                      "category": "sale",
                      "type": "relative"
                    }
                  ],
                  "reference": {
                    "size": "100",
                    "unit": "ml",
                    "withTax": 595
                  },
                  "tax": {
                    "vat": {
                      "amount": 190,
                      "rate": 1
                    }
                  },
                  "withTax": 1190,
                  "withoutTax": 1000
                },
                "product": {
                  "id": 123456,
                  "referenceKey": "M0001-black"
                },
                "promotion": {
                  "id": "649178aa530da10426f3f8d1",
                  "name": "PromoABC",
                  "version": "v1"
                },
                "key": "ac834d23e689u678",
                "reservationKey": "6nq69bzzkd5xufxliwg8",
                "status": "available",
                "variant": {
                  "id": 7,
                  "referenceKey": "M00012-black-M"
                },
                "warehouseId": 12345,
                "itemGroup": {
                  "id": "ab123",
                  "isMainItem": true,
                  "isRequired": true
                },
                "campaignKey": "sale15",
                "merchant": {
                  "referenceKey": "merchant-1"
                }
              }
            ],
            "legacyCustomData": {
              "score": {
                "generatedOn": "2018-05-20T19:45:15+00:00",
                "result": "green"
              }
            },
            "membershipDiscount": {
              "membershipCardId": 1,
              "pointsUsed": 1356,
              "reductionValue": 127,
              "tax": 0
            },
            "packages": [
              {
                "carrierKey": "dhl",
                "deliveryDate": {
                  "maximum": "2018-02-05",
                  "minimum": "2018-02-02"
                },
                "deliveryStatus": "open",
                "id": 1
              }
            ],
            "payment": [
              {
                "amount": 1190,
                "data": {
                  "CCBrand": "VISA",
                  "CCExpiry": "202005",
                  "IPCity": "charlottenburg",
                  "IPLatitude": "52.5151",
                  "IPLongitude": "13.3053",
                  "IPState": "berlin",
                  "IPZone": "276",
                  "IPZoneA2": "de"
                },
                "key": "computop_creditcard",
                "transactionKey": "creditcard-abcde"
              }
            ],
            "publicKey": "666",
            "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
            "shipping": {
              "policy": "least_packages"
            },
            "shopCountry": {
              "id": 1,
              "shopKey": "ay",
              "countryCode": "DE",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "active": true,
              "deleted": false,
              "url": "www.example.com",
              "currencyCode": "EUR",
              "priceGroupKey": "myPriceGroup"
            },
            "status": "invoice_completed",
            "detailedStatus": {
              "billing": {
                "code": "billing_payment_pending",
                "name": "Zahlung reserviert"
              },
              "order": {
                "code": "order_invoiced",
                "name": "Invoiced"
              },
              "shipping": {
                "code": "shipping_partially_returned",
                "name": "Teilweise Retoure"
              }
            },
            "vouchers": [
              {
                "id": 198234,
                "applicableItems": [
                  {
                    "isApplied": true,
                    "key": "a87ff679a2f3e71d9181a67b7542122c"
                  }
                ],
                "code": "fashion2020",
                "type": "absolute",
                "value": 1000,
                "voucherId": 1443
              }
            ]
          }
        }
      },
      "OrderInvoicedEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2019-08-09T15:01:26+00:00",
          "type": "order-invoiced",
          "payload": {
            "address": {
              "billing": {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              },
              "forward": {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              },
              "shipping": {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              }
            },
            "basketKey": "basket-c6v7k4eer1",
            "confirmedAt": "2018-01-20T11:30:15+00:00",
            "contacts": [
              {
                "type": "carrier",
                "value": "+385 95 677 8888"
              }
            ],
            "cost": {
              "appliedFees": [
                {
                  "amount": {
                    "withTax": 200,
                    "withoutTax": 168
                  },
                  "category": "delivery",
                  "key": "hermes",
                  "option": "express",
                  "tax": {
                    "vat": {
                      "amount": 32,
                      "rate": 1
                    }
                  }
                }
              ],
              "appliedReductions": [
                {
                  "amount": {
                    "absoluteWithTax": 100,
                    "relative": 1
                  },
                  "category": "voucher",
                  "type": "absolute"
                }
              ],
              "tax": {
                "vat": {
                  "amount": 11
                }
              },
              "withTax": 1390,
              "withoutTax": 1168,
              "withTaxWithMembershipDiscountWithoutServiceCosts": 1337,
              "withoutTaxWithMembershipDiscount": 1234,
              "costCapture": 1390
            },
            "currencyCode": "EUR",
            "customer": {
              "id": 9876,
              "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
            },
            "id": 123,
            "invoicedAt": "2018-01-22T11:30:15+00:00",
            "items": [
              {
                "id": 1,
                "availableQuantity": 20,
                "deliveryForecast": {
                  "subsequentDelivery": {
                    "key": "christmas"
                  }
                },
                "legacyCustomData": {
                  "key": "value"
                },
                "packageId": 1,
                "price": {
                  "appliedReductions": [
                    {
                      "amount": {
                        "absoluteWithTax": 100,
                        "relative": 1
                      },
                      "category": "sale",
                      "type": "relative"
                    }
                  ],
                  "reference": {
                    "size": "100",
                    "unit": "ml",
                    "withTax": 595
                  },
                  "tax": {
                    "vat": {
                      "amount": 190,
                      "rate": 1
                    }
                  },
                  "withTax": 1190,
                  "withoutTax": 1000
                },
                "product": {
                  "id": 123456,
                  "referenceKey": "M0001-black"
                },
                "promotion": {
                  "id": "649178aa530da10426f3f8d1",
                  "name": "PromoABC",
                  "version": "v1"
                },
                "key": "ac834d23e689u678",
                "reservationKey": "6nq69bzzkd5xufxliwg8",
                "status": "available",
                "variant": {
                  "id": 7,
                  "referenceKey": "M00012-black-M"
                },
                "warehouseId": 12345,
                "itemGroup": {
                  "id": "ab123",
                  "isMainItem": true,
                  "isRequired": true
                },
                "campaignKey": "sale15",
                "merchant": {
                  "referenceKey": "merchant-1"
                }
              }
            ],
            "legacyCustomData": {
              "score": {
                "generatedOn": "2018-05-20T19:45:15+00:00",
                "result": "green"
              }
            },
            "membershipDiscount": {
              "membershipCardId": 1,
              "pointsUsed": 1356,
              "reductionValue": 127,
              "tax": 0
            },
            "packages": [
              {
                "carrierKey": "dhl",
                "deliveryDate": {
                  "maximum": "2018-02-05",
                  "minimum": "2018-02-02"
                },
                "deliveryStatus": "open",
                "id": 1
              }
            ],
            "payment": [
              {
                "amount": 1190,
                "data": {
                  "CCBrand": "VISA",
                  "CCExpiry": "202005",
                  "IPCity": "charlottenburg",
                  "IPLatitude": "52.5151",
                  "IPLongitude": "13.3053",
                  "IPState": "berlin",
                  "IPZone": "276",
                  "IPZoneA2": "de"
                },
                "key": "computop_creditcard",
                "transactionKey": "creditcard-abcde"
              }
            ],
            "publicKey": "666",
            "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
            "shipping": {
              "policy": "least_packages"
            },
            "shopCountry": {
              "id": 1,
              "shopKey": "ay",
              "countryCode": "DE",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "active": true,
              "deleted": false,
              "url": "www.example.com",
              "currencyCode": "EUR",
              "priceGroupKey": "myPriceGroup"
            },
            "status": "invoice_completed",
            "detailedStatus": {
              "billing": {
                "code": "billing_payment_pending",
                "name": "Zahlung reserviert"
              },
              "order": {
                "code": "order_invoiced",
                "name": "Invoiced"
              },
              "shipping": {
                "code": "shipping_partially_returned",
                "name": "Teilweise Retoure"
              }
            },
            "vouchers": [
              {
                "id": 198234,
                "applicableItems": [
                  {
                    "isApplied": true,
                    "key": "a87ff679a2f3e71d9181a67b7542122c"
                  }
                ],
                "code": "fashion2020",
                "type": "absolute",
                "value": 1000,
                "voucherId": 1443
              }
            ]
          }
        }
      },
      "OrderPartiallyInvoicedEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2025-04-02T12:01:26+00:00",
          "type": "order-partially-invoiced",
          "payload": {
            "address": {
              "billing": {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              },
              "forward": {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              },
              "shipping": {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              }
            },
            "basketKey": "basket-c6v7k4eer1",
            "confirmedAt": "2018-01-20T11:30:15+00:00",
            "contacts": [
              {
                "type": "carrier",
                "value": "+385 95 677 8888"
              }
            ],
            "cost": {
              "appliedFees": [
                {
                  "amount": {
                    "withTax": 200,
                    "withoutTax": 168
                  },
                  "category": "delivery",
                  "key": "hermes",
                  "option": "express",
                  "tax": {
                    "vat": {
                      "amount": 32,
                      "rate": 1
                    }
                  }
                }
              ],
              "appliedReductions": [
                {
                  "amount": {
                    "absoluteWithTax": 100,
                    "relative": 1
                  },
                  "category": "voucher",
                  "type": "absolute"
                }
              ],
              "tax": {
                "vat": {
                  "amount": 11
                }
              },
              "withTax": 1390,
              "withoutTax": 1168,
              "withTaxWithMembershipDiscountWithoutServiceCosts": 1337,
              "withoutTaxWithMembershipDiscount": 1234,
              "costCapture": 1390
            },
            "currencyCode": "EUR",
            "customer": {
              "id": 9876,
              "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
            },
            "id": 123,
            "invoicedAt": "2018-01-22T11:30:15+00:00",
            "items": [
              {
                "id": 1,
                "availableQuantity": 20,
                "deliveryForecast": {
                  "subsequentDelivery": {
                    "key": "christmas"
                  }
                },
                "legacyCustomData": {
                  "key": "value"
                },
                "packageId": 1,
                "price": {
                  "appliedReductions": [
                    {
                      "amount": {
                        "absoluteWithTax": 100,
                        "relative": 1
                      },
                      "category": "sale",
                      "type": "relative"
                    }
                  ],
                  "reference": {
                    "size": "100",
                    "unit": "ml",
                    "withTax": 595
                  },
                  "tax": {
                    "vat": {
                      "amount": 190,
                      "rate": 1
                    }
                  },
                  "withTax": 1190,
                  "withoutTax": 1000
                },
                "product": {
                  "id": 123456,
                  "referenceKey": "M0001-black"
                },
                "promotion": {
                  "id": "649178aa530da10426f3f8d1",
                  "name": "PromoABC",
                  "version": "v1"
                },
                "key": "ac834d23e689u678",
                "reservationKey": "6nq69bzzkd5xufxliwg8",
                "status": "available",
                "variant": {
                  "id": 7,
                  "referenceKey": "M00012-black-M"
                },
                "warehouseId": 12345,
                "itemGroup": {
                  "id": "ab123",
                  "isMainItem": true,
                  "isRequired": true
                },
                "campaignKey": "sale15",
                "merchant": {
                  "referenceKey": "merchant-1"
                }
              }
            ],
            "legacyCustomData": {
              "score": {
                "generatedOn": "2018-05-20T19:45:15+00:00",
                "result": "green"
              }
            },
            "membershipDiscount": {
              "membershipCardId": 1,
              "pointsUsed": 1356,
              "reductionValue": 127,
              "tax": 0
            },
            "packages": [
              {
                "carrierKey": "dhl",
                "deliveryDate": {
                  "maximum": "2018-02-05",
                  "minimum": "2018-02-02"
                },
                "deliveryStatus": "open",
                "id": 1
              }
            ],
            "payment": [
              {
                "amount": 1190,
                "data": {
                  "CCBrand": "VISA",
                  "CCExpiry": "202005",
                  "IPCity": "charlottenburg",
                  "IPLatitude": "52.5151",
                  "IPLongitude": "13.3053",
                  "IPState": "berlin",
                  "IPZone": "276",
                  "IPZoneA2": "de"
                },
                "key": "computop_creditcard",
                "transactionKey": "creditcard-abcde"
              }
            ],
            "publicKey": "666",
            "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
            "shipping": {
              "policy": "least_packages"
            },
            "shopCountry": {
              "id": 1,
              "shopKey": "ay",
              "countryCode": "DE",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "active": true,
              "deleted": false,
              "url": "www.example.com",
              "currencyCode": "EUR",
              "priceGroupKey": "myPriceGroup"
            },
            "status": "invoice_completed",
            "detailedStatus": {
              "billing": {
                "code": "billing_payment_pending",
                "name": "Zahlung reserviert"
              },
              "order": {
                "code": "order_invoiced",
                "name": "Invoiced"
              },
              "shipping": {
                "code": "shipping_partially_returned",
                "name": "Teilweise Retoure"
              }
            },
            "vouchers": [
              {
                "id": 198234,
                "applicableItems": [
                  {
                    "isApplied": true,
                    "key": "a87ff679a2f3e71d9181a67b7542122c"
                  }
                ],
                "code": "fashion2020",
                "type": "absolute",
                "value": 1000,
                "voucherId": 1443
              }
            ]
          }
        }
      },
      "OrderPackageUndeliverableEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2025-04-02T12:01:26+00:00",
          "type": "order-package-undeliverable",
          "payload": {
            "order": {
              "address": {
                "billing": {
                  "id": 998,
                  "referenceKey": "my-key",
                  "street": "Street",
                  "houseNumber": "1",
                  "additional": "erste Stock",
                  "zipCode": "123456",
                  "city": "Hamburg",
                  "countryCode": "DEU",
                  "collectionPoint": {
                    "customerKey": "bced-234-234",
                    "description": "Kiosk",
                    "key": "12345-a",
                    "type": "hermes_parcelshop"
                  },
                  "isDefault": {
                    "billing": false,
                    "shipping": true
                  },
                  "recipient": {
                    "firstName": "John",
                    "gender": "m",
                    "lastName": "Doe",
                    "title": "Prof."
                  }
                },
                "forward": {
                  "id": 998,
                  "referenceKey": "my-key",
                  "street": "Street",
                  "houseNumber": "1",
                  "additional": "erste Stock",
                  "zipCode": "123456",
                  "city": "Hamburg",
                  "countryCode": "DEU",
                  "collectionPoint": {
                    "customerKey": "bced-234-234",
                    "description": "Kiosk",
                    "key": "12345-a",
                    "type": "hermes_parcelshop"
                  },
                  "isDefault": {
                    "billing": false,
                    "shipping": true
                  },
                  "recipient": {
                    "firstName": "John",
                    "gender": "m",
                    "lastName": "Doe",
                    "title": "Prof."
                  }
                },
                "shipping": {
                  "id": 998,
                  "referenceKey": "my-key",
                  "street": "Street",
                  "houseNumber": "1",
                  "additional": "erste Stock",
                  "zipCode": "123456",
                  "city": "Hamburg",
                  "countryCode": "DEU",
                  "collectionPoint": {
                    "customerKey": "bced-234-234",
                    "description": "Kiosk",
                    "key": "12345-a",
                    "type": "hermes_parcelshop"
                  },
                  "isDefault": {
                    "billing": false,
                    "shipping": true
                  },
                  "recipient": {
                    "firstName": "John",
                    "gender": "m",
                    "lastName": "Doe",
                    "title": "Prof."
                  }
                }
              },
              "basketKey": "basket-c6v7k4eer1",
              "confirmedAt": "2018-01-20T11:30:15+00:00",
              "contacts": [
                {
                  "type": "carrier",
                  "value": "+385 95 677 8888"
                }
              ],
              "cost": {
                "appliedFees": [
                  {
                    "amount": {
                      "withTax": 200,
                      "withoutTax": 168
                    },
                    "category": "delivery",
                    "key": "hermes",
                    "option": "express",
                    "tax": {
                      "vat": {
                        "amount": 32,
                        "rate": 1
                      }
                    }
                  }
                ],
                "appliedReductions": [
                  {
                    "amount": {
                      "absoluteWithTax": 100,
                      "relative": 1
                    },
                    "category": "voucher",
                    "type": "absolute"
                  }
                ],
                "tax": {
                  "vat": {
                    "amount": 11
                  }
                },
                "withTax": 1390,
                "withoutTax": 1168,
                "withTaxWithMembershipDiscountWithoutServiceCosts": 1337,
                "withoutTaxWithMembershipDiscount": 1234,
                "costCapture": 1390
              },
              "currencyCode": "EUR",
              "customer": {
                "id": 9876,
                "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
              },
              "id": 123,
              "invoicedAt": "2018-01-22T11:30:15+00:00",
              "items": [
                {
                  "id": 1,
                  "availableQuantity": 20,
                  "deliveryForecast": {
                    "subsequentDelivery": {
                      "key": "christmas"
                    }
                  },
                  "legacyCustomData": {
                    "key": "value"
                  },
                  "packageId": 1,
                  "price": {
                    "appliedReductions": [
                      {
                        "amount": {
                          "absoluteWithTax": 100,
                          "relative": 1
                        },
                        "category": "sale",
                        "type": "relative"
                      }
                    ],
                    "reference": {
                      "size": "100",
                      "unit": "ml",
                      "withTax": 595
                    },
                    "tax": {
                      "vat": {
                        "amount": 190,
                        "rate": 1
                      }
                    },
                    "withTax": 1190,
                    "withoutTax": 1000
                  },
                  "product": {
                    "id": 123456,
                    "referenceKey": "M0001-black"
                  },
                  "promotion": {
                    "id": "649178aa530da10426f3f8d1",
                    "name": "PromoABC",
                    "version": "v1"
                  },
                  "key": "ac834d23e689u678",
                  "reservationKey": "6nq69bzzkd5xufxliwg8",
                  "status": "available",
                  "variant": {
                    "id": 7,
                    "referenceKey": "M00012-black-M"
                  },
                  "warehouseId": 12345,
                  "itemGroup": {
                    "id": "ab123",
                    "isMainItem": true,
                    "isRequired": true
                  },
                  "campaignKey": "sale15",
                  "merchant": {
                    "referenceKey": "merchant-1"
                  }
                }
              ],
              "legacyCustomData": {
                "score": {
                  "generatedOn": "2018-05-20T19:45:15+00:00",
                  "result": "green"
                }
              },
              "membershipDiscount": {
                "membershipCardId": 1,
                "pointsUsed": 1356,
                "reductionValue": 127,
                "tax": 0
              },
              "packages": [
                {
                  "carrierKey": "dhl",
                  "deliveryDate": {
                    "maximum": "2018-02-05",
                    "minimum": "2018-02-02"
                  },
                  "deliveryStatus": "open",
                  "returnIdentCode": "100-1",
                  "id": 1
                }
              ],
              "payment": [
                {
                  "amount": 1190,
                  "data": {
                    "CCBrand": "VISA",
                    "CCExpiry": "202005",
                    "IPCity": "charlottenburg",
                    "IPLatitude": "52.5151",
                    "IPLongitude": "13.3053",
                    "IPState": "berlin",
                    "IPZone": "276",
                    "IPZoneA2": "de"
                  },
                  "key": "computop_creditcard",
                  "transactionKey": "creditcard-abcde"
                }
              ],
              "publicKey": "666",
              "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
              "shipping": {
                "policy": "least_packages"
              },
              "shopCountry": {
                "id": 1,
                "shopKey": "ay",
                "countryCode": "DE",
                "defaultLanguageCode": "de_DE",
                "supportedLanguageCodes": [
                  "de_DE",
                  "en_GB"
                ],
                "active": true,
                "deleted": false,
                "url": "www.example.com",
                "currencyCode": "EUR",
                "priceGroupKey": "myPriceGroup"
              },
              "status": "invoice_completed",
              "detailedStatus": {
                "billing": {
                  "code": "billing_payment_pending",
                  "name": "Zahlung reserviert"
                },
                "order": {
                  "code": "order_invoiced",
                  "name": "Invoiced"
                },
                "shipping": {
                  "code": "shipping_partially_returned",
                  "name": "Teilweise Retoure"
                }
              },
              "vouchers": [
                {
                  "applicableItems": [
                    {
                      "isApplied": true,
                      "key": "a87ff679a2f3e71d9181a67b7542122c"
                    }
                  ],
                  "code": "fashion2020",
                  "id": 198234,
                  "type": "absolute",
                  "value": 1000
                }
              ]
            },
            "items": [
              {
                "id": 1,
                "availableQuantity": 20,
                "deliveryForecast": {
                  "subsequentDelivery": {
                    "key": "christmas"
                  }
                },
                "legacyCustomData": {
                  "key": "value"
                },
                "packageId": 1,
                "price": {
                  "appliedReductions": [
                    {
                      "amount": {
                        "absoluteWithTax": 100,
                        "relative": 1
                      },
                      "category": "sale",
                      "type": "relative"
                    }
                  ],
                  "reference": {
                    "size": "100",
                    "unit": "ml",
                    "withTax": 595
                  },
                  "tax": {
                    "vat": {
                      "amount": 190,
                      "rate": 1
                    }
                  },
                  "withTax": 1190,
                  "withoutTax": 1000
                },
                "product": {
                  "id": 123456,
                  "referenceKey": "M0001-black"
                },
                "key": "ac834d23e689u678",
                "reservationKey": "6nq69bzzkd5xufxliwg8",
                "status": "available",
                "variant": {
                  "id": 7,
                  "referenceKey": "M00012-black-M"
                },
                "warehouseId": 12345,
                "itemGroup": {
                  "id": "ab123",
                  "isMainItem": true,
                  "isRequired": true
                },
                "campaignKey": "sale15",
                "merchant": {
                  "referenceKey": "merchant-1"
                }
              }
            ]
          },
          "shopCountry": {
            "id": 1,
            "shopKey": "ay",
            "countryCode": "DE",
            "defaultLanguageCode": "de_DE",
            "supportedLanguageCodes": [
              "de_DE",
              "en_GB"
            ],
            "active": true,
            "deleted": false,
            "url": "www.example.com",
            "currencyCode": "EUR",
            "priceGroupKey": "myPriceGroup"
          }
        }
      },
      "OrderCustomDataUpdatedEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2019-08-09T15:01:26+00:00",
          "type": "order-custom-data-updated",
          "payload": {
            "address": {
              "billing": {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              },
              "forward": {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              },
              "shipping": {
                "id": 998,
                "referenceKey": "my-key",
                "street": "Street",
                "houseNumber": "1",
                "additional": "erste Stock",
                "zipCode": "123456",
                "city": "Hamburg",
                "countryCode": "DEU",
                "collectionPoint": {
                  "customerKey": "bced-234-234",
                  "description": "Kiosk",
                  "key": "12345-a",
                  "type": "hermes_parcelshop"
                },
                "isDefault": {
                  "billing": false,
                  "shipping": true
                },
                "recipient": {
                  "firstName": "John",
                  "gender": "m",
                  "lastName": "Doe",
                  "title": "Prof."
                }
              }
            },
            "basketKey": "basket-c6v7k4eer1",
            "confirmedAt": "2018-01-20T11:30:15+00:00",
            "contacts": [
              {
                "type": "carrier",
                "value": "+385 95 677 8888"
              }
            ],
            "cost": {
              "appliedFees": [
                {
                  "amount": {
                    "withTax": 200,
                    "withoutTax": 168
                  },
                  "category": "delivery",
                  "key": "hermes",
                  "option": "express",
                  "tax": {
                    "vat": {
                      "amount": 32,
                      "rate": 1
                    }
                  }
                }
              ],
              "appliedReductions": [
                {
                  "amount": {
                    "absoluteWithTax": 100,
                    "relative": 1
                  },
                  "category": "voucher",
                  "type": "absolute"
                }
              ],
              "tax": {
                "vat": {
                  "amount": 11
                }
              },
              "withTax": 1390,
              "withoutTax": 1168,
              "withTaxWithMembershipDiscountWithoutServiceCosts": 1337,
              "withoutTaxWithMembershipDiscount": 1234,
              "costCapture": 1390
            },
            "currencyCode": "EUR",
            "customer": {
              "id": 9876,
              "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
            },
            "id": 123,
            "invoicedAt": "2018-01-22T11:30:15+00:00",
            "items": [
              {
                "id": 1,
                "availableQuantity": 20,
                "deliveryForecast": {
                  "subsequentDelivery": {
                    "key": "christmas"
                  }
                },
                "legacyCustomData": {
                  "key": "value"
                },
                "packageId": 1,
                "price": {
                  "appliedReductions": [
                    {
                      "amount": {
                        "absoluteWithTax": 100,
                        "relative": 1
                      },
                      "category": "sale",
                      "type": "relative"
                    }
                  ],
                  "reference": {
                    "size": "100",
                    "unit": "ml",
                    "withTax": 595
                  },
                  "tax": {
                    "vat": {
                      "amount": 190,
                      "rate": 1
                    }
                  },
                  "withTax": 1190,
                  "withoutTax": 1000
                },
                "product": {
                  "id": 123456,
                  "referenceKey": "M0001-black"
                },
                "promotion": {
                  "id": "649178aa530da10426f3f8d1",
                  "name": "PromoABC",
                  "version": "v1"
                },
                "key": "ac834d23e689u678",
                "reservationKey": "6nq69bzzkd5xufxliwg8",
                "status": "available",
                "variant": {
                  "id": 7,
                  "referenceKey": "M00012-black-M"
                },
                "warehouseId": 12345,
                "itemGroup": {
                  "id": "ab123",
                  "isMainItem": true,
                  "isRequired": true
                },
                "campaignKey": "sale15",
                "merchant": {
                  "referenceKey": "merchant-1"
                }
              },
              {
                "legacyCustomDataDiff": {
                  "key": "item-level-change"
                }
              }
            ],
            "legacyCustomData": {
              "key": "value",
              "key2": "value"
            },
            "membershipDiscount": {
              "membershipCardId": 1,
              "pointsUsed": 1356,
              "reductionValue": 127,
              "tax": 0
            },
            "packages": [
              {
                "carrierKey": "dhl",
                "deliveryDate": {
                  "maximum": "2018-02-05",
                  "minimum": "2018-02-02"
                },
                "deliveryStatus": "open",
                "id": 1
              }
            ],
            "payment": [
              {
                "amount": 1190,
                "data": {
                  "CCBrand": "VISA",
                  "CCExpiry": "202005",
                  "IPCity": "charlottenburg",
                  "IPLatitude": "52.5151",
                  "IPLongitude": "13.3053",
                  "IPState": "berlin",
                  "IPZone": "276",
                  "IPZoneA2": "de"
                },
                "key": "computop_creditcard",
                "transactionKey": "creditcard-abcde"
              }
            ],
            "publicKey": "666",
            "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
            "shipping": {
              "policy": "least_packages"
            },
            "shopCountry": {
              "id": 1,
              "shopKey": "ay",
              "countryCode": "DE",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "active": true,
              "deleted": false,
              "url": "www.example.com",
              "currencyCode": "EUR",
              "priceGroupKey": "myPriceGroup"
            },
            "status": "invoice_completed",
            "detailedStatus": {
              "billing": {
                "code": "billing_payment_pending",
                "name": "Zahlung reserviert"
              },
              "order": {
                "code": "order_invoiced",
                "name": "Invoiced"
              },
              "shipping": {
                "code": "shipping_partially_returned",
                "name": "Teilweise Retoure"
              }
            },
            "vouchers": [
              {
                "id": 198234,
                "applicableItems": [
                  {
                    "isApplied": true,
                    "key": "a87ff679a2f3e71d9181a67b7542122c"
                  }
                ],
                "code": "fashion2020",
                "type": "absolute",
                "value": 1000,
                "voucherId": 1443
              }
            ],
            "legacyCustomDataDiff": {
              "$comment": "If old is null, the key is new. If new is null, the key is removed",
              "key": {
                "new": "value",
                "old": "old-value"
              },
              "key2": {
                "new": "value",
                "old": null
              },
              "key3": {
                "new": null,
                "old": "value"
              }
            }
          }
        }
      },
      "OrderItemOutOfStockEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2019-08-09T15:01:26+00:00",
          "type": "order-item-out-of-stock",
          "payload": {
            "order": {
              "address": {
                "billing": {
                  "id": 998,
                  "referenceKey": "my-key",
                  "street": "Street",
                  "houseNumber": "1",
                  "additional": "erste Stock",
                  "zipCode": "123456",
                  "city": "Hamburg",
                  "countryCode": "DEU",
                  "collectionPoint": {
                    "customerKey": "bced-234-234",
                    "description": "Kiosk",
                    "key": "12345-a",
                    "type": "hermes_parcelshop"
                  },
                  "isDefault": {
                    "billing": false,
                    "shipping": true
                  },
                  "recipient": {
                    "firstName": "John",
                    "gender": "m",
                    "lastName": "Doe",
                    "title": "Prof."
                  }
                },
                "forward": {
                  "id": 998,
                  "referenceKey": "my-key",
                  "street": "Street",
                  "houseNumber": "1",
                  "additional": "erste Stock",
                  "zipCode": "123456",
                  "city": "Hamburg",
                  "countryCode": "DEU",
                  "collectionPoint": {
                    "customerKey": "bced-234-234",
                    "description": "Kiosk",
                    "key": "12345-a",
                    "type": "hermes_parcelshop"
                  },
                  "isDefault": {
                    "billing": false,
                    "shipping": true
                  },
                  "recipient": {
                    "firstName": "John",
                    "gender": "m",
                    "lastName": "Doe",
                    "title": "Prof."
                  }
                },
                "shipping": {
                  "id": 998,
                  "referenceKey": "my-key",
                  "street": "Street",
                  "houseNumber": "1",
                  "additional": "erste Stock",
                  "zipCode": "123456",
                  "city": "Hamburg",
                  "countryCode": "DEU",
                  "collectionPoint": {
                    "customerKey": "bced-234-234",
                    "description": "Kiosk",
                    "key": "12345-a",
                    "type": "hermes_parcelshop"
                  },
                  "isDefault": {
                    "billing": false,
                    "shipping": true
                  },
                  "recipient": {
                    "firstName": "John",
                    "gender": "m",
                    "lastName": "Doe",
                    "title": "Prof."
                  }
                }
              },
              "basketKey": "basket-c6v7k4eer1",
              "confirmedAt": "2018-01-20T11:30:15+00:00",
              "contacts": [
                {
                  "type": "carrier",
                  "value": "+385 95 677 8888"
                }
              ],
              "cost": {
                "appliedFees": [
                  {
                    "amount": {
                      "withTax": 200,
                      "withoutTax": 168
                    },
                    "category": "delivery",
                    "key": "hermes",
                    "option": "express",
                    "tax": {
                      "vat": {
                        "amount": 32,
                        "rate": 1
                      }
                    }
                  }
                ],
                "appliedReductions": [
                  {
                    "amount": {
                      "absoluteWithTax": 100,
                      "relative": 1
                    },
                    "category": "voucher",
                    "type": "absolute"
                  }
                ],
                "tax": {
                  "vat": {
                    "amount": 11
                  }
                },
                "withTax": 1390,
                "withoutTax": 1168,
                "withTaxWithMembershipDiscountWithoutServiceCosts": 1337,
                "withoutTaxWithMembershipDiscount": 1234,
                "costCapture": 1390
              },
              "currencyCode": "EUR",
              "customer": {
                "id": 9876,
                "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
              },
              "id": 123,
              "invoicedAt": "2018-01-22T11:30:15+00:00",
              "items": [
                {
                  "id": 1,
                  "availableQuantity": 20,
                  "deliveryForecast": {
                    "subsequentDelivery": {
                      "key": "christmas"
                    }
                  },
                  "legacyCustomData": {
                    "key": "value"
                  },
                  "packageId": 1,
                  "price": {
                    "appliedReductions": [
                      {
                        "amount": {
                          "absoluteWithTax": 100,
                          "relative": 1
                        },
                        "category": "sale",
                        "type": "relative"
                      }
                    ],
                    "reference": {
                      "size": "100",
                      "unit": "ml",
                      "withTax": 595
                    },
                    "tax": {
                      "vat": {
                        "amount": 190,
                        "rate": 1
                      }
                    },
                    "withTax": 1190,
                    "withoutTax": 1000
                  },
                  "product": {
                    "id": 123456,
                    "referenceKey": "M0001-black"
                  },
                  "promotion": {
                    "id": "649178aa530da10426f3f8d1",
                    "name": "PromoABC",
                    "version": "v1"
                  },
                  "key": "ac834d23e689u678",
                  "reservationKey": "6nq69bzzkd5xufxliwg8",
                  "status": "available",
                  "variant": {
                    "id": 7,
                    "referenceKey": "M00012-black-M"
                  },
                  "warehouseId": 12345,
                  "itemGroup": {
                    "id": "ab123",
                    "isMainItem": true,
                    "isRequired": true
                  },
                  "campaignKey": "sale15",
                  "merchant": {
                    "referenceKey": "merchant-1"
                  }
                }
              ],
              "legacyCustomData": {
                "score": {
                  "generatedOn": "2018-05-20T19:45:15+00:00",
                  "result": "green"
                }
              },
              "membershipDiscount": {
                "membershipCardId": 1,
                "pointsUsed": 1356,
                "reductionValue": 127,
                "tax": 0
              },
              "packages": [
                {
                  "carrierKey": "dhl",
                  "deliveryDate": {
                    "maximum": "2018-02-05",
                    "minimum": "2018-02-02"
                  },
                  "deliveryStatus": "open",
                  "id": 1
                }
              ],
              "payment": [
                {
                  "amount": 1190,
                  "data": {
                    "CCBrand": "VISA",
                    "CCExpiry": "202005",
                    "IPCity": "charlottenburg",
                    "IPLatitude": "52.5151",
                    "IPLongitude": "13.3053",
                    "IPState": "berlin",
                    "IPZone": "276",
                    "IPZoneA2": "de"
                  },
                  "key": "computop_creditcard",
                  "transactionKey": "creditcard-abcde"
                }
              ],
              "publicKey": "666",
              "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
              "shipping": {
                "policy": "least_packages"
              },
              "shopCountry": {
                "id": 1,
                "shopKey": "ay",
                "countryCode": "DE",
                "defaultLanguageCode": "de_DE",
                "supportedLanguageCodes": [
                  "de_DE",
                  "en_GB"
                ],
                "active": true,
                "deleted": false,
                "url": "www.example.com",
                "currencyCode": "EUR",
                "priceGroupKey": "myPriceGroup"
              },
              "status": "invoice_completed",
              "detailedStatus": {
                "billing": {
                  "code": "billing_payment_pending",
                  "name": "Zahlung reserviert"
                },
                "order": {
                  "code": "order_invoiced",
                  "name": "Invoiced"
                },
                "shipping": {
                  "code": "shipping_partially_returned",
                  "name": "Teilweise Retoure"
                }
              },
              "vouchers": [
                {
                  "applicableItems": [
                    {
                      "isApplied": true,
                      "key": "a87ff679a2f3e71d9181a67b7542122c"
                    }
                  ],
                  "code": "fashion2020",
                  "id": 198234,
                  "type": "absolute",
                  "value": 1000
                }
              ]
            },
            "items": [
              {
                "id": 1,
                "availableQuantity": 20,
                "deliveryForecast": {
                  "subsequentDelivery": {
                    "key": "christmas"
                  }
                },
                "legacyCustomData": {
                  "key": "value"
                },
                "packageId": 1,
                "price": {
                  "appliedReductions": [
                    {
                      "amount": {
                        "absoluteWithTax": 100,
                        "relative": 1
                      },
                      "category": "sale",
                      "type": "relative"
                    }
                  ],
                  "reference": {
                    "size": "100",
                    "unit": "ml",
                    "withTax": 595
                  },
                  "tax": {
                    "vat": {
                      "amount": 190,
                      "rate": 1
                    }
                  },
                  "withTax": 1190,
                  "withoutTax": 1000
                },
                "product": {
                  "id": 123456,
                  "referenceKey": "M0001-black"
                },
                "key": "ac834d23e689u678",
                "reservationKey": "6nq69bzzkd5xufxliwg8",
                "status": "available",
                "variant": {
                  "id": 7,
                  "referenceKey": "M00012-black-M"
                },
                "warehouseId": 12345,
                "itemGroup": {
                  "id": "ab123",
                  "isMainItem": true,
                  "isRequired": true
                },
                "campaignKey": "sale15",
                "merchant": {
                  "referenceKey": "merchant-1"
                }
              }
            ],
            "shopCountry": {
              "id": 1,
              "shopKey": "ay",
              "countryCode": "DE",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "active": true,
              "deleted": false,
              "url": "www.example.com",
              "currencyCode": "EUR",
              "priceGroupKey": "myPriceGroup"
            }
          }
        }
      },
      "OrderItemReturnedEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2019-08-09T15:01:26+00:00",
          "type": "order-item-returned",
          "payload": {
            "order": {
              "address": {
                "billing": {
                  "id": 998,
                  "referenceKey": "my-key",
                  "street": "Street",
                  "houseNumber": "1",
                  "additional": "erste Stock",
                  "zipCode": "123456",
                  "city": "Hamburg",
                  "countryCode": "DEU",
                  "collectionPoint": {
                    "customerKey": "bced-234-234",
                    "description": "Kiosk",
                    "key": "12345-a",
                    "type": "hermes_parcelshop"
                  },
                  "isDefault": {
                    "billing": false,
                    "shipping": true
                  },
                  "recipient": {
                    "firstName": "John",
                    "gender": "m",
                    "lastName": "Doe",
                    "title": "Prof."
                  }
                },
                "forward": {
                  "id": 998,
                  "referenceKey": "my-key",
                  "street": "Street",
                  "houseNumber": "1",
                  "additional": "erste Stock",
                  "zipCode": "123456",
                  "city": "Hamburg",
                  "countryCode": "DEU",
                  "collectionPoint": {
                    "customerKey": "bced-234-234",
                    "description": "Kiosk",
                    "key": "12345-a",
                    "type": "hermes_parcelshop"
                  },
                  "isDefault": {
                    "billing": false,
                    "shipping": true
                  },
                  "recipient": {
                    "firstName": "John",
                    "gender": "m",
                    "lastName": "Doe",
                    "title": "Prof."
                  }
                },
                "shipping": {
                  "id": 998,
                  "referenceKey": "my-key",
                  "street": "Street",
                  "houseNumber": "1",
                  "additional": "erste Stock",
                  "zipCode": "123456",
                  "city": "Hamburg",
                  "countryCode": "DEU",
                  "collectionPoint": {
                    "customerKey": "bced-234-234",
                    "description": "Kiosk",
                    "key": "12345-a",
                    "type": "hermes_parcelshop"
                  },
                  "isDefault": {
                    "billing": false,
                    "shipping": true
                  },
                  "recipient": {
                    "firstName": "John",
                    "gender": "m",
                    "lastName": "Doe",
                    "title": "Prof."
                  }
                }
              },
              "basketKey": "basket-c6v7k4eer1",
              "confirmedAt": "2018-01-20T11:30:15+00:00",
              "contacts": [
                {
                  "type": "carrier",
                  "value": "+385 95 677 8888"
                }
              ],
              "cost": {
                "appliedFees": [
                  {
                    "amount": {
                      "withTax": 200,
                      "withoutTax": 168
                    },
                    "category": "delivery",
                    "key": "hermes",
                    "option": "express",
                    "tax": {
                      "vat": {
                        "amount": 32,
                        "rate": 1
                      }
                    }
                  }
                ],
                "appliedReductions": [
                  {
                    "amount": {
                      "absoluteWithTax": 100,
                      "relative": 1
                    },
                    "category": "voucher",
                    "type": "absolute"
                  }
                ],
                "tax": {
                  "vat": {
                    "amount": 11
                  }
                },
                "withTax": 1390,
                "withoutTax": 1168,
                "withTaxWithMembershipDiscountWithoutServiceCosts": 1337,
                "withoutTaxWithMembershipDiscount": 1234,
                "costCapture": 1390
              },
              "currencyCode": "EUR",
              "customer": {
                "id": 9876,
                "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
              },
              "id": 123,
              "invoicedAt": "2018-01-22T11:30:15+00:00",
              "items": [
                {
                  "id": 1,
                  "availableQuantity": 20,
                  "deliveryForecast": {
                    "subsequentDelivery": {
                      "key": "christmas"
                    }
                  },
                  "legacyCustomData": {
                    "key": "value"
                  },
                  "packageId": 1,
                  "price": {
                    "appliedReductions": [
                      {
                        "amount": {
                          "absoluteWithTax": 100,
                          "relative": 1
                        },
                        "category": "sale",
                        "type": "relative"
                      }
                    ],
                    "reference": {
                      "size": "100",
                      "unit": "ml",
                      "withTax": 595
                    },
                    "tax": {
                      "vat": {
                        "amount": 190,
                        "rate": 1
                      }
                    },
                    "withTax": 1190,
                    "withoutTax": 1000
                  },
                  "product": {
                    "id": 123456,
                    "referenceKey": "M0001-black"
                  },
                  "promotion": {
                    "id": "649178aa530da10426f3f8d1",
                    "name": "PromoABC",
                    "version": "v1"
                  },
                  "key": "ac834d23e689u678",
                  "reservationKey": "6nq69bzzkd5xufxliwg8",
                  "status": "available",
                  "variant": {
                    "id": 7,
                    "referenceKey": "M00012-black-M"
                  },
                  "warehouseId": 12345,
                  "itemGroup": {
                    "id": "ab123",
                    "isMainItem": true,
                    "isRequired": true
                  },
                  "campaignKey": "sale15",
                  "merchant": {
                    "referenceKey": "merchant-1"
                  }
                }
              ],
              "legacyCustomData": {
                "score": {
                  "generatedOn": "2018-05-20T19:45:15+00:00",
                  "result": "green"
                }
              },
              "membershipDiscount": {
                "membershipCardId": 1,
                "pointsUsed": 1356,
                "reductionValue": 127,
                "tax": 0
              },
              "packages": [
                {
                  "carrierKey": "dhl",
                  "deliveryDate": {
                    "maximum": "2018-02-05",
                    "minimum": "2018-02-02"
                  },
                  "deliveryStatus": "open",
                  "id": 1
                }
              ],
              "payment": [
                {
                  "amount": 1190,
                  "data": {
                    "CCBrand": "VISA",
                    "CCExpiry": "202005",
                    "IPCity": "charlottenburg",
                    "IPLatitude": "52.5151",
                    "IPLongitude": "13.3053",
                    "IPState": "berlin",
                    "IPZone": "276",
                    "IPZoneA2": "de"
                  },
                  "key": "computop_creditcard",
                  "transactionKey": "creditcard-abcde"
                }
              ],
              "publicKey": "666",
              "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
              "shipping": {
                "policy": "least_packages"
              },
              "shopCountry": {
                "id": 1,
                "shopKey": "ay",
                "countryCode": "DE",
                "defaultLanguageCode": "de_DE",
                "supportedLanguageCodes": [
                  "de_DE",
                  "en_GB"
                ],
                "active": true,
                "deleted": false,
                "url": "www.example.com",
                "currencyCode": "EUR",
                "priceGroupKey": "myPriceGroup"
              },
              "status": "invoice_completed",
              "detailedStatus": {
                "billing": {
                  "code": "billing_payment_pending",
                  "name": "Zahlung reserviert"
                },
                "order": {
                  "code": "order_invoiced",
                  "name": "Invoiced"
                },
                "shipping": {
                  "code": "shipping_partially_returned",
                  "name": "Teilweise Retoure"
                }
              },
              "vouchers": [
                {
                  "applicableItems": [
                    {
                      "isApplied": true,
                      "key": "a87ff679a2f3e71d9181a67b7542122c"
                    }
                  ],
                  "code": "fashion2020",
                  "id": 198234,
                  "type": "absolute",
                  "value": 1000
                }
              ]
            },
            "items": [
              {
                "id": 1,
                "availableQuantity": 20,
                "deliveryForecast": {
                  "subsequentDelivery": {
                    "key": "christmas"
                  }
                },
                "legacyCustomData": {
                  "key": "value"
                },
                "packageId": 1,
                "price": {
                  "appliedReductions": [
                    {
                      "amount": {
                        "absoluteWithTax": 100,
                        "relative": 1
                      },
                      "category": "sale",
                      "type": "relative"
                    }
                  ],
                  "reference": {
                    "size": "100",
                    "unit": "ml",
                    "withTax": 595
                  },
                  "tax": {
                    "vat": {
                      "amount": 190,
                      "rate": 1
                    }
                  },
                  "withTax": 1190,
                  "withoutTax": 1000
                },
                "product": {
                  "id": 123456,
                  "referenceKey": "M0001-black"
                },
                "key": "ac834d23e689u678",
                "reservationKey": "6nq69bzzkd5xufxliwg8",
                "status": "available",
                "variant": {
                  "id": 7,
                  "referenceKey": "M00012-black-M"
                },
                "warehouseId": 12345,
                "itemGroup": {
                  "id": "ab123",
                  "isMainItem": true,
                  "isRequired": true
                },
                "campaignKey": "sale15",
                "merchant": {
                  "referenceKey": "merchant-1"
                }
              }
            ],
            "shopCountry": {
              "id": 1,
              "shopKey": "ay",
              "countryCode": "DE",
              "defaultLanguageCode": "de_DE",
              "supportedLanguageCodes": [
                "de_DE",
                "en_GB"
              ],
              "active": true,
              "deleted": false,
              "url": "www.example.com",
              "currencyCode": "EUR",
              "priceGroupKey": "myPriceGroup"
            }
          }
        }
      },
      "OrderItemCancelledEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2019-08-09T15:01:26+00:00",
          "type": "order-item-cancelled",
          "payload": {
            "order": {
              "address": {
                "billing": {
                  "id": 998,
                  "referenceKey": "my-key",
                  "street": "Street",
                  "houseNumber": "1",
                  "additional": "erste Stock",
                  "zipCode": "123456",
                  "city": "Hamburg",
                  "countryCode": "DEU",
                  "collectionPoint": {
                    "customerKey": "bced-234-234",
                    "description": "Kiosk",
                    "key": "12345-a",
                    "type": "hermes_parcelshop"
                  },
                  "isDefault": {
                    "billing": false,
                    "shipping": true
                  },
                  "recipient": {
                    "firstName": "John",
                    "gender": "m",
                    "lastName": "Doe",
                    "title": "Prof."
                  }
                },
                "forward": {
                  "id": 998,
                  "referenceKey": "my-key",
                  "street": "Street",
                  "houseNumber": "1",
                  "additional": "erste Stock",
                  "zipCode": "123456",
                  "city": "Hamburg",
                  "countryCode": "DEU",
                  "collectionPoint": {
                    "customerKey": "bced-234-234",
                    "description": "Kiosk",
                    "key": "12345-a",
                    "type": "hermes_parcelshop"
                  },
                  "isDefault": {
                    "billing": false,
                    "shipping": true
                  },
                  "recipient": {
                    "firstName": "John",
                    "gender": "m",
                    "lastName": "Doe",
                    "title": "Prof."
                  }
                },
                "shipping": {
                  "id": 998,
                  "referenceKey": "my-key",
                  "street": "Street",
                  "houseNumber": "1",
                  "additional": "erste Stock",
                  "zipCode": "123456",
                  "city": "Hamburg",
                  "countryCode": "DEU",
                  "collectionPoint": {
                    "customerKey": "bced-234-234",
                    "description": "Kiosk",
                    "key": "12345-a",
                    "type": "hermes_parcelshop"
                  },
                  "isDefault": {
                    "billing": false,
                    "shipping": true
                  },
                  "recipient": {
                    "firstName": "John",
                    "gender": "m",
                    "lastName": "Doe",
                    "title": "Prof."
                  }
                }
              },
              "basketKey": "basket-c6v7k4eer1",
              "confirmedAt": "2018-01-20T11:30:15+00:00",
              "contacts": [
                {
                  "type": "carrier",
                  "value": "+385 95 677 8888"
                }
              ],
              "cost": {
                "appliedFees": [
                  {
                    "amount": {
                      "withTax": 200,
                      "withoutTax": 168
                    },
                    "category": "delivery",
                    "key": "hermes",
                    "option": "express",
                    "tax": {
                      "vat": {
                        "amount": 32,
                        "rate": 1
                      }
                    }
                  }
                ],
                "appliedReductions": [
                  {
                    "amount": {
                      "absoluteWithTax": 100,
                      "relative": 1
                    },
                    "category": "voucher",
                    "type": "absolute"
                  }
                ],
                "tax": {
                  "vat": {
                    "amount": 11
                  }
                },
                "withTax": 1390,
                "withoutTax": 1168,
                "withTaxWithMembershipDiscountWithoutServiceCosts": 1337,
                "withoutTaxWithMembershipDiscount": 1234,
                "costCapture": 1390
              },
              "currencyCode": "EUR",
              "customer": {
                "id": 9876,
                "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0"
              },
              "id": 123,
              "invoicedAt": "2018-01-22T11:30:15+00:00",
              "items": [
                {
                  "id": 1,
                  "availableQuantity": 20,
                  "deliveryForecast": {
                    "subsequentDelivery": {
                      "key": "christmas"
                    }
                  },
                  "legacyCustomData": {
                    "key": "value"
                  },
                  "packageId": 1,
                  "price": {
                    "appliedReductions": [
                      {
                        "amount": {
                          "absoluteWithTax": 100,
                          "relative": 1
                        },
                        "category": "sale",
                        "type": "relative"
                      }
                    ],
                    "reference": {
                      "size": "100",
                      "unit": "ml",
                      "withTax": 595
                    },
                    "tax": {
                      "vat": {
                        "amount": 190,
                        "rate": 1
                      }
                    },
                    "withTax": 1190,
                    "withoutTax": 1000
                  },
                  "product": {
                    "id": 123456,
                    "referenceKey": "M0001-black"
                  },
                  "promotion": {
                    "id": "649178aa530da10426f3f8d1",
                    "name": "PromoABC",
                    "version": "v1"
                  },
                  "key": "ac834d23e689u678",
                  "reservationKey": "6nq69bzzkd5xufxliwg8",
                  "status": "available",
                  "variant": {
                    "id": 7,
                    "referenceKey": "M00012-black-M"
                  },
                  "warehouseId": 12345,
                  "itemGroup": {
                    "id": "ab123",
                    "isMainItem": true,
                    "isRequired": true
                  },
                  "campaignKey": "sale15",
                  "merchant": {
                    "referenceKey": "merchant-1"
                  }
                }
              ],
              "legacyCustomData": {
                "score": {
                  "generatedOn": "2018-05-20T19:45:15+00:00",
                  "result": "green"
                }
              },
              "membershipDiscount": {
                "membershipCardId": 1,
                "pointsUsed": 1356,
                "reductionValue": 127,
                "tax": 0
              },
              "packages": [
                {
                  "carrierKey": "dhl",
                  "deliveryDate": {
                    "maximum": "2018-02-05",
                    "minimum": "2018-02-02"
                  },
                  "deliveryStatus": "open",
                  "id": 1
                }
              ],
              "payment": [
                {
                  "amount": 1190,
                  "data": {
                    "CCBrand": "VISA",
                    "CCExpiry": "202005",
                    "IPCity": "charlottenburg",
                    "IPLatitude": "52.5151",
                    "IPLongitude": "13.3053",
                    "IPState": "berlin",
                    "IPZone": "276",
                    "IPZoneA2": "de"
                  },
                  "key": "computop_creditcard",
                  "transactionKey": "creditcard-abcde"
                }
              ],
              "publicKey": "666",
              "referenceKey": "InGidcPDmL8fGkv02a3sSAgAr7ySMBfa66iw4MriYgUNI3Boq369rBOZW3stlKLWSqIjB2dXCGNbCxoM5Xww4cI8cULUoGBFJHH0",
              "shipping": {
                "policy": "least_packages"
              },
              "shopCountry": {
                "id": 1,
                "shopKey": "ay",
                "countryCode": "DE",
                "defaultLanguageCode": "de_DE",
                "supportedLanguageCodes": [
                  "de_DE",
                  "en_GB"
                ],
                "active": true,
                "deleted": false,
                "url": "www.example.com",
                "currencyCode": "EUR",
                "priceGroupKey": "myPriceGroup"
              },
              "status": "invoice_completed",
              "detailedStatus": {
                "billing": {
                  "code": "billing_payment_pending",
                  "name": "Zahlung reserviert"
                },
                "order": {
                  "code": "order_invoiced",
                  "name": "Invoiced"
                },
                "shipping": {
                  "code": "shipping_partially_returned",
                  "name": "Teilweise Retoure"
                }
              },
              "vouchers": [
                {
                  "applicableItems": [
                    {
                      "isApplied": true,
                      "key": "a87ff679a2f3e71d9181a67b7542122c"
                    }
                  ],
                  "code": "fashion2020",
                  "id": 198234,
                  "type": "absolute",
                  "value": 1000
                }
              ]
            },
            "items": [
              {
                "id": 1,
                "availableQuantity": 20,
                "deliveryForecast": {
                  "subsequentDelivery": {
                    "key": "christmas"
                  }
                },
                "legacyCustomData": {
                  "key": "value"
                },
                "packageId": 1,
                "price": {
                  "appliedReductions": [
                    {
                      "amount": {
                        "absoluteWithTax": 100,
                        "relative": 1
                      },
                      "category": "sale",
                      "type": "relative"
                    }
                  ],
                  "reference": {
                    "size": "100",
                    "unit": "ml",
                    "withTax": 595
                  },
                  "tax": {
                    "vat": {
                      "amount": 190,
                      "rate": 1
                    }
                  },
                  "withTax": 1190,
                  "withoutTax": 1000
                },
                "product": {
                  "id": 123456,
                  "referenceKey": "M0001-black",
                  "state": "draft",
                  "master": {
                    "referenceKey": "M0001",
                    "categories": {
                      "isLocked": false,
                      "paths": [
                        [
                          "Fashion",
                          "Men",
                          "Shirts"
                        ]
                      ]
                    }
                  },
                  "name": {
                    "de_DE": "Blaues Shirt",
                    "en_GB": "Blue Shirt"
                  },
                  "attributes": [],
                  "images": []
                },
                "key": "ac834d23e689u678",
                "reservationKey": "6nq69bzzkd5xufxliwg8",
                "status": "available",
                "variant": {
                  "id": 7,
                  "referenceKey": "M00012-black-M",
                  "attributes": [
                    {
                      "name": "size",
                      "type": "simple",
                      "value": "M",
                      "isLocked": true
                    }
                  ]
                },
                "warehouseId": 12345,
                "itemGroup": {
                  "id": "ab123",
                  "isMainItem": true,
                  "isRequired": true
                },
                "campaignKey": "sale15",
                "merchant": {
                  "referenceKey": "merchant-1"
                }
              }
            ]
          }
        }
      },
      "OrderBillingStatusUpdateRequest": {
        "value": {
          "code": "billing_partially_refunded",
          "items": [
            {
              "id": 1,
              "code": "billing_refunded"
            }
          ],
          "reason": "Manual override to reflect external refund for item 98765."
        }
      },
      "ProductMasterUpdatedEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2019-08-09T15:01:26+00:00",
          "type": "product-master-updated",
          "payload": {
            "referenceKey": "M0001",
            "categories": {
              "paths": [
                [
                  "Fashion",
                  "Men",
                  "Shirts"
                ]
              ]
            },
            "attributes": [
              {
                "name": "sleeve_length",
                "type": "localizedString",
                "value": {
                  "de_DE": "Langarm",
                  "en_GB": "long-sleeved"
                }
              }
            ]
          }
        }
      },
      "ProductVariantStockUpdatedEvent": {
        "value": {
          "key": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "meta": {
            "xRequestId": "1798e99a-711f-4f06-ae4c-ce86ed1331b8"
          },
          "occurredAt": "2020-07-23T11:30:58+00:00",
          "type": "product-variant-stock-updated",
          "payload": {
            "productVariant": {
              "id": 1,
              "referenceKey": "4711"
            },
            "product": {
              "id": 1,
              "referenceKey": "M0001"
            },
            "warehouse": {
              "id": 123,
              "referenceKey": "GlobalWarehouse"
            },
            "quantity": 123,
            "sellableWithoutStock": true,
            "changedAt": "2020-07-23T11:25:58+00:00",
            "merchantReferenceKey": "merchant-1",
            "expectedAvailabilityAt": "2020-07-23"
          }
        }
      },
      "CompanyRequest": {
        "value": {
          "name": "My Company"
        }
      },
      "CompanyResponse": {
        "value": {
          "id": 1,
          "name": "My Company"
        }
      },
      "CompanyCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 1,
              "name": "My Company"
            }
          ],
          "cursor": {
            "next": null
          }
        }
      },
      "CompleteCompositeProductRequest": {
        "value": {
          "referenceKey": "M0001-black",
          "name": {
            "de_DE": "FCB Trikot",
            "en_GB": "FCB Jersey"
          },
          "state": "live",
          "master": {
            "referenceKey": "M0001",
            "categories": {
              "paths": [
                [
                  "Fashion",
                  "Men",
                  "Shirts"
                ]
              ]
            },
            "attributes": [
              {
                "name": "sleeve_length",
                "type": "localizedString",
                "value": {
                  "de_DE": "Langarm",
                  "en_GB": "long-sleeved"
                }
              }
            ]
          },
          "attributes": [
            {
              "name": "color",
              "type": "localizedStringList",
              "value": [
                {
                  "de_DE": "blau",
                  "en_GB": "blue"
                },
                {
                  "de_DE": "schwarz",
                  "en_GB": "black"
                }
              ]
            }
          ],
          "variants": [
            {
              "referenceKey": "M0001-black-bundle-1",
              "attributes": [
                {
                  "name": "size",
                  "type": "simple",
                  "value": "M"
                },
                {
                  "name": "logo",
                  "type": "simple",
                  "value": "meister_logo"
                },
                {
                  "name": "name_flock",
                  "type": "simple",
                  "value": "25_mueller"
                }
              ],
              "prices": [
                {
                  "price": 9999,
                  "tax": 19,
                  "currencyCode": "EUR",
                  "countryCode": "DE",
                  "oldPrice": 10999,
                  "recommendedRetailPrice": 10999,
                  "groupKey": "myGroupKey",
                  "promotionKey": "myPromotionKey",
                  "unitPrice": {
                    "unit": "ml",
                    "amount": 100,
                    "price": 399
                  },
                  "validFrom": "2021-09-23T11:30:58+00:00",
                  "validTo": null
                }
              ],
              "relatedVariants": [
                {
                  "variantReferenceKey": "M0001-black-s",
                  "isMainVariant": true
                },
                {
                  "variantReferenceKey": "L0001-meister",
                  "isMainVariant": false
                },
                {
                  "variantReferenceKey": "NF0001-mueller",
                  "isMainVariant": false
                }
              ],
              "customData": {
                "isValid": true,
                "name": "fcb",
                "score": 100,
                "some-json": {
                  "de_DE": {
                    "color": "schwarz"
                  },
                  "en_GB": {
                    "color": "black"
                  }
                }
              }
            }
          ],
          "images": [
            {
              "assetUrl": "images/084dace7d7ff691e97982fa554113c29",
              "attributes": [
                {
                  "name": "view",
                  "type": "simple",
                  "value": "front"
                }
              ]
            }
          ],
          "similarProducts": [
            {
              "shopKey": "ay",
              "countryCode": "DE",
              "productIds": [
                1,
                2
              ]
            },
            {
              "shopKey": "ay",
              "productIds": [
                1,
                2
              ]
            }
          ]
        }
      },
      "CompleteCompositeVariantRequest": {
        "value": {
          "referenceKey": "M0001-black-bundle-1",
          "attributes": [
            {
              "name": "size",
              "type": "simple",
              "value": "M"
            },
            {
              "name": "logo",
              "type": "simple",
              "value": "meister_logo"
            },
            {
              "name": "name_flock",
              "type": "simple",
              "value": "25_mueller"
            }
          ],
          "prices": [
            {
              "price": 9999,
              "tax": 19,
              "currencyCode": "EUR",
              "countryCode": "DE",
              "oldPrice": 10999,
              "recommendedRetailPrice": 10999,
              "groupKey": "myGroupKey",
              "promotionKey": "myPromotionKey",
              "unitPrice": {
                "unit": "ml",
                "amount": 100,
                "price": 399
              },
              "validFrom": "2021-09-23T11:30:58+00:00",
              "validTo": null
            }
          ],
          "relatedVariants": [
            {
              "variantReferenceKey": "M0001-black-s",
              "isMainVariant": true
            },
            {
              "variantReferenceKey": "L0001-meister",
              "isMainVariant": false
            },
            {
              "variantReferenceKey": "NF0001-mueller",
              "isMainVariant": false
            }
          ],
          "customData": {
            "isValid": true,
            "name": "fcb",
            "score": 100,
            "some-json": {
              "de_DE": {
                "color": "schwarz"
              },
              "en_GB": {
                "color": "black"
              }
            }
          }
        }
      },
      "MinimalCompositeVariantRequest": {
        "value": {
          "referenceKey": "M0001-black-M",
          "relatedVariants": [
            {
              "variantReferenceKey": "M0001-black-s",
              "isMainVariant": true
            },
            {
              "variantReferenceKey": "L0001-meister",
              "isMainVariant": false
            },
            {
              "variantReferenceKey": "NF0001-mueller",
              "isMainVariant": false
            }
          ]
        }
      },
      "MinimalCompositeVariantResponse": {
        "value": {
          "id": 7,
          "referenceKey": "M0001-black-M",
          "ean": "",
          "attributes": [],
          "prices": [],
          "isComposite": true,
          "relatedVariants": [
            {
              "variantReferenceKey": "M0001-black-s",
              "isMainVariant": true
            },
            {
              "variantReferenceKey": "L0001-meister",
              "isMainVariant": false
            },
            {
              "variantReferenceKey": "NF0001-mueller",
              "isMainVariant": false
            }
          ]
        }
      },
      "CarrierRequest": {
        "value": {
          "key": "DHL_STD_NATIONAL",
          "name": "DHL",
          "trackingUrl": "http://nolp.dhl.de/nextt-online-public/set_identcodes.do"
        }
      },
      "CarrierResponse": {
        "value": {
          "id": 1,
          "key": "DHL_STD_NATIONAL",
          "name": "DHL",
          "trackingUrl": "http://nolp.dhl.de/nextt-online-public/set_identcodes.do"
        }
      },
      "MerchantCreateOrUpdateRequest": {
        "value": {
          "referenceKey": "acme",
          "name": "ACME",
          "priority": 1,
          "orderDelegationUrl": "https://merchant.com/order-service/delegate-order",
          "cancellationUrl": "https://merchant.com/order-service/cancel-order"
        }
      },
      "MerchantCreateOrUpdateResponse": {
        "value": {
          "id": 1,
          "referenceKey": "acme",
          "name": "ACME",
          "priority": 1,
          "orderDelegationUrl": "https://acme.com/order-service/delegate-order",
          "cancellationUrl": "https://acme.com/order-service/cancel-order"
        }
      },
      "MerchantResponse": {
        "value": {
          "id": 1,
          "referenceKey": "acme",
          "name": "ACME",
          "priority": 1,
          "orderDelegationUrl": "https://acme.com/order-service/delegate-order",
          "cancellationUrl": "https://acme.com/order-service/cancel-order",
          "contacts": [
            {
              "id": 1,
              "email": "foo@bar.org",
              "phone": "123456789",
              "cellPhone": "123456789",
              "name": "John Doe",
              "type": "general",
              "position": "Partner Service",
              "description": "Additional information"
            }
          ],
          "returnAddresses": [
            {
              "id": 1,
              "name": "Return Point",
              "street": "Domstrasse",
              "streetNo": "10",
              "zipCode": "22303",
              "city": "Hamburg",
              "countryCode": "DE",
              "dhlCode": "JVGL0849489024"
            }
          ],
          "carriers": [
            {
              "countryCode": "DE",
              "carrier": {
                "id": 1,
                "key": "DHL_STD_NATIONAL",
                "name": "DHL",
                "trackingUrl": "http://nolp.dhl.de/nextt-online-public/set_identcodes.do"
              }
            }
          ],
          "warehouses": [
            {
              "id": 1,
              "referenceKey": "my-warehouse"
            }
          ]
        }
      },
      "MerchantContactRequest": {
        "value": {
          "email": "foo@bar.org",
          "phone": "123456789",
          "cellPhone": "123456789",
          "name": "John Doe",
          "type": "general",
          "position": "Partner Service",
          "description": "Additional information"
        }
      },
      "MerchantContactResponse": {
        "value": {
          "id": 1,
          "email": "foo@bar.org",
          "phone": "123456789",
          "cellPhone": "123456789",
          "name": "John Doe",
          "type": "general",
          "position": "Partner Service",
          "description": "Additional information"
        }
      },
      "MerchantContactCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 1,
              "email": "foo@bar.org",
              "phone": "123456789",
              "cellPhone": "123456789",
              "name": "John Doe",
              "type": "general",
              "position": "Partner Service",
              "description": "Additional information"
            }
          ],
          "cursor": {
            "next": null
          }
        }
      },
      "MerchantReturnAddressRequest": {
        "value": {
          "name": "Return Point",
          "street": "Domstrasse",
          "streetNo": "10",
          "zipCode": "22303",
          "city": "Hamburg",
          "countryCode": "DE",
          "dhlCode": "JVGL0849489024"
        }
      },
      "MerchantReturnAddressResponse": {
        "value": {
          "id": 1,
          "name": "Return Point",
          "street": "Domstrasse",
          "streetNo": "10",
          "zipCode": "22303",
          "city": "Hamburg",
          "countryCode": "DE",
          "dhlCode": "JVGL0849489024"
        }
      },
      "MerchantReturnAddressCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 1,
              "name": "Return Point",
              "street": "Domstrasse",
              "streetNo": "10",
              "zipCode": "22303",
              "city": "Hamburg",
              "countryCode": "DE",
              "dhlCode": "JVGL0849489024"
            }
          ],
          "cursor": {
            "next": null
          }
        }
      },
      "WarehouseRequest": {
        "value": {
          "referenceKey": "my-warehouse"
        }
      },
      "WarehouseResponse": {
        "value": {
          "id": 1,
          "referenceKey": "my-warehouse",
          "merchants": [
            {
              "id": 1,
              "referenceKey": "acme",
              "name": "ACME",
              "priority": 1
            }
          ],
          "shopCountries": [
            {
              "shopKey": "ms",
              "countryCode": "de",
              "priority": 100,
              "packageGroup": {
                "id": 3
              }
            }
          ]
        }
      },
      "WarehouseCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 1,
              "referenceKey": "my-warehouse",
              "merchants": [
                {
                  "id": 1,
                  "referenceKey": "acme",
                  "name": "ACME",
                  "priority": 1
                }
              ],
              "shopCountries": [
                {
                  "shopKey": "ms",
                  "countryCode": "de",
                  "priority": 100,
                  "packageGroup": {
                    "id": 3
                  }
                }
              ]
            }
          ],
          "cursor": {
            "next": null
          }
        }
      },
      "PromotionCodesRequest": {
        "value": {
          "promotionCodes": [
            "BF24",
            "XMAS24"
          ]
        }
      },
      "PromotionCodesResponse": {
        "value": {
          "promotionCodes": [
            "BF24",
            "XMAS24"
          ]
        }
      },
      "PromotionCodesCollectionResponse": {
        "value": {
          "entities": [
            {
              "code": "XMAS24",
              "enabled": true
            }
          ],
          "cursor": {
            "next": "Mgo="
          }
        }
      },
      "PromotionItemSetCreateRequest": {
        "value": {
          "name": "T-Shirts",
          "variantIds": [
            1,
            2,
            3
          ],
          "condition": "payload.items.exists(i, 11003 in i.variant.id)",
          "eligibleItemsQuantity": 1
        }
      },
      "PromotionItemSetResponse": {
        "value": {
          "id": "64cbc70225ae598c0d0d0334",
          "name": "T-Shirts",
          "variantIds": [
            1,
            2,
            3
          ],
          "condition": "payload.items.exists(i, 11003 in i.variant.id)",
          "eligibleItemsQuantity": 1
        }
      },
      "PromotionRequestV1": {
        "value": {
          "name": "Christmas Promotion",
          "schedule": {
            "from": "2023-05-10T10:00:00+00:00",
            "to": "2024-05-10T10:00:00+00:00"
          },
          "isActive": true,
          "shopId": [
            "139",
            "554"
          ],
          "companyId": [
            "100"
          ],
          "siblingPromotions": {
            "enabled": true,
            "allowList": [
              "645e0c241a93369ff53f26e0",
              "646235bf496f8f56171c3762"
            ],
            "level": "basket"
          },
          "audiences": {
            "allowList": [
              "645e0c241a93369ff53f26e0",
              "646235bf496f8f56171c3762"
            ]
          },
          "effect": {
            "id": "buy_x_get_y",
            "additionalData": {
              "variant_ids": [
                12389244,
                23985437
              ],
              "max_count": 1,
              "max_count_type": "per_eligible_items_quantity",
              "eligible_items_quantity": 6
            }
          },
          "globalConditions": [
            {
              "key": "mov_100",
              "condition": "payload.items.exists(i, 11003 in i.variant.id)"
            }
          ],
          "itemConditions": [
            {
              "key": "mov_100",
              "condition": "item.color == 'yellow'"
            }
          ],
          "priority": "1",
          "additionalData": {
            "legalText": "Supported neglected met she therefore unwilling discovery remainder. Way sentiments two indulgence uncommonly own."
          },
          "tiers": [
            {
              "name": "Tier 1",
              "effect": {
                "additionalData": {
                  "variant_ids": [
                    12389244,
                    23985437
                  ],
                  "max_count": 1
                }
              },
              "mov": 10000
            }
          ]
        }
      },
      "PromotionResponseV1": {
        "value": {
          "id": "645e0c241a93369ff53f26e0",
          "version": "645e0c241a93369ff53f26e0",
          "name": "Christmas Promotion",
          "schedule": {
            "from": "2023-05-10T10:00:00+00:00",
            "to": "2023-05-17T18:00:00Z"
          },
          "isActive": true,
          "shopId": [
            "139",
            "554"
          ],
          "companyId": [
            "100"
          ],
          "siblingPromotions": {
            "enabled": true,
            "allowList": [
              "645e0c241a93369ff53f26e0",
              "646235bf496f8f56171c3762"
            ],
            "level": "basket"
          },
          "audiences": {
            "allowList": [
              "645e0c241a93369ff53f26e0",
              "646235bf496f8f56171c3762"
            ]
          },
          "effect": {
            "id": "buy_x_get_y",
            "additionalData": {
              "variant_ids": [
                12389244,
                23985437
              ],
              "max_count": 1,
              "max_count_type": "per_eligible_items_quantity",
              "eligible_items_quantity": 6
            }
          },
          "globalConditions": [
            {
              "key": "mov_100",
              "condition": "payload.items.exists(i, 11003 in i.variant.id)"
            }
          ],
          "itemConditions": [
            {
              "key": "mov_100",
              "condition": "item.color == 'yellow'"
            }
          ],
          "priority": "1",
          "additionalData": {
            "legalText": "Supported neglected met she therefore unwilling discovery remainder. Way sentiments two indulgence uncommonly own."
          },
          "tiers": [
            {
              "id": 1,
              "name": "Tier 1",
              "effect": {
                "additionalData": {
                  "variant_ids": [
                    12389244,
                    23985437
                  ],
                  "max_count": 1
                }
              },
              "mov": 10000
            }
          ]
        }
      },
      "PromotionShowResponse": {
        "value": {
          "id": "645e0c241a93369ff53f26e0",
          "version": "645e0c241a93369ff53f26e0",
          "name": "Christmas Promotion",
          "displayName": {
            "de_DE": "Weihnachtsaktion",
            "en_US": "Christmas Promotion"
          },
          "status": "active",
          "activationType": "code",
          "level": "basket",
          "schedule": {
            "from": "2023-05-10T10:00:00+00:00",
            "to": "2024-05-10T10:00:00+00:00"
          },
          "companyIds": [
            100
          ],
          "shopCountryIds": {
            "allowList": [
              1,
              2
            ],
            "blockList": [
              3,
              4
            ]
          },
          "siblingPromotions": {
            "enabled": true,
            "allowList": [
              "645e0c241a93369ff53f26e0",
              "646235bf496f8f56171c3762"
            ],
            "level": "basket"
          },
          "audiences": {
            "allowList": [
              "645e0c241a93369ff53f26e0",
              "646235bf496f8f56171c3762"
            ]
          },
          "effect": {
            "type": "buy_x_get_y",
            "additionalData": {
              "variantIds": [
                12389244,
                23985437
              ],
              "maxCount": 1,
              "maxCountType": "per_eligible_items_quantity",
              "eligibleItemsQuantity": 6
            }
          },
          "conditions": [
            {
              "level": "global",
              "key": "mov_100",
              "condition": "payload.items.exists(i, 11003 in i.variant.id)"
            },
            {
              "level": "item",
              "key": "mov_100",
              "condition": "item.color == 'yellow'"
            }
          ],
          "itemSetIds": [
            "645e0c241a93369ff53f26e0",
            "646235bf496f8f56171c3762"
          ],
          "priority": 1,
          "customData": {
            "legalText": "Supported neglected met she therefore unwilling discovery remainder. Way sentiments two indulgence uncommonly own."
          },
          "tiers": [
            {
              "name": "Tier 1",
              "effect": {
                "additionalData": {
                  "type": "relative",
                  "value": 10
                }
              },
              "mov": 10000
            }
          ],
          "usageLimit": {
            "promotion": {
              "count": 100
            },
            "promotionCodes": {
              "count": 100,
              "type": "order"
            }
          }
        }
      },
      "PromotionCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": "645e0c241a93369ff53f26e0",
              "version": "645e0c241a93369ff53f26e0",
              "name": "Christmas Promotion",
              "displayName": {
                "de_DE": "Weihnachtsaktion",
                "en_US": "Christmas Promotion"
              },
              "status": "active",
              "activationType": "code",
              "level": "basket",
              "schedule": {
                "from": "2023-05-10T10:00:00+00:00",
                "to": "2024-05-10T10:00:00+00:00"
              },
              "companyIds": [
                100
              ],
              "shopCountryIds": {
                "allowList": [
                  1,
                  2
                ],
                "blockList": [
                  3,
                  4
                ]
              },
              "siblingPromotions": {
                "enabled": true,
                "allowList": [
                  "645e0c241a93369ff53f26e0",
                  "646235bf496f8f56171c3762"
                ],
                "level": "basket"
              },
              "audiences": {
                "allowList": [
                  "645e0c241a93369ff53f26e0",
                  "646235bf496f8f56171c3762"
                ]
              },
              "effect": {
                "type": "buy_x_get_y",
                "additionalData": {
                  "variantIds": [
                    12389244,
                    23985437
                  ],
                  "maxCount": 1,
                  "maxCountType": "per_eligible_items_quantity",
                  "eligibleItemsQuantity": 6
                }
              },
              "conditions": [
                {
                  "level": "global",
                  "key": "mov_100",
                  "condition": "payload.items.exists(i, 11003 in i.variant.id)"
                },
                {
                  "level": "item",
                  "key": "mov_100",
                  "condition": "item.color == 'yellow'"
                }
              ],
              "priority": 1,
              "customData": {
                "legalText": "Supported neglected met she therefore unwilling discovery remainder. Way sentiments two indulgence uncommonly own."
              },
              "tiers": [
                {
                  "name": "Tier 1",
                  "effect": {
                    "additionalData": {
                      "type": "relative",
                      "value": 10
                    }
                  },
                  "mov": 10000
                }
              ],
              "usageLimit": {
                "promotion": {
                  "count": 100
                },
                "promotionCodes": {
                  "count": 100,
                  "type": "order"
                }
              }
            }
          ],
          "cursor": {
            "next": "Mgo="
          }
        }
      },
      "PromotionCreateRequest": {
        "value": {
          "name": "Christmas Promotion",
          "displayName": {
            "de_DE": "Weihnachtsaktion",
            "en_US": "Christmas Promotion"
          },
          "status": "active",
          "activationType": "code",
          "level": "basket",
          "schedule": {
            "from": "2023-05-10T10:00:00+00:00",
            "to": "2024-05-10T10:00:00+00:00"
          },
          "companyIds": [
            100
          ],
          "shopCountryIds": {
            "allowList": [
              1,
              2
            ]
          },
          "siblingPromotions": {
            "enabled": true,
            "allowList": [
              "645e0c241a93369ff53f26e0",
              "646235bf496f8f56171c3762"
            ],
            "level": "basket"
          },
          "audiences": {
            "allowList": [
              "645e0c241a93369ff53f26e0",
              "646235bf496f8f56171c3762"
            ]
          },
          "effect": {
            "type": "buy_x_get_y",
            "additionalData": {
              "variantIds": [
                12389244,
                23985437
              ],
              "maxCount": 1,
              "maxCountType": "per_eligible_items_quantity",
              "eligibleItemsQuantity": 6
            }
          },
          "conditions": [
            {
              "level": "global",
              "key": "mov_100",
              "condition": "payload.items.exists(i, 11003 in i.variant.id)"
            },
            {
              "level": "item",
              "key": "mov_100",
              "condition": "item.color == 'yellow'"
            }
          ],
          "priority": 1,
          "customData": {
            "legalText": "Supported neglected met she therefore unwilling discovery remainder. Way sentiments two indulgence uncommonly own."
          },
          "tiers": [
            {
              "name": "Tier 1",
              "effect": {
                "additionalData": {
                  "type": "relative",
                  "value": 10
                }
              },
              "mov": 10000
            }
          ],
          "usageLimit": {
            "promotion": {
              "count": 100
            },
            "promotionCodes": {
              "count": 100,
              "type": "order"
            }
          }
        }
      },
      "PromotionUpdateRequest": {
        "value": {
          "name": "Christmas Promotion",
          "displayName": {
            "de_DE": "Weihnachtsaktion",
            "en_US": "Christmas Promotion"
          },
          "status": "active",
          "activationType": "code",
          "level": "basket",
          "schedule": {
            "from": "2023-05-10T10:00:00+00:00",
            "to": "2024-05-10T10:00:00+00:00"
          },
          "companyIds": [
            100
          ],
          "shopCountryIds": {
            "blockList": [
              3,
              4
            ]
          },
          "siblingPromotions": {
            "enabled": true,
            "allowList": [
              "645e0c241a93369ff53f26e0",
              "646235bf496f8f56171c3762"
            ],
            "level": "basket"
          },
          "audiences": {
            "allowList": [
              "645e0c241a93369ff53f26e0",
              "646235bf496f8f56171c3762"
            ]
          },
          "effect": {
            "type": "buy_x_get_y",
            "additionalData": {
              "variantIds": [
                12389244,
                23985437
              ],
              "maxCount": 1,
              "maxCountType": "per_eligible_items_quantity",
              "eligibleItemsQuantity": 6
            }
          },
          "conditions": [
            {
              "level": "global",
              "key": "mov_100",
              "condition": "payload.items.exists(i, 11003 in i.variant.id)"
            },
            {
              "level": "item",
              "key": "mov_100",
              "condition": "item.color == 'yellow'"
            }
          ],
          "priority": 1,
          "customData": {
            "legalText": "Supported neglected met she therefore unwilling discovery remainder. Way sentiments two indulgence uncommonly own."
          },
          "tiers": [
            {
              "name": "Tier 1",
              "effect": {
                "additionalData": {
                  "type": "relative",
                  "value": 10
                }
              },
              "mov": 10000
            }
          ],
          "usageLimit": {
            "promotion": {
              "count": 100
            },
            "promotionCodes": {
              "count": 100,
              "type": "order"
            }
          }
        }
      },
      "AudienceCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": "645e0c241a93369ff53f26e0",
              "name": "VIP customers",
              "description": "German VIP Customers from Hamburg only",
              "companyIds": [
                100
              ],
              "customerIds": [
                345,
                456,
                567
              ],
              "createdAt": "2023-05-10T10:00:00+00:00",
              "updatedAt": "2023-05-10T10:00:00+00:00"
            }
          ],
          "cursor": {
            "next": null
          }
        }
      },
      "CreateReservationsRequest": {
        "value": [
          {
            "referenceKey": "order4711-item3",
            "warehouseReferenceKey": "myWarehouse",
            "reservationTtl": 3600,
            "variant": {
              "id": 123,
              "merchantReferenceKey": "merchant-1"
            }
          },
          {
            "referenceKey": "order4711-item4",
            "warehouseReferenceKey": "myWarehouse",
            "variant": {
              "referenceKey": "foo-456789",
              "merchantReferenceKey": "merchant-1"
            }
          },
          {
            "referenceKey": "order4711-item5",
            "warehouseReferenceKey": "myWarehouse",
            "variant": {
              "referenceKey": "foo-456789"
            }
          }
        ]
      },
      "CreateReservationsResponse": {
        "value": {
          "entities": [
            {
              "referenceKey": "order4711-item3",
              "id": 123,
              "reservationTtl": 3600
            },
            {
              "referenceKey": "order4711-item4",
              "error": {
                "errorKey": "VARIANT_NOT_FOUND",
                "message": "The combination of warehouseReferenceKey, variant id/key and merchantReferenceKey was not found."
              }
            }
          ]
        }
      },
      "AudienceRequest": {
        "value": {
          "name": "VIP customers",
          "description": "German VIP Customers from Hamburg only",
          "companyIds": [
            100
          ],
          "customerIds": [
            345,
            456,
            567
          ]
        }
      },
      "AudienceResponse": {
        "value": {
          "id": "645e0c241a93369ff53f26e0",
          "name": "VIP customers",
          "description": "German VIP Customers from Hamburg only",
          "companyIds": [
            100
          ],
          "customerIds": [
            345,
            456,
            567
          ],
          "createdAt": "2023-05-10T10:00:00+00:00",
          "updatedAt": "2023-05-10T10:00:00+00:00"
        }
      },
      "RedirectResponse": {
        "value": {
          "entities": [
            {
              "id": 83070,
              "source": "https://forceful-poem.net/",
              "target": "https://extra-small-mouser.net/",
              "statusCode": 302,
              "isRegex": false,
              "parent": {
                "id": 83069,
                "source": "https://forceful-poem.net/",
                "target": "https://extra-small-mouser.net/",
                "statusCode": 302,
                "isRegex": false,
                "priority": 754,
                "createdAt": "2024-06-20T13:20:21+00:00",
                "updatedAt": "2024-06-20T13:20:21+00:00"
              },
              "priority": 754,
              "createdAt": "2024-06-20T13:20:21+00:00",
              "updatedAt": "2024-06-20T13:20:21+00:00"
            },
            {
              "id": 83081,
              "source": "https://distinct-hold.com/",
              "target": "https://defiant-event.org/",
              "statusCode": 300,
              "isRegex": false,
              "parent": {
                "id": 83069,
                "source": "https://forceful-poem.net/",
                "target": "https://extra-small-mouser.net/",
                "statusCode": 302,
                "isRegex": false,
                "priority": 754,
                "createdAt": "2024-06-20T13:20:21+00:00",
                "updatedAt": "2024-06-20T13:20:21+00:00"
              },
              "priority": 214,
              "createdAt": "2024-06-20T13:20:21+00:00",
              "updatedAt": "2024-06-20T13:20:21+00:00"
            },
            {
              "id": 83080,
              "source": "https://short-offence.name",
              "target": "https://cooked-senate.info",
              "statusCode": 302,
              "isRegex": false,
              "parent": {
                "id": 83069,
                "source": "https://forceful-poem.net/",
                "target": "https://extra-small-mouser.net/",
                "statusCode": 302,
                "isRegex": false,
                "priority": 754,
                "createdAt": "2024-06-20T13:20:21+00:00",
                "updatedAt": "2024-06-20T13:20:21+00:00"
              },
              "priority": 345,
              "createdAt": "2024-06-20T13:20:21+00:00",
              "updatedAt": "2024-06-20T13:20:21+00:00"
            }
          ],
          "cursor": {
            "next": "100"
          }
        }
      },
      "CreateOrUpdateRedirectsRequest": {
        "value": [
          {
            "source": "https://example.com",
            "target": "https://example2.com",
            "statusCode": 301,
            "parent": {
              "id": 2
            },
            "isRegex": false,
            "priority": 1
          },
          {
            "id": 1,
            "source": "https://example2.com",
            "target": "https://example3.com",
            "statusCode": 302,
            "isRegex": false,
            "priority": 1
          }
        ]
      },
      "CreateOrUpdateRedirectsPartialSuccessResponse": {
        "value": {
          "entities": [
            {
              "source": "https://example2.com",
              "target": "https://example2.com",
              "statusCode": 302,
              "isRegex": false,
              "priority": 1,
              "error": {
                "errorKey": "validation_error",
                "message": "Some validation error"
              }
            }
          ]
        }
      },
      "CreateOrUpdateRedirectsSuccessResponse": {
        "value": {
          "entities": []
        }
      },
      "DeleteRedirectsBulkRequest": {
        "value": [
          {
            "id": 1
          },
          {
            "id": 2
          },
          {
            "id": 3
          }
        ]
      },
      "CreateRedirectRequest": {
        "value": {
          "source": "https://google.com",
          "target": "https://google2.com",
          "statusCode": 302,
          "parent": {
            "id": 2
          },
          "isRegex": false,
          "priority": 1
        }
      },
      "UpdateRedirectRequest": {
        "value": {
          "source": "https://google.com",
          "target": "https://google2.com",
          "isRegex": false,
          "statusCode": 302,
          "priority": 1
        }
      },
      "CreateRedirectResponse": {
        "value": {
          "source": "https://google.com",
          "target": "https://google2.com",
          "statusCode": 302,
          "parent": {
            "id": 2
          },
          "isRegex": false,
          "priority": 1,
          "createdAt": "2024-06-20T13:20:21+00:00",
          "updatedAt": "2024-06-20T13:20:21+00:00"
        }
      },
      "UpdateRedirectResponse": {
        "value": {
          "source": "https://google.com",
          "target": "https://google2.com",
          "statusCode": 302,
          "isRegex": false,
          "priority": 1,
          "createdAt": "2024-06-20T13:20:21+00:00",
          "updatedAt": "2024-06-20T13:20:21+00:00"
        }
      },
      "EmailKey": {
        "value": {
          "id": 123,
          "key": "subscription-order-created-email",
          "name": "Subscription Order created email",
          "createdAt": "2024-01-01T09:30:15+00:00",
          "updatedAt": "2024-01-01T09:30:15+00:00"
        }
      },
      "CreateEmailKeyRequest": {
        "value": {
          "key": "subscription-order-created-email",
          "name": "Subscription Order created email"
        }
      },
      "UpdateEmailKeyRequest": {
        "value": {
          "name": "Subscription Order created email"
        }
      },
      "EmailKeysCollectionResponse": {
        "value": {
          "entities": [
            {
              "id": 123,
              "key": "subscription-order-created-email",
              "name": "Subscription Order created email",
              "createdAt": "2024-01-01T09:30:15+00:00",
              "updatedAt": "2024-01-01T09:30:15+00:00"
            }
          ],
          "cursor": {
            "next": "Mgo="
          }
        }
      },
      "SendEmailRequest": {
        "value": {
          "key": "subscription-order-created-email",
          "payload": {
            "property1": "value1",
            "property2": "value2"
          },
          "recipient": "your.email.address@scayle.com",
          "orderId": 123
        }
      },
      "CreateBulkRequest": {
        "value": {
          "callbacks": {
            "requestUrl": "https://example.com/api/internal/callback/request",
            "operationUrl": "https://client.aboutyou.cloud/api/internal/callback/operation",
            "requestStatus": "complete"
          },
          "operations": [
            {
              "key": "create-product",
              "url": "/products",
              "method": "POST",
              "headers": {
                "X-Merchant-Key": "M0001-black"
              },
              "body": {
                "referenceKey": "M0001-black",
                "name": {
                  "de_DE": "Blaues Shirt",
                  "en_GB": "Blue Shirt"
                },
                "state": "draft",
                "master": {
                  "referenceKey": "M0001",
                  "categories": {
                    "paths": [
                      [
                        "Fashion",
                        "Men",
                        "Shirts"
                      ]
                    ]
                  }
                }
              }
            }
          ]
        }
      },
      "CreateBulkRequestResponse": {
        "value": {
          "key": 123
        }
      },
      "CancelBulkRequestResponse": {
        "value": {
          "key": 123,
          "status": "cancelled"
        }
      },
      "GetBulkRequestStatusesResponse": {
        "value": {
          "entities": [
            {
              "key": 123,
              "status": "cancelled",
              "progress": {
                "totalOperations": 0,
                "processedOperations": 0,
                "failedOperations": 0
              }
            }
          ]
        }
      },
      "GetBulkRequestStatusResponse": {
        "value": {
          "key": 123,
          "status": "cancelled",
          "progress": {
            "totalOperations": 0,
            "processedOperations": 0,
            "failedOperations": 0
          }
        }
      },
      "GetBulkOperationStatusResponse": {
        "value": {
          "key": "eligendi67672eae50723",
          "status": "processed",
          "response": {
            "body": {
              "key": "test_color",
              "level": "product",
              "isAdvanced": true
            },
            "statusCode": 201
          },
          "bulkRequest": {
            "key": 123,
            "status": "processing",
            "progress": {
              "totalOperations": 0,
              "processedOperations": 0,
              "failedOperations": 0
            }
          }
        }
      },
      "BulkRequestStatusChangedCallback": {
        "value": {
          "key": "0f8fad5b-d9cb-469f-a165-70867728950e",
          "meta": {
            "xRequestId": "7b33b91c-9f76-4f8e-9b41-b6ff2b22c021"
          },
          "occurredAt": "2024-07-23T11:30:58+00:00",
          "type": "bulk-request-status-changed",
          "payload": {
            "key": 123,
            "status": "processing",
            "progress": {
              "totalOperations": 1,
              "processedOperations": 0,
              "failedOperations": 0
            }
          }
        }
      },
      "ProductBulkOperationStatusChangedCallback": {
        "value": {
          "key": "0f8fad5b-d9cb-469f-a165-70867728950e",
          "meta": {
            "xRequestId": "7b33b91c-9f76-4f8e-9b41-b6ff2b22c021"
          },
          "occurredAt": "2024-07-23T11:30:58+00:00",
          "type": "bulk-operation-status-changed",
          "payload": {
            "key": "create-product",
            "status": "processed",
            "response": {
              "body": {
                "referenceKey": "M0001-black",
                "name": {
                  "de_DE": "Blaues Shirt",
                  "en_GB": "Blue Shirt"
                },
                "state": "draft",
                "master": {
                  "referenceKey": "M0001",
                  "categories": {
                    "paths": [
                      [
                        "Fashion",
                        "Men",
                        "Shirts"
                      ]
                    ]
                  }
                }
              },
              "statusCode": 201
            },
            "bulkRequest": {
              "key": 123,
              "status": "processing",
              "progress": {
                "totalOperations": 1,
                "processedOperations": 1,
                "failedOperations": 0
              }
            }
          }
        }
      },
      "CompositeProductBulkOperationStatusChangedCallback": {
        "value": {
          "key": "0f8fad5b-d9cb-469f-a165-70867728950e",
          "meta": {
            "xRequestId": "7b33b91c-9f76-4f8e-9b41-b6ff2b22c021"
          },
          "occurredAt": "2024-07-23T11:30:58+00:00",
          "type": "bulk-operation-status-changed",
          "payload": {
            "key": "create-composite-product",
            "status": "processed",
            "response": {
              "body": {
                "referenceKey": "M0001-black",
                "name": {
                  "de_DE": "Blaues Shirt",
                  "en_GB": "Blue Shirt"
                },
                "state": "draft",
                "master": {
                  "referenceKey": "M0001",
                  "categories": {
                    "paths": [
                      [
                        "Fashion",
                        "Men",
                        "Shirts"
                      ]
                    ]
                  }
                }
              },
              "statusCode": 201
            },
            "bulkRequest": {
              "key": 123,
              "status": "processing",
              "progress": {
                "totalOperations": 1,
                "processedOperations": 1,
                "failedOperations": 0
              }
            }
          }
        }
      },
      "ProductVariantPriceBulkOperationStatusChangedCallback": {
        "value": {
          "key": "0f8fad5b-d9cb-469f-a165-70867728950e",
          "meta": {
            "xRequestId": "7b33b91c-9f76-4f8e-9b41-b6ff2b22c021"
          },
          "occurredAt": "2024-07-23T11:30:58+00:00",
          "type": "bulk-operation-status-changed",
          "payload": {
            "key": "create-product-variant-price",
            "status": "processed",
            "response": {
              "body": {
                "price": 80,
                "oldPrice": 100,
                "recommendedRetailPrice": 90,
                "buyingPrice": 70,
                "tax": 19,
                "countryCode": "DE",
                "currencyCode": "EUR",
                "groupKey": "myGroupKey",
                "promotionKey": "myPromotionKey",
                "unitPrice": {
                  "unit": "ml",
                  "amount": 100,
                  "price": 399
                },
                "validFrom": "2021-09-23T11:30:58+00:00",
                "validTo": null,
                "merchantReferenceKey": "merchant-1"
              },
              "statusCode": 201
            },
            "bulkRequest": {
              "key": 123,
              "status": "processing",
              "progress": {
                "totalOperations": 1,
                "processedOperations": 1,
                "failedOperations": 0
              }
            }
          }
        }
      },
      "ProductVariantStockBulkOperationStatusChangedCallback": {
        "value": {
          "key": "0f8fad5b-d9cb-469f-a165-70867728950e",
          "meta": {
            "xRequestId": "7b33b91c-9f76-4f8e-9b41-b6ff2b22c021"
          },
          "occurredAt": "2024-07-23T11:30:58+00:00",
          "type": "bulk-operation-status-changed",
          "payload": {
            "key": "create-product-variant-stock",
            "status": "processed",
            "response": {
              "body": {
                "warehouseReferenceKey": "warehouse-1",
                "quantity": 100,
                "changedAt": "2024-07-23T11:30:58+00:00",
                "merchantReferenceKey": "merchant-stock-1"
              },
              "statusCode": 201
            },
            "bulkRequest": {
              "key": 123,
              "status": "processing",
              "progress": {
                "totalOperations": 1,
                "processedOperations": 1,
                "failedOperations": 0
              }
            }
          }
        }
      },
      "BatchProcessProductSellableTimeframesRequest": {
        "value": [
          {
            "productId": 1,
            "shopKey": "ay",
            "countryCode": "DE",
            "sellableFrom": "2022-01-20T00:00:00+00:00",
            "sellableTo": "2022-02-20T00:00:00+00:00"
          },
          {
            "productId": 1,
            "shopKey": "ay",
            "countryCode": "AT",
            "sellableFrom": "2022-01-20T00:00:00+00:00",
            "sellableTo": "2022-02-20T00:00:00+00:00"
          },
          {
            "productId": 1,
            "shopKey": "ay",
            "countryCode": "CH",
            "sellableFrom": null,
            "sellableTo": null
          }
        ]
      },
      "ChannelCreateRequest": {
        "value": {
          "key": "online-store-de",
          "type": "marketplace",
          "name": "Online Store (Germany)",
          "description": "Primary sales channel for all German marketplace orders.",
          "shopCountryId": 5,
          "active": true,
          "defaultPaymentMethod": {
            "id": 22
          },
          "configs": {
            "emailsEnabled": true,
            "invoicesEnabled": true,
            "externalPriceOverrideEnabled": false
          }
        }
      },
      "ChannelMinimalUpdateRequest": {
        "value": {
          "key": "online-store-de",
          "type": "marketplace",
          "name": "Online Store (Germany)",
          "shopCountryId": 5
        }
      },
      "ChannelCompleteUpdateRequest": {
        "value": {
          "key": "online-store-de",
          "type": "marketplace",
          "name": "Online Store (Germany)",
          "description": "Primary sales channel for all German marketplace orders.",
          "shopCountryId": 5,
          "active": true,
          "defaultPaymentMethod": {
            "id": 22
          },
          "configs": {
            "emailsEnabled": true,
            "invoicesEnabled": true,
            "externalPriceOverrideEnabled": false
          }
        }
      },
      "ChannelResponse": {
        "value": {
          "id": 101,
          "key": "online-store-de",
          "type": "marketplace",
          "name": "Online Store (Germany)",
          "description": "Primary sales channel for all German marketplace orders.",
          "shopCountry": {
            "id": 5502,
            "shopKey": "msde",
            "countryCode": "DE",
            "defaultLanguageCode": "en_GB",
            "supportedLanguageCodes": [],
            "priceGroupKey": null,
            "url": "www.example.com",
            "active": true,
            "currencyCode": null,
            "deleted": false
          },
          "active": true,
          "isUsedInOrders": false,
          "defaultPaymentMethod": {
            "id": 22,
            "key": "credit-card"
          },
          "configs": {
            "emailsEnabled": true,
            "invoicesEnabled": true,
            "externalPriceOverrideEnabled": false
          },
          "createdAt": "2023-05-10T10:00:00+00:00",
          "updatedAt": "2023-05-10T10:00:00+00:00"
        }
      },
      "ChannelUpdateResponse": {
        "value": {
          "id": 101,
          "key": "online-store-de",
          "type": "marketplace",
          "name": "Updated Online Store (Germany)",
          "description": "Updated description for the German marketplace orders.",
          "shopCountry": {
            "id": 5502,
            "shopKey": "msde",
            "countryCode": "DE",
            "defaultLanguageCode": "en_GB",
            "supportedLanguageCodes": [],
            "priceGroupKey": null,
            "url": "www.example.com",
            "active": true,
            "currencyCode": null,
            "deleted": false
          },
          "active": true,
          "isUsedInOrders": false,
          "defaultPaymentMethod": {
            "id": 22,
            "key": "credit-card"
          },
          "configs": {
            "emailsEnabled": true,
            "invoicesEnabled": true,
            "externalPriceOverrideEnabled": false
          },
          "createdAt": "2023-05-10T10:00:00+00:00",
          "updatedAt": "2023-05-10T10:00:00+00:00"
        }
      }
    }
  },
  "security": [
    {
      "accessToken": []
    }
  ]
}
